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 }