W dniu poniedziałek, 26 października 2015 15:24:54 UTC+1 użytkownik Jaron 
Shulver napisał:
>
> Hi,
>
> I want to have a CellTree which expands when you click anywhere on the 
> cell, not just on the icon. 
>

I've found this in my project, but I don't remember even how it works:). 
Especially curious is why did I use com.google.gwt.user.cellview.client 
package, probably  I needed to override some protect method.

====
package com.google.gwt.user.cellview.client;

import java.util.ArrayList;

import com.google.gwt.dom.client.BrowserEvents;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.view.client.TreeViewModel;

public class MyCellTree extends CellTree {


    public MyCellTree(TreeViewModel model, Object object,
            Resources myresources, CellTreeMessages messages, int i) {
        super(model, object, myresources, messages, i);
    }

    @Override
    public void onBrowserEvent(Event event) {
        String eventType = event.getType();

        final boolean isMouseDown = 
BrowserEvents.MOUSEDOWN.equals(eventType);
        if (isMouseDown) 
        {
            final Element target = event.getEventTarget().cast();
            ArrayList<Element> chain = new ArrayList<Element>();
            collectElementChain2(chain, getElement(), target);
            CellTreeNodeView<?> nodeView = findItemByChain2(chain, 0, 
rootNode);
            if (nodeView != null) 
            {
                if (!nodeView.isRootNode() && ! 
nodeView.getImageElement().isOrHasChild(target)) 
                {
                    nodeView.setOpen(!nodeView.isOpen(), true);
                    return;
                }
            }
        }

        super.onBrowserEvent(event);
    }


        private void collectElementChain2(ArrayList<Element> chain, Element 
hRoot,
                  Element hElem) {
                if ((hElem == null) || (hElem == hRoot)) {
                  return;
                }

                collectElementChain2(chain, hRoot, 
hElem.getParentElement());
                chain.add(hElem);
              }

        
        private CellTreeNodeView<?> findItemByChain2(ArrayList<Element> 
chain,
                  int idx, CellTreeNodeView<?> parent) {
                if (idx == chain.size()) {
                  return parent;
                }

                Element hCurElem = chain.get(idx);
                for (int i = 0, n = parent.getChildCount(); i < n; ++i) {
                  CellTreeNodeView<?> child = parent.getChildNode(i);
                  if (child.getElement() == hCurElem) {
                    CellTreeNodeView<?> retItem = findItemByChain2(chain, 
idx + 1, child);
                    if (retItem == null) {
                      return child;
                    }
                    return retItem;
                  }
                }

                return findItemByChain2(chain, idx + 1, parent);
              }


}


-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to