From 2fdbf8e3e200558e0b02aae0416c5f1132cf532b Mon Sep 17 00:00:00 2001 From: Michael Scharf Date: Wed, 14 Nov 2007 05:58:57 +0000 Subject: [PATCH] call Logger.encode only if logging is enabled --- .../terminal/telnet/TelnetConnection.java | 5 +- .../internal/terminal/view/TerminalView.java | 122 +++++++----------- 2 files changed, 51 insertions(+), 76 deletions(-) diff --git a/org.eclipse.tm.terminal.telnet/src/org/eclipse/tm/internal/terminal/telnet/TelnetConnection.java b/org.eclipse.tm.terminal.telnet/src/org/eclipse/tm/internal/terminal/telnet/TelnetConnection.java index b4b2370ce44..895951ea5bf 100644 --- a/org.eclipse.tm.terminal.telnet/src/org/eclipse/tm/internal/terminal/telnet/TelnetConnection.java +++ b/org.eclipse.tm.terminal.telnet/src/org/eclipse/tm/internal/terminal/telnet/TelnetConnection.java @@ -311,8 +311,9 @@ public class TelnetConnection extends Thread implements TelnetCodes { terminalControl.setState(TerminalState.CLOSED); break; } else { - Logger.log("Received " + nRawBytes + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$ - Logger.encode(new String(rawBytes, 0, nRawBytes)) + "'"); //$NON-NLS-1$ + if(Logger.isLogEnabled()) + Logger.log("Received " + nRawBytes + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$ + Logger.encode(new String(rawBytes, 0, nRawBytes)) + "'"); //$NON-NLS-1$ // Process any TELNET protocol data that we receive. Don't // send any TELNET protocol data until we are sure the remote diff --git a/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java b/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java index 80b0d0608a9..6a7e11d8f92 100644 --- a/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java +++ b/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java @@ -22,6 +22,7 @@ import java.util.Set; import org.eclipse.core.runtime.Preferences; import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; @@ -613,28 +614,48 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi * */ protected class TerminalMenuHandlerEdit implements MenuListener, IMenuListener { - protected String fActionDefinitionIdCopy; - - protected String fActionDefinitionIdPaste; - - protected String fActionDefinitionIdSelectAll; - - protected int fAcceleratorCopy; - - protected int fAcceleratorPaste; - - protected int fAcceleratorSelectAll; - + AcceleratorDisabler fAcceleratorDisablerCopy=new AcceleratorDisabler(); + AcceleratorDisabler fAcceleratorDisablerPaste=new AcceleratorDisabler(); + AcceleratorDisabler fAcceleratorDisablerSelectAll=new AcceleratorDisabler(); + /** + * @author scharf + * 209656: [terminal] ClassCastException in TerminalView under Eclipse-3.4M3 + * https://bugs.eclipse.org/bugs/show_bug.cgi?id=209656 + * + * + * TODO: eliminate this code. + */ + class AcceleratorDisabler { + String fActionDefinitionId; + int fAccelerator; + ActionContributionItem fActionContributionItem; + public void menuAboutToShow(IContributionItem contribution) { + fActionContributionItem=null; + if(contribution instanceof ActionContributionItem) { + ActionContributionItem item = (ActionContributionItem) contribution; + if(item.getAction() instanceof RetargetAction) { + RetargetAction action = (RetargetAction) item.getAction(); + fActionDefinitionId = action.getActionDefinitionId(); + fAccelerator = action.getAccelerator(); + action.setActionDefinitionId(null); + action.enableAccelerator(false); + item.update(); + fActionContributionItem=item; + } + } + } + public void menuHidden() { + if(fActionContributionItem!=null) { + RetargetAction action = (RetargetAction) fActionContributionItem.getAction(); + action.setActionDefinitionId(fActionDefinitionId); + action.setAccelerator(fAccelerator); + action.enableAccelerator(true); + fActionContributionItem.update(); + fActionContributionItem=null; + } + } + } protected TerminalMenuHandlerEdit() { - super(); - - fActionDefinitionIdCopy = ""; //$NON-NLS-1$ - fActionDefinitionIdPaste = ""; //$NON-NLS-1$ - fActionDefinitionIdSelectAll = ""; //$NON-NLS-1$ - - fAcceleratorCopy = 0; - fAcceleratorPaste = 0; - fAcceleratorSelectAll = 0; } public void menuAboutToShow(IMenuManager menuMgr) { @@ -643,68 +664,21 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi updateEditCut(); updateEditPaste(); updateEditSelectAll(); - - ActionContributionItem item = (ActionContributionItem) menuMgr.find(ActionFactory.COPY.getId()); - RetargetAction action = (RetargetAction) item.getAction(); - fActionDefinitionIdCopy = action.getActionDefinitionId(); - fAcceleratorCopy = action.getAccelerator(); - action.setActionDefinitionId(null); - action.enableAccelerator(false); - item.update(); - - item = (ActionContributionItem) menuMgr.find(ActionFactory.PASTE.getId()); - action = (RetargetAction) item.getAction(); - fActionDefinitionIdPaste = action.getActionDefinitionId(); - fAcceleratorPaste = action.getAccelerator(); - action.setActionDefinitionId(null); - action.enableAccelerator(false); - item.update(); - - item = (ActionContributionItem) menuMgr.find(ActionFactory.SELECT_ALL.getId()); - action = (RetargetAction) item.getAction(); - fActionDefinitionIdSelectAll = action.getActionDefinitionId(); - fAcceleratorSelectAll = action.getAccelerator(); - action.setActionDefinitionId(null); - action.enableAccelerator(false); - item.update(); + fAcceleratorDisablerCopy.menuAboutToShow(menuMgr.find(ActionFactory.COPY.getId())); + fAcceleratorDisablerPaste.menuAboutToShow(menuMgr.find(ActionFactory.PASTE.getId())); + fAcceleratorDisablerSelectAll.menuAboutToShow(menuMgr.find(ActionFactory.SELECT_ALL.getId())); } public void menuShown(MenuEvent event) { // do nothing } public void menuHidden(MenuEvent event) { - MenuManager menuMgr; - ActionContributionItem item; - RetargetAction action; - fMenuAboutToShow = false; updateEditCopy(); updateEditCut(); - menuMgr = getEditMenuManager(); - - item = (ActionContributionItem) menuMgr.find(ActionFactory.COPY - .getId()); - action = (RetargetAction) item.getAction(); - action.setActionDefinitionId(fActionDefinitionIdCopy); - action.setAccelerator(fAcceleratorCopy); - action.enableAccelerator(true); - item.update(); - - item = (ActionContributionItem) menuMgr.find(ActionFactory.PASTE - .getId()); - action = (RetargetAction) item.getAction(); - action.setActionDefinitionId(fActionDefinitionIdPaste); - action.setAccelerator(fAcceleratorPaste); - action.enableAccelerator(true); - item.update(); - - item = (ActionContributionItem) menuMgr - .find(ActionFactory.SELECT_ALL.getId()); - action = (RetargetAction) item.getAction(); - action.setActionDefinitionId(fActionDefinitionIdSelectAll); - action.setAccelerator(fAcceleratorSelectAll); - action.enableAccelerator(true); - item.update(); + fAcceleratorDisablerCopy.menuHidden(); + fAcceleratorDisablerPaste.menuHidden(); + fAcceleratorDisablerSelectAll.menuHidden(); } }