blob: 06c83f7b085b7391e2d1d5b8163b18c84bff0351 [file] [log] [blame]
// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity
/*******************************************************************************
* Copyright (c) 2010, 2012 Ericsson AB and others.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Description:
*
* This class extends the default tree viewer to be able to browse the items
* using user-defined commands
*
* Contributors:
* Sebastien Dubois - Created for Mylyn Review R4E project
*
******************************************************************************/
package org.eclipse.mylyn.reviews.r4e.ui.internal.navigator;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.layout.TreeColumnLayout;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.DecoratingCellLabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;
import org.eclipse.mylyn.reviews.r4e.ui.internal.filters.TreeTableFilter;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIFileContext;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewBasic;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewGroup;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewItem;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRootElement;
import org.eclipse.mylyn.reviews.r4e.ui.internal.sorters.TreeTableComparator;
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.R4EUIConstants;
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.UIUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TreeItem;
/**
* @author Sebastien Dubois
* @version $Revision: 1.0 $
*/
public class ReviewNavigatorTreeViewer extends TreeViewer {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
/**
* Field REVIEW_COLUMN_LABEL. (value is ""Review: "")
*/
private static final String REVIEW_COLUMN_LABEL = "Review-> "; //$NON-NLS-1$
/**
* Field REVIEW_GROUP_COLUMN_TOOLTIP. (value is ""Group: "")
*/
private static final String REVIEW_GROUP_COLUMN_TOOLTIP = "Group-> "; //$NON-NLS-1$
/**
* Field INVALID_PATH. (value is ""--"")
*/
private static final String INVALID_PATH = "--"; //$NON-NLS-1$
/**
* Field VERSION_TARGET_LABEL. (value is ""Target Version: "")
*/
private static final String VERSION_TARGET_LABEL = "Target Version: "; //$NON-NLS-1$
/**
* Field VERSION_BASE_LABEL. (value is ""Base Version: "")
*/
private static final String VERSION_BASE_LABEL = "Base Version: "; //$NON-NLS-1$
/**
* Field NUM_CHANGES_ITEM_COLUMN_TOOLTIP. (value is ""Number of Reviewed Changes / Number of Changes for this Review
* Item"")
*/
private static final String NUM_CHANGES_ITEM_COLUMN_TOOLTIP = "Number of Reviewed Changes / Number of Changes for this Review Item"; //$NON-NLS-1$
/**
* Field NUM_CHANGES_FILE_COLUMN_TOOLTIP. (value is ""Number of Changes for this File"")
*/
private static final String NUM_CHANGES_FILE_COLUMN_TOOLTIP = "Number of Changes for this File"; //$NON-NLS-1$
/**
* Field NUM_ANOMALIES_COLUMN_TOOLTIP. (value is ""Number of Anomalies written for this File"")
*/
private static final String NUM_ANOMALIES_COLUMN_TOOLTIP = "Number of Anomalies written for this File"; //$NON-NLS-1$
// ------------------------------------------------------------------------
// Member variables
// ------------------------------------------------------------------------
/**
* Field fIsDefaultDisplay.
*/
private boolean fIsDefaultDisplay = true;
/**
* Field fDefaultInput.
*/
private Object fDefaultInput = null;
/**
* Field fTreeColumnLayout.
*/
private TreeColumnLayout fTreeColumnLayout = null;
/**
* Field fTreeComparator.
*/
ViewerComparator fTreeComparator = null;
/**
* Field fTreeTableComparator.
*/
TreeTableComparator fTreeTableComparator = null;
/**
* Field fElementColumn.
*/
private TreeViewerColumn fElementColumn = null;
/**
* Field fPathColumn.
*/
private TreeViewerColumn fPathColumn = null;
/**
* Field fAssignColumn.
*/
private TreeViewerColumn fAssignColumn = null;
/**
* Field fNumChangesColumn.
*/
private TreeViewerColumn fNumChangesColumn = null;
/**
* Field fNumAnomaliesColumn.
*/
private TreeViewerColumn fNumAnomaliesColumn = null;
/**
* Field fElementColumnWeight.
*/
private int fElementColumnWeight = 25;
/**
* Field fPathColumnWeight.
*/
private int fPathColumnWeight = 50;
/**
* Field fAssignColumnWeigth.
*/
private int fAssignColumnWeight = 9;
/**
* Field fNumChangesColumnWeight.
*/
private int fNumChangesColumnWeight = 8;
/**
* Field fNumAnomaliesColumnWeigth.
*/
private int fNumAnomaliesColumnWeight = 8;
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
/**
* Method isDefaultDisplay.
*
* @return boolean
*/
public boolean isDefaultDisplay() {
return fIsDefaultDisplay;
}
/**
* Method setDefaultInput.
*
* @param aInput
* - Object
*/
public void setDefaultInput(Object aInput) {
fDefaultInput = aInput;
}
/**
* Constructor for ReviewNavigatorTreeViewer.
*
* @param aParent
* Composite
* @param aStyle
* int
*/
public ReviewNavigatorTreeViewer(Composite aParent, int aStyle) {
super(aParent, aStyle);
fTreeColumnLayout = new TreeColumnLayout();
fTreeTableComparator = new TreeTableComparator();
aParent.setLayout(fTreeColumnLayout);
}
/**
* Method getPrevious.
*
* @param aItem
* TreeItem
* @return TreeItem
*/
public TreeItem getPrevious(TreeItem aItem) {
final TreeItem newItem = (TreeItem) getPreviousItem(aItem);
if (null == newItem) {
return aItem;
}
return newItem;
}
/**
* Method getNext.
*
* @param aItem
* TreeItem
* @return TreeItem
*/
public TreeItem getNext(TreeItem aItem) {
final TreeItem newItem = (TreeItem) getNextItem(aItem, true);
if (null == newItem) {
return aItem;
}
return newItem;
}
/**
* Method setViewTree.
*/
public void setViewTree() {
final Object[] expandedElements = getExpandedElements();
double elementColumnWidth = R4EUIConstants.INVALID_VALUE;
double pathColumnWidth = R4EUIConstants.INVALID_VALUE;
double assignColumnWidth = R4EUIConstants.INVALID_VALUE;
double numChangesColumnWidth = R4EUIConstants.INVALID_VALUE;
double numAnomaliesColumnWidth = R4EUIConstants.INVALID_VALUE;
if (null != fElementColumn) {
elementColumnWidth = fElementColumn.getColumn().getWidth();
}
createElementsColumn();
getTree().setHeaderVisible(false);
if (null != fPathColumn) {
pathColumnWidth = fPathColumn.getColumn().getWidth();
fPathColumn.getColumn().dispose();
fPathColumn = null;
}
if (null != fAssignColumn) {
assignColumnWidth = fAssignColumn.getColumn().getWidth();
fAssignColumn.getColumn().dispose();
fAssignColumn = null;
}
if (null != fNumChangesColumn) {
numChangesColumnWidth = fNumChangesColumn.getColumn().getWidth();
fNumChangesColumn.getColumn().dispose();
fNumChangesColumn = null;
}
if (null != fNumAnomaliesColumn) {
numAnomaliesColumnWidth = fNumAnomaliesColumn.getColumn().getWidth();
fNumAnomaliesColumn.getColumn().dispose();
fNumAnomaliesColumn = null;
}
fTreeColumnLayout.setColumnData(fElementColumn.getColumn(), new ColumnWeightData(100, true));
//Calculate column weights to preserve (if any)
if (elementColumnWidth != R4EUIConstants.INVALID_VALUE && pathColumnWidth != R4EUIConstants.INVALID_VALUE
&& assignColumnWidth != R4EUIConstants.INVALID_VALUE
&& numChangesColumnWidth != R4EUIConstants.INVALID_VALUE
&& numAnomaliesColumnWidth != R4EUIConstants.INVALID_VALUE) {
final double totalWidth = elementColumnWidth + pathColumnWidth + assignColumnWidth + numChangesColumnWidth
+ numAnomaliesColumnWidth;
fElementColumnWeight = (int) ((elementColumnWidth / totalWidth) * 100);
fPathColumnWeight = (int) ((pathColumnWidth / totalWidth) * 100);
fAssignColumnWeight = (int) ((assignColumnWidth / totalWidth) * 100);
fNumChangesColumnWeight = (int) ((numChangesColumnWidth / totalWidth) * 100);
fNumAnomaliesColumnWeight = (int) ((numAnomaliesColumnWidth / totalWidth) * 100);
}
fIsDefaultDisplay = true;
//Remove Tree Table filters
final TreeTableFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController.getNavigatorView()
.getActionSet()).getTreeTableFilter();
this.removeFilter(filter);
//Restore Tree sorters (if any)
setComparator(fTreeComparator);
//Restore Default Tree input
this.setInput(fDefaultInput);
//Refresh Display
this.getTree().getParent().layout();
//Set Expanded states correctly
final List<Object> updatedExpandedElements = new ArrayList<Object>();
if (expandedElements.length > 0) {
if (null != expandedElements[0] && null != ((IR4EUIModelElement) expandedElements[0]).getParent()) {
updatedExpandedElements.add(((IR4EUIModelElement) expandedElements[0]).getParent());
if (null != ((IR4EUIModelElement) expandedElements[0]).getParent().getParent()) {
updatedExpandedElements.add(((IR4EUIModelElement) expandedElements[0]).getParent().getParent());
}
}
for (Object expandedElement : expandedElements) {
if (null != expandedElement) {
updatedExpandedElements.add(expandedElement);
}
}
} else {
final R4EUIReviewBasic activeReview = R4EUIModelController.getActiveReview();
if (null != activeReview) {
updatedExpandedElements.add(activeReview);
if (null != activeReview.getParent()) {
updatedExpandedElements.add(activeReview.getParent());
}
}
}
Object[] elementsToExpand = updatedExpandedElements.toArray(new Object[updatedExpandedElements.size()]);
setExpandedElements(elementsToExpand);
}
/**
* Method setViewTreeTable.
*/
public void setViewTreeTable() {
final Object[] expandedElements = getExpandedElements();
//Create Columns
createPathColumn();
createAssignmentColumn();
createNumChangesColumn();
createNumAnomaliesColumn();
getTree().setHeaderVisible(true);
//Reset Layout to adjust Columns widths
fTreeColumnLayout.setColumnData(fElementColumn.getColumn(), new ColumnWeightData(fElementColumnWeight, true));
fTreeColumnLayout.setColumnData(fPathColumn.getColumn(), new ColumnWeightData(fPathColumnWeight, true));
fTreeColumnLayout.setColumnData(fAssignColumn.getColumn(), new ColumnWeightData(fAssignColumnWeight, true));
fTreeColumnLayout.setColumnData(fNumChangesColumn.getColumn(), new ColumnWeightData(fNumChangesColumnWeight,
true));
fTreeColumnLayout.setColumnData(fNumAnomaliesColumn.getColumn(), new ColumnWeightData(
fNumAnomaliesColumnWeight, true));
final R4EUIReviewBasic activeReview = R4EUIModelController.getActiveReview();
if (null != activeReview) {
fElementColumn.getColumn().setText(activeReview.getReview().getName());
fElementColumn.getColumn().setToolTipText(
REVIEW_GROUP_COLUMN_TOOLTIP + activeReview.getParent().getName() + R4EUIConstants.LINE_FEED
+ REVIEW_COLUMN_LABEL + activeReview.getName());
}
//Set Tree Table Filters (shows only Review Items and Files for current review
final TreeTableFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController.getNavigatorView()
.getActionSet()).getTreeTableFilter();
fIsDefaultDisplay = false;
//Save Default Tree input and adjust Tree Table input
fDefaultInput = this.getInput();
if (fDefaultInput instanceof R4EUIRootElement || fDefaultInput instanceof R4EUIReviewGroup) {
this.setInput(R4EUIModelController.getActiveReview());
}
this.addFilter(filter);
//Set Default sorter
fTreeComparator = getComparator();
setComparator(fTreeTableComparator);
//Refresh Display
this.getTree().getParent().layout();
setExpandedElements(expandedElements);
}
/**
* Method createElementsColumn.
*/
public void createElementsColumn() {
if (null == fElementColumn) {
final DecoratingCellLabelProvider provider = new DecoratingCellLabelProvider(
new ReviewNavigatorLabelProvider(), new ReviewNavigatorDecorator());
fElementColumn = new TreeViewerColumn(this, SWT.NONE);
fElementColumn.setLabelProvider(provider);
fElementColumn.getColumn().setMoveable(false);
fElementColumn.getColumn().setResizable(true);
fElementColumn.getColumn().addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
if (!isDefaultDisplay()) {
fTreeTableComparator.setColumnName(R4EUIConstants.ELEMENTS_LABEL_NAME);
getTree().setSortDirection(fTreeTableComparator.getDirection());
getTree().setSortColumn(fElementColumn.getColumn());
refresh();
}
}
});
}
}
/**
* Method createPathColumn.
*/
private void createPathColumn() {
if (null == fPathColumn) {
fPathColumn = new TreeViewerColumn(this, SWT.NONE);
fPathColumn.getColumn().setText(R4EUIConstants.PATH_LABEL);
fTreeColumnLayout.setColumnData(fPathColumn.getColumn(), new ColumnWeightData(0, true));
fPathColumn.getColumn().setMoveable(true);
fPathColumn.getColumn().setResizable(true);
fPathColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object aElement) {
if (aElement instanceof R4EUIFileContext) {
//First try target file version
R4EFileVersion version = ((R4EUIFileContext) aElement).getTargetFileVersion();
if (null != version) {
return UIUtils.getProjectPath(version);
} else {
//Try base file version
version = ((R4EUIFileContext) aElement).getBaseFileVersion();
if (null != version) {
return UIUtils.getProjectPath(version);
} else {
return INVALID_PATH;
}
}
} else {
return null;
}
}
@Override
public String getToolTipText(Object aElement) {
final StringBuffer buffer = new StringBuffer();
if (aElement instanceof R4EUIFileContext) {
final R4EFileVersion targetVersion = ((R4EUIFileContext) aElement).getTargetFileVersion();
final R4EFileVersion baseVersion = ((R4EUIFileContext) aElement).getBaseFileVersion();
buffer.append(R4EUIConstants.FILE_LABEL);
if (null != targetVersion) {
buffer.append(UIUtils.getProjectPath(targetVersion));
} else if (null != baseVersion) {
buffer.append(UIUtils.getProjectPath(baseVersion));
} else {
buffer.append(INVALID_PATH);
}
buffer.append(R4EUIConstants.LINE_FEED);
buffer.append(VERSION_TARGET_LABEL);
if (null == targetVersion) {
buffer.append(R4EUIConstants.NO_VERSION_PROPERTY_MESSAGE);
} else {
buffer.append(targetVersion.getVersionID());
}
buffer.append(R4EUIConstants.LINE_FEED);
buffer.append(VERSION_BASE_LABEL);
if (null == baseVersion) {
buffer.append(R4EUIConstants.NO_VERSION_PROPERTY_MESSAGE);
} else {
buffer.append(baseVersion.getVersionID());
}
return buffer.toString();
}
return null;
}
@Override
public Point getToolTipShift(Object object) {
return new Point(R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_X, R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_Y);
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_DELAY;
}
@Override
public int getToolTipTimeDisplayed(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_TIME;
}
@Override
public void update(ViewerCell cell) {
final Object element = cell.getElement();
if (element instanceof R4EUIFileContext) {
//First try target file version
R4EFileVersion version = ((R4EUIFileContext) element).getTargetFileVersion();
if (null != version) {
cell.setText(UIUtils.getProjectPath(version));
} else {
//Try base file version
version = ((R4EUIFileContext) element).getBaseFileVersion();
if (null != version) {
cell.setText(UIUtils.getProjectPath(version));
} else {
cell.setText(INVALID_PATH);
}
}
} else {
cell.setText(null);
}
}
});
fPathColumn.getColumn().addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
fTreeTableComparator.setColumnName(R4EUIConstants.PATH_LABEL);
getTree().setSortDirection(fTreeTableComparator.getDirection());
getTree().setSortColumn(fPathColumn.getColumn());
refresh();
}
});
}
}
/**
* Method createAssignmentColumn.
*/
private void createAssignmentColumn() {
if (null == fAssignColumn) {
fAssignColumn = new TreeViewerColumn(this, SWT.NONE);
fAssignColumn.getColumn().setText(R4EUIConstants.ASSIGNED_TO_LABEL2);
fTreeColumnLayout.setColumnData(fAssignColumn.getColumn(), new ColumnWeightData(0, true));
fAssignColumn.getColumn().setMoveable(true);
fAssignColumn.getColumn().setResizable(true);
fAssignColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
if (element instanceof R4EUIReviewItem) {
return UIUtils.formatAssignedParticipants(((R4EUIReviewItem) element).getItem().getAssignedTo());
} else if (element instanceof R4EUIFileContext) {
return UIUtils.formatAssignedParticipants(((R4EUIFileContext) element).getFileContext()
.getAssignedTo());
}
return null;
}
@Override
public String getToolTipText(Object element) {
return null;
}
@Override
public Point getToolTipShift(Object object) {
return new Point(R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_X, R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_Y);
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_DELAY;
}
@Override
public int getToolTipTimeDisplayed(Object object) {
return 0;
}
@Override
public void update(ViewerCell cell) {
final Object element = cell.getElement();
if (element instanceof R4EUIReviewItem) {
cell.setText(UIUtils.formatAssignedParticipants(((R4EUIReviewItem) element).getItem()
.getAssignedTo()));
} else if (element instanceof R4EUIFileContext) {
cell.setText(UIUtils.formatAssignedParticipants(((R4EUIFileContext) element).getFileContext()
.getAssignedTo()));
} else {
cell.setText(null);
}
}
});
fAssignColumn.getColumn().addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
fTreeTableComparator.setColumnName(R4EUIConstants.ASSIGNED_TO_LABEL2);
getTree().setSortDirection(fTreeTableComparator.getDirection());
getTree().setSortColumn(fAssignColumn.getColumn());
refresh();
}
});
}
}
/**
* Method createNumChangesColumn.
*/
private void createNumChangesColumn() {
if (null == fNumChangesColumn) {
fNumChangesColumn = new TreeViewerColumn(this, SWT.NONE);
fNumChangesColumn.getColumn().setText(R4EUIConstants.CHANGES_LABEL);
fTreeColumnLayout.setColumnData(fNumChangesColumn.getColumn(), new ColumnWeightData(0, true));
fNumChangesColumn.getColumn().setMoveable(true);
fNumChangesColumn.getColumn().setResizable(true);
fNumChangesColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
if (element instanceof R4EUIReviewItem) {
return UIUtils.formatNumChanges(((R4EUIReviewItem) element).getNumChanges(),
((R4EUIReviewItem) element).getNumReviewedChanges());
} else if (element instanceof R4EUIFileContext) {
return UIUtils.formatNumChanges(((R4EUIFileContext) element).getNumChanges(),
((R4EUIFileContext) element).getNumReviewedChanges());
}
return null;
}
@Override
public String getToolTipText(Object element) {
if (element instanceof R4EUIReviewItem) {
return NUM_CHANGES_ITEM_COLUMN_TOOLTIP;
} else { //Assume File
return NUM_CHANGES_FILE_COLUMN_TOOLTIP;
}
}
@Override
public Point getToolTipShift(Object object) {
return new Point(R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_X, R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_Y);
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_DELAY;
}
@Override
public int getToolTipTimeDisplayed(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_TIME;
}
@Override
public void update(ViewerCell cell) {
final Object element = cell.getElement();
if (element instanceof R4EUIReviewItem) {
cell.setText(UIUtils.formatNumChanges(((R4EUIReviewItem) element).getNumChanges(),
((R4EUIReviewItem) element).getNumReviewedChanges()));
} else if (element instanceof R4EUIFileContext) {
cell.setText(UIUtils.formatNumChanges(((R4EUIFileContext) element).getNumChanges(),
((R4EUIFileContext) element).getNumReviewedChanges()));
} else {
cell.setText(null);
}
}
});
fNumChangesColumn.getColumn().addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
fTreeTableComparator.setColumnName(R4EUIConstants.CHANGES_LABEL);
getTree().setSortDirection(fTreeTableComparator.getDirection());
getTree().setSortColumn(fNumChangesColumn.getColumn());
refresh();
}
});
}
}
/**
* Method createNumAnomaliesColumn.
*/
private void createNumAnomaliesColumn() {
if (null == fNumAnomaliesColumn) {
fNumAnomaliesColumn = new TreeViewerColumn(this, SWT.NONE);
fNumAnomaliesColumn.getColumn().setText(R4EUIConstants.ANOMALIES_LABEL);
fNumAnomaliesColumn.getColumn().setMoveable(true);
fNumAnomaliesColumn.getColumn().setResizable(true);
fTreeColumnLayout.setColumnData(fNumAnomaliesColumn.getColumn(), new ColumnWeightData(0, true));
fNumAnomaliesColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
if (element instanceof R4EUIReviewItem) {
return Integer.toString(((R4EUIReviewItem) element).getNumAnomalies());
} else if (element instanceof R4EUIFileContext) {
return Integer.toString(((R4EUIFileContext) element).getNumAnomalies());
}
return null;
}
@Override
public String getToolTipText(Object element) {
return NUM_ANOMALIES_COLUMN_TOOLTIP;
}
@Override
public Point getToolTipShift(Object object) {
return new Point(R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_X, R4EUIConstants.TOOLTIP_DISPLAY_OFFSET_Y);
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_DELAY;
}
@Override
public int getToolTipTimeDisplayed(Object object) {
return R4EUIConstants.TOOLTIP_DISPLAY_TIME;
}
@Override
public void update(ViewerCell cell) {
final Object element = cell.getElement();
if (element instanceof R4EUIReviewItem) {
cell.setText(Integer.toString(((R4EUIReviewItem) element).getNumAnomalies()));
} else if (element instanceof R4EUIFileContext) {
cell.setText(Integer.toString(((R4EUIFileContext) element).getNumAnomalies()));
} else {
cell.setText(null);
}
}
});
fNumAnomaliesColumn.getColumn().addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
// ignore
fTreeTableComparator.setColumnName(R4EUIConstants.ANOMALIES_LABEL);
getTree().setSortDirection(fTreeTableComparator.getDirection());
getTree().setSortColumn(fNumAnomaliesColumn.getColumn());
refresh();
}
});
}
}
}