mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
feat: support transfer double-click behavior
This commit is contained in:
@@ -650,6 +650,7 @@ class SettingsOptionsPane : OptionsPane() {
|
||||
private val browseEditCommandBtn = JButton(Icons.folder)
|
||||
private val pinTabComboBox = YesOrNoComboBox()
|
||||
private val preserveModificationTimeComboBox = YesOrNoComboBox()
|
||||
private val doubleClickComboBox = OutlineComboBox<String>()
|
||||
private val sftp get() = database.sftp
|
||||
|
||||
init {
|
||||
@@ -699,6 +700,13 @@ class SettingsOptionsPane : OptionsPane() {
|
||||
|
||||
})
|
||||
|
||||
doubleClickComboBox.addItemListener(object : ItemListener {
|
||||
override fun itemStateChanged(e: ItemEvent) {
|
||||
if (e.stateChange != ItemEvent.SELECTED) return
|
||||
sftp.dbClickBehavior = doubleClickComboBox.selectedItem as String
|
||||
}
|
||||
})
|
||||
|
||||
preserveModificationTimeComboBox.addItemListener {
|
||||
if (it.stateChange == ItemEvent.SELECTED) {
|
||||
sftp.preserveModificationTime = preserveModificationTimeComboBox.selectedItem as Boolean
|
||||
@@ -780,6 +788,26 @@ class SettingsOptionsPane : OptionsPane() {
|
||||
sftpCommandField.text = sftp.sftpCommand
|
||||
pinTabComboBox.selectedItem = sftp.pinTab
|
||||
preserveModificationTimeComboBox.selectedItem = sftp.preserveModificationTime
|
||||
|
||||
doubleClickComboBox.renderer = object : DefaultListCellRenderer() {
|
||||
override fun getListCellRendererComponent(
|
||||
list: JList<*>?,
|
||||
value: Any?,
|
||||
index: Int,
|
||||
isSelected: Boolean,
|
||||
cellHasFocus: Boolean
|
||||
): Component? {
|
||||
var text = value?.toString()
|
||||
if (value == "Edit") text = I18n.getString("termora.keymgr.edit")
|
||||
if (value == "Transfer") text = getTitle()
|
||||
return super.getListCellRendererComponent(list, text, index, isSelected, cellHasFocus)
|
||||
}
|
||||
}
|
||||
|
||||
doubleClickComboBox.addItem("Transfer")
|
||||
doubleClickComboBox.addItem("Edit")
|
||||
|
||||
doubleClickComboBox.selectedItem = sftp.dbClickBehavior
|
||||
}
|
||||
|
||||
override fun getIcon(isSelected: Boolean): Icon {
|
||||
@@ -813,6 +841,8 @@ class SettingsOptionsPane : OptionsPane() {
|
||||
builder.add(editCommandField).xy(3, rows).apply { rows += 2 }
|
||||
builder.add("${I18n.getString("termora.tabbed.contextmenu.sftp-command")}:").xy(1, rows)
|
||||
builder.add(sftpCommandField).xy(3, rows).apply { rows += 2 }
|
||||
builder.add("${I18n.getString("termora.settings.sftp.db-click-behavior")}:").xy(1, rows)
|
||||
builder.add(doubleClickComboBox).xy(3, rows).apply { rows += 2 }
|
||||
builder.add("${I18n.getString("termora.settings.sftp.default-directory")}:").xy(1, rows)
|
||||
builder.add(defaultDirectoryField).xy(3, rows).apply { rows += 2 }
|
||||
builder.add(box).xyw(1, rows, 3).apply { rows += 2 }
|
||||
|
||||
@@ -763,6 +763,12 @@ class DatabaseManager private constructor() : Disposable {
|
||||
*/
|
||||
var editCommand by StringPropertyDelegate(StringUtils.EMPTY)
|
||||
|
||||
/**
|
||||
* 双击行为
|
||||
*
|
||||
* Transfer、Edit
|
||||
*/
|
||||
var dbClickBehavior by StringPropertyDelegate("Transfer")
|
||||
|
||||
/**
|
||||
* sftp command
|
||||
|
||||
@@ -430,6 +430,7 @@ internal class TransportPanel(
|
||||
})
|
||||
|
||||
table.addMouseListener(object : MouseAdapter() {
|
||||
private val sftp get() = DatabaseManager.getInstance().sftp
|
||||
override fun mouseClicked(e: MouseEvent) {
|
||||
if (SwingUtilities.isLeftMouseButton(e) && e.clickCount % 2 == 0) {
|
||||
var row = table.selectedRow
|
||||
@@ -438,10 +439,18 @@ internal class TransportPanel(
|
||||
val attributes = model.getAttributes(row)
|
||||
if (attributes.isDirectory) {
|
||||
enterSelectionFolder()
|
||||
} else if (sftp.dbClickBehavior == "Edit") {
|
||||
val path = model.getPath(row)
|
||||
val target = Application.createSubTemporaryDir().resolve(path.name)
|
||||
val transferId = internalTransferManager.addHighTransfer(path, target)
|
||||
editTransferListener.addListenTransfer(transferId)
|
||||
} else {
|
||||
val paths = listOf(model.getPath(row) to attributes)
|
||||
if (loader.isOpened() && internalTransferManager.canTransfer(paths.map { it.first })) {
|
||||
internalTransferManager.addTransfer(paths, InternalTransferManager.TransferMode.Transfer)
|
||||
internalTransferManager.addTransfer(
|
||||
paths,
|
||||
InternalTransferManager.TransferMode.Transfer
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (SwingUtilities.isRightMouseButton(e)) {
|
||||
|
||||
@@ -115,6 +115,7 @@ termora.settings.keymap.already-exists=The shortcut [{0}] is already in use by [
|
||||
|
||||
|
||||
termora.settings.sftp.edit-command=Edit Command
|
||||
termora.settings.sftp.db-click-behavior=Double-click
|
||||
termora.settings.sftp.fixed-tab=Fixed tab
|
||||
termora.settings.sftp.default-directory=Default Directory
|
||||
termora.settings.sftp.preserve-time=Preserve original file modification time
|
||||
|
||||
@@ -101,6 +101,7 @@ termora.settings.keymap.already-exists=Комбинация [{0}] уже исп
|
||||
|
||||
|
||||
termora.settings.sftp.edit-command=Редактировать команду
|
||||
termora.settings.sftp.db-click-behavior=двойной щелчок
|
||||
termora.settings.sftp.fixed-tab=Отображать вкладку
|
||||
termora.settings.sftp.default-directory=Директория по умолчанию
|
||||
termora.settings.sftp.preserve-time=Сохранять исходное время модификации файла
|
||||
|
||||
@@ -127,6 +127,7 @@ termora.settings.keymap.already-exists=快捷键 [{0}] 已经被 [{1}] 占用
|
||||
|
||||
|
||||
termora.settings.sftp.edit-command=编辑命令
|
||||
termora.settings.sftp.db-click-behavior=双击行为
|
||||
termora.settings.sftp.fixed-tab=固定标签
|
||||
termora.settings.sftp.default-directory=默认目录
|
||||
termora.settings.sftp.preserve-time=保留原始文件修改时间
|
||||
|
||||
@@ -56,6 +56,7 @@ termora.settings.keymap.action=操作
|
||||
termora.settings.keymap.already-exists=快捷鍵 [{0}] 已經被 [{1}] 占用
|
||||
|
||||
termora.settings.sftp.edit-command=編輯命令
|
||||
termora.settings.sftp.db-click-behavior=按兩下行為
|
||||
termora.settings.sftp.fixed-tab=固定標籤
|
||||
termora.settings.sftp.default-directory=預設目錄
|
||||
termora.settings.sftp.preserve-time=保留原始文件修改時間
|
||||
|
||||
Reference in New Issue
Block a user