@@ -16,7 +16,6 @@ import com.intellij.openapi.application.runReadAction
1616import com.intellij.openapi.project.DumbService
1717import com.intellij.openapi.project.Project
1818import com.intellij.openapi.project.guessProjectDir
19- import com.intellij.openapi.vfs.LocalFileSystem
2019import com.intellij.openapi.vfs.VfsUtilCore
2120import com.intellij.openapi.vfs.VirtualFile
2221import com.intellij.openapi.vfs.readText
@@ -26,6 +25,7 @@ import com.intellij.ui.OnePixelSplitter
2625import com.intellij.ui.components.JBList
2726import com.intellij.ui.components.JBScrollPane
2827import com.intellij.util.ui.components.BorderLayoutPanel
28+ import shop.itbug.flutterx.i18n.PluginBundle
2929import shop.itbug.flutterx.manager.FlutterAndroidMigrateManager
3030import java.awt.Dimension
3131import java.io.File
@@ -74,16 +74,16 @@ sealed class AndroidMigrateFile(open val file: VirtualFile) {
7474
7575class AndroidBuildFile (androidBuildFile : VirtualFile ) : AndroidMigrateFile(androidBuildFile) {
7676
77- override fun updatePsi (project : Project , vf : VirtualFile ) {
78- FlutterAndroidMigrateManager .getInstance(project).getNewAndroidBuildFile(vf )
77+ override fun updatePsi (project : Project , file : VirtualFile ) {
78+ FlutterAndroidMigrateManager .getInstance(project).getNewAndroidBuildFile(file )
7979 }
8080}
8181
8282
8383class AndroidAppBuildFile (androidAppBuildFile : VirtualFile ) : AndroidMigrateFile(androidAppBuildFile) {
8484
85- override fun updatePsi (project : Project , vf : VirtualFile ) {
86- FlutterAndroidMigrateManager .getInstance(project).getNewAppBuildFile(vf )
85+ override fun updatePsi (project : Project , file : VirtualFile ) {
86+ FlutterAndroidMigrateManager .getInstance(project).getNewAppBuildFile(file )
8787 }
8888}
8989
@@ -99,14 +99,12 @@ class AndroidSettingsFile(override val file: VirtualFile) : AndroidMigrateFile(f
9999 * android 适配窗口
100100 *
101101 */
102- class FlutterXAndroidMigrateWindow (val project : Project ) : BorderLayoutPanel(),
102+ class FlutterXAndroidMigrateWindow (private val project : Project ) : BorderLayoutPanel(),
103103 ListSelectionListener {
104104
105105 private val androidService = FlutterAndroidMigrateManager .getInstance(project)
106106 private val sp = OnePixelSplitter ()
107107
108- // 将要修改的文件列表
109- private val willUpdateFiles = mutableSetOf<AndroidMigrateFile >()
110108 private var diffPanel: DiffRequestPanel ? = null
111109 private val list = JBList <AndroidMigrateFile >().apply {
112110 model = DefaultListModel ()
@@ -137,31 +135,28 @@ class FlutterXAndroidMigrateWindow(val project: Project) : BorderLayoutPanel(),
137135 val findAndroidBuildFile = androidService.findAndroidBuildFile()
138136 if (findAndroidBuildFile != null ) {
139137 val file = AndroidBuildFile (findAndroidBuildFile)
140- willUpdateFiles.add(file)
141138 getListModel().addElement(file)
142139 showDiffWindow(file)
143140 }
144141 val findAppBuildFile = androidService.findAppBuildFile()
145142 if (findAppBuildFile != null ) {
146143 val file = AndroidAppBuildFile (findAppBuildFile)
147- willUpdateFiles.add(file)
148144 getListModel().addElement(file)
149145 }
150146
151147 val settingsFile = androidService.findSettingsFile()
152148 if (settingsFile != null ) {
153149 val file = AndroidSettingsFile (settingsFile)
154- willUpdateFiles.add(file)
155150 getListModel().addElement(file)
156151 }
157- list.selectedIndex = 0
152+ if (getListModel().size > 0 ) {
153+ list.selectedIndex = 0
154+ }
158155
159156 }
160157
161158
162- private fun getListModel (): DefaultListModel <AndroidMigrateFile > {
163- return list.model as DefaultListModel <AndroidMigrateFile >
164- }
159+ private fun getListModel (): DefaultListModel <AndroidMigrateFile > = list.model as DefaultListModel <AndroidMigrateFile >
165160
166161
167162 // /显示 diff 窗口
@@ -180,34 +175,34 @@ class FlutterXAndroidMigrateWindow(val project: Project) : BorderLayoutPanel(),
180175 diffPanel = panel
181176 sp.secondComponent = panel.component
182177 } else {
183- diffPanel!! .setRequest(request)
178+ diffPanel? .setRequest(request)
184179 }
185180 }
186181 }
187182
188183 }
189184
190- private fun createActionsList (): List <AnAction > {
191- return listOf (FlutterAndroidMigrateAction ())
192- }
185+ private fun createActionsList (): List <AnAction > = listOf (FlutterAndroidMigrateAction ())
193186
194187 override fun valueChanged (e : ListSelectionEvent ? ) {
195- if (e != null && e.valueIsAdjusting) {
196- val index = e.firstIndex
197- if (index >= 0 ) {
198- val select = list.selectedValue
199- showDiffWindow(select)
200- }
188+ if (e == null || e.valueIsAdjusting) return
189+ val selected = list.selectedValue ? : return
190+ if (list.selectedIndex >= 0 ) {
191+ showDiffWindow(selected)
201192 }
202193 }
203194}
204195
205196
206- class FileListRender (val project : Project ) : ColoredListCellRenderer<AndroidMigrateFile>() {
197+ class FileListRender (private val project : Project ) : ColoredListCellRenderer<AndroidMigrateFile>() {
207198 override fun customizeCellRenderer (
208- p0 : JList <out AndroidMigrateFile ?>, p1 : AndroidMigrateFile ? , p2 : Int , p3 : Boolean , p4 : Boolean
199+ _list : JList <out AndroidMigrateFile ?>,
200+ value : AndroidMigrateFile ? ,
201+ _index : Int ,
202+ _selected : Boolean ,
203+ _hasFocus : Boolean ,
209204 ) {
210- p1 ?.let {
205+ value ?.let {
211206 icon = it.file.fileType.icon
212207 append(it.findRelativePath(project))
213208 }
@@ -217,15 +212,14 @@ class FileListRender(val project: Project) : ColoredListCellRenderer<AndroidMigr
217212
218213
219214// 将更改应用到项目中
220- class FlutterAndroidMigrateAction : AnAction (" 同意这些更改 " , " " , AllIcons .Actions .Checked ) {
215+ class FlutterAndroidMigrateAction : AnAction (PluginBundle .get("android.migrate.apply.changes") , " " , AllIcons .Actions .Checked ) {
221216
222217
223218 override fun actionPerformed (e : AnActionEvent ) {
219+ val project = e.project ? : return
224220 val editor = e.getData(DiffDataKeys .DIFF_REQUEST ) ? : return
225- val file = editor.getUserData(FlutterAndroidMigrateManager .FILE )!!
226- LocalFileSystem .getInstance().apply {
227- file.doReplace(e.project!! )
228- }
221+ val file = editor.getUserData(FlutterAndroidMigrateManager .FILE ) ? : return
222+ file.doReplace(project)
229223
230224 }
231225
@@ -241,4 +235,4 @@ class FlutterAndroidMigrateAction : AnAction("同意这些更改", "", AllIcons.
241235 override fun getActionUpdateThread (): ActionUpdateThread {
242236 return ActionUpdateThread .BGT
243237 }
244- }
238+ }
0 commit comments