1   package com.atlassian.maven.plugins.amps.codegen.prompter.jira;
2   
3   import com.atlassian.maven.plugins.amps.codegen.annotations.ModuleCreatorClass;
4   import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
5   import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
6   import com.atlassian.plugins.codegen.modules.common.Label;
7   import com.atlassian.plugins.codegen.modules.jira.TabPanelProperties;
8   import com.atlassian.plugins.codegen.modules.jira.VersionTabPanelModuleCreator;
9   import com.atlassian.plugins.codegen.util.ClassnameUtil;
10  
11  import org.codehaus.plexus.components.interactivity.Prompter;
12  import org.codehaus.plexus.components.interactivity.PrompterException;
13  
14  /**
15   * @since 3.6
16   */
17  @ModuleCreatorClass(VersionTabPanelModuleCreator.class)
18  public class VersionTabPanelPrompter extends AbstractModulePrompter<TabPanelProperties>
19  {
20  
21      public VersionTabPanelPrompter(Prompter prompter)
22      {
23          super(prompter);
24  
25      }
26  
27      @Override
28      public TabPanelProperties promptForBasicProperties(PluginModuleLocation moduleLocation) throws PrompterException
29      {
30  
31          TabPanelProperties props;
32          boolean useGenericClass = promptForBoolean("Use " + VersionTabPanelModuleCreator.GENERIC_CLASS + "?", "Y");
33  
34          if (useGenericClass)
35          {
36              props = new TabPanelProperties(VersionTabPanelModuleCreator.FQ_GENERIC_CLASS);
37              props.setModuleNameAndKey(promptNotBlank("Enter Plugin Module Name", "My Version Tab Panel"));
38              suppressAdvancedNamePrompt();
39          } else
40          {
41              String className = promptJavaClassname("Enter New Classname", "MyVersionTabPanel");
42              String packageName = promptJavaPackagename("Enter Package Name", getDefaultBasePackage() + ".jira.tabpanels");
43              String fqClass = ClassnameUtil.fullyQualifiedName(packageName, className);
44  
45              props = new TabPanelProperties(fqClass);
46          }
47  
48          Label label = new Label(props.getModuleKey() + ".label", props.getModuleName());
49          props.setLabel(label);
50  
51          props.setUseCustomClass(!useGenericClass);
52  
53          return props;
54      }
55  
56      @Override
57      public void promptForAdvancedProperties(TabPanelProperties props, PluginModuleLocation moduleLocation) throws PrompterException
58      {
59          props.setOrder(promptForInt("Order", 10));
60  
61          Label label = props.getLabel();
62          String labelKey = promptNotBlank("Enter Label Key", props.getLabel()
63                  .getKey());
64          String labelValue = promptNotBlank("Enter Label Value", props.getLabel()
65                  .getValue());
66  
67          label.setKey(labelKey);
68          label.setValue(labelValue);
69  
70          props.addI18nProperty(labelKey, labelValue);
71      }
72  }