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 browseEditCommandBtn = JButton(Icons.folder)
|
||||||
private val pinTabComboBox = YesOrNoComboBox()
|
private val pinTabComboBox = YesOrNoComboBox()
|
||||||
private val preserveModificationTimeComboBox = YesOrNoComboBox()
|
private val preserveModificationTimeComboBox = YesOrNoComboBox()
|
||||||
|
private val doubleClickComboBox = OutlineComboBox<String>()
|
||||||
private val sftp get() = database.sftp
|
private val sftp get() = database.sftp
|
||||||
|
|
||||||
init {
|
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 {
|
preserveModificationTimeComboBox.addItemListener {
|
||||||
if (it.stateChange == ItemEvent.SELECTED) {
|
if (it.stateChange == ItemEvent.SELECTED) {
|
||||||
sftp.preserveModificationTime = preserveModificationTimeComboBox.selectedItem as Boolean
|
sftp.preserveModificationTime = preserveModificationTimeComboBox.selectedItem as Boolean
|
||||||
@@ -780,6 +788,26 @@ class SettingsOptionsPane : OptionsPane() {
|
|||||||
sftpCommandField.text = sftp.sftpCommand
|
sftpCommandField.text = sftp.sftpCommand
|
||||||
pinTabComboBox.selectedItem = sftp.pinTab
|
pinTabComboBox.selectedItem = sftp.pinTab
|
||||||
preserveModificationTimeComboBox.selectedItem = sftp.preserveModificationTime
|
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 {
|
override fun getIcon(isSelected: Boolean): Icon {
|
||||||
@@ -813,6 +841,8 @@ class SettingsOptionsPane : OptionsPane() {
|
|||||||
builder.add(editCommandField).xy(3, rows).apply { rows += 2 }
|
builder.add(editCommandField).xy(3, rows).apply { rows += 2 }
|
||||||
builder.add("${I18n.getString("termora.tabbed.contextmenu.sftp-command")}:").xy(1, rows)
|
builder.add("${I18n.getString("termora.tabbed.contextmenu.sftp-command")}:").xy(1, rows)
|
||||||
builder.add(sftpCommandField).xy(3, rows).apply { rows += 2 }
|
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("${I18n.getString("termora.settings.sftp.default-directory")}:").xy(1, rows)
|
||||||
builder.add(defaultDirectoryField).xy(3, rows).apply { rows += 2 }
|
builder.add(defaultDirectoryField).xy(3, rows).apply { rows += 2 }
|
||||||
builder.add(box).xyw(1, rows, 3).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)
|
var editCommand by StringPropertyDelegate(StringUtils.EMPTY)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 双击行为
|
||||||
|
*
|
||||||
|
* Transfer、Edit
|
||||||
|
*/
|
||||||
|
var dbClickBehavior by StringPropertyDelegate("Transfer")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sftp command
|
* sftp command
|
||||||
|
|||||||
@@ -430,6 +430,7 @@ internal class TransportPanel(
|
|||||||
})
|
})
|
||||||
|
|
||||||
table.addMouseListener(object : MouseAdapter() {
|
table.addMouseListener(object : MouseAdapter() {
|
||||||
|
private val sftp get() = DatabaseManager.getInstance().sftp
|
||||||
override fun mouseClicked(e: MouseEvent) {
|
override fun mouseClicked(e: MouseEvent) {
|
||||||
if (SwingUtilities.isLeftMouseButton(e) && e.clickCount % 2 == 0) {
|
if (SwingUtilities.isLeftMouseButton(e) && e.clickCount % 2 == 0) {
|
||||||
var row = table.selectedRow
|
var row = table.selectedRow
|
||||||
@@ -438,10 +439,18 @@ internal class TransportPanel(
|
|||||||
val attributes = model.getAttributes(row)
|
val attributes = model.getAttributes(row)
|
||||||
if (attributes.isDirectory) {
|
if (attributes.isDirectory) {
|
||||||
enterSelectionFolder()
|
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 {
|
} else {
|
||||||
val paths = listOf(model.getPath(row) to attributes)
|
val paths = listOf(model.getPath(row) to attributes)
|
||||||
if (loader.isOpened() && internalTransferManager.canTransfer(paths.map { it.first })) {
|
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)) {
|
} 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.edit-command=Edit Command
|
||||||
|
termora.settings.sftp.db-click-behavior=Double-click
|
||||||
termora.settings.sftp.fixed-tab=Fixed tab
|
termora.settings.sftp.fixed-tab=Fixed tab
|
||||||
termora.settings.sftp.default-directory=Default Directory
|
termora.settings.sftp.default-directory=Default Directory
|
||||||
termora.settings.sftp.preserve-time=Preserve original file modification time
|
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.edit-command=Редактировать команду
|
||||||
|
termora.settings.sftp.db-click-behavior=двойной щелчок
|
||||||
termora.settings.sftp.fixed-tab=Отображать вкладку
|
termora.settings.sftp.fixed-tab=Отображать вкладку
|
||||||
termora.settings.sftp.default-directory=Директория по умолчанию
|
termora.settings.sftp.default-directory=Директория по умолчанию
|
||||||
termora.settings.sftp.preserve-time=Сохранять исходное время модификации файла
|
termora.settings.sftp.preserve-time=Сохранять исходное время модификации файла
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ termora.settings.keymap.already-exists=快捷键 [{0}] 已经被 [{1}] 占用
|
|||||||
|
|
||||||
|
|
||||||
termora.settings.sftp.edit-command=编辑命令
|
termora.settings.sftp.edit-command=编辑命令
|
||||||
|
termora.settings.sftp.db-click-behavior=双击行为
|
||||||
termora.settings.sftp.fixed-tab=固定标签
|
termora.settings.sftp.fixed-tab=固定标签
|
||||||
termora.settings.sftp.default-directory=默认目录
|
termora.settings.sftp.default-directory=默认目录
|
||||||
termora.settings.sftp.preserve-time=保留原始文件修改时间
|
termora.settings.sftp.preserve-time=保留原始文件修改时间
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ termora.settings.keymap.action=操作
|
|||||||
termora.settings.keymap.already-exists=快捷鍵 [{0}] 已經被 [{1}] 占用
|
termora.settings.keymap.already-exists=快捷鍵 [{0}] 已經被 [{1}] 占用
|
||||||
|
|
||||||
termora.settings.sftp.edit-command=編輯命令
|
termora.settings.sftp.edit-command=編輯命令
|
||||||
|
termora.settings.sftp.db-click-behavior=按兩下行為
|
||||||
termora.settings.sftp.fixed-tab=固定標籤
|
termora.settings.sftp.fixed-tab=固定標籤
|
||||||
termora.settings.sftp.default-directory=預設目錄
|
termora.settings.sftp.default-directory=預設目錄
|
||||||
termora.settings.sftp.preserve-time=保留原始文件修改時間
|
termora.settings.sftp.preserve-time=保留原始文件修改時間
|
||||||
|
|||||||
Reference in New Issue
Block a user