Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/projects/NewApplicationCreationPage.java |
=================================================================== |
--- editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/projects/NewApplicationCreationPage.java (revision 41289) |
+++ editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/projects/NewApplicationCreationPage.java (working copy) |
@@ -25,6 +25,7 @@ |
import org.eclipse.core.resources.IProject; |
import org.eclipse.core.resources.ResourcesPlugin; |
import org.eclipse.core.runtime.IPath; |
+import org.eclipse.core.runtime.IProgressMonitor; |
import org.eclipse.core.runtime.IStatus; |
import org.eclipse.core.runtime.Path; |
import org.eclipse.core.runtime.Status; |
@@ -33,10 +34,10 @@ |
import org.eclipse.jface.layout.GridDataFactory; |
import org.eclipse.jface.layout.GridLayoutFactory; |
import org.eclipse.jface.layout.PixelConverter; |
+import org.eclipse.jface.operation.IRunnableWithProgress; |
import org.eclipse.jface.viewers.ArrayContentProvider; |
import org.eclipse.jface.viewers.ISelectionChangedListener; |
import org.eclipse.jface.viewers.IStructuredSelection; |
-import org.eclipse.jface.viewers.LabelProvider; |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
import org.eclipse.jface.viewers.StructuredSelection; |
import org.eclipse.jface.viewers.TableViewer; |
@@ -53,14 +54,16 @@ |
import org.eclipse.swt.layout.GridLayout; |
import org.eclipse.swt.widgets.Button; |
import org.eclipse.swt.widgets.Composite; |
-import org.eclipse.swt.widgets.Control; |
import org.eclipse.swt.widgets.DirectoryDialog; |
+import org.eclipse.swt.widgets.Display; |
import org.eclipse.swt.widgets.Group; |
import org.eclipse.swt.widgets.Label; |
import org.eclipse.swt.widgets.Text; |
import java.io.File; |
+import java.lang.reflect.InvocationTargetException; |
import java.net.URI; |
+import java.util.ArrayList; |
import java.util.List; |
/** |
@@ -164,26 +167,17 @@ |
projectNameField.setFocus(); |
Group contentGroup = new Group(container, SWT.NONE); |
- contentGroup.setText("Sample content"); |
+ contentGroup.setText("Project templates"); |
GridDataFactory.fillDefaults().span(3, 1).grab(true, false).indent(0, 10).applyTo(contentGroup); |
GridLayoutFactory.fillDefaults().margins(8, 8).applyTo(contentGroup); |
samplesViewer = new TableViewer(contentGroup, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER |
| SWT.FULL_SELECTION); |
- samplesViewer.setLabelProvider(new LabelProvider()); |
+ samplesViewer.setLabelProvider(new SamplesLabelProvider()); |
samplesViewer.setContentProvider(new ArrayContentProvider()); |
- List<AbstractSample> samples = AbstractSample.getAllSamples(); |
- samplesViewer.setInput(samples); |
- { |
- Control samplesControl = samplesViewer.getControl(); |
- int height = new PixelConverter(samplesControl).convertHeightInCharsToPixels(8); |
- GridDataFactory gdf = GridDataFactory.fillDefaults(); |
- gdf.hint(-1, height); |
- gdf.grab(true, false); |
- gdf.align(SWT.FILL, SWT.CENTER); |
- gdf.applyTo(samplesControl); |
- } |
- samplesViewer.setSelection(new StructuredSelection(getDefaultSample(samples))); |
+ samplesViewer.setInput(new ArrayList<AbstractSample>()); |
+ GridDataFactory.fillDefaults().hint(200, 90).grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo( |
+ samplesViewer.getControl()); |
samplesViewer.addSelectionChangedListener(new ISelectionChangedListener() { |
@Override |
public void selectionChanged(SelectionChangedEvent event) { |
@@ -196,6 +190,13 @@ |
updateMessageAndEnablement(); |
setPageComplete(false); |
+ |
+ Display.getDefault().asyncExec(new Runnable() { |
+ @Override |
+ public void run() { |
+ populateSamplesList(); |
+ } |
+ }); |
} |
/** |
@@ -315,6 +316,31 @@ |
return projectNameField.getText().trim(); |
} |
+ private void populateSamplesList() { |
+ try { |
+ getContainer().run(true, false, new IRunnableWithProgress() { |
+ @Override |
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, |
+ InterruptedException { |
+ monitor.beginTask("", IProgressMonitor.UNKNOWN); |
+ final List<AbstractSample> samples = AbstractSample.getAllSamples(); |
+ Display.getDefault().asyncExec(new Runnable() { |
+ @Override |
+ public void run() { |
+ samplesViewer.setInput(samples); |
+ samplesViewer.setSelection(new StructuredSelection(getDefaultSample(samples))); |
+ } |
+ }); |
+ monitor.done(); |
+ } |
+ }); |
+ } catch (InvocationTargetException e) { |
+ DartToolsPlugin.log(e); |
+ } catch (InterruptedException e) { |
+ DartToolsPlugin.log(e); |
+ } |
+ } |
+ |
private void update() { |
if (getProjectNameFieldValue().isEmpty()) { |
setMessage(ProjectMessages.OpenNewApplicationWizardAction_desc); |