Skip to content

Commit 0267094

Browse files
committed
optimize create lua file ui
1 parent 7adf350 commit 0267094

File tree

6 files changed

+140
-42
lines changed

6 files changed

+140
-42
lines changed

src/main/java/com/tang/intellij/lua/actions/CreateLuaFileAction.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,23 @@ import com.intellij.openapi.project.Project
77
import com.intellij.psi.PsiDirectory
88
import com.tang.intellij.lua.lang.LuaIcons
99

10-
1110
/**
12-
*
13-
* Created by tangzx on 2016/12/24.
11+
* Enhanced Lua file creation action with Java-style dialog
1412
*/
15-
class CreateLuaFileAction : CreateFileFromTemplateAction(CREATE_LUA_FILE, "", LuaIcons.FILE), DumbAware {
13+
class CreateLuaFileAction : CreateFileFromTemplateAction("Lua File", "Create a new Lua file", LuaIcons.FILE), DumbAware {
14+
1615
override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) {
17-
builder.setTitle(CREATE_LUA_FILE)
18-
.addKind("Empty File", LuaIcons.FILE, "NewLua.lua")
19-
.addKind("Module", LuaIcons.FILE, "LuaModule.lua")
16+
builder.setTitle("New Lua Class/File")
2017
.addKind("Class", LuaIcons.FILE, "LuaClass.lua")
21-
.addKind("Script", LuaIcons.FILE, "LuaScript.lua")
22-
}
23-
24-
override fun getActionName(psiDirectory: PsiDirectory, s: String, s1: String): String {
25-
return CREATE_LUA_FILE
18+
.addKind("Module", LuaIcons.FILE, "LuaModule.lua")
19+
.addKind("Enum", LuaIcons.FILE, "LuaEnum.lua")
20+
.addKind("Unity", LuaIcons.FILE, "LuaUnity.lua")
21+
.addKind("Empty File", LuaIcons.FILE, "LuaEmpty.lua")
2622
}
2723

28-
companion object {
29-
private const val CREATE_LUA_FILE = "New Lua File"
24+
override fun getActionName(directory: PsiDirectory, newName: String, templateName: String): String {
25+
return "Create Lua File: $newName"
3026
}
3127
}
3228

29+

src/main/java/com/tang/intellij/lua/actions/LuaFileTemplateProvider.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import com.tang.intellij.lua.lang.LuaIcons
1313
class LuaFileTemplateProvider : FileTemplateGroupDescriptorFactory {
1414
override fun getFileTemplatesDescriptor(): FileTemplateGroupDescriptor {
1515
val group = FileTemplateGroupDescriptor("Lua", LuaIcons.FILE)
16-
group.addTemplate(FileTemplateDescriptor("NewLua.lua", LuaIcons.FILE))
17-
group.addTemplate(FileTemplateDescriptor("LuaModule.lua", LuaIcons.FILE))
1816
group.addTemplate(FileTemplateDescriptor("LuaClass.lua", LuaIcons.FILE))
19-
group.addTemplate(FileTemplateDescriptor("LuaScript.lua", LuaIcons.FILE))
17+
group.addTemplate(FileTemplateDescriptor("LuaModule.lua", LuaIcons.FILE))
18+
group.addTemplate(FileTemplateDescriptor("LuaEnum.lua", LuaIcons.FILE))
19+
group.addTemplate(FileTemplateDescriptor("LuaUnity.lua", LuaIcons.FILE))
20+
group.addTemplate(FileTemplateDescriptor("LuaEmpty.lua", LuaIcons.FILE))
2021
return group
2122
}
2223
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
---
2-
--- Created by ${USER}.
2+
--- Created by ${USER}
33
--- DateTime: ${DATE} ${TIME}
4-
---
4+
---
5+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
--- ${NAME} enum
3+
--- Created by ${USER}
4+
--- DateTime: ${DATE} ${TIME}
5+
---
6+
7+
---@class ${NAME}
8+
local ${NAME} = {
9+
-- Define enum values
10+
NONE = 0,
11+
FIRST = 1,
12+
SECOND = 2,
13+
THIRD = 3,
14+
}
15+
16+
---Get enum name by value
17+
---@param value number
18+
---@return string|nil
19+
function ${NAME}.getName(value)
20+
for name, val in pairs(${NAME}) do
21+
if val == value and type(val) == "number" then
22+
return name
23+
end
24+
end
25+
return nil
26+
end
27+
28+
---Check if value is valid
29+
---@param value number
30+
---@return boolean
31+
function ${NAME}.isValid(value)
32+
return ${NAME}.getName(value) ~= nil
33+
end
34+
35+
---Get all enum values
36+
---@return table<string, number>
37+
function ${NAME}.values()
38+
local result = {}
39+
for name, value in pairs(${NAME}) do
40+
if type(value) == "number" then
41+
result[name] = value
42+
end
43+
end
44+
return result
45+
end
46+
47+
-- Make enum read-only
48+
setmetatable(${NAME}, {
49+
__newindex = function()
50+
error("Attempt to modify read-only enum ${NAME}")
51+
end
52+
})
53+
54+
return ${NAME}

src/main/resources/fileTemplates/LuaScript.lua.ft

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
--- ${NAME} Unity script
3+
--- Created by ${USER}
4+
--- DateTime: ${DATE} ${TIME}
5+
---
6+
7+
local ${NAME} = {}
8+
9+
---@type UnityEngine.GameObject
10+
local gameObject = nil
11+
12+
---@type UnityEngine.Transform
13+
local transform = nil
14+
15+
---Called when the script instance is being loaded
16+
function ${NAME}.Awake()
17+
gameObject = CS.UnityEngine.GameObject.Find("${NAME}")
18+
if gameObject then
19+
transform = gameObject.transform
20+
end
21+
end
22+
23+
---Called on the frame when a script is enabled
24+
function ${NAME}.Start()
25+
print("${NAME} started")
26+
end
27+
28+
---Update is called every frame
29+
---@param deltaTime number
30+
function ${NAME}.Update(deltaTime)
31+
-- Update logic here
32+
end
33+
34+
---Called every fixed frame-rate frame
35+
function ${NAME}.FixedUpdate()
36+
-- Physics update logic here
37+
end
38+
39+
---Called when the behaviour becomes disabled or inactive
40+
function ${NAME}.OnDestroy()
41+
-- Cleanup logic here
42+
gameObject = nil
43+
transform = nil
44+
end
45+
46+
---Called when the object becomes enabled and active
47+
function ${NAME}.OnEnable()
48+
-- Enable logic here
49+
end
50+
51+
---Called when the behaviour becomes disabled
52+
function ${NAME}.OnDisable()
53+
-- Disable logic here
54+
end
55+
56+
---Called when a collision is detected
57+
---@param collision CS.UnityEngine.Collision
58+
function ${NAME}.OnCollisionEnter(collision)
59+
-- Collision logic here
60+
end
61+
62+
---Called when a trigger is entered
63+
---@param other CS.UnityEngine.Collider
64+
function ${NAME}.OnTriggerEnter(other)
65+
-- Trigger logic here
66+
end
67+
68+
return ${NAME}

0 commit comments

Comments
 (0)