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.IssueTabPanelModuleCreator;
8   import com.atlassian.plugins.codegen.modules.jira.TabPanelProperties;
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(IssueTabPanelModuleCreator.class)
18  public class IssueTabPanelPrompter extends AbstractModulePrompter<TabPanelProperties>
19  {
20  
21      public IssueTabPanelPrompter(Prompter prompter)
22      {
23          super(prompter);
24  
25      }
26  
27      @Override
28      public TabPanelProperties promptForBasicProperties(PluginModuleLocation moduleLocation) throws PrompterException
29      {
30          String className = promptJavaClassname("Enter New Classname", "MyIssueTabPanel");
31          String packageName = promptJavaPackagename("Enter Package Name", getDefaultBasePackage() + ".jira.tabpanels");
32  
33          String fqClass = ClassnameUtil.fullyQualifiedName(packageName, className);
34  
35          TabPanelProperties props = new TabPanelProperties(fqClass);
36  
37          Label label = new Label(props.getModuleKey() + ".label", props.getModuleName());
38          props.setLabel(label);
39  
40          props.setUseCustomClass(true);
41  
42          return props;
43      }
44  
45      @Override
46      public void promptForAdvancedProperties(TabPanelProperties props, PluginModuleLocation moduleLocation) throws PrompterException
47      {
48          props.setOrder(promptForInt("Order", 10));
49  
50          Label label = props.getLabel();
51          String labelKey = promptNotBlank("Enter Label Key", props.getLabel()
52                  .getKey());
53          String labelValue = promptNotBlank("Enter Label Value", props.getLabel()
54                  .getValue());
55  
56          label.setKey(labelKey);
57          label.setValue(labelValue);
58  
59          props.addI18nProperty(labelKey, labelValue);
60      }
61  }