Maven: action names
[idea/community.git] / plugins / maven / src / main / java / org / jetbrains / idea / maven / dom / generate / MavenGenerateDomActionGroup.java
1 /*
2  * Copyright 2000-2010 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.idea.maven.dom.generate;
17
18 import com.intellij.openapi.actionSystem.AnAction;
19 import com.intellij.openapi.actionSystem.DefaultActionGroup;
20 import com.intellij.util.Function;
21 import com.intellij.util.xml.DomElement;
22 import org.jetbrains.annotations.NonNls;
23 import org.jetbrains.annotations.NotNull;
24 import org.jetbrains.annotations.Nullable;
25 import org.jetbrains.idea.maven.dom.MavenDomBundle;
26 import org.jetbrains.idea.maven.dom.model.MavenDomDependency;
27 import org.jetbrains.idea.maven.dom.model.MavenDomPlugin;
28 import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel;
29 import org.jetbrains.idea.maven.dom.model.MavenDomRepository;
30
31 /**
32  * User: Sergey.Vasiliev
33  */
34 public class MavenGenerateDomActionGroup extends DefaultActionGroup {
35
36   public MavenGenerateDomActionGroup() {
37     // generate dependencies
38     final Function<MavenDomProjectModel, DomElement> dependenciesFunction = new Function<MavenDomProjectModel, DomElement>() {
39       public DomElement fun(MavenDomProjectModel mavenDomProjectModel) {
40         return mavenDomProjectModel.getDependencies();
41       }
42     };
43     add(createAction(MavenDomBundle.message("generate.dependency.artifact"), MavenDomDependency.class, "maven-dependency-artifact", dependenciesFunction));
44     add(createAction(MavenDomBundle.message("generate.dependency.group"), MavenDomDependency.class, "maven-dependency", dependenciesFunction));
45
46     // generate plugins
47     Function<MavenDomProjectModel, DomElement> pluginFunction = new Function<MavenDomProjectModel, DomElement>() {
48       public DomElement fun(MavenDomProjectModel mavenDomProjectModel) {
49         return mavenDomProjectModel.getBuild().getPlugins();
50       }
51     };
52     add(createAction(MavenDomBundle.message("generate.plugin.artifact"), MavenDomPlugin.class, "maven-plugin-artifact-first", pluginFunction));
53     add(createAction(MavenDomBundle.message("generate.plugin.group"), MavenDomPlugin.class, "maven-plugin", pluginFunction));
54
55     // generate repository
56     add(createAction(MavenDomRepository.class, "maven-repository", new Function<MavenDomProjectModel, DomElement>() {
57       public DomElement fun(MavenDomProjectModel mavenDomProjectModel) {
58         return mavenDomProjectModel.getRepositories();
59       }
60     }));
61   }
62
63   private static MavenCodeInsightGenerateAction createAction(String actionDescription,
64                                                       final Class<? extends DomElement> aClass,
65                                                       @NonNls @Nullable String mappingId,
66                                                       @NotNull Function<MavenDomProjectModel, DomElement> parentFunction) {
67     return new MavenCodeInsightGenerateAction(actionDescription, aClass, mappingId, parentFunction);
68   }
69
70   protected static AnAction createAction(final Class<? extends DomElement> aClass,
71                                          @NonNls @Nullable String mappingId,
72                                          @NotNull Function<MavenDomProjectModel, DomElement> parentFunction) {
73     return new MavenCodeInsightGenerateAction(aClass, mappingId, parentFunction);
74   }
75 }