tuleap #838 adjust tooltip for the column in the dashboard.
Change-Id: I755b82792145fc529edd84ab036fb6b130717e4b
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 e9bde8f..0dc0a0f 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
@@ -18,6 +18,7 @@
import org.eclipse.core.runtime.Platform;
import org.eclipse.egerrit.internal.dashboard.ui.GerritUi;
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.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
@@ -160,18 +161,15 @@
table.addListener(SWT.MouseMove, event -> tip.setVisible(false));
table.addListener(SWT.MouseHover, event -> {
- Point pt = new Point(event.x, event.y);
- ViewerCell viewerCell = fViewer.getCell(pt);
+ ViewerCell viewerCell = UIUtils.getAdjustedViewerCell(event, aViewer);
if (viewerCell != null) {
int columnIndex = viewerCell.getColumnIndex();
TableItem item = (TableItem) viewerCell.getViewerRow().getItem();
Rectangle rect = item.getBounds(columnIndex);
- if (rect.contains(pt)) {
- tip.setMessage(item.getText(columnIndex));
- Point displayPos = item.getParent().toDisplay(rect.x, rect.y);
- tip.setLocation(displayPos.x, displayPos.y);
- tip.setVisible(true);
- }
+ tip.setMessage(item.getText(columnIndex));
+ Point displayPos = item.getParent().toDisplay(rect.x, rect.y);
+ tip.setLocation(displayPos.x, displayPos.y);
+ tip.setVisible(true);
}
});
}
@@ -321,7 +319,7 @@
int nextColumSize = nextTableColumn.length;
int numberColumnToMove = 0;
for (int i = 0; i < nextColumSize; i++) {
- if ((nextTableColumn[i] >= nextColumSize)) {
+ if (nextTableColumn[i] >= nextColumSize) {
numberColumnToMove++;
//Move by one slot the array
System.arraycopy(columnOrderStored, i + numberColumnToMove, nextTableColumn, i, nextColumSize - i);
@@ -332,6 +330,20 @@
fViewer.getTable().setColumnOrder(nextTableColumn);
+ restoreColumnWidth(columnOrderStored, columInTable, oldvalue, lastStoredColumnSize, nextTableColumn);
+
+ }
+
+ /**
+ * @param columnOrderStored
+ * @param columInTable
+ * @param oldvalue
+ * @param lastStoredColumnSize
+ * @param nextTableColumn
+ */
+ private void restoreColumnWidth(int[] columnOrderStored, int columInTable, int[] oldvalue, int lastStoredColumnSize,
+ int[] nextTableColumn) {
+ String[] backedUpValue;
//Lets deal now with the columns width
backedUpValue = getDialogSettings().getArray(VIEW_COLUMN_WIDTH);
if (backedUpValue == null) {
@@ -371,7 +383,6 @@
}
fViewer.getTable().getColumn(testCol).setWidth(defaultWidth);
}
-
}
/**
diff --git a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/utils/UIUtils.java b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/utils/UIUtils.java
index 62adb77..f252ac0 100644
--- a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/utils/UIUtils.java
+++ b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/utils/UIUtils.java
@@ -18,9 +18,16 @@
import org.eclipse.egerrit.internal.dashboard.ui.GerritUi;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Widget;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
@@ -111,4 +118,21 @@
return dialog.getReturnCode();
}
+ /**
+ * Return the value of the viewer cell adjusted if the viewing area has a horizontal scroll
+ *
+ * @param event
+ * @return
+ */
+ public static ViewerCell getAdjustedViewerCell(Event event, TableViewer aViewer) {
+ ViewerCell viewerCellAdjusted = null;
+ Widget widget = event.widget;
+ if (widget instanceof Table) {
+ Table tableEvent = (Table) widget;
+ Rectangle clientArea = tableEvent.getClientArea();
+ Point adjustedPoint = new Point(event.x + clientArea.x, event.y);
+ viewerCellAdjusted = aViewer.getCell(adjustedPoint);
+ }
+ return viewerCellAdjusted;
+ }
}
diff --git a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/views/VoteHandler.java b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/views/VoteHandler.java
index ead2973..fc2de07 100644
--- a/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/views/VoteHandler.java
+++ b/org.eclipse.egerrit.dashboard.ui/src/org/eclipse/egerrit/internal/dashboard/ui/views/VoteHandler.java
@@ -28,7 +28,6 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
@@ -132,15 +131,18 @@
}
private String getRequestedLabel(Event event) {
- ViewerCell viewerCell = table.getCell(new Point(event.x, event.y));
- if (viewerCell != null) {
- return view.getReviewTable().getColumnLabel(viewerCell.getColumnIndex());
+ ViewerCell viewerCellAdjusted = UIUtils.getAdjustedViewerCell(event, table);
+
+ //Viewer cell adjusted if there is an horizontal scroll or not
+ if (viewerCellAdjusted != null) {
+ return view.getReviewTable().getColumnLabel(viewerCellAdjusted.getColumnIndex());
}
return null;
}
private ChangeInfo fromEventToChangeInfo(Event event) {
- ViewerCell viewerCell = table.getCell(new Point(event.x, event.y));
+ ViewerCell viewerCell = UIUtils.getAdjustedViewerCell(event, table);
+
if (viewerCell != null) {
Object element = viewerCell.getViewerRow().getItem().getData();
if (element instanceof ChangeInfo) {