From 5d84a80a3913aaada8e61eb260567414eab518f6 Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Tue, 17 Feb 2015 17:17:17 +0100 Subject: [PATCH] Terminals: Bug 460065 - The SSH Terminal "disconnect" icon disappears when a selection is made --- .../ITerminalsConnectorConstants.java | 7 ------ .../launcher/SerialLauncherDelegate.java | 5 ----- .../ssh/launcher/SshLauncherDelegate.java | 5 ----- .../launcher/TelnetLauncherDelegate.java | 5 ----- .../plugin.xml | 22 ++++--------------- .../ui/terminals/internal/PropertyTester.java | 22 +++++++++---------- .../terminals/services/TerminalService.java | 3 --- .../ui/terminals/tabs/TabFolderManager.java | 2 -- 8 files changed, 14 insertions(+), 57 deletions(-) diff --git a/plugins/org.eclipse.tcf.te.core.terminals/src/org/eclipse/tcf/te/core/terminals/interfaces/constants/ITerminalsConnectorConstants.java b/plugins/org.eclipse.tcf.te.core.terminals/src/org/eclipse/tcf/te/core/terminals/interfaces/constants/ITerminalsConnectorConstants.java index 0624d36224f..d7ad345317a 100644 --- a/plugins/org.eclipse.tcf.te.core.terminals/src/org/eclipse/tcf/te/core/terminals/interfaces/constants/ITerminalsConnectorConstants.java +++ b/plugins/org.eclipse.tcf.te.core.terminals/src/org/eclipse/tcf/te/core/terminals/interfaces/constants/ITerminalsConnectorConstants.java @@ -67,13 +67,6 @@ public interface ITerminalsConnectorConstants { */ public static final String PROP_FORCE_NEW = "terminal.forceNew"; //$NON-NLS-1$ - /** - * Property: Flag to signal if the terminal tab shall have a disconnect button or not. - *

- * Property Type: {@link Boolean} - */ - public static final String PROP_HAS_DISCONNECT_BUTTON = "hasDisconnectButton"; //$NON-NLS-1$ - /** * Property: Terminals launcher delegate id. *

diff --git a/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java b/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java index 6a8dd00a414..1ad192c300c 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals.serial/src/org/eclipse/tcf/te/ui/terminals/serial/launcher/SerialLauncherDelegate.java @@ -68,11 +68,6 @@ public class SerialLauncherDelegate extends AbstractLauncherDelegate { properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle); } - // Serial terminals do have a disconnect button - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON)) { - properties.put(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON, Boolean.TRUE); - } - // Get the terminal service ITerminalService terminal = TerminalServiceFactory.getService(); // If not available, we cannot fulfill this request diff --git a/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java b/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java index 3fd55ba81e5..2faeb435c12 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals.ssh/src/org/eclipse/tcf/te/ui/terminals/ssh/launcher/SshLauncherDelegate.java @@ -75,11 +75,6 @@ public class SshLauncherDelegate extends AbstractLauncherDelegate { properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE); } - // SSH terminals do have a disconnect button - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON)) { - properties.put(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON, Boolean.TRUE); - } - // Get the terminal service ITerminalService terminal = TerminalServiceFactory.getService(); // If not available, we cannot fulfill this request diff --git a/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java b/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java index 6bb351c8f86..2f3c78e281a 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals.telnet/src/org/eclipse/tcf/te/ui/terminals/telnet/launcher/TelnetLauncherDelegate.java @@ -75,11 +75,6 @@ public class TelnetLauncherDelegate extends AbstractLauncherDelegate { properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE); } - // Telnet terminals do have a disconnect button - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON)) { - properties.put(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON, Boolean.TRUE); - } - // Get the terminal service ITerminalService terminal = TerminalServiceFactory.getService(); // If not available, we cannot fulfill this request diff --git a/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml b/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml index f9e422e573e..82f3803c2d8 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml +++ b/plugins/org.eclipse.tcf.te.ui.terminals/plugin.xml @@ -128,7 +128,7 @@ class="org.eclipse.tcf.te.ui.terminals.internal.PropertyTester" id="org.eclipse.tcf.te.ui.terminals.PropertyTester" namespace="org.eclipse.tcf.te.ui.terminals" - properties="hasApplicableLauncherDelegates,hasDisconnectButton,canDisconnect" + properties="hasApplicableLauncherDelegates,canDisconnect" type="java.lang.Object"> @@ -175,16 +175,6 @@ label="%command.disconnect.label" style="push" tooltip="%command.disconnect.tooltip"> - - - - - - - - - - @@ -263,13 +253,9 @@ class="org.eclipse.tcf.te.ui.terminals.internal.handler.DisconnectTerminalCommandHandler" commandId="org.eclipse.tcf.te.ui.terminals.command.disconnect"> - - - - - - - + + + diff --git a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java index cae006f42ca..1a98d00b8b6 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/internal/PropertyTester.java @@ -12,8 +12,9 @@ package org.eclipse.tcf.te.ui.terminals.internal; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants; +import org.eclipse.tcf.te.ui.terminals.interfaces.ITerminalsView; import org.eclipse.tcf.te.ui.terminals.launcher.LauncherDelegateManager; +import org.eclipse.tcf.te.ui.terminals.tabs.TabFolderManager; import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; @@ -34,18 +35,15 @@ public class PropertyTester extends org.eclipse.core.expressions.PropertyTester return expectedValue.equals(Boolean.valueOf(LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection).length > 0)); } - if ("hasDisconnectButton".equals(property) && receiver instanceof CTabItem) { //$NON-NLS-1$ - CTabItem tabItem = (CTabItem)receiver; - if (!tabItem.isDisposed()) { - Boolean hasDisconnectButton = (Boolean) tabItem.getData(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON); - return expectedValue.equals(hasDisconnectButton); - } - return false; - } + if ("canDisconnect".equals(property) && receiver instanceof ITerminalsView) { //$NON-NLS-1$ + CTabItem tabItem = null; - if ("canDisconnect".equals(property) && receiver instanceof CTabItem) { //$NON-NLS-1$ - CTabItem tabItem = (CTabItem)receiver; - if (!tabItem.isDisposed() && tabItem.getData() instanceof ITerminalViewControl) { + TabFolderManager manager = (TabFolderManager) ((ITerminalsView)receiver).getAdapter(TabFolderManager.class); + if (manager != null) { + tabItem = manager.getActiveTabItem(); + } + + if (tabItem != null && !tabItem.isDisposed() && tabItem.getData() instanceof ITerminalViewControl) { ITerminalViewControl terminal = (ITerminalViewControl)tabItem.getData(); TerminalState state = terminal.getState(); return expectedValue.equals(Boolean.valueOf(state != TerminalState.CLOSED)); diff --git a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java index 08398fcf462..c7857ca24a1 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java @@ -302,9 +302,6 @@ public class TerminalService implements ITerminalService { if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) { flags.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, (Boolean)properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW)); } - if (properties.get(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON) instanceof Boolean) { - flags.put(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON, (Boolean)properties.get(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON)); - } // Open the new console CTabItem item; if (secondaryId != null) diff --git a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java index 34dda24591d..13e9d8c37d3 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java @@ -283,8 +283,6 @@ public class TabFolderManager extends PlatformObject implements ISelectionProvid item.setData(terminal); // Associated the custom data node with the tab item (if any) if (data != null) item.setData("customData", data); //$NON-NLS-1$ - // Set the property that marks the item has a disconnect button or not if selected - item.setData(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON, flags != null && flags.containsKey(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON) ? flags.get(ITerminalsConnectorConstants.PROP_HAS_DISCONNECT_BUTTON) : Boolean.FALSE); // Overwrite the text canvas help id String contextHelpId = getParentView().getContextHelpId();