Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Unified Diff: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/generator/AbstractSample.java

Issue 658743004: Move the Editor and Eclipse plugins over to using stagehand for the new project templates. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/generator/AbstractSample.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/generator/AbstractSample.java (revision 41289)
+++ editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/generator/AbstractSample.java (working copy)
@@ -17,6 +17,7 @@
import com.google.common.base.Charsets;
import com.google.common.io.CharStreams;
import com.google.dart.tools.core.DartCore;
+import com.google.dart.tools.core.generator.Stagehand.StagehandTuple;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -34,7 +35,7 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -44,27 +45,73 @@
*
* @coverage dart.tools.core.generator
*/
-public class AbstractSample {
+public class AbstractSample implements Comparable<AbstractSample> {
+ private static Stagehand stagehand = new Stagehand();
+ private static List<AbstractSample> cachedSamples;
+
+ /**
+ * Get all the known samples. This method can be slow.
+ *
+ * @return all the known samples
+ */
public static List<AbstractSample> getAllSamples() {
- return Arrays.asList(
- new WebAppSample(),
- new CommandLineSample(),
- new PackageSample(),
- new PolymerSample(),
- new ChromePackagedAppSample());
+ if (cachedSamples != null) {
+ return cachedSamples;
+ }
+
+ boolean doUpgradeCheck = true;
+
+ if (!stagehand.isInstalled()) {
+ doUpgradeCheck = false;
+
+ stagehand.install();
+ }
+
+ List<StagehandTuple> samples = stagehand.getAvailableSamples();
+
+ // Make sure we're on a reasonably latest version of Stagehand.
+ if (doUpgradeCheck) {
+ new Thread() {
+ @Override
+ public void run() {
+ stagehand.upgrade();
+ }
+ }.start();
+ }
+
+ cachedSamples = new ArrayList<AbstractSample>();
+ // TODO(devoncarew): Remove this when/if a chrome app sample is in stagehand.
+ cachedSamples.add(new ChromePackagedAppSample());
+
+ for (StagehandTuple sample : samples) {
+ cachedSamples.add(new StagehandSample(
+ stagehand,
+ sample.id,
+ sample.description,
+ sample.entrypoint));
+ }
+
+ Collections.sort(cachedSamples);
+
+ return cachedSamples;
}
private String title;
private String description;
private List<String[]> templates = new ArrayList<String[]>();
- private String mainFile;
+ protected String mainFile;
public AbstractSample(String title, String description) {
this.title = title;
this.description = description;
}
+ @Override
+ public int compareTo(AbstractSample other) {
+ return getTitle().compareToIgnoreCase(other.getTitle());
+ }
+
public IFile generateInto(IContainer container, String sampleName) throws CoreException {
Map<String, String> variables = new HashMap<String, String>();
@@ -113,7 +160,7 @@
}
public boolean isValidProjectName(String name) {
- return true;
+ return !name.equalsIgnoreCase(getTitle());
}
public boolean shouldBeDefault() {
@@ -197,5 +244,4 @@
return str.substring(0, 1).toUpperCase() + str.substring(1).replaceAll("_", " ");
}
}
-
}

Powered by Google App Engine
This is Rietveld 408576698