1   package com.atlassian.plugins.codegen.modules.jira;
2   
3   import com.atlassian.plugins.codegen.PluginProjectChangeset;
4   import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
5   import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
6   
7   import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
8   
9   /**
10   * @since 3.6
11   */
12  @JiraPluginModuleCreator
13  public class ComponentTabPanelModuleCreator extends AbstractPluginModuleCreator<TabPanelProperties>
14  {
15  
16      public static final String GENERIC_CLASS = "GenericTabPanel";
17      public static final String GENERIC_PACKAGE = "com.atlassian.jira.plugin.componentpanel.impl";
18      public static final String FQ_GENERIC_CLASS = GENERIC_PACKAGE + "." + GENERIC_CLASS;
19  
20      public static final String MODULE_NAME = "Component Tab Panel";
21      private static final String TEMPLATE_PREFIX = "templates/jira/tabpanel/component/";
22  
23      //stub
24      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "ComponentTabPanel.java.vtl";
25      private static final String UNIT_TEST_TEMPLATE = "templates/generic/GenericTest.java.vtl";
26      private static final String VIEW_TEMPLATE = TEMPLATE_PREFIX + "component-tab-panel.vm.vtl";
27  
28      //examples
29      private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
30  
31      private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "component-tab-panel-plugin.xml.vtl";
32  
33      @Override
34      public PluginProjectChangeset createModule(TabPanelProperties props) throws Exception
35      {
36          PluginProjectChangeset ret = new PluginProjectChangeset()
37              .withDependencies(MOCKITO_TEST)
38              .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
39  
40          if (props.includeExamples())
41          {
42              return ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
43          }
44          else
45          {
46              if (props.isUseCustomClass())
47              {
48                  ret = ret.with(createClassAndTests(props, CLASS_TEMPLATE, UNIT_TEST_TEMPLATE));
49              }
50              return ret.with(createTemplateResource(props, "tabpanels", props.getModuleKey() + ".vm", VIEW_TEMPLATE));
51          }
52      }
53  
54      @Override
55      public String getModuleName()
56      {
57          return MODULE_NAME;
58      }
59  }