Skip to content

Commit 945a096

Browse files
committed
feat: add icon to remote list items
1 parent 851b335 commit 945a096

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
- ✔️️️ Operations in context menu: rm, cp, mv, touch, mkdir.
1515
- ✖️ Copy and Paste actions in both list...
1616
- ✖️ Transferring history list with retry button.
17-
- ✖️ Custom remote file VirtualFile.
1817

1918
## Known Issues
2019
- Connection can NOT be cancelled in connecting progress.

src/main/kotlin/net/allape/xftp/component/FileTable.kt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.allape.xftp.component
22

3-
import com.intellij.openapi.vfs.LocalFileSystem
3+
import com.intellij.icons.AllIcons
4+
import com.intellij.openapi.fileTypes.FileTypeManager
5+
import com.intellij.openapi.util.io.FileUtil
46
import com.intellij.ui.DarculaColors
57
import com.intellij.ui.JBColor
68
import com.intellij.ui.table.JBTable
@@ -11,7 +13,6 @@ import net.allape.util.LinuxHelper
1113
import java.awt.Component
1214
import java.awt.event.FocusEvent
1315
import java.awt.event.FocusListener
14-
import java.io.File
1516
import java.math.BigInteger
1617
import java.util.*
1718
import javax.swing.Icon
@@ -101,13 +102,25 @@ class FileTableModel(
101102
override fun getValueAt(rowIndex: Int, columnIndex: Int): Any? {
102103
try {
103104
val model = data[rowIndex]
105+
104106
var icon = IconUtil.getEmptyIcon(false)
105-
if (model.local) {
106-
val virtualFile = LocalFileSystem.getInstance().findFileByIoFile(File(model.path))
107-
if (virtualFile != null) {
108-
icon = IconUtil.computeBaseFileIcon(virtualFile)
107+
if (model.directory) {
108+
icon = AllIcons.Nodes.Folder
109+
} else {
110+
// 获取文件后缀
111+
FileUtil.getExtension(model.path, "").takeIf { it.isNotEmpty() }?.let {
112+
// 根据后缀读取文件图标
113+
FileTypeManager.getInstance().getFileTypeByExtension(it.toString()).icon?.let { i ->
114+
icon = i
115+
}
109116
}
110117
}
118+
// if (model.local) {
119+
// val virtualFile = LocalFileSystem.getInstance().findFileByIoFile(File(model.path))
120+
// if (virtualFile != null) {
121+
// icon = IconUtil.computeBaseFileIcon(virtualFile)
122+
// }
123+
// }
111124
when (columnIndex) {
112125
0 -> return icon
113126
1 -> return model.name

0 commit comments

Comments
 (0)