Hallo *,
Ich habe mir einen CheckboxTreeViewer gebaut Und dazu zwei Fragen.
Erste Frage:
Ich möchte bestimmte Elemente nicht auswählbar machen.
Die Methode setGrayedElements(Object[] elements) bringt nicht die erwarteten Resultate. Die Elemente bleiben auswählbar, aber statt eines Hacken werden sie mit einem Quadrat selektiert. Wie schaffe ich es, dass die Checkboxen bei diesen Elementen nicht selektierbar sind?
Zweite Frage:
Über folgenden Listener steuere ich in einem Wizard das setPageComplete Flag. Ich möchte nur wenn das Element "Strategie" selektiert ist die Page auf "complete" setzen. Der Code funktioniert auch wunderbar, bis auf den Fall, wenn ich das Element "Strategie" im Tree anwähle und wieder abwähle. Wenn ich es wieder abwähle möchte ich, dass die Page auf "incomplete" gesetzt wird. Warum geht das nicht? Der Listener wird beim abwählen angesprochen. Demzufolge müsste elements kein Objekt vom Typ "Strategie" enthalten, demzufolge müsste der else Block ausgeführt werden. So denke ich. Was ist daran falsch?
Vielen Dank und einen schönen Sonntag abend.
Kurschi
Ich habe mir einen CheckboxTreeViewer gebaut Und dazu zwei Fragen.
Erste Frage:
Ich möchte bestimmte Elemente nicht auswählbar machen.
Die Methode setGrayedElements(Object[] elements) bringt nicht die erwarteten Resultate. Die Elemente bleiben auswählbar, aber statt eines Hacken werden sie mit einem Quadrat selektiert. Wie schaffe ich es, dass die Checkboxen bei diesen Elementen nicht selektierbar sind?
Zweite Frage:
Über folgenden Listener steuere ich in einem Wizard das setPageComplete Flag. Ich möchte nur wenn das Element "Strategie" selektiert ist die Page auf "complete" setzen. Der Code funktioniert auch wunderbar, bis auf den Fall, wenn ich das Element "Strategie" im Tree anwähle und wieder abwähle. Wenn ich es wieder abwähle möchte ich, dass die Page auf "incomplete" gesetzt wird. Warum geht das nicht? Der Listener wird beim abwählen angesprochen. Demzufolge müsste elements kein Objekt vom Typ "Strategie" enthalten, demzufolge müsste der else Block ausgeführt werden. So denke ich. Was ist daran falsch?
Code:
strategieTree
.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
Object[] elements = strategieTree.getCheckedElements();
for(Object element : elements){
if(element instanceof Strategie){
setPageComplete(true);
break;
}else{
setPageComplete(false);
}
}
Vielen Dank und einen schönen Sonntag abend.
Kurschi