blob: 79cfd3f90647c97048407a17044d3fb077c7acd8 [file] [log] [blame]
package org.eclipse.ote.ui.eviewer.view;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.osee.framework.ui.swt.Displays;
import org.eclipse.osee.ote.message.ElementPath;
import org.eclipse.ote.ui.eviewer.Activator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
public class ViewerColumnElement extends ViewerColumn {
private final Image activeImg;
private final Image inactive;
private final Image duplicate;
private ColumnElement columnElement;
private boolean duplicateName = false;
private boolean isEnumOutputNumber = false;
private boolean showNumbersAsHex = false;
ViewerColumnElement(TableViewer table, int index, ElementPath path) {
super(table, index, path.toString(), 125);
activeImg = null;
inactive = Activator.getDefault().getImageRegistry().get("INACTIVE_PNG");
duplicate = Activator.getDefault().getImageRegistry().get("DUPLICATE_PNG");
columnElement = new ColumnElement(this, path);
}
@Override
public TableViewerColumn createColumn(TableViewer table) {
TableViewerColumn column = new TableViewerColumn(table, SWT.LEFT);
column.getColumn().setText(getName());
column.getColumn().setToolTipText(getName());
column.getColumn().setMoveable(true);
column.getColumn().setImage(activeImg);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getToolTipText(Object element) {
return getToolTip();
}
@Override
public String getText(Object element) {
RowUpdate update = (RowUpdate) element;
Object value = update.getValue(ViewerColumnElement.this);
return value != null ? value.toString().intern() : "?";
}
@Override
public Color getBackground(Object element) {
RowUpdate update = (RowUpdate) element;
return update.isChanged(ViewerColumnElement.this) ? Displays.getSystemColor(SWT.COLOR_GREEN) : null;
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return 500;
}
});
return column;
}
public ColumnElement getColumnElement() {
return columnElement;
}
@Override
public Object getValue() {
return columnElement.getValue();
}
@Override
public String getVerboseName() {
if(isEnumOutputNumber && columnElement.getEnumText().length() > 0){
return ColumnElement.getMessageName(columnElement.getMessageClassName()) + '.' + columnElement.getElementPath().toString() + " (" + columnElement.getEnumText()+ ")";
} else {
return ColumnElement.getMessageName(columnElement.getMessageClassName()) + '.' + columnElement.getElementPath().toString();
}
}
public boolean isDuplicateName() {
return duplicateName;
}
public void setDuplicateName(boolean duplicateName) {
this.duplicateName = duplicateName;
if(isActive()){
getColumn().setImage(duplicateName ? duplicate : activeImg);
}
columnElement.setToolTip();
}
/**
* @param active the active to set
*/
@Override
public void setActive(boolean active) {
super.setActive(active);
getColumn().setImage(active ? activeImg : inactive);
}
public boolean isEnumOutputNumber() {
return isEnumOutputNumber;
}
public void setEnumOutputNumber(boolean isNumber){
isEnumOutputNumber = isNumber;
}
public boolean showNumbersAsHex(){
return showNumbersAsHex;
}
public void setShowNumbersAsHex(boolean showNumbersAsHex) {
this.showNumbersAsHex = showNumbersAsHex;
}
}