OSDN Git Service

ADT: New Project Wizard can now scroll if the window is too small
authorXavier Ducrohet <xav@android.com>
Thu, 18 Mar 2010 22:19:10 +0000 (15:19 -0700)
committerXavier Ducrohet <xav@android.com>
Thu, 18 Mar 2010 22:29:09 +0000 (15:29 -0700)
Change-Id: I5fca534ef714a22d54d1a2e6ed028c7f22ddb07e

eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectCreationPage.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewTestProjectCreationPage.java

index c3f5397..aaa48a3 100644 (file)
@@ -49,9 +49,13 @@ import org.eclipse.jdt.core.JavaConventions;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.osgi.util.TextProcessor;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -331,11 +335,16 @@ public class NewProjectCreationPage extends WizardPage {
      * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
      */
     public void createControl(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NULL);
-        composite.setFont(parent.getFont());
-
+        final ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL);
+        scrolledComposite.setFont(parent.getFont());
+        scrolledComposite.setExpandHorizontal(true);
+        scrolledComposite.setExpandVertical(true);
         initializeDialogUnits(parent);
 
+        final Composite composite = new Composite(scrolledComposite, SWT.NULL);
+        composite.setFont(parent.getFont());
+        scrolledComposite.setContent(composite);
+
         composite.setLayout(new GridLayout());
         composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 
@@ -349,10 +358,18 @@ public class NewProjectCreationPage extends WizardPage {
         loadSamplesForTarget(null /*target*/);
         mSdkTargetChangeListener.onSdkLoaded();
 
+        scrolledComposite.addControlListener(new ControlAdapter() {
+            @Override
+            public void controlResized(ControlEvent e) {
+                Rectangle r = scrolledComposite.getClientArea();
+                scrolledComposite.setMinSize(composite.computeSize(r.width, SWT.DEFAULT));
+            }
+        });
+
         // Show description the first time
         setErrorMessage(null);
         setMessage(null);
-        setControl(composite);
+        setControl(scrolledComposite);
 
         // Validate. This will complain about the first empty field.
         validatePageComplete();
index ce6e118..d43831e 100755 (executable)
@@ -49,10 +49,14 @@ import org.eclipse.jdt.core.JavaConventions;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.osgi.util.TextProcessor;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
 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.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -276,11 +280,16 @@ public class NewTestProjectCreationPage extends WizardPage {
      * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
      */
     public void createControl(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NULL);
-        composite.setFont(parent.getFont());
-
+        final ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL);
+        scrolledComposite.setFont(parent.getFont());
+        scrolledComposite.setExpandHorizontal(true);
+        scrolledComposite.setExpandVertical(true);
         initializeDialogUnits(parent);
 
+        final Composite composite = new Composite(scrolledComposite, SWT.NULL);
+        composite.setFont(parent.getFont());
+        scrolledComposite.setContent(composite);
+
         composite.setLayout(new GridLayout());
         composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 
@@ -294,10 +303,18 @@ public class NewTestProjectCreationPage extends WizardPage {
         // Update state the first time
         enableLocationWidgets();
 
+        scrolledComposite.addControlListener(new ControlAdapter() {
+            @Override
+            public void controlResized(ControlEvent e) {
+                Rectangle r = scrolledComposite.getClientArea();
+                scrolledComposite.setMinSize(composite.computeSize(r.width, SWT.DEFAULT));
+            }
+        });
+
         // Show description the first time
         setErrorMessage(null);
         setMessage(null);
-        setControl(composite);
+        setControl(scrolledComposite);
 
         // Validate. This will complain about the first empty field.
         validatePageComplete();
@@ -470,7 +487,7 @@ public class NewTestProjectCreationPage extends WizardPage {
         GridLayout layout = new GridLayout();
         layout.numColumns = 3;
         group.setLayout(layout);
-        group.setLayoutData(new GridData(GridData.FILL_BOTH));
+        group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
         group.setFont(parent.getFont());
         group.setText("Test Target");