Reviewers: ecc,

Description:
When beforeSelect is fired check that if cancel is called the tree item
doesn't get selected.

Please review this at http://gwt-code-reviews.appspot.com/5801

Affected files:
   src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java
   src/com/google/gwt/gen2/complexpanel/client/FastTree.java
   src/com/google/gwt/gen2/complexpanel/client/FastTreeItem.java


Index: src/com/google/gwt/gen2/complexpanel/client/FastTreeItem.java
===================================================================
--- src/com/google/gwt/gen2/complexpanel/client/FastTreeItem.java       
(revision  
1526)
+++ src/com/google/gwt/gen2/complexpanel/client/FastTreeItem.java       
(working  
copy)
@@ -657,10 +657,11 @@
     *          it.
     */
    void setSelection(boolean selected, boolean fireEvents) {
-    tree.beforeSelected(this);
-    setStyleName(getControlElement(), css.selected(), selected);
-    if (selected && fireEvents) {
-      onSelected();
+    if (!tree.beforeSelected(this).isCanceled()) {
+      setStyleName(getControlElement(), css.selected(), selected);
+      if (selected && fireEvents) {
+        onSelected();
+      }
      }
    }

Index: src/com/google/gwt/gen2/complexpanel/client/FastTree.java
===================================================================
--- src/com/google/gwt/gen2/complexpanel/client/FastTree.java   (revision  
1526)
+++ src/com/google/gwt/gen2/complexpanel/client/FastTree.java   (working copy)
@@ -666,8 +666,8 @@
      BeforeOpenEvent.fire(this, fastTreeItem, isFirstTime);
    }

-  void beforeSelected(FastTreeItem fastTreeItem) {
-    BeforeSelectionEvent.fire(this, fastTreeItem);
+  BeforeSelectionEvent<FastTreeItem> beforeSelected(FastTreeItem  
fastTreeItem) {
+    return BeforeSelectionEvent.fire(this, fastTreeItem);
    }

    /*
Index: src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java
===================================================================
--- src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java  
(revision 1526)
+++ src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java  
(working copy)
@@ -19,6 +19,7 @@
  import com.google.gwt.event.dom.client.ClickEvent;
  import com.google.gwt.event.dom.client.ClickHandler;
  import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
+import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
  import com.google.gwt.event.logical.shared.CloseEvent;
  import com.google.gwt.event.logical.shared.CloseHandler;
  import com.google.gwt.event.logical.shared.OpenEvent;
@@ -63,7 +64,8 @@
      p.add(lazyTree(), "Lazy tree");
      p.add(verboseTree(), "Verbose tree");
      p.add(crazyTree(), "Crazy tree");
-    p.add(dynamicTree(), "DynamicTree");
+    p.add(dynamicTree(), "Dynamic tree");
+    p.add(cancelEventTree(), "Cancel event tree");

      return p;
    }
@@ -241,6 +243,30 @@
      return hebrewTree;
    }

+  private Widget cancelEventTree() {
+    final FastTree cancelEventTree = new FastTree();
+    FastTreeItem firstBranch = cancelEventTree.addItem("Select Me!");
+    firstBranch.addItem("No! Select Me!");
+    firstBranch.addItem("No! Select Me!");
+    firstBranch.addItem("No! Select Me!");
+    FastTreeItem secondBranch = cancelEventTree.addItem("Don't Select  
me!");
+    secondBranch.addItem("Not me!");
+    secondBranch.addItem("Not me!");
+    secondBranch.addItem("Not me!");
+
+    cancelEventTree.addBeforeSelectionHandler(
+        new BeforeSelectionHandler<FastTreeItem>() {
+          public void onBeforeSelection(BeforeSelectionEvent<FastTreeItem>  
event) {
+              if (!Window.confirm("Continue?")) {
+                event.cancel();
+              }
+          }
+    });
+
+    return cancelEventTree;
+  }
+
+
    private void lazyCreateChild(final HasFastTreeItems parent, final int  
index,
        final int children) {




--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to