From b1e1f38b501a544a5f6a7a5c4e87ce1e21039544 Mon Sep 17 00:00:00 2001 From: hstyi Date: Sun, 29 Jun 2025 13:00:53 +0800 Subject: [PATCH] chore: improve plugin settings --- .../plugin/internal/plugin/MarketplacePanel.kt | 5 ++--- .../termora/plugin/internal/plugin/PluginOption.kt | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt b/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt index 03f5d7e..776d6e4 100644 --- a/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt +++ b/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt @@ -28,7 +28,7 @@ class MarketplacePanel : JPanel(BorderLayout()), Disposable { private val busyLabel = JXBusyLabel() private val coroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()) private val failedLabel = JLabel() - private val isLoading = AtomicBoolean(false) + val isLoading = AtomicBoolean(false) private val marketplaceManager get() = MarketplaceManager.getInstance() @@ -112,7 +112,6 @@ class MarketplacePanel : JPanel(BorderLayout()), Disposable { pluginsPanel.add(createMarketplacePluginPanel(plugin)) pluginsPanel.add(JToolBar.Separator()) } - pluginsPanel.add(createRetry()) cardLayout.show(cardPanel, PanelState.Plugins.name) } else { failedLabel.text = "No plugins found" @@ -134,7 +133,7 @@ class MarketplacePanel : JPanel(BorderLayout()), Disposable { private fun createRetry(): JComponent { val box = Box.createHorizontalBox() box.add(Box.createHorizontalGlue()) - box.add(JXHyperlink(object : AbstractAction(I18n.getString("termora.transport.sftp.retry")) { + box.add(JXHyperlink(object : AbstractAction(I18n.getString("termora.transport.table.contextmenu.refresh")) { override fun actionPerformed(e: ActionEvent) { marketplaceManager.clear() reload() diff --git a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginOption.kt b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginOption.kt index 2713aa8..3041af4 100644 --- a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginOption.kt +++ b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginOption.kt @@ -31,9 +31,11 @@ class PluginOption : JPanel(BorderLayout()), OptionsPane.Option, Disposable, Acc private val tabbed = FlatTabbedPane() private val toolbar = FlatToolBar() private val settingsButton = JButton(Icons.settings) + private val refreshButton = JButton(Icons.refresh) private val owner get() = SwingUtilities.getWindowAncestor(this) private val marketplacePanel = MarketplacePanel() private val installedPanel = InstalledPanel() + private val marketplaceManager get() = MarketplaceManager.getInstance() init { initView() @@ -58,10 +60,12 @@ class PluginOption : JPanel(BorderLayout()), OptionsPane.Option, Disposable, Acc tabbed.addTab(I18n.getString("termora.settings.plugin.installed"), installedPanel) toolbar.add(Box.createHorizontalGlue()) + toolbar.add(refreshButton) toolbar.add(settingsButton) tabbed.trailingComponent = toolbar tabbed.selectedIndex = EnableManager.getInstance().getFlag("PluginOption.defaultTab", 0) + refreshButton.isVisible = tabbed.selectedIndex == 0 add(tabbed, BorderLayout.CENTER) @@ -73,6 +77,13 @@ class PluginOption : JPanel(BorderLayout()), OptionsPane.Option, Disposable, Acc .let { Disposer.register(this, it) } settingsButton.addActionListener { showContextMenu() } + refreshButton.addActionListener { + if (marketplacePanel.isLoading.get().not()) { + marketplaceManager.clear() + marketplacePanel.reload() + } + } + tabbed.addChangeListener { refreshButton.isVisible = tabbed.selectedIndex == 0 } } override fun getIcon(isSelected: Boolean): Icon {