diff --git a/ts3-client/swing/src/main/java/com/ts3client/ui/ClientMenu.java b/ts3-client/swing/src/main/java/com/ts3client/ui/ClientMenu.java index eec91a7..6edb47e 100644 --- a/ts3-client/swing/src/main/java/com/ts3client/ui/ClientMenu.java +++ b/ts3-client/swing/src/main/java/com/ts3client/ui/ClientMenu.java @@ -47,6 +47,12 @@ final class ClientMenu { JMenuItem info = new JMenuItem("Connection Info", Icons.of("INFO")); info.addActionListener(a -> actions.showConnectionInfo(client)); menu.add(info); + if (!self) { + menu.addSeparator(); + JMenuItem moveHere = new JMenuItem("Move Client to own Channel", Icons.of("MOVE_CLIENT_TO_OWN_CHANNEL")); + moveHere.addActionListener(a -> actions.moveClientToOwnChannel(client)); + menu.add(moveHere); + } return menu; } } diff --git a/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTab.java b/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTab.java index b77988d..3b702dc 100644 --- a/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTab.java +++ b/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTab.java @@ -380,6 +380,13 @@ final class ServerTab implements ConnectionListener, ServerTreePanel.Actions { new ConnectionInfoDialog(host, conn, client.id, client.nickname).setVisible(true); } + @Override + public void moveClientToOwnChannel(ClientEntry client) { + if (!conn.isConnected() || client.id == conn.getSelfClientId()) return; + ClientEntry self = conn.getModel().getClient(conn.getSelfClientId()); + if (self != null) conn.moveClient(client.id, self.channelId, null); + } + @Override public void setChannelSubscribed(ChannelNode channel, boolean family, boolean subscribed) { if (conn.isConnected()) conn.setChannelsSubscribed(channel.familyIds(family), subscribed); diff --git a/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTreePanel.java b/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTreePanel.java index 51df0b1..7835fdd 100644 --- a/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTreePanel.java +++ b/ts3-client/swing/src/main/java/com/ts3client/ui/ServerTreePanel.java @@ -57,6 +57,9 @@ public final class ServerTreePanel extends JScrollPane { void showConnectionInfo(ClientEntry client); + /** Moves a client into the channel we are currently in. */ + void moveClientToOwnChannel(ClientEntry client); + /** Open the file repository browser for a channel. */ void browseFiles(ChannelNode channel);