Decorated TableViewer mit falschen Werten

Julian R.

Mitglied
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:

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
 

Julian R.

Mitglied
... hat sich erledigt!

Komischer weise muss man so wie ichs gemacht hab die toString-Methode in dem der Tabelle zugeordneten Objekt überschreiben, und so realisieren, dass der Inhalt der Attribute in die Zellen eingetragen wird.

Stellt sich nur die Frage, warum der DecoratingLabelProvider dann nen LabelProvider als Argument will ^^
 

Wildcard

Top Contributor
Komischer weise muss man so wie ichs gemacht hab die toString-Methode in dem der Tabelle zugeordneten Objekt überschreiben, und so realisieren, dass der Inhalt der Attribute in die Zellen eingetragen wird.
Nein, muss man nicht.

Stellt sich nur die Frage, warum der DecoratingLabelProvider dann nen LabelProvider als Argument will ^^
Weil der DecoratingLabelProvider sich über einen normalen LabelProvider legt und dessen Rückgabewerte anreichert (dekoriert, eben).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX TableViewer zeigt nichts an !! AWT, Swing, JavaFX & SWT 1
F TableViewer und Databinding Problem AWT, Swing, JavaFX & SWT 3
C SWT Wie greife ich auf den Inhalt einer bestimmten Zeile zu? (TableViewer) AWT, Swing, JavaFX & SWT 7
K SWT Group um TableViewer AWT, Swing, JavaFX & SWT 2
O Anzahl der Zeilen im TableViewer AWT, Swing, JavaFX & SWT 12
K SWT TableViewer refresh() im Dialog AWT, Swing, JavaFX & SWT 2
lumo SWT TableViewer und IColorProvider AWT, Swing, JavaFX & SWT 9
D SWT JFace TableViewer nächster CellEditor nach Enter aktivieren AWT, Swing, JavaFX & SWT 5
D SWT SWT TableViewer ausrichtung des Inhaltes nach Datentyp AWT, Swing, JavaFX & SWT 2
S TableViewer und Databinding AWT, Swing, JavaFX & SWT 7
dzim NullPointer bei refresh() einer JFace TableViewer AWT, Swing, JavaFX & SWT 2
dzim JFace TableViewer mit verschiedenen Inhalten AWT, Swing, JavaFX & SWT 4
dzim [SWT] Seltsames verhalten bei TableViewer mit TextCellEditor AWT, Swing, JavaFX & SWT 5
S Button in Tableviewer? AWT, Swing, JavaFX & SWT 10
M JFace TableViewer + ContentProvider, wo sind die Spalten? AWT, Swing, JavaFX & SWT 6
C TableViewer Contentprovider AWT, Swing, JavaFX & SWT 8
S Caps-Lock Überprüfung gibt falschen Wert zurück AWT, Swing, JavaFX & SWT 1
I Swing Ordnerauswahl ist in der falschen Ebene AWT, Swing, JavaFX & SWT 1
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
A JButtons - es wird beim falschen Button die Hintergrundfarbe angepasst AWT, Swing, JavaFX & SWT 2
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
K BoxLayout skaliert die "falschen" Elemente AWT, Swing, JavaFX & SWT 5
L 2 Monitore, Fenster öffnet sich im falschen Monitor AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben