Package org.onemind.swingweb.client.gwt.ui

Source Code of org.onemind.swingweb.client.gwt.ui.TreeUIHandler

/*
* Copyright (C) 2004 TiongHiang Lee
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not,  write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*
* Email: thlee@onemindsoft.org
*/

package org.onemind.swingweb.client.gwt.ui;

import java.util.List;
import org.onemind.swingweb.client.core.AbstractClient;
import org.onemind.swingweb.client.dom.DomNode;
import org.onemind.swingweb.client.gwt.widget.*;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.*;
public class TreeUIHandler extends ContainerUIHandler implements ClickListener, DoubleClickListener, TreeListener
{

    public TreeUIHandler(AbstractClient client)
    {
        super(client);
    }

    protected void selectTab(SourcesTabEvents sender, int tabIndex)
    {
        // TODO Auto-generated method stub
    }

    /**
     * {@inheritDoc}
     */
    protected void registerListeners(Object com)
    {
        ((org.onemind.swingweb.client.gwt.widget.Tree) com).addTreeListener(this);
        ((org.onemind.swingweb.client.gwt.widget.Tree) com).addClickListener(this);
        ((org.onemind.swingweb.client.gwt.widget.Tree) com).addDoubleClickListener(this);
    }

    /**
     * {@inheritDoc}
     */
    protected Object createComponentInstance(Object parent, DomNode element)
    {
        org.onemind.swingweb.client.gwt.widget.Tree t = new org.onemind.swingweb.client.gwt.widget.Tree();
        return t;
    }

    /**
     * {@inheritDoc}
     */
    protected void handleChildren(AbstractClient rootHandler, IContainer c, DomNode element)
    {
        org.onemind.swingweb.client.gwt.widget.Tree tree = (org.onemind.swingweb.client.gwt.widget.Tree) c;
        tree.clear(); //TODO: optimize this
        String elementId = element.getAttribute("id");
        handleTreeNodes(tree, element, elementId + "#");
    }

    protected void handleTreeNodes(ITreeNode treeNode, DomNode element, String idPrefix)
    {
        List nodeList = getChildrenByTag(element, "treenode");
        for (int n = 0; n < nodeList.size(); n++)
        {
            DomNode treenodeNode = (DomNode) nodeList.get(n);
            String nodeId = treenodeNode.getAttribute("id");
            List elements = getChildrenByTag(treenodeNode, "element");
            if (elements.size() > 0)
            {
                DomNode elementNode = (DomNode) elements.get(0);
                String pregenId = idPrefix + nodeId;
                getClient().removeComponent(pregenId);
                Widget content = (Widget) getClient().handle(this, elementNode, pregenId);
                TreeNode tn = new TreeNode(pregenId, content);
                treeNode.addNode(tn);
                //handle subnodes
                boolean expanded = "true".equalsIgnoreCase(treenodeNode.getAttribute("expanded"));
                boolean isLeaf = "true".equalsIgnoreCase(treenodeNode.getAttribute("isLeaf"));
                boolean isSelected = "true".equalsIgnoreCase(treenodeNode.getAttribute("selected"));
                handleTreeNodes(tn, treenodeNode, idPrefix);
                if (expanded)
                {
                    tn.getItem().setState(true, false);
                } else if (!isLeaf)
                {
                    tn.getItem().addItem("loading...");
                }
                if (isSelected)
                {
                    tn.getItem().getTree().setSelectedItem(tn.getItem(), false);
                }
            } else
            {
                throw new IllegalArgumentException("No widget found in the tree node");
            }
        }
    }

    public void onTreeItemSelected(TreeItem item)
    {
        //        String swid = DOM.getAttribute(item.getElement(), "swid");
        //        org.onemind.swingweb.client.gwt.widget.Tree tree = (org.onemind.swingweb.client.gwt.widget.Tree) item.getTree().getParent();
        //        String action = (tree.isAppendSelection()) ? "addSelected" : "selected";
        //        postEvent(tree, swid, false);
        //        postEvent(tree, "-action", action, true);
    }

    public void onTreeItemStateChanged(TreeItem item)
    {
        //TODO: make use of handleEvent
        String id = DOM.getAttribute(item.getElement(), "swid");
        String[] parts = id.split("#");
        String treeId = parts[0];
        String path = parts[1];
        org.onemind.swingweb.client.gwt.widget.Tree tree = (org.onemind.swingweb.client.gwt.widget.Tree) item.getTree().getParent();
        String action = item.getState() ? "expanded" : "collapsed";
        postEvent(tree, path, false);
        postEvent(tree, "-action", action, true);
    }

    public void onClick(Widget sender)
    {
        String id = DOM.getAttribute(sender.getElement(), "id");
        String[] parts = id.split("#");
        String treeId = parts[0];
        String path = parts[1];
        System.out.println("Tree id = " + treeId);
        org.onemind.swingweb.client.gwt.widget.Tree tree = (org.onemind.swingweb.client.gwt.widget.Tree) getClient().getComponent(
                treeId);
        String action = (tree.isAppendSelection()) ? "addSelected" : "selected";
        postEvent(tree, path, false);
        postEvent(tree, "-action", action, true);
    }

    public void onDoubleClick(Widget sender)
    {
        String id = DOM.getAttribute(sender.getElement(), "id");
        String[] parts = id.split("#");
        String treeId = parts[0];
        String path = parts[1];
        org.onemind.swingweb.client.gwt.widget.Tree tree = (org.onemind.swingweb.client.gwt.widget.Tree) getClient().getComponent(
                treeId);
        String action = (tree.isAppendSelection()) ? "addSelected-doubleclicked" : "selected-doubleclicked";
        postEvent(tree, path, false);
        postEvent(tree, "-action", action, true);
    }
}
TOP

Related Classes of org.onemind.swingweb.client.gwt.ui.TreeUIHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.