Verschiedene Farben in einem Treeview

Status
Nicht offen für weitere Antworten.

gbo

Mitglied
Hallo zusammen,

ich habe eine RCP View mit einem TreeViewer implementiert. Der Treeview stellt verschiedene Key-Value jeweils als ein Item Paare dar. Nun möchte ich gern Key und Value farblich voneinander unterscheidbar machen. Im Prinzip genau so wie in der Outline von Eclipse, in der Name und Rückgabetyp von einer Methode unterschiedlich eingefärbt sind.

editor_vectortest_quickoutline.png


Weiß jemand wie ich das anstelle?

Grüße,
gbo
 
V

Vayu

Gast
müsste eigentlich mit einem

ITableColorProvider funktionieren. Einfach deinen LabelProvider um das Interface erweitern, dann solltest du innerhalb einer Zeile auch noch zwischen Spalten unterscheiden können.
 

gbo

Mitglied
Danke, das System habe ich jetzt verstanden. Mein Problem ist noch, dass ich meinen TreeViewer nicht überzeugt bekomme, mehrere Spalten anzuzeigen. Zudem wird der gesetzte LableProvider nicht verwendet.

Hier der LabelProvider:

Code:
public class TreeQuickviewLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {

  public Color getBackground(final Object element, final int columnIndex) {
    return null;
  }

  public Color getForeground(final Object element, final int columnIndex) {
    System.out.println("getForeground called");
    Color result = null;
    switch (columnIndex) {
      case 0 :
        result = Display.getCurrent().getSystemColor(SWT.COLOR_BLUE);
        break;
      case 1 :
        result = Display.getCurrent().getSystemColor(SWT.COLOR_GREEN);
        break;
      default :
        break;
    }
    return result;
  }

  public Image getColumnImage(final Object element, final int columnIndex) {
    System.out.println("getColumnImage called");
    Image result = null;
    if (element instanceof BaseTreeObject) {
      final BaseTreeObject bto = (BaseTreeObject) element;
      switch (columnIndex) {
        case 0 :
          if (bto.getImage() != null) {
            result = bto.getImage().createImage();
          }
          break;
        case 1 :
          break;
        default :
          break;
      }
    }
    return result;
  }

  public String getColumnText(final Object element, final int columnIndex) {
    System.out.println("getColumnText called");
    String result = null;
    if (element instanceof BaseTreeObject) {
      final BaseTreeObject bto = (BaseTreeObject) element;
      switch (columnIndex) {
        case 0 :
          result = bto.getKey();
          break;
        case 1 :
          result = bto.getValue();
          break;
        default :
          break;
      }
    }
    return result;
  }

}


und die Stelle an der ich den TreeViewer initialisiere:

Code:
    TreeViewer viewer = super.getTreeViewer();
    drillDownAdapter = new DrillDownAdapter(viewer);
    viewer.setLabelProvider(new TreeQuickviewLabelProvider());
    viewer.setContentProvider(new TreeQuickviewContentProvider(root));
    viewer.setInput(root);
    viewer.expandToLevel(expandToLevel);
    viewer.getTree().setBackground(Display.getCurrent().getSystemColor(colorBackground));
 
Zuletzt bearbeitet:
V

Vayu

Gast
du musst auf deinem TreeViewer noch die ColumnProperties setzen, so dass er auch weiss, dass du es mehrere Spalten gibt :)

Java:
setColumnProperties
 

gbo

Mitglied
Das setzen der ColumnProperties hat leider nix gebracht.

Code:
viewer.setColumnProperties(new String[] {"col1", "col2"});

stattdessen habe ich mal den TreeViewer abgeleitet und die Methode doGetColumnCount() überschrieben:

Code:
public class BaseTreeViewer extends TreeViewer {

  public BaseTreeViewer(final Composite parent) {
    super(parent);
  }

  public BaseTreeViewer(final Composite parent, final int i) {
    super(parent, i);
  }

  private static final int COLUMNCOUNT = 2;

  @Override
  protected int doGetColumnCount() {
    return COLUMNCOUNT;
  }
}

Nun springt der LabelProvider an und die erste Spalte wird korrekt dargestellt, aber die zweite nicht (wird garnicht angezeigt) :/
 

gbo

Mitglied
2. Spalte wirft eine Exception:

Code:
java.lang.NullPointerException
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932)

columnViewer scheint null zu sein

Code:
columnViewer.refresh(cellToUpdate);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G RCP auf verschiedene Systemen Plattformprogrammierung 2
S Eclipse Forms, Farben ändern Plattformprogrammierung 2
Z Aus einem PDF-Formular heraus eine Android App Outlook starten Plattformprogrammierung 3
D JNA Referenz zu einem Array übergeben in c++ Library(dll) Plattformprogrammierung 3
F OSGi Applikation läuft einem Linux langsam, auf dem anderen normal Plattformprogrammierung 4
M Grahiti in einem RCP Projekt implementieren Plattformprogrammierung 1
D Plugin - JUnit - Tests aus einem anderen Projekt ausführen Plattformprogrammierung 7
C RCP Zwei Commands in einem Handler Plattformprogrammierung 2
C RCP Generieren eines WAR-Files aus einem lauffähigen Product Plattformprogrammierung 2
S GMF Editor mit einem zur Laufzeit erstellten Modell Plattformprogrammierung 4
S RCP Daten aus einem File auslesen, und daraus ein neues Objekt erstellen! Plattformprogrammierung 4
B GMF Editor mit nur einem Connection Tool Plattformprogrammierung 5
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
T Speichern eines Objectes in einem Editor (mit isDirty) Plattformprogrammierung 6
E eclipse RCP Anwendung programmatisch / aus einem anderen Programme starten? Plattformprogrammierung 8
L RCP View in einem Editor öffnen? Plattformprogrammierung 3
O Problem mit relativen Pfaden in einem RCP-Plugin Plattformprogrammierung 5
C Texteditor öffnet mit einem Error Plattformprogrammierung 3
M Problem beim Zugriff auf Klasse aus Fragment in einem anderen Plugin Plattformprogrammierung 3
S In einem Plugin main einer anderen Klasse aufrufen Plattformprogrammierung 18
K Einträge von einem PlugIn unterbinden. Plattformprogrammierung 6
K Editor nicht in der 'EditorArea' öffnen, sondern in einem Folder(Layout). Plattformprogrammierung 10
dzim Teileweise Auswahl in einem CheckboxTreeViewer? Plattformprogrammierung 3
T Aus einem View in das andere wecheln. Plattformprogrammierung 13

Ähnliche Java Themen


Oben