Added "New Local Terminal" toolbar action.
diff --git a/com.google.eclipse.terminal.local/icons/new_terminal.gif b/com.google.eclipse.terminal.local/icons/new_terminal.gif
new file mode 100644
index 0000000..80201e0
--- /dev/null
+++ b/com.google.eclipse.terminal.local/icons/new_terminal.gif
Binary files differ
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
index 61ae1a7..43341d2 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
@@ -8,7 +8,7 @@
*/
package com.google.eclipse.terminal.local;
-import static com.google.eclipse.terminal.local.ImageKeys.SCROLL_LOCK;
+import static com.google.eclipse.terminal.local.ImageKeys.*;
import static org.eclipse.core.runtime.IStatus.*;
import java.net.URL;
@@ -17,7 +17,7 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.*;
import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
+import org.osgi.framework.*;
/**
* The activator class controls the plug-in life cycle.
@@ -40,7 +40,10 @@
}
@Override protected void initializeImageRegistry(ImageRegistry registry) {
- URL scrollLockImageUrl = instance().getBundle().getEntry("icons/scroll_lock.gif");
+ Bundle bundle = instance().getBundle();
+ URL newTerminalImageUrl = bundle.getEntry("icons/new_terminal.gif");
+ registry.put(NEW_TERMINAL, ImageDescriptor.createFromURL(newTerminalImageUrl));
+ URL scrollLockImageUrl = bundle.getEntry("icons/scroll_lock.gif");
registry.put(SCROLL_LOCK, ImageDescriptor.createFromURL(scrollLockImageUrl));
}
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
index 7290c5d..25b78fb 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
@@ -12,6 +12,7 @@
* @author alruiz@google.com (Alex Ruiz)
*/
public final class ImageKeys {
+ public static final String NEW_TERMINAL = "newTerminal";
public static final String SCROLL_LOCK = "scrollLock";
private ImageKeys() {}
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
index da4c1e0..1fbc4cc 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
@@ -15,6 +15,7 @@
*/
public class Messages extends NLS {
public static String defaultViewTitle;
+ public static String newLocalTerminal;
public static String scrollLock;
static {
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
index 8417f99..0a447fb 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
@@ -1,2 +1,3 @@
defaultViewTitle=Local Terminal
+newLocalTerminal=New Local Terminal
scrollLock=Scroll Lock
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
index c5387e1..c4b14c7 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
@@ -9,7 +9,7 @@
package com.google.eclipse.terminal.local.ui.view;
import static com.google.eclipse.terminal.local.Activator.*;
-import static com.google.eclipse.terminal.local.ImageKeys.SCROLL_LOCK;
+import static com.google.eclipse.terminal.local.ImageKeys.*;
import static com.google.eclipse.terminal.local.ui.preferences.ColorsAndFontsPreferences.*;
import static com.google.eclipse.terminal.local.ui.preferences.GeneralPreferences.*;
import static com.google.eclipse.terminal.local.ui.util.Displays.runInDisplayThread;
@@ -19,6 +19,8 @@
import static org.eclipse.jface.resource.JFaceResources.TEXT_FONT;
import static org.eclipse.ui.IWorkbenchPage.VIEW_ACTIVATE;
+import java.util.UUID;
+
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.action.*;
import org.eclipse.jface.resource.JFaceResources;
@@ -50,13 +52,19 @@
private TerminalWidget terminalWidget;
private IPath workingDirectory;
+ private Action newTerminalAction;
private Action scrollLockAction;
public static void openTerminalView(IPath workingDirectory) {
+ openTerminalView(null, workingDirectory);
+ }
+
+ private static void openTerminalView(String id, IPath workingDirectory) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
String directoryName = workingDirectory.lastSegment();
- TerminalView view = (TerminalView) page.showView(VIEW_ID, directoryName, VIEW_ACTIVATE);
+ String secondaryId = (id != null) ? id : directoryName;
+ TerminalView view = (TerminalView) page.showView(VIEW_ID, secondaryId, VIEW_ACTIVATE);
view.setPartName(directoryName);
view.open(workingDirectory);
} catch (PartInitException e) {
@@ -136,8 +144,7 @@
};
JFaceResources.getFontRegistry().addListener(textFontChangeListener);
updateFont();
- scrollLockAction = new ScrollLockAction();
- setupLocalToolBars();
+ setupToolBarActions();
if (savedState != null) {
updateScrollLockUsingSavedState();
connectUsingSavedState();
@@ -173,8 +180,11 @@
terminalWidget.setBufferLineCount(bufferLineCount());
}
- private void setupLocalToolBars() {
+ private void setupToolBarActions() {
IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
+ newTerminalAction = new NewTerminalAction();
+ toolBarManager.add(newTerminalAction);
+ scrollLockAction = new ScrollLockAction();
toolBarManager.add(scrollLockAction);
}
@@ -229,6 +239,17 @@
super.dispose();
}
+ private class NewTerminalAction extends Action {
+ NewTerminalAction() {
+ setImageDescriptor(imageDescriptor(NEW_TERMINAL));
+ setText(newLocalTerminal);
+ }
+
+ @Override public void run() {
+ openTerminalView(UUID.randomUUID().toString(), workingDirectory);
+ }
+ }
+
private class ScrollLockAction extends Action {
ScrollLockAction() {
super(scrollLock, AS_RADIO_BUTTON);