diff --git a/build.gradle.kts b/build.gradle.kts
index 324d17d..da68e35 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -105,7 +105,6 @@ dependencies {
api(libs.colorpicker)
api(libs.mixpanel)
- api(libs.jSerialComm)
api(libs.ini4j)
api(libs.restart4j)
api(libs.exposed.core)
diff --git a/plugins/serial/build.gradle.kts b/plugins/serial/build.gradle.kts
new file mode 100644
index 0000000..f9b4db1
--- /dev/null
+++ b/plugins/serial/build.gradle.kts
@@ -0,0 +1,17 @@
+plugins {
+ alias(libs.plugins.kotlin.jvm)
+}
+
+
+
+project.version = "0.0.1"
+
+
+dependencies {
+ testImplementation(kotlin("test"))
+ compileOnly(project(":"))
+ implementation("com.fazecast:jSerialComm:2.11.2")
+}
+
+apply(from = "$rootDir/plugins/common.gradle.kts")
+
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialHostOptionsPane.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialHostOptionsPane.kt
similarity index 99%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialHostOptionsPane.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialHostOptionsPane.kt
index 4adcf62..bed0769 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialHostOptionsPane.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialHostOptionsPane.kt
@@ -1,4 +1,4 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.*
import app.termora.plugin.internal.BasicGeneralOption
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialInternalPlugin.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPlugin.kt
similarity index 65%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialInternalPlugin.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPlugin.kt
index 6b1ef06..e9f9b79 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialInternalPlugin.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPlugin.kt
@@ -1,11 +1,18 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.plugin.Extension
-import app.termora.plugin.InternalPlugin
+import app.termora.plugin.ExtensionSupport
+import app.termora.plugin.Plugin
import app.termora.protocol.ProtocolHostPanelExtension
import app.termora.protocol.ProtocolProviderExtension
-internal class SerialInternalPlugin : InternalPlugin() {
+internal class SerialPlugin : Plugin {
+ private val support = ExtensionSupport()
+
+ override fun getAuthor(): String {
+ return "TermoraDev"
+ }
+
init {
support.addExtension(ProtocolProviderExtension::class.java) { SerialProtocolProviderExtension.instance }
support.addExtension(ProtocolHostPanelExtension::class.java) { SerialProtocolHostPanelExtension.instance }
@@ -13,7 +20,7 @@ internal class SerialInternalPlugin : InternalPlugin() {
override fun getName(): String {
- return "Serial Protocol"
+ return "Serial Comm"
}
diff --git a/src/main/kotlin/app/termora/SerialPortPtyConnector.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPortPtyConnector.kt
similarity index 97%
rename from src/main/kotlin/app/termora/SerialPortPtyConnector.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPortPtyConnector.kt
index cf8397c..de9b67c 100644
--- a/src/main/kotlin/app/termora/SerialPortPtyConnector.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialPortPtyConnector.kt
@@ -1,4 +1,4 @@
-package app.termora
+package app.termora.plugins.serial
import app.termora.terminal.PtyConnector
import com.fazecast.jSerialComm.SerialPort
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanel.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanel.kt
similarity index 93%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanel.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanel.kt
index cb12f5e..c7094ae 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanel.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanel.kt
@@ -1,4 +1,4 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.Disposer
import app.termora.Host
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanelExtension.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanelExtension.kt
similarity index 94%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanelExtension.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanelExtension.kt
index 8b16e2f..d582374 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolHostPanelExtension.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolHostPanelExtension.kt
@@ -1,4 +1,4 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.account.AccountOwner
import app.termora.protocol.ProtocolHostPanel
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProvider.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProvider.kt
similarity index 94%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProvider.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProvider.kt
index 20f5545..255131b 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProvider.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProvider.kt
@@ -1,4 +1,4 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.*
import app.termora.actions.DataProvider
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProviderExtension.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProviderExtension.kt
similarity index 90%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProviderExtension.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProviderExtension.kt
index 1b90ad3..f157523 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialProtocolProviderExtension.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialProtocolProviderExtension.kt
@@ -1,4 +1,4 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
import app.termora.protocol.ProtocolProvider
import app.termora.protocol.ProtocolProviderExtension
diff --git a/src/main/kotlin/app/termora/plugin/internal/serial/SerialTerminalTab.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialTerminalTab.kt
similarity index 79%
rename from src/main/kotlin/app/termora/plugin/internal/serial/SerialTerminalTab.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialTerminalTab.kt
index 3b318bb..6859698 100644
--- a/src/main/kotlin/app/termora/plugin/internal/serial/SerialTerminalTab.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/SerialTerminalTab.kt
@@ -1,6 +1,9 @@
-package app.termora.plugin.internal.serial
+package app.termora.plugins.serial
-import app.termora.*
+import app.termora.Host
+import app.termora.Icons
+import app.termora.PtyHostTerminalTab
+import app.termora.WindowScope
import app.termora.terminal.PtyConnector
import org.apache.commons.io.Charsets
import java.nio.charset.StandardCharsets
diff --git a/src/main/kotlin/app/termora/Serials.kt b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/Serials.kt
similarity index 92%
rename from src/main/kotlin/app/termora/Serials.kt
rename to plugins/serial/src/main/kotlin/app/termora/plugins/serial/Serials.kt
index f89d683..7dd4284 100644
--- a/src/main/kotlin/app/termora/Serials.kt
+++ b/plugins/serial/src/main/kotlin/app/termora/plugins/serial/Serials.kt
@@ -1,5 +1,8 @@
-package app.termora
+package app.termora.plugins.serial
+import app.termora.Host
+import app.termora.SerialCommFlowControl
+import app.termora.SerialCommParity
import com.fazecast.jSerialComm.SerialPort
object Serials {
diff --git a/plugins/serial/src/main/resources/META-INF/plugin.xml b/plugins/serial/src/main/resources/META-INF/plugin.xml
new file mode 100644
index 0000000..fc5670b
--- /dev/null
+++ b/plugins/serial/src/main/resources/META-INF/plugin.xml
@@ -0,0 +1,22 @@
+
+
+ serial
+
+ Serial Comm
+
+ ${projectVersion}
+
+
+
+ app.termora.plugins.serial.SerialPlugin
+
+
+ Supports access to serial ports
+ 支持访问串口
+ 支援訪問串口
+
+
+ TermoraDev
+
+
+
diff --git a/plugins/serial/src/main/resources/META-INF/pluginIcon.svg b/plugins/serial/src/main/resources/META-INF/pluginIcon.svg
new file mode 100644
index 0000000..602c7b5
--- /dev/null
+++ b/plugins/serial/src/main/resources/META-INF/pluginIcon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/plugins/serial/src/main/resources/META-INF/pluginIcon_dark.svg b/plugins/serial/src/main/resources/META-INF/pluginIcon_dark.svg
new file mode 100644
index 0000000..c78cf0b
--- /dev/null
+++ b/plugins/serial/src/main/resources/META-INF/pluginIcon_dark.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 7785d4d..4c5c3d2 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -15,3 +15,4 @@ include("plugins:editor")
include("plugins:geo")
include("plugins:webdav")
include("plugins:smb")
+include("plugins:serial")
diff --git a/src/main/kotlin/app/termora/plugin/PluginManager.kt b/src/main/kotlin/app/termora/plugin/PluginManager.kt
index 5d2608a..61190a2 100644
--- a/src/main/kotlin/app/termora/plugin/PluginManager.kt
+++ b/src/main/kotlin/app/termora/plugin/PluginManager.kt
@@ -8,7 +8,6 @@ import app.termora.plugin.internal.extension.DynamicExtensionPlugin
import app.termora.plugin.internal.local.LocalInternalPlugin
import app.termora.plugin.internal.plugin.PluginInternalPlugin
import app.termora.plugin.internal.rdp.RDPInternalPlugin
-import app.termora.plugin.internal.serial.SerialInternalPlugin
import app.termora.plugin.internal.sftppty.SFTPPtyInternalPlugin
import app.termora.plugin.internal.ssh.SSHInternalPlugin
import app.termora.plugin.internal.telnet.TelnetInternalPlugin
@@ -118,8 +117,6 @@ internal class PluginManager private constructor() {
plugins.add(PluginDescriptor(RDPInternalPlugin(), origin = PluginOrigin.Internal, version = version))
// telnet plugin
plugins.add(PluginDescriptor(TelnetInternalPlugin(), origin = PluginOrigin.Internal, version = version))
- // serial plugin
- plugins.add(PluginDescriptor(SerialInternalPlugin(), origin = PluginOrigin.Internal, version = version))
// wsl plugin
if (SystemUtils.IS_OS_WINDOWS) {
plugins.add(PluginDescriptor(WSLInternalPlugin(), origin = PluginOrigin.Internal, version = version))
diff --git a/src/main/kotlin/app/termora/plugin/internal/BasicGeneralOption.kt b/src/main/kotlin/app/termora/plugin/internal/BasicGeneralOption.kt
index d4ee32d..ba7be92 100644
--- a/src/main/kotlin/app/termora/plugin/internal/BasicGeneralOption.kt
+++ b/src/main/kotlin/app/termora/plugin/internal/BasicGeneralOption.kt
@@ -10,7 +10,7 @@ import java.awt.event.ComponentAdapter
import java.awt.event.ComponentEvent
import javax.swing.*
-internal class BasicGeneralOption : JPanel(BorderLayout()), OptionsPane.Option {
+class BasicGeneralOption : JPanel(BorderLayout()), OptionsPane.Option {
val nameTextField = OutlineTextField(128)
val remarkTextArea = FixedLengthTextArea(512)
private val formMargin = "7dlu"
diff --git a/src/main/kotlin/app/termora/tree/ShowMoreInfoSimpleTreeCellRendererExtension.kt b/src/main/kotlin/app/termora/tree/ShowMoreInfoSimpleTreeCellRendererExtension.kt
index 582da3c..ddf89c0 100644
--- a/src/main/kotlin/app/termora/tree/ShowMoreInfoSimpleTreeCellRendererExtension.kt
+++ b/src/main/kotlin/app/termora/tree/ShowMoreInfoSimpleTreeCellRendererExtension.kt
@@ -3,7 +3,6 @@ package app.termora.tree
import app.termora.*
import app.termora.plugin.internal.extension.DynamicExtensionHandler
import app.termora.plugin.internal.rdp.RDPProtocolProvider
-import app.termora.plugin.internal.serial.SerialProtocolProvider
import app.termora.plugin.internal.ssh.SSHProtocolProvider
import app.termora.plugin.internal.wsl.WSLProtocolProvider
import org.apache.commons.lang3.StringUtils
@@ -63,8 +62,6 @@ class ShowMoreInfoSimpleTreeCellRendererExtension private constructor() : Simple
} else {
"${host.username}@${host.host}"
}
- } else if (host.protocol == SerialProtocolProvider.PROTOCOL) {
- text = host.options.serialComm.port
} else if (host.protocol == WSLProtocolProvider.PROTOCOL) {
text = host.host
}