tuleap #368 Show full commit message when hovering the subject in the dashboard.

Change-Id: If334e764689f528bd3350c64fbe3b88cbb01a51e
Signed-off-by: Jacques Bouthillier <lmcbout@gmail.com>
diff --git a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/model/UIReviewTable.java b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/model/UIReviewTable.java
index 0dc0a0f..77a9c2c 100644
--- a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/model/UIReviewTable.java
+++ b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/model/UIReviewTable.java
@@ -20,6 +20,7 @@
 import org.eclipse.egerrit.internal.dashboard.ui.commands.table.AdjustMyStarredHandler;
 import org.eclipse.egerrit.internal.dashboard.ui.utils.UIUtils;
 import org.eclipse.egerrit.internal.dashboard.ui.views.GerritTableView;
+import org.eclipse.egerrit.internal.model.ChangeInfo;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
@@ -152,6 +153,25 @@
 		TableLayout tableLayout = new TableLayout();
 		table.setLayout(tableLayout);
 
+		handleTooltipNotOnWindow(aViewer, table);
+
+		table.setHeaderVisible(true);
+		table.setLinesVisible(true);
+
+		MenuManager menuManager = new MenuManager();
+		Menu contextMenu = menuManager.createContextMenu(table);
+		table.setMenu(contextMenu);
+		GerritTableView.getActiveView(true).getSite().registerContextMenu(DASHBOARD_CONTEXT_MENU, menuManager, aViewer);
+		return aViewer;
+	}
+
+	/**
+	 * Handle the tooltip on a the dashboard table when the operating system is not a window environment
+	 *
+	 * @param aViewer
+	 * @param table
+	 */
+	private void handleTooltipNotOnWindow(final TableViewer aViewer, final Table table) {
 		String os = org.eclipse.core.runtime.Platform.getOS();
 		// nothing to do on windows
 		if (!Platform.OS_WIN32.equals(os)) {
@@ -163,24 +183,41 @@
 			table.addListener(SWT.MouseHover, event -> {
 				ViewerCell viewerCell = UIUtils.getAdjustedViewerCell(event, aViewer);
 				if (viewerCell != null) {
+					String message = ""; //$NON-NLS-1$
 					int columnIndex = viewerCell.getColumnIndex();
+					message = adjustSubjectTooltip(viewerCell, columnIndex);
 					TableItem item = (TableItem) viewerCell.getViewerRow().getItem();
 					Rectangle rect = item.getBounds(columnIndex);
-					tip.setMessage(item.getText(columnIndex));
+					if (message.isEmpty()) {
+						message = item.getText(columnIndex);
+					}
+					tip.setMessage(message);
 					Point displayPos = item.getParent().toDisplay(rect.x, rect.y);
 					tip.setLocation(displayPos.x, displayPos.y);
 					tip.setVisible(true);
 				}
 			});
 		}
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
+	}
 
-		MenuManager menuManager = new MenuManager();
-		Menu contextMenu = menuManager.createContextMenu(table);
-		table.setMenu(contextMenu);
-		GerritTableView.getActiveView(true).getSite().registerContextMenu(DASHBOARD_CONTEXT_MENU, menuManager, aViewer);
-		return aViewer;
+	/**
+	 * Use the commit message when hovering the subject column.
+	 *
+	 * @param viewerCell
+	 * @param columnIndex
+	 * @return String
+	 */
+	private String adjustSubjectTooltip(ViewerCell viewerCell, int columnIndex) {
+		String message = ""; //$NON-NLS-1$
+		if (columnIndex == ReviewTableDefinition.SUBJECT.ordinal()) {
+			Object obj = viewerCell.getElement();
+			if (obj instanceof ChangeInfo) {
+				ChangeInfo changeInfo = (ChangeInfo) obj;
+				message = changeInfo.getRevision() != null ? changeInfo.getRevision().getCommit().getMessage() : ""; //$NON-NLS-1$
+			}
+
+		}
+		return message;
 	}
 
 	/**
@@ -330,7 +367,7 @@
 
 		fViewer.getTable().setColumnOrder(nextTableColumn);
 
-		restoreColumnWidth(columnOrderStored, columInTable, oldvalue, lastStoredColumnSize, nextTableColumn);
+		restoreColumnWidth(columnOrderStored, columInTable, oldvalue, lastStoredColumnSize - 1, nextTableColumn); //decrease by one to read the array
 
 	}
 
@@ -374,7 +411,6 @@
 
 		//Read and adjust the last column defined before the dynamic labels
 		//Needs to be reset to allow to see the dynamic columns in the client area
-		lastStoredColumnSize--; //decrease by one to read the array
 		if (lastStoredColumnSize < fViewer.getTable().getColumnCount()) {
 			int defaultWidth = oldvalue[lastStoredColumnSize];//column before the new labels
 			int testCol = columnOrderStored[lastStoredColumnSize];