|
@@ -10,10 +10,13 @@
|
|
|
*/
|
|
|
package org.yakindu.sct.generator.genmodel.ui.wizard;
|
|
|
|
|
|
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
|
|
import org.eclipse.jface.viewers.CheckboxTreeViewer;
|
|
|
import org.eclipse.jface.viewers.DoubleClickEvent;
|
|
|
+import org.eclipse.jface.viewers.ICheckStateListener;
|
|
|
import org.eclipse.jface.viewers.IDoubleClickListener;
|
|
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
|
|
+import org.eclipse.jface.viewers.TreeViewer;
|
|
|
|
|
|
/**
|
|
|
* Will expand/collapse all expandable elements on double click and
|
|
@@ -24,9 +27,28 @@ import org.eclipse.jface.viewers.IStructuredSelection;
|
|
|
public class TreeExpandingDoubleClickListener implements IDoubleClickListener {
|
|
|
private final CheckboxTreeViewer treeViewer;
|
|
|
|
|
|
- public TreeExpandingDoubleClickListener(CheckboxTreeViewer treeViewer) {
|
|
|
+ private final ICheckStateListener checkStateListener;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param treeViewer
|
|
|
+ * the {@link TreeViewer}
|
|
|
+ * @param checkStateListener
|
|
|
+ * the {@link ICheckStateListener} to notify if double clicking
|
|
|
+ * changes a checked state
|
|
|
+ */
|
|
|
+ public TreeExpandingDoubleClickListener(CheckboxTreeViewer treeViewer,
|
|
|
+ ICheckStateListener checkStateListener) {
|
|
|
super();
|
|
|
this.treeViewer = treeViewer;
|
|
|
+ this.checkStateListener = checkStateListener;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param treeViewer
|
|
|
+ * the {@link TreeViewer}
|
|
|
+ */
|
|
|
+ public TreeExpandingDoubleClickListener(CheckboxTreeViewer treeViewer) {
|
|
|
+ this(treeViewer, null);
|
|
|
}
|
|
|
|
|
|
public void doubleClick(DoubleClickEvent event) {
|
|
@@ -37,8 +59,14 @@ public class TreeExpandingDoubleClickListener implements IDoubleClickListener {
|
|
|
boolean expanded = treeViewer.getExpandedState(firstElement);
|
|
|
treeViewer.setExpandedState(firstElement, !expanded);
|
|
|
} else {
|
|
|
- treeViewer.setChecked(firstElement,
|
|
|
- !treeViewer.getChecked(firstElement));
|
|
|
+ // FIXME :: does not trigger validation
|
|
|
+ boolean newState = !treeViewer.getChecked(firstElement);
|
|
|
+ treeViewer.setChecked(firstElement, newState);
|
|
|
+ if (checkStateListener != null) {
|
|
|
+ checkStateListener
|
|
|
+ .checkStateChanged(new CheckStateChangedEvent(
|
|
|
+ treeViewer, firstElement, newState));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|