mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
templates tree reordered
This commit is contained in:
@@ -89,19 +89,29 @@ public class SelectTemplateStep extends ModuleWizardStep {
|
||||
Messages.installHyperlinkSupport(myDescriptionPane);
|
||||
|
||||
ProjectTemplatesFactory[] factories = ProjectTemplatesFactory.EP_NAME.getExtensions();
|
||||
final MultiMap<String, ProjectTemplatesFactory> groups = new MultiMap<String, ProjectTemplatesFactory>();
|
||||
final MultiMap<String, ProjectTemplate> groups = new MultiMap<String, ProjectTemplate>();
|
||||
for (ProjectTemplatesFactory factory : factories) {
|
||||
for (String string : factory.getGroups()) {
|
||||
groups.putValue(string, factory);
|
||||
groups.putValues(string, Arrays.asList(factory.createTemplates(string, context)));
|
||||
}
|
||||
}
|
||||
final MultiMap<String, ProjectTemplate> sorted = new MultiMap<String, ProjectTemplate>();
|
||||
// put single leafs under "Other"
|
||||
for (Map.Entry<String, Collection<ProjectTemplate>> entry : groups.entrySet()) {
|
||||
if (entry.getValue().size() > 1 || ArchivedTemplatesFactory.CUSTOM_GROUP.equals(entry.getKey())) {
|
||||
sorted.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
else {
|
||||
sorted.putValues("Other", entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
SimpleTreeStructure.Impl structure = new SimpleTreeStructure.Impl(new SimpleNode() {
|
||||
@Override
|
||||
public SimpleNode[] getChildren() {
|
||||
return ContainerUtil.map2Array(groups.entrySet(), NO_CHILDREN, new Function<Map.Entry<String, Collection<ProjectTemplatesFactory>>, SimpleNode>() {
|
||||
return ContainerUtil.map2Array(sorted.entrySet(), NO_CHILDREN, new Function<Map.Entry<String, Collection<ProjectTemplate>>, SimpleNode>() {
|
||||
@Override
|
||||
public SimpleNode fun(Map.Entry<String, Collection<ProjectTemplatesFactory>> entry) {
|
||||
public SimpleNode fun(Map.Entry<String, Collection<ProjectTemplate>> entry) {
|
||||
return new GroupNode(entry.getKey(), entry.getValue());
|
||||
}
|
||||
});
|
||||
@@ -182,7 +192,7 @@ public class SelectTemplateStep extends ModuleWizardStep {
|
||||
}
|
||||
mySettingsPanel.setVisible(settingsPanel != null);
|
||||
String description = template.getDescription();
|
||||
if (description != null) {
|
||||
if (StringUtil.isNotEmpty(description)) {
|
||||
StringBuilder sb = new StringBuilder("<html><body><font face=\"Verdana\" ");
|
||||
sb.append(SystemInfo.isMac ? "" : "size=\"-1\"").append('>');
|
||||
sb.append(description).append("</font></body></html>");
|
||||
@@ -234,12 +244,10 @@ public class SelectTemplateStep extends ModuleWizardStep {
|
||||
case KeyEvent.VK_DOWN:
|
||||
myTemplatesTree.setSelectionRow(row < myTemplatesTree.getRowCount() - 1 ? row + 1 : 0);
|
||||
break;
|
||||
case KeyEvent.VK_ENTER:
|
||||
myTemplatesTree.expandRow(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
}.registerCustomShortcutSet(new CustomShortcutSet(KeyEvent.VK_UP, KeyEvent.VK_DOWN, KeyEvent.VK_ENTER), mySearchField);
|
||||
}.registerCustomShortcutSet(new CustomShortcutSet(KeyEvent.VK_UP, KeyEvent.VK_DOWN), mySearchField);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -368,23 +376,20 @@ public class SelectTemplateStep extends ModuleWizardStep {
|
||||
mySearchField = new SearchTextField(false);
|
||||
}
|
||||
|
||||
private class GroupNode extends SimpleNode {
|
||||
private static class GroupNode extends SimpleNode {
|
||||
private final String myGroup;
|
||||
private final Collection<ProjectTemplatesFactory> myFactories;
|
||||
private final Collection<ProjectTemplate> myTemplates;
|
||||
|
||||
public GroupNode(String group, Collection<ProjectTemplatesFactory> factories) {
|
||||
public GroupNode(String group, Collection<ProjectTemplate> templates) {
|
||||
myGroup = group;
|
||||
myFactories = factories;
|
||||
myTemplates = templates;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleNode[] getChildren() {
|
||||
List<SimpleNode> children = new ArrayList<SimpleNode>();
|
||||
for (ProjectTemplatesFactory factory : myFactories) {
|
||||
ProjectTemplate[] templates = factory.createTemplates(myGroup, myContext);
|
||||
for (ProjectTemplate template : templates) {
|
||||
children.add(new TemplateNode(template));
|
||||
}
|
||||
for (ProjectTemplate template : myTemplates) {
|
||||
children.add(new TemplateNode(template));
|
||||
}
|
||||
return children.toArray(new SimpleNode[children.size()]);
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ public class ArchivedTemplatesFactory implements ProjectTemplatesFactory {
|
||||
}
|
||||
|
||||
static String getCustomTemplatesPath() {
|
||||
return PathManager.getConfigPath() + "/projectTemplates";
|
||||
return PathManager.getConfigPath() + "/resources/projectTemplates";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -39,48 +39,65 @@ public class EmptyModuleTemplatesFactory implements ProjectTemplatesFactory {
|
||||
@NotNull
|
||||
@Override
|
||||
public String[] getGroups() {
|
||||
return new String[] {GROUP_NAME};
|
||||
List<ModuleBuilder> builders = ModuleBuilder.getAllBuilders();
|
||||
return ContainerUtil.map2Array(builders, String.class, new Function<ModuleBuilder, String>() {
|
||||
@Override
|
||||
public String fun(ModuleBuilder builder) {
|
||||
return getGroupName(builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ProjectTemplate[] createTemplates(String group, WizardContext context) {
|
||||
List<ModuleBuilder> builders = ModuleBuilder.getAllBuilders();
|
||||
return ContainerUtil.map2Array(builders, ProjectTemplate.class, new Function<ModuleBuilder, ProjectTemplate>() {
|
||||
@Override
|
||||
public ProjectTemplate fun(final ModuleBuilder builder) {
|
||||
return new ProjectTemplate() {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getName() {
|
||||
return builder.getPresentableName();
|
||||
}
|
||||
for (ModuleBuilder builder : builders) {
|
||||
if (getGroupName(builder).equals(group)) return new ProjectTemplate[] {new EmptyModuleTemplate(builder)};
|
||||
}
|
||||
return new ProjectTemplate[0];
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return builder.getDescription();
|
||||
}
|
||||
private static String getGroupName(ModuleBuilder builder) {
|
||||
String name = builder.getPresentableName();
|
||||
return name.split(" ")[0];
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent getSettingsPanel() {
|
||||
return null;
|
||||
}
|
||||
private static class EmptyModuleTemplate implements ProjectTemplate {
|
||||
private final ModuleBuilder myBuilder;
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ModuleBuilder createModuleBuilder() {
|
||||
return builder;
|
||||
}
|
||||
public EmptyModuleTemplate(ModuleBuilder builder) {
|
||||
myBuilder = builder;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ValidationInfo validateSettings() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
@NotNull
|
||||
@Override
|
||||
public String getName() {
|
||||
return myBuilder.getPresentableName();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return myBuilder.getDescription();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent getSettingsPanel() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ModuleBuilder createModuleBuilder() {
|
||||
return myBuilder;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ValidationInfo validateSettings() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user