New based dialog class.
This simply (for now) extends the jface dialog to properly
set it up.
Change-Id: I0d2bc2d10aad3811201f9d1df3efbfc87be50cb4
diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
index d96534b..abc36fd 100644
--- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
+++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
@@ -19,6 +19,7 @@
import com.android.sdklib.internal.avd.AvdManager;
import com.android.sdklib.internal.avd.AvdManager.AvdInfo;
import com.android.sdkuilib.internal.repository.SettingsController;
+import com.android.sdkuilib.ui.GridDialog;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -60,7 +61,7 @@
* Values are stored (in the class as static field) to be reused while the app is still running.
* The Monitor dpi is stored in the settings if availabe.
*/
-final class AvdStartDialog extends Dialog {
+final class AvdStartDialog extends GridDialog {
// static field to reuse values during the same session.
private static boolean sWipeData = false;
private static int sMonitorDpi = 72; // used if there's no setting controller.
@@ -86,7 +87,7 @@
AvdStartDialog(Shell parentShell, AvdInfo avd, String sdkLocation,
SettingsController settingsController) {
- super(parentShell);
+ super(parentShell, 2, false);
mAvd = avd;
mSdkLocation = sdkLocation;
mSettingsController = settingsController;
@@ -112,42 +113,31 @@
}
@Override
- protected Control createDialogArea(final Composite parent) {
+ public void createDialogContent(final Composite parent) {
GridData gd;
- // create a composite with standard margins and spacing
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(
- IDialogConstants.HORIZONTAL_SPACING);
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label l = new Label(composite, SWT.NONE);
+ Label l = new Label(parent, SWT.NONE);
l.setText("Skin:");
- l = new Label(composite, SWT.NONE);
+ l = new Label(parent, SWT.NONE);
l.setText(mSkinDisplay);
l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- l = new Label(composite, SWT.NONE);
+ l = new Label(parent, SWT.NONE);
l.setText("Density:");
- l = new Label(composite, SWT.NONE);
+ l = new Label(parent, SWT.NONE);
l.setText(getDensityText());
l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- mScaleButton = new Button(composite, SWT.CHECK);
+ mScaleButton = new Button(parent, SWT.CHECK);
mScaleButton.setText("Scale display to real size");
mScaleButton.setEnabled(mEnableScaling);
boolean defaultState = mEnableScaling && sSkinScaling.get(mAvd.getName()) != null;
mScaleButton.setSelection(defaultState);
mScaleButton.setLayoutData(gd = new GridData(GridData.FILL_HORIZONTAL));
gd.horizontalSpan = 2;
- final Group scaleGroup = new Group(composite, SWT.NONE);
+ final Group scaleGroup = new Group(parent, SWT.NONE);
scaleGroup.setLayoutData(gd = new GridData(GridData.FILL_HORIZONTAL));
gd.horizontalIndent = 30;
gd.horizontalSpan = 2;
@@ -229,7 +219,7 @@
}
});
- final Button wipeButton = new Button(composite, SWT.CHECK);
+ final Button wipeButton = new Button(parent, SWT.CHECK);
wipeButton.setLayoutData(gd = new GridData(GridData.FILL_HORIZONTAL));
gd.horizontalSpan = 2;
wipeButton.setText("Wipe user data");
@@ -241,18 +231,14 @@
}
});
- l = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
+ l = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
l.setLayoutData(gd = new GridData(GridData.FILL_HORIZONTAL));
gd.horizontalSpan = 2;
- applyDialogFont(composite);
-
// if the scaling is enabled by default, we must initialize the value of mScale
if (defaultState) {
onScaleChange();
}
-
- return composite;
}
@Override
diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/ResolutionChooserDialog.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/ResolutionChooserDialog.java
index 94ed3b9..60888e6 100644
--- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/ResolutionChooserDialog.java
+++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/ResolutionChooserDialog.java
@@ -16,14 +16,13 @@
package com.android.sdkuilib.internal.widgets;
-import org.eclipse.jface.dialogs.Dialog;
+import com.android.sdkuilib.ui.GridDialog;
+
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Combo;
import org.eclipse.swt.widgets.Composite;
@@ -40,7 +39,7 @@
* After the dialog as returned, one can query {@link #getDensity()} to get the chosen monitor
* pixel density.
*/
-class ResolutionChooserDialog extends Dialog {
+class ResolutionChooserDialog extends GridDialog {
public final static float[] MONITOR_SIZES = new float[] {
13.3f, 14, 15.4f, 15.6f, 17, 19, 20, 21, 24, 30,
};
@@ -54,7 +53,7 @@
private int mMonitorIndex = 0;
ResolutionChooserDialog(Shell parentShell) {
- super(parentShell);
+ super(parentShell, 2, false);
}
/**
@@ -84,22 +83,11 @@
}
@Override
- protected Control createDialogArea(Composite parent) {
- // create a composite with standard margins and spacing
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(
- IDialogConstants.HORIZONTAL_SPACING);
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label l = new Label(composite, SWT.NONE);
+ public void createDialogContent(Composite parent) {
+ Label l = new Label(parent, SWT.NONE);
l.setText("Screen Size:");
- mScreenSizeCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ mScreenSizeCombo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
for (float size : MONITOR_SIZES) {
if (Math.round(size) == size) {
mScreenSizeCombo.add(String.format("%.0f\"", size));
@@ -115,10 +103,10 @@
}
});
- l = new Label(composite, SWT.NONE);
+ l = new Label(parent, SWT.NONE);
l.setText("Resolution:");
- mMonitorCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ mMonitorCombo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
mMonitors = parent.getDisplay().getMonitors();
for (Monitor m : mMonitors) {
Rectangle r = m.getBounds();
@@ -131,8 +119,5 @@
mMonitorIndex = mMonitorCombo.getSelectionIndex();
}
});
-
- applyDialogFont(composite);
- return composite;
}
}
diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDialog.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDialog.java
new file mode 100644
index 0000000..8329fd6
--- /dev/null
+++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/ui/GridDialog.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2009 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.ui;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * jface-based dialog that properly sets up a {@link GridLayout} top composite with the proper
+ * margin.
+ *
+ * Implementing dialog must create the content of the dialog in
+ * {@link #createDialogContent(Composite)}.
+ *
+ */
+public abstract class GridDialog extends Dialog {
+
+ private final int mNumColumns;
+ private final boolean mMakeColumnsEqualWidth;
+
+ /**
+ * Creates the dialog
+ * @param parentShell the parent {@link Shell}.
+ * @param numColumns the number of columns in the grid
+ * @param makeColumnsEqualWidth whether or not the columns will have equal width
+ */
+ public GridDialog(Shell parentShell, int numColumns, boolean makeColumnsEqualWidth) {
+ super(parentShell);
+ mNumColumns = numColumns;
+ mMakeColumnsEqualWidth = makeColumnsEqualWidth;
+ }
+
+ /**
+ * Creates the content of the dialog. The <var>parent</var> composite is a {@link GridLayout}
+ * created with the <var>numColumn</var> and <var>makeColumnsEqualWidth</var> parameters
+ * passed to {@link #GridDialog(Shell, int, boolean)}.
+ * @param parent the parent composite.
+ */
+ public abstract void createDialogContent(Composite parent);
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite top = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(mNumColumns, mMakeColumnsEqualWidth);
+ layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing = convertHorizontalDLUsToPixels(
+ IDialogConstants.HORIZONTAL_SPACING);
+ top.setLayout(layout);
+ top.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ createDialogContent(top);
+
+ applyDialogFont(top);
+ return top;
+ }
+}