Fixed: [Issue 10] Users should be able to change terminal's title
diff --git a/com.google.eclipse.terminal.local/icons/change_title.gif b/com.google.eclipse.terminal.local/icons/change_title.gif
new file mode 100644
index 0000000..efc77a7
--- /dev/null
+++ b/com.google.eclipse.terminal.local/icons/change_title.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 43341d2..c1d40ac 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
@@ -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.*;
+import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle.
@@ -40,11 +40,15 @@
}
@Override protected void initializeImageRegistry(ImageRegistry registry) {
- 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));
+ addImage(registry, CHANGE_TITLE, "icons/change_title.gif");
+ addImage(registry, NEW_TERMINAL, "icons/new_terminal.gif");
+ addImage(registry, SCROLL_LOCK, "icons/scroll_lock.gif");
+ }
+
+ private void addImage(ImageRegistry registry, String key, String path) {
+ URL imageUrl = instance().getBundle().getEntry(path);
+ registry.put(key, ImageDescriptor.createFromURL(imageUrl));
+
}
public static void log(String message, Throwable cause) {
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 25b78fb..0dfff3e 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 CHANGE_TITLE = "changeTitle";
public static final String NEW_TERMINAL = "newTerminal";
public static final String SCROLL_LOCK = "scrollLock";
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 96db96b..a9c5cee 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,9 +15,12 @@
*/
public class Messages extends NLS {
public static String alwaysCloseWithoutWarn;
+ public static String changeTerminalTitle;
public static String closeTerminalQuestion;
public static String confirmCloseDialogTitle;
public static String defaultViewTitle;
+ public static String enterTerminalTitleDialogTitle;
+ public static String enterTerminalTitlePrompt;
public static String newLocalTerminal;
public static String scrollLock;
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 a5c0377..59232db 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,6 +1,9 @@
alwaysCloseWithoutWarn=Always close without warn
+changeTerminalTitle=Change Title
closeTerminalQuestion=Close terminal?
confirmCloseDialogTitle=Confirm Close
defaultViewTitle=Local Terminal
+enterTerminalTitleDialogTitle=Enter New Terminal Title
+enterTerminalTitlePrompt=Enter the new title for the 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 2a1d9b8..7deb6d3 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
@@ -17,12 +17,14 @@
import static org.eclipse.core.runtime.Path.fromOSString;
import static org.eclipse.core.runtime.Status.OK_STATUS;
import static org.eclipse.jface.resource.JFaceResources.TEXT_FONT;
+import static org.eclipse.jface.window.Window.OK;
import static org.eclipse.ui.IWorkbenchPage.VIEW_ACTIVATE;
import java.util.UUID;
import org.eclipse.core.runtime.*;
import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.*;
import org.eclipse.swt.graphics.Font;
@@ -193,6 +195,8 @@
private void setupToolBarActions() {
IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
+ toolBarManager.add(new ChangeViewNameAction());
+ toolBarManager.add(new Separator());
newTerminalAction = new NewTerminalAction();
toolBarManager.add(newTerminalAction);
scrollLockAction = new ScrollLockAction();
@@ -270,30 +274,6 @@
return (IContextService) getSite().getService(IContextService.class);
}
- 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);
- setChecked(false);
- setImageDescriptor(imageDescriptor(SCROLL_LOCK));
- }
-
- @Override public void run() {
- boolean newValue = !terminalWidget.isScrollLockEnabled();
- enableScrollLockAndUpdateAction(newValue);
- }
- }
-
@Override public boolean isDirty() {
if (checkCanBeClosed) {
checkCanBeClosed = false;
@@ -327,4 +307,53 @@
@Override public boolean isSaveAsAllowed() {
return false;
}
+
+ 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);
+ setChecked(false);
+ setImageDescriptor(imageDescriptor(SCROLL_LOCK));
+ }
+
+ @Override public void run() {
+ boolean newValue = !terminalWidget.isScrollLockEnabled();
+ enableScrollLockAndUpdateAction(newValue);
+ }
+ }
+
+ private class ChangeViewNameAction extends Action {
+ ChangeViewNameAction() {
+ setImageDescriptor(imageDescriptor(CHANGE_TITLE));
+ setText(changeTerminalTitle);
+ }
+
+ @Override public void run() {
+ Shell shell = getViewSite().getShell();
+ final String currentTitle = getPartName();
+ InputDialog input = new InputDialog(shell, enterTerminalTitleDialogTitle, enterTerminalTitlePrompt, currentTitle,
+ new IInputValidator() {
+ @Override public String isValid(String newText) {
+ if (newText == null || newText.isEmpty() || currentTitle.equals(newText)) {
+ return "";
+ }
+ return null;
+ }
+ });
+ input.setBlockOnOpen(true);
+ if (input.open() == OK) {
+ setPartName(input.getValue());
+ }
+ }
+ }
}