Added 'hand' cursor to hyperlinks. Code cleanup.
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 b8a70ca..47acd86 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
@@ -127,7 +127,7 @@
 		setupTerminal(wndParent);
 	}
 
-	public void setEncoding(String encoding) throws UnsupportedEncodingException {
+	@Override public void setEncoding(String encoding) throws UnsupportedEncodingException {
 		if (encoding == null) {
 			// TODO better use a standard remote-to-local encoding?
 			encoding = "ISO-8859-1"; //$NON-NLS-1$
@@ -140,18 +140,18 @@
 		fTerminalText.setInputStreamReader(fInputStreamReader);
 	}
 
-	public String getEncoding() {
+	@Override public String getEncoding() {
 		return fEncoding;
 	}
 
-	public ITerminalConnector[] getConnectors() {
+	@Override public ITerminalConnector[] getConnectors() {
 		return fConnectors;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#copy()
 	 */
-	public void copy() {
+	@Override public void copy() {
 		copy(DND.CLIPBOARD);
 	}
 
@@ -164,7 +164,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#paste()
 	 */
-	public void paste() {
+	@Override public void paste() {
 		paste(DND.CLIPBOARD);
 // TODO paste in another thread.... to avoid blocking
 //		new Thread() {
@@ -186,7 +186,7 @@
 	/**
 	 * @param strText the text to paste
 	 */
-	public boolean pasteString(String strText) {
+	@Override public boolean pasteString(String strText) {
 		if(!isConnected()) {
       return false;
     }
@@ -207,14 +207,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#selectAll()
 	 */
-	public void selectAll() {
+	@Override public void selectAll() {
 		getCtlText().selectAll();
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#sendKey(char)
 	 */
-	public void sendKey(char character) {
+	@Override public void sendKey(char character) {
 		Event event;
 		KeyEvent keyEvent;
 
@@ -232,7 +232,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#clearTerminal()
 	 */
-	public void clearTerminal() {
+	@Override public void clearTerminal() {
 		// The TerminalText object does all text manipulation.
 
 		getTerminalText().clearTerminal();
@@ -241,14 +241,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#getClipboard()
 	 */
-	public Clipboard getClipboard() {
+	@Override public Clipboard getClipboard() {
 		return fClipboard;
 	}
 
 	/**
 	 * @return non null selection
 	 */
-	public String getSelection() {
+	@Override public String getSelection() {
 		String txt= fCtlText.getSelectionText();
 		if(txt==null)
      {
@@ -260,42 +260,42 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#setFocus()
 	 */
-	public boolean setFocus() {
+	@Override public boolean setFocus() {
 		return getCtlText().setFocus();
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#isEmpty()
 	 */
-	public boolean isEmpty() {
+	@Override public boolean isEmpty() {
 		return getCtlText().isEmpty();
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#isDisposed()
 	 */
-	public boolean isDisposed() {
+	@Override public boolean isDisposed() {
 		return getCtlText().isDisposed();
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#isConnected()
 	 */
-	public boolean isConnected() {
+	@Override public boolean isConnected() {
 		return fState==TerminalState.CONNECTED;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#disposeTerminal()
 	 */
-	public void disposeTerminal() {
+	@Override public void disposeTerminal() {
 		Logger.log("entered."); //$NON-NLS-1$
 		disconnectTerminal();
 		fClipboard.dispose();
 		getTerminalText().dispose();
 	}
 
-	public void connectTerminal() {
+	@Override public void connectTerminal() {
 		Logger.log("entered."); //$NON-NLS-1$
 		if(getTerminalConnector()==null) {
       return;
@@ -315,13 +315,13 @@
 		waitForConnect();
 	}
 
-	public ITerminalConnector getTerminalConnector() {
+	@Override public ITerminalConnector getTerminalConnector() {
 		return fConnector;
 	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#disconnectTerminal()
 	 */
-	public void disconnectTerminal() {
+	@Override public void disconnectTerminal() {
 		Logger.log("entered."); //$NON-NLS-1$
 
 		//Disconnect the remote side first
@@ -382,7 +382,7 @@
 	private synchronized void startReaderJob() {
 		if(fJob==null) {
 			fJob=new Job("Terminal data reader") { //$NON-NLS-1$
-				protected IStatus run(IProgressMonitor monitor) {
+				@Override protected IStatus run(IProgressMonitor monitor) {
 					IStatus status=Status.OK_STATUS;
 					try {
 						while(true) {
@@ -464,7 +464,7 @@
 		}
 	}
 
-	public Shell getShell() {
+	@Override public Shell getShell() {
 		return getCtlText().getShell();
 	}
 
@@ -525,7 +525,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#setupTerminal(org.eclipse.swt.widgets.Composite)
 	 */
-	public void setupTerminal(Composite parent) {
+	@Override public void setupTerminal(Composite parent) {
 		Assert.isNotNull(parent);
 		fState=TerminalState.CLOSED;
 		setupControls(parent);
@@ -536,7 +536,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#onFontChanged()
 	 */
-	public void setFont(Font font) {
+	@Override public void setFont(Font font) {
 		getCtlText().setFont(font);
 		if(fCommandInputField!=null) {
 			fCommandInputField.setFont(font);
@@ -546,13 +546,13 @@
 		fCtlText.onFontChange();
 		getTerminalText().fontChanged();
 	}
-	public Font getFont() {
+	@Override public Font getFont() {
 		return getCtlText().getFont();
 	}
-	public Control getControl() {
+	@Override public Control getControl() {
 		return fCtlText;
 	}
-	public Control getRootControl() {
+	@Override public Control getRootControl() {
 		return fWndParent;
 	}
 	protected void setupControls(Composite parent) {
@@ -578,18 +578,19 @@
 		fCtlText.addMouseListener(new MouseAdapter() {
       @Override
       public void mouseUp(MouseEvent e) {
-        Point p = fCtlText.screenPointToCell(e.x, e.y);
-        if (p == null) {
-          return;
+        IHyperlink hyperlink = hyperlinkAt(e);
+        if (hyperlink != null) {
+          hyperlink.open();
         }
-        List<IHyperlink> hyperlinks = fTerminalText.hyperlinksAt(p.y);
-        for (IHyperlink hyperlink : hyperlinks) {
-          IRegion region = hyperlink.getHyperlinkRegion();
-          int start = region.getOffset();
-          int end = start + region.getLength() - 1;
-          if (p.x >= start && p.x <= end) {
-            hyperlink.open();
-          }
+      }
+    });
+    fCtlText.addMouseMoveListener(new MouseMoveListener() {
+      @Override public void mouseMove(MouseEvent e) {
+        IHyperlink hyperlink = hyperlinkAt(e);
+        int cursorId = (hyperlink == null) ? SWT.CURSOR_IBEAM : SWT.CURSOR_HAND;
+        Cursor newCursor = fCtlText.getDisplay().getSystemCursor(cursorId);
+        if (!newCursor.equals(fCtlText.getCursor())) {
+          fCtlText.setCursor(newCursor);
         }
       }
     });
@@ -597,12 +598,12 @@
 		fCtlText.setLayoutData(new GridData(GridData.FILL_BOTH));
 		fCtlText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		fCtlText.addResizeHandler(new TextCanvas.ResizeListener() {
-			public void sizeChanged(int lines, int columns) {
+			@Override public void sizeChanged(int lines, int columns) {
 				fTerminalText.setDimensions(lines, columns);
 			}
 		});
 		fCtlText.addMouseListener(new MouseAdapter() {
-			public void mouseUp(MouseEvent e) {
+			@Override public void mouseUp(MouseEvent e) {
 				// update selection used by middle mouse button paste
 				if (e.button == 1 && getSelection().length() > 0) {
 					copy(DND.SELECTION_CLIPBOARD);
@@ -616,6 +617,22 @@
 		setFont(JFaceResources.getTextFont());
 	}
 
+  private IHyperlink hyperlinkAt(MouseEvent e) {
+    Point p = fCtlText.screenPointToCell(e.x, e.y);
+    if (p != null) {
+      List<IHyperlink> hyperlinks = fTerminalText.hyperlinksAt(p.y);
+      for (IHyperlink hyperlink : hyperlinks) {
+        IRegion region = hyperlink.getHyperlinkRegion();
+        int start = region.getOffset();
+        int end = start + region.getLength() - 1;
+        if (p.x >= start && p.x <= end) {
+          return hyperlink;
+        }
+      }
+    }
+    return null;
+	}
+
 	protected void setupListeners() {
 		fKeyHandler = new TerminalKeyHandler();
 		fFocusListener = new TerminalFocusListener();
@@ -643,7 +660,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#displayTextInTerminal(java.lang.String)
 	 */
-	public void displayTextInTerminal(String text) {
+	@Override public void displayTextInTerminal(String text) {
 		writeToTerminal("\r\n"+text+"\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	private void writeToTerminal(String text) {
@@ -659,7 +676,7 @@
 
 	}
 
-	public OutputStream getRemoteToTerminalOutputStream() {
+	@Override public OutputStream getRemoteToTerminalOutputStream() {
 		if(Logger.isLogEnabled()) {
 			return new LoggingOutputStream(fInputStream.getOutputStream());
 		} else {
@@ -675,7 +692,7 @@
 	}
 
 
-	public OutputStream getOutputStream() {
+	@Override public OutputStream getOutputStream() {
 		if(getTerminalConnector()!=null) {
       return getTerminalConnector().getTerminalToRemoteStream();
     }
@@ -685,7 +702,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#setMsg(java.lang.String)
 	 */
-	public void setMsg(String msg) {
+	@Override public void setMsg(String msg) {
 		fMsg = msg;
 	}
 
@@ -713,7 +730,7 @@
 			super();
 		}
 
-		public void focusGained(FocusEvent event) {
+		@Override public void focusGained(FocusEvent event) {
 			// Disable all keyboard accelerators (e.g., Control-B) so the Terminal view
 			// can see every keystroke.  Without this, Emacs, vi, and Bash are unusable
 			// in the Terminal view.
@@ -735,7 +752,7 @@
 					.activateContext("org.eclipse.tm.terminal.TerminalContext"); //$NON-NLS-1$
 		}
 
-		public void focusLost(FocusEvent event) {
+		@Override public void focusLost(FocusEvent event) {
 			// Enable all keybindings.
 
 			IBindingService bindingService = (IBindingService) PlatformUI
@@ -751,7 +768,7 @@
 	}
 
 	protected class TerminalKeyHandler extends KeyAdapter {
-		public void keyPressed(KeyEvent event) {
+		@Override public void keyPressed(KeyEvent event) {
 			if (getState()==TerminalState.CONNECTING) {
         return;
       }
@@ -977,22 +994,22 @@
 
 	}
 
-	public void setTerminalTitle(String title) {
+	@Override public void setTerminalTitle(String title) {
 		fTerminalListener.setTerminalTitle(title);
 	}
 
 
-	public TerminalState getState() {
+	@Override public TerminalState getState() {
 		return fState;
 	}
 
 
-	public void setState(TerminalState state) {
+	@Override public void setState(TerminalState state) {
 		fState=state;
 		fTerminalListener.setState(state);
 		// enable the (blinking) cursor if the terminal is connected
 		runAsyncInDisplayThread(new Runnable() {
-			public void run() {
+			@Override public void run() {
 				if(fCtlText!=null && !fCtlText.isDisposed()) {
           fCtlText.setCursorEnabled(isConnected());
         }
@@ -1011,22 +1028,22 @@
     }
 	}
 
-	public String getSettingsSummary() {
+	@Override public String getSettingsSummary() {
 		if(getTerminalConnector()!=null) {
       return getTerminalConnector().getSettingsSummary();
     }
 		return ""; //$NON-NLS-1$
 	}
 
-	public void setConnector(ITerminalConnector connector) {
+	@Override public void setConnector(ITerminalConnector connector) {
 		fConnector=connector;
 
 	}
-	public ICommandInputField getCommandInputField() {
+	@Override public ICommandInputField getCommandInputField() {
 		return fCommandInputField;
 	}
 
-	public void setCommandInputField(ICommandInputField inputField) {
+	@Override public void setCommandInputField(ICommandInputField inputField) {
 		if(fCommandInputField!=null) {
       fCommandInputField.dispose();
     }
@@ -1039,11 +1056,11 @@
     }
 	}
 
-	public int getBufferLineLimit() {
+	@Override public int getBufferLineLimit() {
 		return fTerminalModel.getMaxHeight();
 	}
 
-	public void setBufferLineLimit(int bufferLineLimit) {
+	@Override public void setBufferLineLimit(int bufferLineLimit) {
 		if(bufferLineLimit<=0) {
       return;
     }
@@ -1055,15 +1072,15 @@
 		}
 	}
 
-	public boolean isScrollLock() {
+	@Override public boolean isScrollLock() {
 		return fCtlText.isScrollLock();
 	}
 
-	public void setScrollLock(boolean on) {
+	@Override public void setScrollLock(boolean on) {
 		fCtlText.setScrollLock(on);
 	}
 
-	public void setInvertedColors(boolean invert) {
+	@Override public void setInvertedColors(boolean invert) {
 		fCtlText.setInvertedColors(invert);
 	}