mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 09:03:31 +07:00
presentation for project groups
This commit is contained in:
@@ -126,7 +126,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
@Nullable
|
||||
private ModuleBuilder myModuleBuilder;
|
||||
|
||||
public SelectTemplateStep(WizardContext context, StepSequence sequence, final MultiMap<String, ProjectTemplate> map) {
|
||||
public SelectTemplateStep(WizardContext context, StepSequence sequence, final MultiMap<TemplatesGroup, ProjectTemplate> map) {
|
||||
|
||||
myWizardContext = context;
|
||||
mySequence = sequence;
|
||||
@@ -148,14 +148,15 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
myExpertDecorator.setContentComponent(myExpertPanel);
|
||||
|
||||
final RemoteTemplatesFactory factory = new RemoteTemplatesFactory();
|
||||
final DynamicGroupNode dynamicGroupNode = new DynamicGroupNode(factory.getGroups()[0], factory);
|
||||
String group = factory.getGroups()[0];
|
||||
final DynamicGroupNode dynamicGroupNode = new DynamicGroupNode(new TemplatesGroup(group, null, null), factory);
|
||||
SimpleTreeStructure.Impl structure = new SimpleTreeStructure.Impl(new SimpleNode() {
|
||||
@Override
|
||||
public SimpleNode[] getChildren() {
|
||||
SimpleNode[] nodes =
|
||||
ContainerUtil.map2Array(map.entrySet(), NO_CHILDREN, new Function<Map.Entry<String, Collection<ProjectTemplate>>, SimpleNode>() {
|
||||
ContainerUtil.map2Array(map.entrySet(), NO_CHILDREN, new Function<Map.Entry<TemplatesGroup, Collection<ProjectTemplate>>, SimpleNode>() {
|
||||
@Override
|
||||
public SimpleNode fun(Map.Entry<String, Collection<ProjectTemplate>> entry) {
|
||||
public SimpleNode fun(Map.Entry<TemplatesGroup, Collection<ProjectTemplate>> entry) {
|
||||
return new GroupNode(entry.getKey(), entry.getValue());
|
||||
}
|
||||
});
|
||||
@@ -224,9 +225,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
if (name != null) {
|
||||
append(name);
|
||||
}
|
||||
}
|
||||
if (node instanceof GroupNode) {
|
||||
// setIcon(UIUtil.getTreeIcon(expanded));
|
||||
setIcon(node.getIcon());
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -569,7 +568,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
|
||||
private final ProjectTemplatesFactory myFactory;
|
||||
|
||||
private DynamicGroupNode(String group, ProjectTemplatesFactory factory) {
|
||||
private DynamicGroupNode(TemplatesGroup group, ProjectTemplatesFactory factory) {
|
||||
super(group, Collections.<ProjectTemplate>emptyList());
|
||||
myFactory = factory;
|
||||
}
|
||||
@@ -591,12 +590,13 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
}
|
||||
|
||||
private static class GroupNode extends SimpleNode {
|
||||
private final String myGroup;
|
||||
private final TemplatesGroup myGroup;
|
||||
private final Collection<ProjectTemplate> myTemplates;
|
||||
|
||||
public GroupNode(String group, Collection<ProjectTemplate> templates) {
|
||||
public GroupNode(TemplatesGroup group, Collection<ProjectTemplate> templates) {
|
||||
myGroup = group;
|
||||
myTemplates = templates;
|
||||
setIcon(group.getIcon());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -614,7 +614,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return myGroup;
|
||||
return myGroup.getName();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,6 +626,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
|
||||
public TemplateNode(GroupNode groupNode, ProjectTemplate template) {
|
||||
myGroupNode = groupNode;
|
||||
myTemplate = template;
|
||||
setIcon(template.createModuleBuilder().getNodeIcon());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.ide.util.newProjectWizard;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
* Date: 11/20/12
|
||||
*/
|
||||
public class TemplatesGroup {
|
||||
|
||||
private final String myName;
|
||||
private final String myDescription;
|
||||
private final Icon myIcon;
|
||||
|
||||
public TemplatesGroup(String name, String description, Icon icon) {
|
||||
myName = name;
|
||||
myDescription = description;
|
||||
myIcon = icon;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return myName;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return myDescription;
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return myIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
TemplatesGroup group = (TemplatesGroup)o;
|
||||
|
||||
if (!myName.equals(group.myName)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return myName.hashCode();
|
||||
}
|
||||
}
|
||||
+9
-8
@@ -17,6 +17,7 @@ package com.intellij.ide.util.newProjectWizard.modes;
|
||||
|
||||
import com.intellij.ide.util.newProjectWizard.SelectTemplateStep;
|
||||
import com.intellij.ide.util.newProjectWizard.StepSequence;
|
||||
import com.intellij.ide.util.newProjectWizard.TemplatesGroup;
|
||||
import com.intellij.ide.util.projectWizard.ModuleBuilder;
|
||||
import com.intellij.ide.util.projectWizard.WizardContext;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
@@ -50,28 +51,28 @@ public class CreateFromTemplateMode extends WizardMode {
|
||||
};
|
||||
private SelectTemplateStep mySelectTemplateStep;
|
||||
|
||||
public static MultiMap<String, ProjectTemplate> getTemplatesMap(WizardContext context) {
|
||||
public static MultiMap<TemplatesGroup, ProjectTemplate> getTemplatesMap(WizardContext context) {
|
||||
ProjectTemplatesFactory[] factories = ProjectTemplatesFactory.EP_NAME.getExtensions();
|
||||
final MultiMap<String, ProjectTemplate> groups = new MultiMap<String, ProjectTemplate>();
|
||||
final MultiMap<TemplatesGroup, ProjectTemplate> groups = new MultiMap<TemplatesGroup, ProjectTemplate>();
|
||||
for (ProjectTemplatesFactory factory : factories) {
|
||||
for (String group : factory.getGroups()) {
|
||||
ProjectTemplate[] templates = factory.createTemplates(group, context);
|
||||
List<ProjectTemplate> values = context.isCreatingNewProject() ? Arrays.asList(templates) : ContainerUtil.filter(templates,
|
||||
TEMPLATE_CONDITION);
|
||||
if (!values.isEmpty()) {
|
||||
groups.putValues(group, values);
|
||||
groups.putValues(new TemplatesGroup(group, null, null), values);
|
||||
}
|
||||
}
|
||||
}
|
||||
final MultiMap<String, ProjectTemplate> sorted = new MultiMap<String, ProjectTemplate>();
|
||||
final MultiMap<TemplatesGroup, ProjectTemplate> sorted = new MultiMap<TemplatesGroup, ProjectTemplate>();
|
||||
// put single leafs under "Other"
|
||||
for (Map.Entry<String, Collection<ProjectTemplate>> entry : groups.entrySet()) {
|
||||
for (Map.Entry<TemplatesGroup, Collection<ProjectTemplate>> entry : groups.entrySet()) {
|
||||
Collection<ProjectTemplate> templates = entry.getValue();
|
||||
if (templates.size() == 1 &&
|
||||
!ProjectTemplatesFactory.CUSTOM_GROUP.equals(entry.getKey())) {
|
||||
!ProjectTemplatesFactory.CUSTOM_GROUP.equals(entry.getKey().getName())) {
|
||||
|
||||
if (!(templates.iterator().next() instanceof LocalArchivedTemplate)) {
|
||||
sorted.putValues(ProjectTemplatesFactory.OTHER_GROUP, templates);
|
||||
sorted.putValues(new TemplatesGroup(ProjectTemplatesFactory.OTHER_GROUP, null, null), templates);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -100,7 +101,7 @@ public class CreateFromTemplateMode extends WizardMode {
|
||||
@Nullable
|
||||
@Override
|
||||
protected StepSequence createSteps(WizardContext context, @NotNull ModulesProvider modulesProvider) {
|
||||
MultiMap<String, ProjectTemplate> map = getTemplatesMap(context);
|
||||
MultiMap<TemplatesGroup, ProjectTemplate> map = getTemplatesMap(context);
|
||||
StepSequence sequence = new StepSequence();
|
||||
for (ProjectTemplate template : map.values()) {
|
||||
sequence.addStepsForBuilder(template.createModuleBuilder(), context, modulesProvider);
|
||||
|
||||
@@ -280,6 +280,10 @@ public abstract class ModuleBuilder extends ProjectBuilder{
|
||||
return getModuleType().getBigIcon();
|
||||
}
|
||||
|
||||
public Icon getNodeIcon() {
|
||||
return getModuleType().getNodeIcon(false);
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return getModuleType().getDescription();
|
||||
}
|
||||
|
||||
@@ -727,6 +727,11 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
|
||||
return AndroidIcons.Android24;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getNodeIcon() {
|
||||
return AndroidIcons.Android;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return AndroidBundle.message("android.module.type.description");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user