Heavenfighter
Grünschnabel
Hallo,
ich habe einen TreeViewer dem ich die Drag&Drop Funktionalität hinzugefügt habe.
Jetzt ist mir ein kleines Problem aufgefallen. Und zwar egal wo hin ich ein Element verschiebe, es wird immer am Ende der Zielebene eingefügt und nie dazwischen.
Beispiel:
Wenn ich nun Element 1 zwischen 3 und 4 verschiebe, wird es mit immer hinter der 4 angelegt.
Mein Code dazu sieht so aus:
Kann mir jemand sagen wo hier der Fehler liegt?
ich habe einen TreeViewer dem ich die Drag&Drop Funktionalität hinzugefügt habe.
Jetzt ist mir ein kleines Problem aufgefallen. Und zwar egal wo hin ich ein Element verschiebe, es wird immer am Ende der Zielebene eingefügt und nie dazwischen.
Beispiel:
- Element 1
- Element 2
- Element 3
- Element 4
Wenn ich nun Element 1 zwischen 3 und 4 verschiebe, wird es mit immer hinter der 4 angelegt.
Mein Code dazu sieht so aus:
Code:
public boolean performDrop(Object data)
{
MegaMenuItem target = (MegaMenuItem) getCurrentTarget();
if (target != null)
{
int loc = getCurrentLocation();
if (loc == LOCATION_BEFORE || loc == LOCATION_AFTER)
target = target.getParent();
}
if (target == null)
target = (MegaMenuItem) getViewer().getInput();
MegaMenuItem[] toDrop = (MegaMenuItem[]) data;
TreeViewer viewer = (TreeViewer) getViewer();
// cannot drop a gadget onto itself or a child
for (int i = 0; i < toDrop.length; i++)
if (toDrop[i].equals(target) || target.hasParent(toDrop[i]))
return false;
for (int i = 0; i < toDrop.length; i++)
{
toDrop[i].setParent(target);
viewer.add(target, toDrop[i]);
viewer.reveal(toDrop[i]);
}
return true;
}
Kann mir jemand sagen wo hier der Fehler liegt?