[gwt-contrib] ClientBundle inheritence issues
Reviewers: robertvawter_google.com, Description: http://b/issue?id=1958188 Please review this at http://gwt-code-reviews.appspot.com/48805 Affected files: rg/CssResourceGenerator.java Index: rg/CssResourceGenerator.java === --- rg/CssResourceGenerator.java(revision 5514) +++ rg/CssResourceGenerator.java(working copy) @@ -918,10 +918,18 @@ String functionName = def.getValues().get(0).isIdentValue().getIdent(); // Find the method - JMethod method = context.getClientBundleType().findMethod( - functionName, new JType[0]); - - if (method == null) { + JMethod methods[] = context.getClientBundleType().getOverridableMethods(); + boolean foundMethod = false; + if (methods != null) { +for (JMethod method : methods) { + if (method.getName().equals(functionName)) { +foundMethod = true; +break; + } +} + } + + if (!foundMethod) { logger.log(TreeLogger.ERROR, Unable to find DataResource method + functionName + in + context.getClientBundleType().getQualifiedSourceName()); --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Cleaning up the FastTree deprecations
Reviewers: jlabanca, Description: Getting rid of some deprecations so that the FastTree demo will actually run. Please review this at http://gwt-code-reviews.appspot.com/33832 Affected files: src-demo/com/google/gwt/gen2/demo/fasttree/FastTreeDemo.gwt.xml src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java src/com/google/gwt/gen2/widgetbase/WidgetBase.gwt.xml src/com/google/gwt/gen2/widgetbase/client/Gen2CssInjector.java src/com/google/gwt/widgetideas/client/FastTree.java src/com/google/gwt/widgetideas/client/FastTreeItem.java --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Re: Cleaning up the FastTree deprecations
http://gwt-code-reviews.appspot.com/33832/diff/1/6 File src-demo/com/google/gwt/gen2/demo/fasttree/FastTreeDemo.gwt.xml (right): http://gwt-code-reviews.appspot.com/33832/diff/1/6#newcode5 Line 5: inherits name='com.google.gwt.user.theme.standard.Standard'/ On 2009/05/29 18:17:47, jlabanca wrote: Remove the ScrollTable from the demo Done. http://gwt-code-reviews.appspot.com/33832/diff/1/7 File src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java (right): http://gwt-code-reviews.appspot.com/33832/diff/1/7#newcode78 Line 78: p.add(tableTree(), Table tree); On 2009/05/29 18:17:47, jlabanca wrote: I suggest that you remove the ScrollTable from the demo so it isn't too complicated. Done. http://gwt-code-reviews.appspot.com/33832 --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Moving FastTree into trunk
Reviewers: jlabanca, Description: This is the first stab at moving FastTree into trunk (from incubator) and merging some commonalities with Tree into a new base class called TreeBase.java Please review this at http://gwt-code-reviews.appspot.com/33836 Affected files: build.xml src/com/google/gwt/event/dom/client/KeyCodes.java src/com/google/gwt/event/logical/shared/BeforeCloseEvent.java src/com/google/gwt/event/logical/shared/BeforeCloseHandler.java src/com/google/gwt/event/logical/shared/BeforeOpenEvent.java src/com/google/gwt/event/logical/shared/BeforeOpenHandler.java src/com/google/gwt/event/logical/shared/HasBeforeCloseHandlers.java src/com/google/gwt/event/logical/shared/HasBeforeOpenHandlers.java src/com/google/gwt/user/client/ui/FastTree.java src/com/google/gwt/user/client/ui/FastTreeItem.java src/com/google/gwt/user/client/ui/Tree.java src/com/google/gwt/user/client/ui/TreeBase.java src/com/google/gwt/user/theme/standard/public/gwt/standard/images/selectionBar.gif src/com/google/gwt/user/theme/standard/public/gwt/standard/images/treeClosed.gif src/com/google/gwt/user/theme/standard/public/gwt/standard/images/treeOpen.gif src/com/google/gwt/user/theme/standard/public/gwt/standard/standard.css src/com/google/gwt/user/theme/standard/public/gwt/standard/standard_rtl.css test/com/google/gwt/user/client/ui/FastTreeTest.java --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] FastTree Focus Issue
Reviewers: jlabanca, minz, Description: There was a focus issue with the fasttree when the size of the tree was larger than the viewport, this was especially manifested with very large trees. Please review this at http://gwt-code-reviews.appspot.com/18801 Affected files: com/google/gwt/gen2/complexpanel/client/FastTree.java Index: com/google/gwt/gen2/complexpanel/client/FastTree.java === --- com/google/gwt/gen2/complexpanel/client/FastTree.java (revision 1594) +++ com/google/gwt/gen2/complexpanel/client/FastTree.java (working copy) @@ -53,6 +53,7 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Accessibility; import com.google.gwt.user.client.ui.Focusable; import com.google.gwt.user.client.ui.Panel; @@ -849,15 +850,26 @@ } private void moveElementOverTarget(Element movable, Element target) { -int containerTop = getAbsoluteTop(); - -int top = DOM.getAbsoluteTop(target) - containerTop; +int top = DOM.getAbsoluteTop(target); int height = DOM.getElementPropertyInt(target, offsetHeight); +int left = DOM.getAbsoluteLeft(target) + getAbsoluteLeft(); +int width = DOM.getElementPropertyInt(target, offsetWidth); + +int maxBottom = Window.getScrollTop() + Window.getClientHeight(); +if (top + target.getOffsetHeight() maxBottom) { + top = maxBottom - target.getOffsetHeight(); +} + // Set the element's position and size to exactly underlap the // item's content element. DOM.setStyleAttribute(movable, height, height + px); -DOM.setStyleAttribute(movable, top, top + px); + +if (top 0) { + DOM.setStyleAttribute(movable, top, top + px); +} +DOM.setStyleAttribute(movable, left, left + px); +DOM.setStyleAttribute(movable, width, width + px); } /** --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Removing processElementClicked from gen2.FastTree
Reviewers: jlabanca, Description: http://code.google.com/p/google-web-toolkit-incubator/issues/detail?id=232 Please review this at http://gwt-code-reviews.appspot.com/14802 Affected files: client/FastTree.java Index: client/FastTree.java === --- client/FastTree.java(revision 1543) +++ client/FastTree.java(working copy) @@ -599,25 +599,6 @@ } /** - * This is called when a valid selectable element is clicked in the tree. - * Subclasses can override this method to decide whether or not FastTree - * should keep processing the element clicked. For example, a subclass may - * decide to return false for this method if selecting a new item in the tree - * is subject to asynchronous approval from other components of the - * application. - * - * @returns true if element should be processed normally, false otherwise. - * Default returns true. - * - * @deprecated Add a beforeSelectionHandler by calling - * addBeforeSelectionHandler instead. - */ - @Deprecated - protected boolean processElementClicked(FastTreeItem item) { -return true; - } - - /** * Supply a decorator for the fast tree. * * @return a decorator @@ -789,9 +770,7 @@ disableSelection(target); return; } - if (processElementClicked(item)) { -onSelection(item, true, !shouldTreeDelegateFocusToElement(target)); - } + onSelection(item, true, !shouldTreeDelegateFocusToElement(target)); } return; } --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Filed against Issue 1518032 in bugganizer
Reviewers: ecc, Description: java.lang.IndexOutOfBoundsException: No child at index -1 when findDeepestOpenChild(FastTree.java:792) is called. Please review this at http://gwt-code-reviews.appspot.com/8803 Affected files: src/com/google/gwt/gen2/complexpanel/client/FastTree.java test/com/google/gwt/gen2/complexpanel/client/FastTreeTest.java Index: test/com/google/gwt/gen2/complexpanel/client/FastTreeTest.java === --- test/com/google/gwt/gen2/complexpanel/client/FastTreeTest.java (revision 1542) +++ test/com/google/gwt/gen2/complexpanel/client/FastTreeTest.java (working copy) @@ -271,6 +271,24 @@ assertTrue(item3.isSelected()); assertFalse(item1.isSelected()); } + + public void testFindDeepestOpenChild() { +FastTree tree = createBeforeSelectTestableTree(false); +FastTreeItem item = tree.getItem(0); +item.setState(true); +tree.setSelectedItem(item); +assertTrue(item.isOpen()); +assertEquals(2, item.getChildCount()); + +// no try something funky +item.removeItems(); + +try { + assertNotNull(tree.findDeepestOpenChild(item)); +} catch (IndexOutOfBoundsException iobe) { + fail(Out of bound exception thrown!); +} + } /** * helper method for testing beforeSelect event. Index: src/com/google/gwt/gen2/complexpanel/client/FastTree.java === --- src/com/google/gwt/gen2/complexpanel/client/FastTree.java (revision 1542) +++ src/com/google/gwt/gen2/complexpanel/client/FastTree.java (working copy) @@ -694,6 +694,14 @@ // Logical detach. childWidgets.remove(widget); } + + // @VisibleForTesting + FastTreeItem findDeepestOpenChild(FastTreeItem item) { +if (!item.isOpen() || item.getChildCount() == 0) { + return item; +} +return findDeepestOpenChild(item.getChild(item.getChildCount() - 1)); + } /** * Helper to build the root item. @@ -788,13 +796,6 @@ return; } - private FastTreeItem findDeepestOpenChild(FastTreeItem item) { -if (!item.isOpen()) { - return item; -} -return findDeepestOpenChild(item.getChild(item.getChildCount() - 1)); - } - private FastTreeItem findItemByChain(ArrayListElement chain, int index, FastTreeItem root) { if (index == chain.size()) { --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Respecting onBeforeSelect.cancel
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); + BeforeSelectionEventFastTreeItem 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 BeforeSelectionHandlerFastTreeItem() { + public void onBeforeSelection(BeforeSelectionEventFastTreeItem 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 -~--~~~~--~~--~--~---
[gwt-contrib] Respecting onBeforeSelect.cancel
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/6801 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); + BeforeSelectionEventFastTreeItem 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 BeforeSelectionHandlerFastTreeItem() { + public void onBeforeSelection(BeforeSelectionEventFastTreeItem 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 -~--~~~~--~~--~--~---
[gwt-contrib] Patching demo code for becomeLeaf method in gen2 fastTree
Reviewers: ecc, Description: Created a DynamicTree in the fastTreeDemo for the gen2 FastTree that provides buttons to make a node a leaf and then to add new nodes to the leaf node to make it have children again. Deprecated the HasFastTreeItems interface. Added a public getTreeRoot() method to FastTree and made all direct references (accept for in the constructor) use getTreeRoot() instead. Added a Hebrew Tree to the FastTreeDemo that will show if the client is in RTL mode. Please review this at http://gwt-code-reviews.appspot.com/4806 Affected files: src-demo/com/google/gwt/gen2/demo/fasttree/FastTreeDemo.gwt.xml src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java src/com/google/gwt/gen2/complexpanel/ComplexPanel.gwt.xml src/com/google/gwt/gen2/complexpanel/client/FastTree.java src/com/google/gwt/gen2/complexpanel/client/HasFastTreeItems.java --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---
[gwt-contrib] Re: Patching demo code for becomeLeaf method in gen2 fastTree
I'm lovin' this tool. http://gwt-code-reviews.appspot.com/4806/diff/1/5 File src-demo/com/google/gwt/gen2/demo/fasttree/FastTreeDemo.gwt.xml (left): http://gwt-code-reviews.appspot.com/4806/diff/1/5#oldcode2 Line 2: On 2009/02/13 21:01:40, ecc wrote: looks like a line was lost. do you want it back? http://gwt-code-reviews.appspot.com/4806/diff/1/5 File src-demo/com/google/gwt/gen2/demo/fasttree/FastTreeDemo.gwt.xml (right): http://gwt-code-reviews.appspot.com/4806/diff/1/5#newcode7 Line 7: On 2009/02/13 21:01:40, ecc wrote: Extra line. maybe this is line 2? ;) I like to have separation between comments, should I remove this line? http://gwt-code-reviews.appspot.com/4806/diff/1/6 File src-demo/com/google/gwt/gen2/demo/fasttree/client/FastTreeDemo.java (right): http://gwt-code-reviews.appspot.com/4806/diff/1/6#newcode201 Line 201: selectedItem.addItem(Dad); On 2009/02/13 21:01:40, ecc wrote: how about adding John the + xth + and Jane the xth instead, where x is the depth of the tree? how do i get the depth? http://gwt-code-reviews.appspot.com/4806/diff/1/6#newcode207 Line 207: On 2009/02/13 21:01:40, ecc wrote: hee hee, that one's good :-). Might be better to say disown rather then kill though, just in case. Done. http://gwt-code-reviews.appspot.com/4806/diff/1/2 File src/com/google/gwt/gen2/complexpanel/ComplexPanel.gwt.xml (right): http://gwt-code-reviews.appspot.com/4806/diff/1/2#newcode4 Line 4: inherits name='com.google.gwt.gen2.widgetbase.WidgetBase' / On 2009/02/13 21:01:40, ecc wrote: Hmm... logging should be inherited in widget base, can you move it there? Done. http://gwt-code-reviews.appspot.com/4806/diff/1/4 File src/com/google/gwt/gen2/complexpanel/client/FastTree.java (right): http://gwt-code-reviews.appspot.com/4806/diff/1/4#newcode341 Line 341: * @return The 'root' item is invisible and serves only as a container for On 2009/02/13 21:01:40, ecc wrote: Need to repeat the comment before the @return, as javadoc is not very smart at presenting things to users at times. I just got rid of the @return, seems more efficient. http://gwt-code-reviews.appspot.com/4806/diff/1/4#newcode492 Line 492: protected FastTreeItem getRoot() { On 2009/02/13 21:01:40, ecc wrote: this one should be deprecated, as it has been replaced by the public getTreeRoot() I didn't even notice this was here... done. http://gwt-code-reviews.appspot.com/4806/diff/1/3 File src/com/google/gwt/gen2/complexpanel/client/HasFastTreeItems.java (right): http://gwt-code-reviews.appspot.com/4806/diff/1/3#newcode31 Line 31: * directly. On 2009/02/13 21:01:40, ecc wrote: Might mention here that instead of using it, use getTreeRoot() to have a unified way to crawl over the tree. Added, but not sure if it makes sense here. http://gwt-code-reviews.appspot.com/4806 --~--~-~--~~~---~--~~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~--~~~~--~~--~--~---