spring templates

This commit is contained in:
Dmitry Avdeev
2013-02-13 16:18:38 +04:00
parent c3e9b8b3cb
commit 6cc441300c
4 changed files with 37 additions and 4 deletions
@@ -23,6 +23,7 @@ import com.intellij.platform.ProjectTemplate;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipInputStream;
@@ -45,6 +46,10 @@ public abstract class ArchivedProjectTemplate implements ProjectTemplate {
return myDisplayName;
}
public Icon getIcon() {
return getModuleType().getIcon();
}
protected abstract ModuleType getModuleType();
@NotNull
@@ -20,13 +20,16 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.ModuleTypeManager;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.io.StreamUtil;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.IOException;
import java.net.URL;
import java.util.Collections;
@@ -41,11 +44,12 @@ import java.util.zip.ZipInputStream;
public class LocalArchivedTemplate extends ArchivedProjectTemplate {
static final String DESCRIPTION_PATH = ".idea/description.html";
static final String IDEA_INPUT_FIELDS_XML = ".idea/input-fields.xml";
static final String IDEA_INPUT_FIELDS_XML = ".idea/project-template.xml";
private final URL myArchivePath;
private final ModuleType myModuleType;
private List<WizardInputField> myInputFields = Collections.emptyList();
private Icon myIcon;
public LocalArchivedTemplate(String displayName,
URL archivePath) {
@@ -61,7 +65,12 @@ public class LocalArchivedTemplate extends ArchivedProjectTemplate {
});
if (s != null) {
try {
myInputFields = RemoteTemplatesFactory.getFields(JDOMUtil.loadDocument(s).getRootElement(), Namespace.NO_NAMESPACE);
Element templateElement = JDOMUtil.loadDocument(s).getRootElement();
myInputFields = RemoteTemplatesFactory.getFields(templateElement, Namespace.NO_NAMESPACE);
String iconPath = templateElement.getChildText("icon-path");
if (iconPath != null) {
myIcon = IconLoader.findIcon(iconPath);
}
}
catch (Exception e) {
throw new RuntimeException(e);
@@ -79,6 +88,11 @@ public class LocalArchivedTemplate extends ArchivedProjectTemplate {
});
}
@Override
public Icon getIcon() {
return myIcon == null ? super.getIcon() : myIcon;
}
@Nullable
String readEntry(Condition<ZipEntry> condition) {
ZipInputStream stream = null;
@@ -87,7 +101,7 @@ public class LocalArchivedTemplate extends ArchivedProjectTemplate {
ZipEntry entry;
while ((entry = stream.getNextEntry()) != null) {
if (condition.value(entry)) {
return StreamUtil.readText(stream);
return StreamUtil.readText(stream, TemplateModuleBuilder.UTF_8);
}
}
}
@@ -20,6 +20,7 @@ import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.FileTemplateUtil;
import com.intellij.ide.util.newProjectWizard.SupportForFrameworksStep;
import com.intellij.ide.util.newProjectWizard.modes.ImportImlMode;
import com.intellij.ide.util.projectWizard.*;
import com.intellij.openapi.application.ApplicationManager;
@@ -43,12 +44,14 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.newvfs.RefreshQueue;
import com.intellij.platform.templates.github.ZipUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.NullableFunction;
import com.intellij.util.containers.ContainerUtil;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.util.List;
@@ -81,7 +84,13 @@ public class TemplateModuleBuilder extends ModuleBuilder {
@Override
public ModuleWizardStep[] createWizardSteps(WizardContext wizardContext, ModulesProvider modulesProvider) {
return myType.createModuleBuilder().createWizardSteps(wizardContext, modulesProvider);
ModuleWizardStep[] steps = myType.createModuleBuilder().createWizardSteps(wizardContext, modulesProvider);
for (ModuleWizardStep step : steps) {
if (step instanceof SupportForFrameworksStep) {
return ArrayUtil.remove(steps, step);
}
}
return steps;
}
@Override
@@ -140,6 +149,11 @@ public class TemplateModuleBuilder extends ModuleBuilder {
return myType;
}
@Override
public Icon getNodeIcon() {
return myTemplate.getIcon();
}
@NotNull
@Override
public Module createModule(@NotNull ModifiableModuleModel moduleModel)