22
33import com .dengzii .plugin .template .Config ;
44import com .dengzii .plugin .template .model .Module ;
5- import com .intellij . openapi . options . SearchableConfigurable ;
5+ import com .dengzii . plugin . template . utils . PopMenuUtils ;
66import com .intellij .ui .DocumentAdapter ;
77import com .intellij .ui .components .JBList ;
88import com .intellij .ui .components .JBTabbedPane ;
9- import org .jetbrains .annotations .Nls ;
109import org .jetbrains .annotations .NotNull ;
11- import org .jetbrains .annotations .Nullable ;
1210
1311import javax .swing .*;
1412import javax .swing .event .DocumentEvent ;
1513import java .awt .*;
14+ import java .awt .event .MouseAdapter ;
15+ import java .awt .event .MouseEvent ;
16+ import java .util .HashMap ;
1617import java .util .List ;
18+ import java .util .Map ;
1719
1820/**
1921 * <pre>
2426 * desc :
2527 * </pre>
2628 */
27- public class ConfigurePanel extends JPanel implements SearchableConfigurable {
29+ public class ConfigurePanel extends JPanel {
2830
2931 private JPanel contentPane ;
3032
@@ -55,6 +57,16 @@ public ConfigurePanel() {
5557 initData ();
5658 }
5759
60+ public void cacheConfig () {
61+ if (currentConfig == null ) return ;
62+ currentConfig .getTemplate ().setFileTemplates (tableFileTemp .getPairResult ());
63+ currentConfig .getTemplate ().setPlaceholders (tablePlaceholder .getPairResult ());
64+ }
65+
66+ public void saveConfig () {
67+ Config .INSTANCE .saveModuleTemplates (configs );
68+ }
69+
5870 private void initComponent () {
5971 setLayout (new BorderLayout ());
6072 add (contentPane );
@@ -70,9 +82,11 @@ private void initComponent() {
7082
7183 private void initData () {
7284
73- actionbar .onAdd (() -> {
74- onAddConfig ();
75- return null ;
85+ actionbar .onAdd (new MouseAdapter () {
86+ @ Override
87+ public void mouseClicked (MouseEvent e ) {
88+ onAddConfig (e );
89+ }
7690 });
7791 actionbar .onRemove (() -> {
7892 onRemoveConfig ();
@@ -114,12 +128,23 @@ private void onChangeTab() {
114128 panelPreview .setModuleConfig (currentConfig );
115129 }
116130
117- private void onAddConfig () {
118- Module newConfig = Config .INSTANCE .getTEMPLATE_ANDROID_APPLICATION ().clone ();
119- configs .add (newConfig );
120- templateListModel .addElement (newConfig .getTemplateName ());
131+ private void onAddConfig (MouseEvent e ) {
132+
133+ Map <String , PopMenuUtils .PopMenuListener > items = new HashMap <>();
134+ items .put ("Empty Template" , () -> addModuleTemplate (Module .Companion .getEmpty ()));
135+ items .put ("Android Application" , () -> addModuleTemplate (Module .Companion .getAndroidApplication ()));
136+ items .put ("Auc Module" , () -> addModuleTemplate (Module .Companion .getAucModule ()));
137+ items .put ("Auc app" , () -> addModuleTemplate (Module .Companion .getAucApp ()));
138+ items .put ("Auc Pkg" , () -> addModuleTemplate (Module .Companion .getAucPkg ()));
139+ items .put ("Auc Export" , () -> addModuleTemplate (Module .Companion .getAucExport ()));
140+ PopMenuUtils .INSTANCE .create (items ).show (actionbar , e .getX (), e .getY ());
141+ }
142+
143+ private void addModuleTemplate (Module module ) {
144+ configs .add (module );
145+ templateListModel .addElement (module .getTemplateName ());
121146 listTemplate .doLayout ();
122- listTemplate .setSelectedIndex (configs .indexOf (newConfig ));
147+ listTemplate .setSelectedIndex (configs .indexOf (module ));
123148 }
124149
125150 private void onRemoveConfig () {
@@ -147,6 +172,9 @@ private void loadConfig() {
147172 configs = Config .INSTANCE .loadModuleTemplates ();
148173 templateListModel = new DefaultListModel <>();
149174 configs .forEach (module -> templateListModel .addElement (module .getTemplateName ()));
175+ if (templateListModel .size () > 0 ) {
176+ listTemplate .setSelectedIndex (0 );
177+ }
150178 }
151179
152180 private void onConfigSelect (int index ) {
@@ -165,55 +193,11 @@ private void onConfigSelect(int index) {
165193 tablePlaceholder .setPairData (currentConfig .getTemplate ().getPlaceholders ());
166194 }
167195
168- private void cacheConfig () {
169- if (currentConfig == null ) return ;
170- currentConfig .getTemplate ().setFileTemplates (tableFileTemp .getPairResult ());
171- currentConfig .getTemplate ().setPlaceholders (tablePlaceholder .getPairResult ());
172- }
173-
174196 private int getSelectedConfigIndex () {
175197 return listTemplate .getSelectedIndex ();
176198 }
177199
178200 private boolean noSelectedConfig () {
179201 return getSelectedConfigIndex () == -1 ;
180202 }
181-
182-
183- /////////////////////////////////////////////////////////////////////////////////////////
184- // Implement SearchableConfigurable
185-
186- @ Override
187- public void apply () {
188- if (panelConfig != null ) {
189- panelConfig .apply ();
190- return ;
191- }
192- cacheConfig ();
193- Config .INSTANCE .saveModuleTemplates (configs );
194- }
195-
196- @ NotNull
197- @ Override
198- public String getId () {
199- return "preferences.ModuleTemplateConfig" ;
200- }
201-
202- @ Nullable
203- @ Override
204- public JComponent createComponent () {
205- panelConfig = new ConfigurePanel ();
206- return panelConfig ;
207- }
208-
209- @ Override
210- public boolean isModified () {
211- return true ;
212- }
213-
214- @ Nls (capitalization = Nls .Capitalization .Title )
215- @ Override
216- public String getDisplayName () {
217- return "Directory Template" ;
218- }
219203}
0 commit comments