aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs
diff options
context:
space:
mode:
authorRaphael Moll <ralf@android.com>2012-03-28 11:40:48 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-03-28 11:40:49 -0700
commit90e9820290bec86982cac91a9ee163466a7521c4 (patch)
treef281f37952cefbde35672b33686afcbc30dc0b3d /sdkmanager/libs
parent2596fa904522cb5be6355eb3fa16e24ec9c89888 (diff)
parent53a75888effcc1e3d7bc58846c48879a2625854d (diff)
downloadsdk-90e9820290bec86982cac91a9ee163466a7521c4.zip
sdk-90e9820290bec86982cac91a9ee163466a7521c4.tar.gz
sdk-90e9820290bec86982cac91a9ee163466a7521c4.tar.bz2
Merge "SDK Manager: remove obsolete "pages" mechanism."
Diffstat (limited to 'sdkmanager/libs')
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AboutDialog.java120
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/SettingsDialog.java191
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterBaseDialog.java107
-rw-r--r--sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/icons/sdkman_logo_128.pngbin0 -> 2381 bytes
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/AddonSitesDialog.java77
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/SdkUpdaterWindowImpl2.java108
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/SdkUpdaterWindow.java37
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDataBuilder.java18
8 files changed, 460 insertions, 198 deletions
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AboutDialog.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AboutDialog.java
new file mode 100755
index 0000000..ba87300
--- /dev/null
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AboutDialog.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sdkuilib.internal.repository;
+
+
+import com.android.sdklib.SdkConstants;
+import com.android.sdklib.io.FileOp;
+import com.android.sdklib.repository.PkgProps;
+import com.android.sdklib.repository.SdkAddonConstants;
+import com.android.sdklib.repository.SdkRepoConstants;
+import com.android.sdkuilib.internal.repository.icons.ImageFactory;
+import com.android.sdkuilib.ui.GridDataBuilder;
+import com.android.sdkuilib.ui.GridLayoutBuilder;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+public class AboutDialog extends UpdaterBaseDialog {
+
+ public AboutDialog(Shell parentShell, UpdaterData updaterData) {
+ super(parentShell, updaterData, "About" /*title*/);
+ assert updaterData != null;
+ }
+
+ @Override
+ protected void createContents() {
+ super.createContents();
+ Shell shell = getShell();
+ shell.setMinimumSize(new Point(450, 150));
+ shell.setSize(450, 150);
+
+ GridLayoutBuilder.create(shell).columns(3);
+
+ Label logo = new Label(shell, SWT.NONE);
+ ImageFactory imgf = getUpdaterData() == null ? null : getUpdaterData().getImageFactory();
+ Image image = imgf == null ? null : imgf.getImageByName("sdkman_logo_128.png");
+ if (image != null) logo.setImage(image);
+
+ Label label = new Label(shell, SWT.NONE);
+ GridDataBuilder.create(label).hFill().hGrab().hSpan(2);;
+ label.setText(String.format(
+ "Android SDK Manager.\n" +
+ "Revision %1$s\n" +
+ "Add-on XML Schema #%2$d\n" +
+ "Repository XML Schema #%3$d\n" +
+ "Copyright (C) 2009-2012 The Android Open Source Project.",
+ getRevision(),
+ SdkAddonConstants.NS_LATEST_VERSION,
+ SdkRepoConstants.NS_LATEST_VERSION));
+
+
+ Label filler = new Label(shell, SWT.NONE);
+ GridDataBuilder.create(filler).fill().grab().hSpan(2);
+
+ createCloseButton();
+ }
+
+ @Override
+ protected void checkSubclass() {
+ // Disable the check that prevents subclassing of SWT components
+ }
+
+ // -- Start of internal part ----------
+ // Hide everything down-below from SWT designer
+ //$hide>>$
+
+ // End of hiding from SWT Designer
+ //$hide<<$
+
+ private String getRevision() {
+ Properties p = new Properties();
+ try{
+ File sourceProp = FileOp.append(getUpdaterData().getOsSdkRoot(),
+ SdkConstants.FD_TOOLS,
+ SdkConstants.FN_SOURCE_PROP);
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(sourceProp);
+ p.load(fis);
+ } finally {
+ if (fis != null) {
+ try {
+ fis.close();
+ } catch (IOException ignore) {
+ }
+ }
+ }
+
+ String revision = p.getProperty(PkgProps.PKG_REVISION);
+ if (revision != null) {
+ return revision;
+ }
+ } catch (IOException e) {
+ }
+
+ return "?";
+ }
+}
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/SettingsDialog.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/SettingsDialog.java
new file mode 100755
index 0000000..f145453
--- /dev/null
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/SettingsDialog.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sdkuilib.internal.repository;
+
+import com.android.sdkuilib.ui.GridDataBuilder;
+import com.android.sdkuilib.ui.GridLayoutBuilder;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import java.util.Properties;
+
+
+public class SettingsDialog extends UpdaterBaseDialog implements ISettingsPage {
+
+ // data members
+ private final SettingsController mSettingsController;
+ private SettingsChangedCallback mSettingsChangedCallback;
+
+ // UI widgets
+ private Group mProxySettingsGroup;
+ private Group mMiscGroup;
+ private Label mProxyServerLabel;
+ private Label mProxyPortLabel;
+ private Text mProxyServerText;
+ private Text mProxyPortText;
+ private Button mForceHttpCheck;
+ private Button mAskAdbRestartCheck;
+
+ private SelectionAdapter mApplyOnSelected = new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ applyNewSettings(); //$hide$
+ }
+ };
+
+ private ModifyListener mApplyOnModified = new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ applyNewSettings(); //$hide$
+ }
+ };
+
+ public SettingsDialog(Shell parentShell, UpdaterData updaterData) {
+ super(parentShell, updaterData, "Settings" /*title*/);
+ assert updaterData != null;
+ mSettingsController = updaterData.getSettingsController();
+ }
+
+ @Override
+ protected void createContents() {
+ super.createContents();
+ Shell shell = getShell();
+
+ mProxySettingsGroup = new Group(shell, SWT.NONE);
+ mProxySettingsGroup.setText("Proxy Settings");
+ GridDataBuilder.create(mProxySettingsGroup).fill().grab().hSpan(2);
+ GridLayoutBuilder.create(mProxySettingsGroup).columns(2);
+
+ mProxyServerLabel = new Label(mProxySettingsGroup, SWT.NONE);
+ GridDataBuilder.create(mProxyServerLabel).hRight().vCenter();
+ mProxyServerLabel.setText("HTTP Proxy Server");
+ String tooltip = "The DNS name or IP of the HTTP proxy server to use. " +
+ "When empty, no HTTP proxy is used.";
+ mProxyServerLabel.setToolTipText(tooltip);
+
+ mProxyServerText = new Text(mProxySettingsGroup, SWT.BORDER);
+ GridDataBuilder.create(mProxyServerText).hFill().hGrab().vCenter();
+ mProxyServerText.addModifyListener(mApplyOnModified);
+ mProxyServerText.setToolTipText(tooltip);
+
+ mProxyPortLabel = new Label(mProxySettingsGroup, SWT.NONE);
+ GridDataBuilder.create(mProxyPortLabel).hRight().vCenter();
+ mProxyPortLabel.setText("HTTP Proxy Port");
+ tooltip = "The port of the HTTP proxy server to use. " +
+ "When empty, the default for HTTP or HTTPS is used.";
+ mProxyPortLabel.setToolTipText(tooltip);
+
+ mProxyPortText = new Text(mProxySettingsGroup, SWT.BORDER);
+ GridDataBuilder.create(mProxyPortText).hFill().hGrab().vCenter();
+ mProxyPortText.addModifyListener(mApplyOnModified);
+ mProxyPortText.setToolTipText(tooltip);
+
+ mMiscGroup = new Group(shell, SWT.NONE);
+ mMiscGroup.setText("Misc");
+ GridDataBuilder.create(mMiscGroup).fill().grab().hSpan(2);
+ GridLayoutBuilder.create(mMiscGroup).columns(2);
+
+ mForceHttpCheck = new Button(mMiscGroup, SWT.CHECK);
+ GridDataBuilder.create(mForceHttpCheck).hFill().hGrab().vCenter().hSpan(2);
+ mForceHttpCheck.setText("Force https://... sources to be fetched using http://...");
+ mForceHttpCheck.setToolTipText("If you are not able to connect to the official Android repository " +
+ "using HTTPS, enable this setting to force accessing it via HTTP.");
+ mForceHttpCheck.addSelectionListener(mApplyOnSelected);
+
+ mAskAdbRestartCheck = new Button(mMiscGroup, SWT.CHECK);
+ GridDataBuilder.create(mAskAdbRestartCheck).hFill().hGrab().vCenter().hSpan(2);
+ mAskAdbRestartCheck.setText("Ask before restarting ADB");
+ mAskAdbRestartCheck.setToolTipText("When checked, the user will be asked for permission " +
+ "to restart ADB after updating an addon-on package or a tool package.");
+ mAskAdbRestartCheck.addSelectionListener(mApplyOnSelected);
+
+ createCloseButton();
+ }
+
+ @Override
+ protected void postCreate() {
+ super.postCreate();
+ // This tells the controller to load the settings into the page UI.
+ mSettingsController.setSettingsPage(this);
+ }
+
+ @Override
+ protected void close() {
+ // Dissociate this page from the controller
+ mSettingsController.setSettingsPage(null);
+ super.close();
+ }
+
+
+ // -- Start of internal part ----------
+ // Hide everything down-below from SWT designer
+ //$hide>>$
+
+ /** Loads settings from the given {@link Properties} container and update the page UI. */
+ @Override
+ public void loadSettings(Properties in_settings) {
+ mProxyServerText.setText(in_settings.getProperty(KEY_HTTP_PROXY_HOST, "")); //$NON-NLS-1$
+ mProxyPortText.setText( in_settings.getProperty(KEY_HTTP_PROXY_PORT, "")); //$NON-NLS-1$
+ mForceHttpCheck.setSelection(Boolean.parseBoolean(in_settings.getProperty(KEY_FORCE_HTTP)));
+ mAskAdbRestartCheck.setSelection(Boolean.parseBoolean(in_settings.getProperty(KEY_ASK_ADB_RESTART)));
+ }
+
+ /** Called by the application to retrieve settings from the UI and store them in
+ * the given {@link Properties} container. */
+ @Override
+ public void retrieveSettings(Properties out_settings) {
+ out_settings.setProperty(KEY_HTTP_PROXY_HOST, mProxyServerText.getText());
+ out_settings.setProperty(KEY_HTTP_PROXY_PORT, mProxyPortText.getText());
+ out_settings.setProperty(KEY_FORCE_HTTP,
+ Boolean.toString(mForceHttpCheck.getSelection()));
+ out_settings.setProperty(KEY_ASK_ADB_RESTART,
+ Boolean.toString(mAskAdbRestartCheck.getSelection()));
+ }
+
+ /**
+ * Called by the application to give a callback that the page should invoke when
+ * settings must be applied. The page does not apply the settings itself, instead
+ * it notifies the application.
+ */
+ @Override
+ public void setOnSettingsChanged(SettingsChangedCallback settingsChangedCallback) {
+ mSettingsChangedCallback = settingsChangedCallback;
+ }
+
+ /**
+ * Callback invoked when user touches one of the settings.
+ * There is no "Apply" button, settings are applied immediately as they are changed.
+ * Notify the application that settings have changed.
+ */
+ private void applyNewSettings() {
+ if (mSettingsChangedCallback != null) {
+ mSettingsChangedCallback.onSettingsChanged(this);
+ }
+ }
+
+ // End of hiding from SWT Designer
+ //$hide<<$
+}
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterBaseDialog.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterBaseDialog.java
new file mode 100755
index 0000000..b8b1e19
--- /dev/null
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterBaseDialog.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sdkuilib.internal.repository;
+
+import com.android.sdklib.SdkConstants;
+import com.android.sdkuilib.internal.repository.icons.ImageFactory;
+import com.android.sdkuilib.internal.repository.sdkman2.SdkUpdaterWindowImpl2;
+import com.android.sdkuilib.ui.GridDataBuilder;
+import com.android.sdkuilib.ui.GridLayoutBuilder;
+import com.android.sdkuilib.ui.SwtBaseDialog;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Shell;
+
+
+
+/**
+ * Base class for auxiliary dialogs shown in the updater (for example settings,
+ * about box or add-on site.)
+ */
+public abstract class UpdaterBaseDialog extends SwtBaseDialog {
+
+ private final UpdaterData mUpdaterData;
+
+ protected UpdaterBaseDialog(Shell parentShell, UpdaterData updaterData, String title) {
+ super(parentShell,
+ SWT.APPLICATION_MODAL,
+ String.format("%1$s - %2$s", SdkUpdaterWindowImpl2.APP_NAME, title)); //$NON-NLS-1$
+ mUpdaterData = updaterData;
+ }
+
+ public UpdaterData getUpdaterData() {
+ return mUpdaterData;
+ }
+
+ /**
+ * Initializes the shell with a 2-column Grid layout.
+ * Caller should use {@link #createCloseButton()} to inject the
+ * close button at the bottom of the dialog.
+ */
+ @Override
+ protected void createContents() {
+ Shell shell = getShell();
+ setWindowImage(shell);
+
+ GridLayoutBuilder.create(shell).columns(2);
+
+ }
+
+ protected void createCloseButton() {
+ Button close = new Button(getShell(), SWT.PUSH);
+ close.setText("Close");
+ GridDataBuilder.create(close).hFill().vBottom();
+ close.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ close();
+ }
+ });
+ }
+
+ @Override
+ protected void postCreate() {
+ // pass
+ }
+
+ @Override
+ protected void close() {
+ super.close();
+ }
+
+ /**
+ * Creates the icon of the window shell.
+ *
+ * @param shell The shell on which to put the icon
+ */
+ private void setWindowImage(Shell shell) {
+ String imageName = "android_icon_16.png"; //$NON-NLS-1$
+ if (SdkConstants.currentPlatform() == SdkConstants.PLATFORM_DARWIN) {
+ imageName = "android_icon_128.png"; //$NON-NLS-1$
+ }
+
+ if (mUpdaterData != null) {
+ ImageFactory imgFactory = mUpdaterData.getImageFactory();
+ if (imgFactory != null) {
+ shell.setImage(imgFactory.getImageByName(imageName));
+ }
+ }
+ }
+}
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/icons/sdkman_logo_128.png b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/icons/sdkman_logo_128.png
new file mode 100644
index 0000000..0f1670d
--- /dev/null
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/icons/sdkman_logo_128.png
Binary files differ
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/AddonSitesDialog.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/AddonSitesDialog.java
index a600ad3..28a065a 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/AddonSitesDialog.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/AddonSitesDialog.java
@@ -16,14 +16,13 @@
package com.android.sdkuilib.internal.repository.sdkman2;
-import com.android.sdklib.SdkConstants;
import com.android.sdklib.internal.repository.SdkAddonSource;
import com.android.sdklib.internal.repository.SdkSource;
import com.android.sdklib.internal.repository.SdkSourceCategory;
import com.android.sdklib.internal.repository.SdkSources;
+import com.android.sdkuilib.internal.repository.UpdaterBaseDialog;
import com.android.sdkuilib.internal.repository.UpdaterData;
-import com.android.sdkuilib.internal.repository.icons.ImageFactory;
-import com.android.sdkuilib.ui.SwtBaseDialog;
+import com.android.sdkuilib.ui.GridDataBuilder;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
@@ -47,8 +46,6 @@ import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
@@ -58,16 +55,12 @@ import org.eclipse.swt.widgets.TableColumn;
import java.util.Arrays;
-public class AddonSitesDialog extends SwtBaseDialog {
-
- private final UpdaterData mUpdaterData;
+public class AddonSitesDialog extends UpdaterBaseDialog {
private Table mTable;
private TableViewer mTableViewer;
private Button mButtonNew;
private Button mButtonDelete;
- private Button mButtonClose;
- private Label mlabel;
private Button mButtonEdit;
private TableColumn mColumnUrl;
@@ -77,8 +70,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
* @param parent The parent's shell
*/
public AddonSitesDialog(Shell parent, UpdaterData updaterData) {
- super(parent, SWT.APPLICATION_MODAL, "Add-on Sites");
- mUpdaterData = updaterData;
+ super(parent, updaterData, "Add-on Sites");
}
/**
@@ -87,18 +79,14 @@ public class AddonSitesDialog extends SwtBaseDialog {
@SuppressWarnings("unused")
@Override
protected void createContents() {
+ super.createContents();
Shell shell = getShell();
shell.setMinimumSize(new Point(450, 300));
shell.setSize(450, 300);
- setWindowImage(shell);
-
- GridLayout glShell = new GridLayout();
- glShell.numColumns = 2;
- shell.setLayout(glShell);
- mlabel = new Label(shell, SWT.NONE);
- mlabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
- mlabel.setText(
+ Label label = new Label(shell, SWT.NONE);
+ GridDataBuilder.create(label).hLeft().vCenter().hSpan(2);
+ label.setText(
"This dialog lets you manage the URLs of external add-on sites to be used.\n" +
"\n" +
"Add-on sites can provide new add-ons or \"user\" packages.\n" +
@@ -121,7 +109,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
on_Table_mouseUp(e);
}
});
- mTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 5));
+ GridDataBuilder.create(mTable).fill().grab().vSpan(5);
TableViewerColumn tableViewerColumn = new TableViewerColumn(mTableViewer, SWT.NONE);
mColumnUrl = tableViewerColumn.getColumn();
@@ -135,7 +123,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
newOrEdit(false /*isEdit*/);
}
});
- mButtonNew.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ GridDataBuilder.create(mButtonNew).hFill().vCenter();
mButtonNew.setText("New...");
mButtonEdit = new Button(shell, SWT.NONE);
@@ -145,7 +133,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
newOrEdit(true /*isEdit*/);
}
});
- mButtonEdit.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ GridDataBuilder.create(mButtonEdit).hFill().vCenter();
mButtonEdit.setText("Edit...");
mButtonDelete = new Button(shell, SWT.NONE);
@@ -155,43 +143,16 @@ public class AddonSitesDialog extends SwtBaseDialog {
on_ButtonDelete_widgetSelected(e);
}
});
- mButtonDelete.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ GridDataBuilder.create(mButtonDelete).hFill().vCenter();
mButtonDelete.setText("Delete...");
new Label(shell, SWT.NONE);
- mButtonClose = new Button(shell, SWT.NONE);
- mButtonClose.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- on_ButtonClose_widgetSelected(e);
- }
- });
- mButtonClose.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, false, 1, 1));
- mButtonClose.setText("Close");
+ createCloseButton();
adjustColumnsWidth(mTable, mColumnUrl);
}
/**
- * Creates the icon of the window shell.
- *
- * @param shell The shell on which to put the icon
- */
- private void setWindowImage(Shell shell) {
- String imageName = "android_icon_16.png"; //$NON-NLS-1$
- if (SdkConstants.currentPlatform() == SdkConstants.PLATFORM_DARWIN) {
- imageName = "android_icon_128.png"; //$NON-NLS-1$
- }
-
- if (mUpdaterData != null) {
- ImageFactory imgFactory = mUpdaterData.getImageFactory();
- if (imgFactory != null) {
- shell.setImage(imgFactory.getImageByName(imageName));
- }
- }
- }
-
- /**
* Adds a listener to adjust the column width when the parent is resized.
*/
private void adjustColumnsWidth(final Table table, final TableColumn column0) {
@@ -206,7 +167,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
}
private void newOrEdit(final boolean isEdit) {
- SdkSources sources = mUpdaterData.getSources();
+ SdkSources sources = getUpdaterData().getSources();
final SdkSource[] knownSources = sources.getAllSources();
String title = isEdit ? "Edit Add-on Site URL" : "Add Add-on Site URL";
String msg = "Please enter the URL of the addon.xml:";
@@ -304,7 +265,7 @@ public class AddonSitesDialog extends SwtBaseDialog {
mb.setText("Delete add-on site");
mb.setMessage(String.format("Do you want to delete the URL %1$s?", selectedUrl));
if (mb.open() == SWT.YES) {
- SdkSources sources = mUpdaterData.getSources();
+ SdkSources sources = getUpdaterData().getSources();
for (SdkSource source : sources.getSources(SdkSourceCategory.USER_ADDONS)) {
if (selectedUrl.equals(source.getUrl())) {
sources.remove(source);
@@ -315,10 +276,6 @@ public class AddonSitesDialog extends SwtBaseDialog {
}
}
- private void on_ButtonClose_widgetSelected(SelectionEvent e) {
- close();
- }
-
private void on_Table_mouseUp(MouseEvent e) {
Point p = new Point(e.x, e.y);
if (mTable.getItem(p) == null) {
@@ -342,9 +299,9 @@ public class AddonSitesDialog extends SwtBaseDialog {
}
private void loadList() {
- if (mUpdaterData != null) {
+ if (getUpdaterData() != null) {
SdkSource[] knownSources =
- mUpdaterData.getSources().getSources(SdkSourceCategory.USER_ADDONS);
+ getUpdaterData().getSources().getSources(SdkSourceCategory.USER_ADDONS);
Arrays.sort(knownSources);
ISelection oldSelection = mTableViewer.getSelection();
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/SdkUpdaterWindowImpl2.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/SdkUpdaterWindowImpl2.java
index 9cf96f3..135c6bd 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/SdkUpdaterWindowImpl2.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/sdkman2/SdkUpdaterWindowImpl2.java
@@ -20,10 +20,11 @@ package com.android.sdkuilib.internal.repository.sdkman2;
import com.android.sdklib.ISdkLog;
import com.android.sdklib.SdkConstants;
import com.android.sdklib.internal.repository.ITaskFactory;
+import com.android.sdkuilib.internal.repository.AboutDialog;
import com.android.sdkuilib.internal.repository.ISdkUpdaterWindow;
-import com.android.sdkuilib.internal.repository.ISettingsPage;
import com.android.sdkuilib.internal.repository.MenuBarWrapper;
import com.android.sdkuilib.internal.repository.SettingsController;
+import com.android.sdkuilib.internal.repository.SettingsDialog;
import com.android.sdkuilib.internal.repository.UpdaterData;
import com.android.sdkuilib.internal.repository.UpdaterPage;
import com.android.sdkuilib.internal.repository.UpdaterPage.Purpose;
@@ -37,9 +38,6 @@ import com.android.sdkuilib.internal.widgets.ToggleButton;
import com.android.sdkuilib.repository.AvdManagerWindow.AvdInvocationContext;
import com.android.sdkuilib.repository.ISdkChangeListener;
import com.android.sdkuilib.repository.SdkUpdaterWindow.SdkInvocationContext;
-import com.android.sdkuilib.ui.GridDataBuilder;
-import com.android.sdkuilib.ui.GridLayoutBuilder;
-import com.android.sdkuilib.ui.SwtBaseDialog;
import com.android.util.Pair;
import org.eclipse.swt.SWT;
@@ -51,7 +49,6 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
@@ -72,7 +69,7 @@ import java.util.ArrayList;
*/
public class SdkUpdaterWindowImpl2 implements ISdkUpdaterWindow {
- private static final String APP_NAME = "Android SDK Manager";
+ public static final String APP_NAME = "Android SDK Manager";
private static final String SIZE_POS_PREFIX = "sdkman2"; //$NON-NLS-1$
private final Shell mParentShell;
@@ -340,12 +337,14 @@ public class SdkUpdaterWindowImpl2 implements ISdkUpdaterWindow {
new MenuBarWrapper(APP_NAME, menuTools) {
@Override
public void onPreferencesMenuSelected() {
- showRegisteredPage(Purpose.SETTINGS);
+ SettingsDialog sd = new SettingsDialog(mShell, mUpdaterData);
+ sd.open();
}
@Override
public void onAboutMenuSelected() {
- showRegisteredPage(Purpose.ABOUT_BOX);
+ AboutDialog ad = new AboutDialog(mShell, mUpdaterData);
+ ad.open();
}
@Override
@@ -618,26 +617,6 @@ public class SdkUpdaterWindowImpl2 implements ISdkUpdaterWindow {
// TODO
}
- private void showRegisteredPage(Purpose purpose) {
- if (mExtraPages == null) {
- return;
- }
-
- Class<? extends UpdaterPage> clazz = null;
-
- for (Pair<Class<? extends UpdaterPage>, Purpose> extraPage : mExtraPages) {
- if (extraPage.getSecond() == purpose) {
- clazz = extraPage.getFirst();
- break;
- }
- }
-
- if (clazz != null) {
- PageDialog d = new PageDialog(mShell, clazz, purpose == Purpose.SETTINGS);
- d.open();
- }
- }
-
private void onAvdManager() {
ITaskFactory oldFactory = mUpdaterData.getTaskFactory();
@@ -661,77 +640,4 @@ public class SdkUpdaterWindowImpl2 implements ISdkUpdaterWindow {
// End of hiding from SWT Designer
//$hide<<$
-
- // -----
-
- /**
- * Dialog used to display either the About page or the Settings (aka Options) page
- * with a "close" button.
- */
- private class PageDialog extends SwtBaseDialog {
-
- private final Class<? extends UpdaterPage> mPageClass;
- private final boolean mIsSettingsPage;
-
- protected PageDialog(
- Shell parentShell,
- Class<? extends UpdaterPage> pageClass,
- boolean isSettingsPage) {
- super(parentShell, SWT.APPLICATION_MODAL, null /*title*/);
- mPageClass = pageClass;
- mIsSettingsPage = isSettingsPage;
- }
-
- @Override
- protected void createContents() {
- Shell shell = getShell();
- setWindowImage(shell);
-
- GridLayoutBuilder.create(shell).columns(2);
-
- UpdaterPage content = UpdaterPage.newInstance(
- mPageClass,
- shell,
- SWT.NONE,
- mUpdaterData.getSdkLog());
- GridDataBuilder.create(content).fill().grab().hSpan(2);
- if (content.getLayout() instanceof GridLayout) {
- GridLayout gl = (GridLayout) content.getLayout();
- gl.marginHeight = gl.marginWidth = 0;
- }
-
- if (mIsSettingsPage && content instanceof ISettingsPage) {
- mSettingsController.setSettingsPage((ISettingsPage) content);
- }
-
- getShell().setText(
- String.format("%1$s - %2$s", APP_NAME, content.getPageTitle()));
-
- Label filler = new Label(shell, SWT.NONE);
- GridDataBuilder.create(filler).hFill().hGrab();
-
- Button close = new Button(shell, SWT.PUSH);
- close.setText("Close");
- GridDataBuilder.create(close);
- close.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- close();
- }
- });
- }
-
- @Override
- protected void postCreate() {
- // pass
- }
-
- @Override
- protected void close() {
- if (mIsSettingsPage) {
- mSettingsController.setSettingsPage(null);
- }
- super.close();
- }
- }
}
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/SdkUpdaterWindow.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/SdkUpdaterWindow.java
index 59da350..06fc387 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/SdkUpdaterWindow.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/SdkUpdaterWindow.java
@@ -18,10 +18,8 @@ package com.android.sdkuilib.repository;
import com.android.sdklib.ISdkLog;
import com.android.sdkuilib.internal.repository.ISdkUpdaterWindow;
-import com.android.sdkuilib.internal.repository.UpdaterPage;
import com.android.sdkuilib.internal.repository.sdkman2.SdkUpdaterWindowImpl2;
-import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
/**
@@ -90,41 +88,6 @@ public class SdkUpdaterWindow {
}
/**
- * Registers an extra page for the updater window.
- * <p/>
- * Pages must derive from {@link Composite} and implement a constructor that takes
- * a single parent {@link Composite} argument.
- * <p/>
- * All pages must be registered before the call to {@link #open()}.
- *
- * @param pageClass The {@link Composite}-derived class that will implement the page.
- * @param purpose The purpose of this page, e.g. an about box, settings page or generic.
- */
- public void registerPage(Class<? extends UpdaterPage> pageClass,
- UpdaterPage.Purpose purpose) {
- mWindow.registerPage(pageClass, purpose);
- }
-
- /**
- * Indicate the initial page that should be selected when the window opens.
- * <p/>
- * This must be called before the call to {@link #open()}.
- * If null or if the page class is not found, the first page will be selected.
- */
- public void setInitialPage(Class<? extends Composite> pageClass) {
- mWindow.setInitialPage(pageClass);
- }
-
- /**
- * Sets whether the auto-update wizard will be shown when opening the window.
- * <p/>
- * This must be called before the call to {@link #open()}.
- */
- public void setRequestAutoUpdate(boolean requestAutoUpdate) {
- mWindow.setRequestAutoUpdate(requestAutoUpdate);
- }
-
- /**
* Adds a new listener to be notified when a change is made to the content of the SDK.
* This should be called before {@link #open()}.
*/
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDataBuilder.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDataBuilder.java
index 2e7367a..381dea0 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDataBuilder.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDataBuilder.java
@@ -93,6 +93,24 @@ public final class GridDataBuilder {
return this;
}
+ /** Sets <code>verticalAlignment</code> to {@link SWT#BOTTOM}. */
+ public GridDataBuilder vBottom() {
+ mGD.verticalAlignment = SWT.BOTTOM;
+ return this;
+ }
+
+ /** Sets <code>horizontalAlignment</code> to {@link SWT#LEFT}. */
+ public GridDataBuilder hLeft() {
+ mGD.horizontalAlignment = SWT.LEFT;
+ return this;
+ }
+
+ /** Sets <code>horizontalAlignment</code> to {@link SWT#RIGHT}. */
+ public GridDataBuilder hRight() {
+ mGD.horizontalAlignment = SWT.RIGHT;
+ return this;
+ }
+
/** Sets <code>horizontalAlignment</code> to {@link GridData#FILL}. */
public GridDataBuilder hFill() {
mGD.horizontalAlignment = GridData.FILL;