Browse Source

SGenNewWizardPage: connect double click listener with check state listener

holger.willebrandt@gmail.com 13 years ago
parent
commit
49e43ec9ae

+ 10 - 10
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2.java

@@ -156,18 +156,18 @@ public class SGenWizardPage2 extends WizardPage {
 
 		stateChartTree.setContentProvider(treeContentProvider);
 		stateChartTree.setLabelProvider(treeLabelProvider);
-		stateChartTree
-				.addCheckStateListener(new TreePropagatingCheckStateListener(
-						stateChartTree) {
-					@Override
-					public void checkStateChanged(CheckStateChangedEvent event) {
-						super.checkStateChanged(event);
-						checkComplete();
-					}
-				});
+		TreePropagatingCheckStateListener checkStateListener = new TreePropagatingCheckStateListener(
+				stateChartTree) {
+			@Override
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				super.checkStateChanged(event);
+				checkComplete();
+			}
+		};
+		stateChartTree.addCheckStateListener(checkStateListener);
 		stateChartTree
 				.addDoubleClickListener(new TreeExpandingDoubleClickListener(
-						stateChartTree));
+						stateChartTree, checkStateListener));
 		stateChartTree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
 
 		Label lblGenerator = new Label(container, SWT.NONE);

+ 31 - 3
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/TreeExpandingDoubleClickListener.java

@@ -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));
+			}
 		}
 	}
 }