Skip to content

Commit 7f44365

Browse files
author
dengzi
committed
add configure panel
1 parent 80d3559 commit 7f44365

9 files changed

Lines changed: 367 additions & 166 deletions

File tree

resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<extensions defaultExtensionNs="com.intellij">
2626
<fileTemplateGroup implementation="com.dengzii.plugin.template.template.FileTemplateFactory" order="first"/>
2727
<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"/>
2829
</extensions>
2930

3031
<actions>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ object Config {
2929
PropertiesComponent.getInstance().unsetValue(KEY_TEMPLATES)
3030
}
3131

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

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

3838
}
3939
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.dengzii.plugin.template
2+
3+
import com.dengzii.plugin.template.model.ModuleConfig
4+
import com.dengzii.plugin.template.ui.ConfigurePanel
5+
import com.intellij.openapi.components.PersistentStateComponent
6+
import com.intellij.openapi.components.State
7+
import com.intellij.openapi.components.Storage
8+
import com.intellij.openapi.options.SearchableConfigurable
9+
import javax.swing.JComponent
10+
11+
/**
12+
* <pre>
13+
* author : dengzi
14+
* e-mail : denua@foxmail.com
15+
* github : https://github.com/MrDenua
16+
* time : 2020/1/7
17+
* desc :
18+
* </pre>
19+
*/
20+
@State(
21+
name = "ModuleTemplateConfig",
22+
storages = [Storage("ModuleTemplateConfig.xml")]
23+
)
24+
class ModuleTemplateConfig : PersistentStateComponent<List<ModuleConfig>> {
25+
26+
override fun getState(): List<ModuleConfig>? {
27+
return null
28+
}
29+
30+
override fun loadState(p0: List<ModuleConfig>) {
31+
32+
}
33+
}
34+
35+
class ModuleConfig:SearchableConfigurable{
36+
override fun isModified(): Boolean {
37+
return false
38+
}
39+
40+
override fun getId(): String {
41+
return "this.is.id"
42+
}
43+
44+
override fun getDisplayName(): String {
45+
return "display name"
46+
}
47+
48+
override fun apply() {
49+
println("apply")
50+
}
51+
52+
override fun createComponent(): JComponent? {
53+
return ConfigurePanel()
54+
}
55+
56+
}

src/com/dengzii/plugin/template/model/FileTreeNode.kt

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.dengzii.plugin.template.template.Placeholder
44
import com.dengzii.plugin.template.template.replacePlaceholder
55
import com.dengzii.plugin.template.utils.Logger
66
import java.io.File
7+
import java.util.*
78

89
/**
910
* <pre>
@@ -22,7 +23,7 @@ open class FileTreeNode private constructor() {
2223
}
2324

2425
var isDir = true
25-
val children by lazy { mutableSetOf<FileTreeNode>() }
26+
val children by lazy { mutableListOf<FileTreeNode>() }
2627
var placeHolderMap: MutableMap<String, String>? = null
2728
get() = field ?: parent?.placeHolderMap
2829

@@ -179,19 +180,12 @@ open class FileTreeNode private constructor() {
179180
return parent!!.getPath() + "/" + name
180181
}
181182

182-
183183
fun isRoot(): Boolean {
184184
return this == parent
185185
}
186186

187187
fun getTreeGraph(): String {
188-
val strBuilder = StringBuilder()
189-
var line = 0x1
190-
traversal({ i, dep ->
191-
val head = if (i.isRoot()) "" else if (children.last() == i) "" else ""
192-
strBuilder.append("".repeat(dep) + "$head" + i.name).append("\n")
193-
})
194-
return strBuilder.toString()
188+
return getNodeGraph().toString()
195189
}
196190

197191
fun clone(): FileTreeNode {
@@ -206,23 +200,30 @@ open class FileTreeNode private constructor() {
206200
return cl
207201
}
208202

203+
private fun getNodeGraph(head: Stack<String> = Stack(), str: StringBuilder = StringBuilder()): StringBuilder {
209204

210-
private fun getNodeGraph(head: StringBuilder = StringBuilder()): StringBuilder {
211-
val graph = StringBuilder(head)
212-
213-
graph.append(when (this) {
205+
head.forEach {
206+
str.append(it)
207+
}
208+
str.append(when (this) {
214209
parent?.children?.last() -> "└─"
215210
parent?.children?.first() -> "├─"
216-
else -> "┌─"
211+
else -> if (parent?.parent != null) "├─" else "┌─"
217212
})
218-
219-
graph.append(name).append("\n")
220-
if (isDir && !children.isNullOrEmpty()) {
221-
for (i in 0 until children.size) {
222-
213+
str.append(name).append("\n")
214+
215+
if (!children.isNullOrEmpty()) {
216+
head.push(when {
217+
parent == null -> ""
218+
parent?.children?.last() != this -> "\t"
219+
else -> "\t"
220+
})
221+
children.forEach {
222+
str.append(it.getNodeGraph(head))
223223
}
224+
head.pop()
224225
}
225-
return graph
226+
return str
226227
}
227228

228229
private fun createChild() {

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

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,6 @@ import com.dengzii.plugin.template.model.FileTreeNode
1010
* time : 2019/1/1
1111
* desc :
1212
</pre> */
13-
fun main() {
14-
val temp = AucFrame {
15-
dir("src/main/") {
16-
dir("java") {
17-
dir("com/example"){
18-
dir("foo"){
19-
file("bar.txt")
20-
}
21-
dir("app/c")
22-
}
23-
}
24-
dir("res") {
25-
dir("img/png"){
26-
27-
}
28-
}
29-
}
30-
build.gradle
31-
}
32-
println(temp.getTreeGraph())
33-
}
3413

3514
object AucTemplate {
3615

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

Lines changed: 0 additions & 105 deletions
This file was deleted.

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

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)