Hallo Zusammen 
Mein Problem ist folgendes:
Ich habe einen TableViewer und will einzelne Zeilen mit verschiedenen farbigen Backgrounds darstellen.
Das klappt soweit auch wunderbar mit einem DecoratingLabelProvider.
Nur leider schreibt mir der LabelProvider, welchen ich als Argument dem DecoratingLabelProvider übergebe, nicht die Werte der Attribute in die Zeilen, sondern nur den Objekt-Namen (ich denke ihr wisst was ich meine ^^).
Hier die entsprechenden Abschnitte im Sourcecode:
Ich hoffe ihr könnt mir weiterhelfen! ;-)
MfG,
Julian
Mein Problem ist folgendes:
Ich habe einen TableViewer und will einzelne Zeilen mit verschiedenen farbigen Backgrounds darstellen.
Das klappt soweit auch wunderbar mit einem DecoratingLabelProvider.
Nur leider schreibt mir der LabelProvider, welchen ich als Argument dem DecoratingLabelProvider übergebe, nicht die Werte der Attribute in die Zeilen, sondern nur den Objekt-Namen (ich denke ihr wisst was ich meine ^^).
Hier die entsprechenden Abschnitte im Sourcecode:
Java:
tableViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
gridDataTableViewerTable.grabExcessVerticalSpace = true;
gridDataTableViewerTable.horizontalSpan = 4;
tableViewer.getTable().setLayoutData(gridDataTableViewerTable);
createColumns(tableViewer);
tableViewer.setContentProvider(new ArrayContentProvider());
DecoratingLabelProvider decorator = new DecoratingLabelProvider(new LabelProviderTable(), new LabelDecorator());
tableViewer.setLabelProvider(decorator);
// tableViewer.setLabelProvider(new LabelProviderTable());
GlobalInformation.getInstance().setTableViewer(tableViewer);
tableViewer.setInput(GlobalInformation.getInstance().getListOfPatienten());
Java:
public class LabelProviderTable extends LabelProvider implements ITableLabelProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
*/
@Override
public Image getColumnImage(Object element, int columnIndex) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
@Override
public String getColumnText(Object element, int columnIndex) {
Patient patient = (Patient) element;
switch (columnIndex) {
case 0:
return String.valueOf(patient.getId());
case 1:
return patient.getUhrzeit().toString() + " " + patient.getDatum().toString();
case 2:
return patient.getAusgangsZeit();
case 3:
return patient.getNachname() + " " + patient.getVorname();
case 4:
return patient.getGeburtsdatum().toString();
case 5:
return patient.getWohnort().toString();
case 6:
return patient.getBemerkung().toString();
case 7:
return patient.getBehandelnd().toString();
default:
throw new RuntimeException("You got to extend the switch-commands in the LabelProvider!");
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override
public void dispose() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
}
Java:
public class LabelDecorator implements ILabelDecorator, IColorDecorator {
private Color orange = new Color(null, 250, 120, 0);
private Color darkBlue = new Color(null, 0, 0, 250);
private Color cyan = new Color(null, 0, 175, 175);
private Color purple = new Color(null, 152, 18, 103);
private Color gray = new Color (null, 242, 242, 242);
private Color white = new Color (null, 250, 250, 250);
private Color green = new Color(null, 0, 100, 0);
private Color yellow = new Color(null, 250, 250, 0);
private Color red = new Color(null, 255, 50, 50);
private Color black = new Color(null, 0, 0, 0);
private int actualColumnIndex = 0;
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt.graphics.Image, java.lang.Object)
*/
@Override
public Image decorateImage(Image image, Object element) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String, java.lang.Object)
*/
@Override
public String decorateText(String text, Object element) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
//nothing
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override
public void dispose() {
//nothing
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
//nothing
}
@Override
public Color decorateBackground(Object element) {
Patient patient = (Patient) element;
if (patient.isBoolCriteriaStateWhite()){
return white;
}
else if (patient.isBoolCriteriaStateGreen()){
return green;
}
else if (patient.isBoolCriteriaStateYellow()){
return yellow;
}
else if (patient.isBoolCriteriaStateRed()){
return red;
}
else if (patient.isBoolCriteriaStateBlack()){
return black;
}
return null;
}
@Override
public Color decorateForeground(Object element) {
Patient patient = (Patient) element;
if (patient.isBoolCriteriaStateGreen()){
return white;
}
else if (patient.isBoolCriteriaStateBlack()){
return white;
}
return black;
}
}
Ich hoffe ihr könnt mir weiterhelfen! ;-)
MfG,
Julian