OSDN Git Service

SDK Manager: apply settings instantaneously.
authorRaphael <raphael@google.com>
Tue, 2 Feb 2010 02:15:05 +0000 (18:15 -0800)
committerRaphael <raphael@google.com>
Tue, 2 Feb 2010 02:15:05 +0000 (18:15 -0800)
SDK Bug: 2411665

Change-Id: I6d4a38f4f2d974a727d8e0891d63618d82c578ad

sdkmanager/app/src/com/android/sdkmanager/internal/repository/SettingsPage.java
sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/SettingsController.java

index c800054..eac7515 100755 (executable)
@@ -42,7 +42,6 @@ public class SettingsPage extends Composite implements ISettingsPage {
     // UI widgets\r
     private Group mProxySettingsGroup;\r
     private Group mMiscGroup;\r
-    private Button mApplyButton;\r
     private Label mProxyServerLabel;\r
     private Label mProxyPortLabel;\r
     private Text mProxyServerText;\r
@@ -50,12 +49,18 @@ public class SettingsPage extends Composite implements ISettingsPage {
     private Button mForceHttpCheck;\r
     private Button mAskAdbRestartCheck;\r
 \r
-    private ModifyListener mSetApplyDirty = new ModifyListener() {\r
-        public void modifyText(ModifyEvent e) {\r
-            mApplyButton.setEnabled(true);\r
+    private SelectionAdapter mApplyOnSelected = new SelectionAdapter() {\r
+        @Override\r
+        public void widgetSelected(SelectionEvent e) {\r
+            applyNewSettings(); //$hide$\r
         }\r
     };\r
 \r
+    private ModifyListener mApplyOnModified = new ModifyListener() {\r
+        public void modifyText(ModifyEvent e) {\r
+            applyNewSettings(); //$hide$\r
+        }\r
+    };\r
 \r
     /**\r
      * Create the composite.\r
@@ -80,7 +85,7 @@ public class SettingsPage extends Composite implements ISettingsPage {
 \r
         mProxyServerText = new Text(mProxySettingsGroup, SWT.BORDER);\r
         mProxyServerText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));\r
-        mProxyServerText.addModifyListener(mSetApplyDirty);\r
+        mProxyServerText.addModifyListener(mApplyOnModified);\r
         mProxyServerText.setToolTipText(tooltip);\r
 \r
         mProxyPortLabel = new Label(mProxySettingsGroup, SWT.NONE);\r
@@ -92,7 +97,7 @@ public class SettingsPage extends Composite implements ISettingsPage {
 \r
         mProxyPortText = new Text(mProxySettingsGroup, SWT.BORDER);\r
         mProxyPortText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));\r
-        mProxyPortText.addModifyListener(mSetApplyDirty);\r
+        mProxyPortText.addModifyListener(mApplyOnModified);\r
         mProxyPortText.setToolTipText(tooltip);\r
 \r
         mMiscGroup = new Group(this, SWT.NONE);\r
@@ -105,34 +110,14 @@ public class SettingsPage extends Composite implements ISettingsPage {
         mForceHttpCheck.setText("Force https://... sources to be fetched using http://...");\r
         mForceHttpCheck.setToolTipText("If you are not able to connect to the official Android repository " +\r
                 "using HTTPS, enable this setting to force accessing it via HTTP.");\r
-        mForceHttpCheck.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                onForceHttpSelected();  //$hide$\r
-            }\r
-        });\r
+        mForceHttpCheck.addSelectionListener(mApplyOnSelected);\r
 \r
         mAskAdbRestartCheck = new Button(mMiscGroup, SWT.CHECK);\r
         mAskAdbRestartCheck.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));\r
         mAskAdbRestartCheck.setText("Ask before restarting ADB");\r
         mAskAdbRestartCheck.setToolTipText("When checked, the user will be asked for permission " +\r
                 "to restart ADB after updating an addon-on package or a tool package.");\r
-        mAskAdbRestartCheck.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                onForceHttpSelected();  //$hide$\r
-            }\r
-        });\r
-\r
-        mApplyButton = new Button(this, SWT.NONE);\r
-        mApplyButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));\r
-        mApplyButton.setText("Save && Apply");\r
-        mApplyButton.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                onApplySelected(); //$hide$\r
-            }\r
-        });\r
+        mAskAdbRestartCheck.addSelectionListener(mApplyOnSelected);\r
 \r
         postCreate();  //$hide$\r
     }\r
@@ -164,9 +149,6 @@ public class SettingsPage extends Composite implements ISettingsPage {
         mProxyPortText.setText(  in_settings.getProperty(KEY_HTTP_PROXY_PORT, ""));  //$NON-NLS-1$\r
         mForceHttpCheck.setSelection(Boolean.parseBoolean(in_settings.getProperty(KEY_FORCE_HTTP)));\r
         mAskAdbRestartCheck.setSelection(Boolean.parseBoolean(in_settings.getProperty(KEY_ASK_ADB_RESTART)));\r
-\r
-        // We loaded fresh settings so there's nothing dirty to apply\r
-        mApplyButton.setEnabled(false);\r
     }\r
 \r
     /** Called by the application to retrieve settings from the UI and store them in\r
@@ -193,20 +175,12 @@ public class SettingsPage extends Composite implements ISettingsPage {
      * Callback invoked when user presses the "Save and Apply" button.\r
      * Notify the application that settings have changed.\r
      */\r
-    private void onApplySelected() {\r
+    private void applyNewSettings() {\r
         if (mSettingsChangedCallback != null) {\r
             mSettingsChangedCallback.onSettingsChanged(this);\r
-            mApplyButton.setEnabled(false);\r
         }\r
     }\r
 \r
-    /**\r
-     * Callback invoked when the users presses the Force HTTPS checkbox.\r
-     */\r
-    private void onForceHttpSelected() {\r
-        mSetApplyDirty.modifyText(null);\r
-    }\r
-\r
     // End of hiding from SWT Designer\r
     //$hide<<$\r
 }\r
index 7c793e4..cb60d57 100755 (executable)
@@ -243,13 +243,20 @@ public class SettingsController {
             return;\r
         }\r
 \r
+        String oldHttpsSetting = mProperties.getProperty(ISettingsPage.KEY_FORCE_HTTP,\r
+                Boolean.FALSE.toString());\r
+\r
         mSettingsPage.retrieveSettings(mProperties);\r
         applySettings();\r
         saveSettings();\r
 \r
-        // In case the HTTP/HTTPS setting change, force sources to be reloaded\r
-        // (this only refreshes sources that the user has already tried to open.)\r
-        mUpdaterData.refreshSources(false /*forceFetching*/);\r
+        String newHttpsSetting = mProperties.getProperty(ISettingsPage.KEY_FORCE_HTTP,\r
+                Boolean.FALSE.toString());\r
+        if (!newHttpsSetting.equals(oldHttpsSetting)) {\r
+            // In case the HTTP/HTTPS setting change, force sources to be reloaded\r
+            // (this only refreshes sources that the user has already tried to open.)\r
+            mUpdaterData.refreshSources(false /*forceFetching*/);\r
+        }\r
     }\r
 \r
     /**\r