Code cleanup.
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandLauncher.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandLauncher.java
deleted file mode 100644
index 633567f..0000000
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandLauncher.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2012 Google Inc.
- *
- * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
- * Public License v1.0 which accompanies this distribution, and is available at
- *
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package com.google.eclipse.terminal.local.ui.view;
-
-import java.util.logging.*;
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.keys.*;
-import org.eclipse.ui.internal.keys.WorkbenchKeyboard.KeyDownFilter;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * @author alruiz@google.com (Alex Ruiz)
- */
-@SuppressWarnings("restriction")
-class CommandLauncher extends KeyAdapter {
- private static Logger logger = Logger.getLogger(CommandLauncher.class.getCanonicalName());
-
- @Override public void keyPressed(KeyEvent e) {
- if (!e.doit) {
- return;
- }
- IBindingService bindingService = (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
- // Necessary to handle copy/paste/"select all" keyboard accelerators.
- if (bindingService instanceof BindingService) {
- KeyDownFilter filter = ((BindingService) bindingService).getKeyboard().getKeyDownFilter();
- Control focusControl = e.display.getFocusControl();
- boolean enabled = filter.isEnabled();
- try {
- filter.setEnabled(true);
- filter.handleEvent(copyOf(e));
- } catch (Throwable t) {
- logger.log(Level.SEVERE, "Unable to handle event: " + e, t);
- } finally {
- if (focusControl == e.display.getFocusControl() && !enabled) {
- filter.setEnabled(enabled);
- }
- }
- }
- }
-
- private Event copyOf(KeyEvent e) {
- Event event = new Event();
- event.character = e.character;
- event.data = e.data;
- event.display = e.display;
- event.doit = e.doit;
- event.keyCode = e.keyCode;
- event.keyLocation = e.keyLocation;
- event.stateMask = e.stateMask;
- event.time = e.time;
- event.widget = e.widget;
- return event;
- }
-}
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandListener.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandListener.java
deleted file mode 100644
index 6f81d0c..0000000
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/CommandListener.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) 2012 Google Inc.
- *
- * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
- * Public License v1.0 which accompanies this distribution, and is available at
- *
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package com.google.eclipse.terminal.local.ui.view;
-
-/**
- * @author alruiz@google.com (Alex Ruiz)
- */
-interface CommandListener {
- void commandIssued(String command);
-}
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
index 2777b88..9b3e61a 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
@@ -62,13 +62,11 @@
editActions.onMenuHidden();
}
});
- Control terminalTextControl = terminalTextControl();
- terminalTextControl.addFocusListener(new FocusAdapter() {
+ terminalTextControl().addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
editActions.update();
}
});
- terminalTextControl.addKeyListener(new CommandLauncher());
}
private Menu createContextMenu(MenuManager menuManager) {
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
index e9617be..9d7c83c 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
@@ -60,6 +60,8 @@
import org.eclipse.tm.terminal.model.*;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.contexts.*;
+import org.eclipse.ui.internal.keys.*;
+import org.eclipse.ui.internal.keys.WorkbenchKeyboard.KeyDownFilter;
import org.eclipse.ui.keys.IBindingService;
/**
@@ -783,6 +785,7 @@
int accelerator = convertEventToUnmodifiedAccelerator(event);
for (int editActionAccelerator : EDIT_ACTION_ACCELERATORS) {
if (editActionAccelerator == accelerator) {
+ forceCommandExecution(event);
return;
}
}
@@ -1006,6 +1009,40 @@
writeToTerminal(charBuffer.toString());
}
+ private void forceCommandExecution(KeyEvent e) {
+ if (!e.doit) {
+ return;
+ }
+ IBindingService bindingService = (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+ // Necessary to handle copy/paste/"select all" keyboard accelerators.
+ if (bindingService instanceof BindingService) {
+ KeyDownFilter filter = ((BindingService) bindingService).getKeyboard().getKeyDownFilter();
+ Control focusControl = e.display.getFocusControl();
+ boolean enabled = filter.isEnabled();
+ try {
+ filter.setEnabled(true);
+ filter.handleEvent(copyOf(e));
+ } finally {
+ if (focusControl == e.display.getFocusControl() && !enabled) {
+ filter.setEnabled(enabled);
+ }
+ }
+ }
+ }
+
+ private Event copyOf(KeyEvent e) {
+ Event event = new Event();
+ event.character = e.character;
+ event.data = e.data;
+ event.display = e.display;
+ event.doit = e.doit;
+ event.keyCode = e.keyCode;
+ event.keyLocation = e.keyLocation;
+ event.stateMask = e.stateMask;
+ event.time = e.time;
+ event.widget = e.widget;
+ return event;
+ }
}
@Override public void setTerminalTitle(String title) {