SWT SWT - edit eines TreeNodes

  • Themenstarter Themenstarter JeremySioi
  • Beginndatum Beginndatum
J

JeremySioi

Gast
Hallo

ich möchte Baumknoten in einer TreeView per doppelklick editieren können. Dazu habe ich in plain SWT dieses Code-Snipsel gefunden:
http://dev.eclipse.org/viewcvs/view.../eclipse/swt/snippets/Snippet111.java?view=co

Das Codeschnippsel ist so, dass es bei einfachem klick in den editiermodus springt, anstatt bei doppelklick, wie ich es brauche.

Mein Problem ist diese Zeile hier:

Code:
tree.addListener (SWT.Selection, new Listener () {
		public void handleEvent (Event event) {
			final TreeItem item = (TreeItem) event.item;
			if (item != null && item == lastItem [0]) {

Der naive Versuch SWT.Selection in SWT.MouseDoubleClick zu ändern hat nicht funktioniert. Für diesen Fall ist das even.item immer null.
Ich hab es auch sonst nicht rausbkeommen, wie es gehen könnte. Hat jemand eine Idee?
 
ah ok, danke.

Noch ne Frage zu diesem Code-snippet. Ich benutze eine TreeView wo ich ein model reingebe, dass im Grunde eine eigene implementierte Baumstruktur ist. Das Codesnippet greift aber explizit auf TreeItems zu, wie geht das?

Oder eher andersherum gesagt, wenn ich über dieses SWT Snippet ein Knoten im Tree habe, wie bekomme damit dann meinen eigentlichen Knoten? Das verstehe ich noch nicht so ganz?

mein übriger Code sieht so aus:

Code:
	viewer.setContentProvider(new TreeContentProvider());
		viewer.setLabelProvider(new TreeLabelProvider());
		viewer.setInput(model.getModelRoot());

dann kommt der snippet code - das was mit mode.getModelRoot() geliefert wird ist kein TreeItem wie es im Snippet verwendet wird und doch funktionert dieser Code, wieso?
 
Das hab ich jetzt hinbekommen, nun habe ich das Problem, dass die Stelle wo der edit ausgeführt wird, nach dem edit grau hinterlegt ist.

Das ist also die Stelle, wo das Textfenster vorher war, das nun disposed wurde. Das sieht häßlich aus, da die Zeile durch die vorhergehnde Klick-Aktion markiert ist und da wo das Textfenster war, um den neuen Namen einzugeben und disposed wurde, nun "grau" ist.

Kann ich irgendwie die default selection color abfragen und nach jedem dispose setzen?
 
ich versteh dein Anliegen gerade nicht richtig.

Du hast eine Zeile ausgewählt und willst dann in bestimmten Felder des Trees etwas editieren?
Wenn es das ist dann reicht folgendes:

Java:
TreeViewerColumn column1 = new TreeViewerColumn(viewer, SWT.None);
column1.setEditingSupport(new InlineEditingSupport(viewer, bindingContext));
 

Zurück
Oben