1 package com.atlassian.maven.plugins.amps.codegen.prompter.jira;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import com.atlassian.maven.plugins.amps.codegen.annotations.ModuleCreatorClass;
9 import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
10 import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
11 import com.atlassian.plugins.codegen.modules.jira.KeyboardShortcutModuleCreator;
12 import com.atlassian.plugins.codegen.modules.jira.KeyboardShortcutProperties;
13
14 import org.codehaus.plexus.components.interactivity.Prompter;
15 import org.codehaus.plexus.components.interactivity.PrompterException;
16
17
18
19
20 @ModuleCreatorClass(KeyboardShortcutModuleCreator.class)
21 public class KeyboardShortcutPrompter extends AbstractModulePrompter<KeyboardShortcutProperties>
22 {
23
24 public KeyboardShortcutPrompter(Prompter prompter)
25 {
26 super(prompter);
27
28 }
29
30 @Override
31 public KeyboardShortcutProperties promptForBasicProperties(PluginModuleLocation moduleLocation) throws PrompterException
32 {
33 suppressAdvancedNamePrompt();
34
35 String moduleName = promptNotBlank("Enter Keyboard Shortcut Name", "My Keyboard Shortcut");
36
37 KeyboardShortcutProperties props = new KeyboardShortcutProperties(moduleName);
38 props.setShortcut(promptNotBlank("Enter Shortcut Character"));
39 props.setContext(promptForContext());
40 props.setOperationType(promptForOperation());
41 props.setOperationValue(promptNotBlank("Enter Operation Value"));
42
43 return props;
44 }
45
46 @Override
47 public void promptForAdvancedProperties(KeyboardShortcutProperties props, PluginModuleLocation moduleLocation) throws PrompterException
48 {
49 props.setHidden(promptForBoolean("Hidden?", "N"));
50 props.setOrder(promptForInt("Order", 10));
51 }
52
53 protected String promptForOperation() throws PrompterException
54 {
55 String operation = "";
56 List<String> operations = KeyboardShortcutProperties.ALLOWED_OPERATIONS;
57 StringBuilder operationQuery = new StringBuilder("Choose An Operation\n");
58 List<String> indexChoices = new ArrayList<String>(operations.size());
59 Map<String, String> indexedValues = new HashMap<String, String>();
60 int index = 1;
61 String strIndex;
62 for (String entry : operations)
63 {
64 strIndex = Integer.toString(index);
65 operationQuery.append(strIndex + ": " + entry + "\n");
66 indexChoices.add(strIndex);
67 indexedValues.put(strIndex, entry);
68 index++;
69 }
70
71 operationQuery.append("Choose a number: ");
72 String operationAnswer = prompt(operationQuery.toString(), indexChoices, "");
73 operation = indexedValues.get(operationAnswer);
74
75 return operation;
76 }
77
78 protected String promptForContext() throws PrompterException
79 {
80 String context = "";
81 List<String> contexts = KeyboardShortcutProperties.ALLOWED_CONTEXTS;
82 StringBuilder contextQuery = new StringBuilder("Choose A Context\n");
83 List<String> indexChoices = new ArrayList<String>(contexts.size());
84 Map<String, String> indexedValues = new HashMap<String, String>();
85 int index = 1;
86 String strIndex;
87 for (String entry : contexts)
88 {
89 strIndex = Integer.toString(index);
90 contextQuery.append(strIndex + ": " + entry + "\n");
91 indexChoices.add(strIndex);
92 indexedValues.put(strIndex, entry);
93 index++;
94 }
95
96 contextQuery.append("Choose a number: ");
97 String contextAnswer = prompt(contextQuery.toString(), indexChoices, "");
98 context = indexedValues.get(contextAnswer);
99
100 return context;
101 }
102 }