Skip to content

Commit cb3b1bb

Browse files
author
dengzi
committed
update configuration
1 parent 7f44365 commit cb3b1bb

10 files changed

Lines changed: 134 additions & 110 deletions

File tree

resources/META-INF/plugin.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
<depends>org.jetbrains.kotlin</depends>
2424

2525
<extensions defaultExtensionNs="com.intellij">
26+
<applicationService serviceImplementation="com.dengzii.plugin.template.ModuleTemplateConfigProvider"/>
2627
<fileTemplateGroup implementation="com.dengzii.plugin.template.template.FileTemplateFactory" order="first"/>
2728
<internalFileTemplate name="AndroidManifest" id="com.dengzii.plugin.template.ft.manifest"/>
28-
<projectConfigurable groupId="tools" displayName="Template Module Generator" id="preferences.ModuleTemplateConfig" instance="com.dengzii.plugin.template.ModuleConfig"/>
29+
<projectConfigurable groupId="tools" displayName="Template Module Generator"
30+
id="preferences.ModuleTemplateConfig"
31+
instance="com.dengzii.plugin.template.ui.ConfigurePanel"/>
2932
</extensions>
3033

3134
<actions>

src/com/dengzii/plugin/template/Config.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.dengzii.plugin.template
22

3-
import com.dengzii.plugin.template.model.ModuleConfig
3+
import com.dengzii.plugin.template.model.Module
44
import com.dengzii.plugin.template.template.AucTemplate
55
import com.intellij.ide.util.PropertiesComponent
66

@@ -19,21 +19,21 @@ object Config {
1919
private const val KEY_TEMPLATES = "KEY_TEMPLATES"
2020

2121
val DEFAULT_MODULE_TEMPLATE = listOf(
22-
ModuleConfig.create(AucTemplate.MODULE, "feature", "com.example.feature", "Java", "Auc Feature Module"),
23-
ModuleConfig.create(AucTemplate.APP, "app", "com.example.feature", "Java", "Auc App Module"),
24-
ModuleConfig.create(AucTemplate.PKG, "pkg", "com.example.feature", "Java", "Auc Pkg Module"),
25-
ModuleConfig.create(AucTemplate.EXPORT, "export", "com.example.feature", "Java", "Auc Export Module")
22+
Module.create(AucTemplate.MODULE, "feature", "com.example.feature", "Java", "Auc Feature Module"),
23+
Module.create(AucTemplate.APP, "app", "com.example.feature", "Java", "Auc App Module"),
24+
Module.create(AucTemplate.PKG, "pkg", "com.example.feature", "Java", "Auc Pkg Module"),
25+
Module.create(AucTemplate.EXPORT, "export", "com.example.feature", "Java", "Auc Export Module")
2626
)
2727

2828
fun clear() {
2929
PropertiesComponent.getInstance().unsetValue(KEY_TEMPLATES)
3030
}
3131

32-
fun loadModuleTemplates(): MutableList<ModuleConfig> {
32+
fun loadModuleTemplates(): MutableList<Module> {
3333
return DEFAULT_MODULE_TEMPLATE.toMutableList()
3434
}
3535

36-
fun saveModuleTemplates(templates: List<ModuleConfig>) {
36+
fun saveModuleTemplates(templates: List<Module>) {
3737

3838
}
3939
}

src/com/dengzii/plugin/template/FileWriteCommand.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.dengzii.plugin.template
22

33
import com.dengzii.plugin.template.model.FileTreeNode
4-
import com.dengzii.plugin.template.model.ModuleConfig
4+
import com.dengzii.plugin.template.model.Module
55
import com.dengzii.plugin.template.utils.Logger
66
import com.dengzii.plugin.template.utils.PluginKit
77
import com.intellij.openapi.command.UndoConfirmationPolicy
@@ -18,15 +18,15 @@ import com.intellij.util.ThrowableRunnable
1818
* desc :
1919
* </pre>
2020
*/
21-
class FileWriteCommand(private var kit: PluginKit, private var moduleConfig: ModuleConfig) : ThrowableRunnable<Exception> {
21+
class FileWriteCommand(private var kit: PluginKit, private var module: Module) : ThrowableRunnable<Exception> {
2222

2323
companion object {
2424
private val TAG = FileWriteCommand::class.java.simpleName
25-
fun startAction(kit: PluginKit, moduleConfig: ModuleConfig) {
25+
fun startAction(kit: PluginKit, module: Module) {
2626
WriteCommandAction.writeCommandAction(kit.project)
2727
.withGlobalUndo()
2828
.withUndoConfirmationPolicy(UndoConfirmationPolicy.REQUEST_CONFIRMATION)
29-
.run(FileWriteCommand(kit, moduleConfig))
29+
.run(FileWriteCommand(kit, module))
3030
}
3131
}
3232

@@ -37,7 +37,7 @@ class FileWriteCommand(private var kit: PluginKit, private var moduleConfig: Mod
3737
Logger.i(TAG, "Current target is not directory.")
3838
return
3939
}
40-
val fileTreeNode = moduleConfig.template
40+
val fileTreeNode = module.template
4141
Logger.d(TAG, fileTreeNode.placeHolderMap.toString())
4242
fileTreeNode.children.forEach {
4343
createFileTree(it, current)

src/com/dengzii/plugin/template/ModuleTemplateConfig.kt

Lines changed: 0 additions & 56 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.dengzii.plugin.template
2+
3+
import com.dengzii.plugin.template.model.Module
4+
import com.dengzii.plugin.template.utils.Logger
5+
import com.intellij.openapi.components.PersistentStateComponent
6+
import com.intellij.openapi.components.ServiceManager
7+
import com.intellij.openapi.components.State
8+
import com.intellij.openapi.components.Storage
9+
10+
/**
11+
* <pre>
12+
* author : dengzi
13+
* e-mail : dengzii@foxmail.com
14+
* github : https://github.com/dengzii
15+
* time : 2020/1/7
16+
* desc :
17+
* </pre>
18+
*/
19+
@State(
20+
name = "ModuleTemplateConfig",
21+
storages = [Storage("ModuleTemplateConfig.xml")]
22+
)
23+
class ModuleTemplateConfigProvider : PersistentStateComponent<MutableList<Module>> {
24+
25+
var moduleConfig = mutableListOf<Module>()
26+
27+
companion object {
28+
fun getService(): ModuleTemplateConfigProvider {
29+
return ServiceManager.getService(ModuleTemplateConfigProvider::class.java)
30+
}
31+
}
32+
33+
override fun getState(): MutableList<Module>? {
34+
Logger.i(ModuleTemplateConfigProvider::class.java.simpleName, "getState")
35+
return moduleConfig.toMutableList()
36+
}
37+
38+
override fun loadState(p0: MutableList<Module>) {
39+
Logger.i(ModuleTemplateConfigProvider::class.java.simpleName, "loadState")
40+
moduleConfig = p0
41+
}
42+
}

src/com/dengzii/plugin/template/model/ModuleConfig.kt renamed to src/com/dengzii/plugin/template/model/Module.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.dengzii.plugin.template.model
22

3-
class ModuleConfig(
3+
class Module(
44
var template: FileTreeNode,
55
var name: String,
66
var packageName: String,
@@ -10,14 +10,12 @@ class ModuleConfig(
1010

1111
enum class Language {
1212
JAVA, KOTLIN;
13-
14-
1513
}
1614

1715
companion object {
1816
fun create(template: FileTreeNode, moduleName: String,
19-
packageName: String, language: String, templateName: String): ModuleConfig {
20-
return ModuleConfig(template, moduleName, packageName, language, templateName)
17+
packageName: String, language: String, templateName: String): Module {
18+
return Module(template, moduleName, packageName, language, templateName)
2119
}
2220

2321
fun getLangList() = Language.values().map { it.name.toLowerCase() }.toTypedArray()

src/com/dengzii/plugin/template/ui/ConfigurePanel.form

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,16 @@
7979
<properties/>
8080
<border type="empty"/>
8181
<children>
82-
<scrollpane id="51ec5">
82+
<scrollpane id="edd3e" class="com.intellij.ui.components.JBScrollPane">
8383
<constraints>
84-
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
84+
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
8585
</constraints>
86-
<properties/>
87-
<border type="etched">
88-
<size top="0" left="0" bottom="0" right="0"/>
86+
<properties>
87+
<foreground color="-10197916"/>
88+
</properties>
89+
<border type="line">
90+
<title-color color="-10197916"/>
91+
<color color="-10197916"/>
8992
</border>
9093
<children>
9194
<component id="7d9fd" class="com.intellij.ui.components.JBList" binding="listTemplate">

src/com/dengzii/plugin/template/ui/ConfigurePanel.java

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
package com.dengzii.plugin.template.ui;
22

3-
import com.dengzii.plugin.template.Config;
4-
import com.dengzii.plugin.template.model.ModuleConfig;
3+
import com.dengzii.plugin.template.ModuleTemplateConfigProvider;
4+
import com.dengzii.plugin.template.model.Module;
55
import com.intellij.icons.AllIcons;
6+
import com.intellij.openapi.options.SearchableConfigurable;
67
import com.intellij.ui.components.JBList;
78
import com.intellij.ui.table.JBTable;
9+
import org.jetbrains.annotations.Nls;
10+
import org.jetbrains.annotations.NotNull;
11+
import org.jetbrains.annotations.Nullable;
812

913
import javax.swing.*;
1014
import java.awt.*;
1115
import java.util.List;
1216

13-
public class ConfigurePanel extends JPanel {
17+
/**
18+
* <pre>
19+
* author : dengzi
20+
* e-mail : dengzii@foxmail.com
21+
* github : https://github.com/dengzii
22+
* time : 2020/1/8
23+
* desc :
24+
* </pre>
25+
*/
26+
public class ConfigurePanel extends JPanel implements SearchableConfigurable {
1427

1528
private JPanel contentPane;
1629

@@ -24,27 +37,52 @@ public class ConfigurePanel extends JPanel {
2437
private JBTable JB;
2538
private JBList listTemplate;
2639

27-
private ApplyListener applyListener;
28-
private List<ModuleConfig> configs;
40+
private List<Module> configs;
2941
private DefaultListModel<String> model;
30-
private ModuleConfig currentConfig;
42+
private Module currentConfig;
3143

32-
public ConfigurePanel() {
44+
private ConfigurePanel() {
3345
setLayout(new BorderLayout());
3446
add(contentPane);
3547
initPanel();
3648
}
3749

38-
private void onApply() {
39-
Config.INSTANCE.saveModuleTemplates(configs);
40-
applyListener.apply(configs);
50+
@Override
51+
public void apply() {
52+
// Config.INSTANCE.saveModuleTemplates(configs);
53+
}
54+
55+
@NotNull
56+
@Override
57+
public String getId() {
58+
return "preferences.ModuleTemplateConfig";
59+
}
60+
61+
@Nullable
62+
@Override
63+
public JComponent createComponent() {
64+
return new ConfigurePanel();
65+
}
66+
67+
@Override
68+
public boolean isModified() {
69+
return false;
70+
}
71+
72+
@Nls(capitalization = Nls.Capitalization.Title)
73+
@Override
74+
public String getDisplayName() {
75+
return "Module Template Generator";
4176
}
4277

4378
private void onAdd() {
4479

4580
}
4681

4782
private void onRemove() {
83+
if (listTemplate.getSelectedIndex() == -1) {
84+
return;
85+
}
4886
configs.remove(listTemplate.getSelectedIndex());
4987
model.remove(listTemplate.getSelectedIndex());
5088
listTemplate.doLayout();
@@ -55,10 +93,10 @@ private void onCopy() {
5593
}
5694

5795
private void loadConfig() {
58-
configs = Config.INSTANCE.loadModuleTemplates();
96+
configs = ModuleTemplateConfigProvider.Companion.getService().getModuleConfig();
5997
model = new DefaultListModel<>();
60-
configs.forEach(moduleConfig -> {
61-
model.addElement(moduleConfig.getTemplateName());
98+
configs.forEach(module -> {
99+
model.addElement(module.getTemplateName());
62100
});
63101
listTemplate.setModel(model);
64102
}
@@ -85,8 +123,4 @@ private void setIconButton(JButton button, Icon icon) {
85123
button.setText("");
86124
button.setPreferredSize(new Dimension(25, 25));
87125
}
88-
89-
public interface ApplyListener {
90-
void apply(List<ModuleConfig> moduleConfig);
91-
}
92126
}

0 commit comments

Comments
 (0)