Package org.itsnat.feashow.features.core.domutils

Source Code of org.itsnat.feashow.features.core.domutils.FreeElementListTreeNode$ElementComparator

/*
* This file is not part of the ItsNat framework.
*
* Original source code use and closed source derivatives are authorized
* to third parties with no restriction or fee.
* The original source code is owned by the author.
*
* This program is distributed AS IS 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.
*
* (C) Innowhere Software a service of Jose Maria Arranz Santamaria, Spanish citizen.
*/

package org.itsnat.feashow.features.core.domutils;

import java.util.Collections;
import java.util.Comparator;
import org.itsnat.core.ItsNatDocument;
import org.itsnat.core.domutil.ElementGroupManager;
import org.itsnat.core.domutil.ElementListFree;
import org.itsnat.core.event.NodePropertyTransport;
import org.itsnat.feashow.FeatureTreeNode;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.html.HTMLInputElement;

public class FreeElementListTreeNode extends FeatureTreeNode implements EventListener
{
    protected ElementListFree elemList;
    protected Element sortButton;
    protected Element rotateButton;
    protected Element shuffleButton;
    protected HTMLInputElement masterCheckBox;

    public FreeElementListTreeNode()
    {
    }

    public void startExamplePanel()
    {
        ItsNatDocument itsNatDoc = getItsNatDocument();
        Document doc = itsNatDoc.getDocument();

        this.sortButton = doc.getElementById("sortId");
        ((EventTarget)sortButton).addEventListener("click",this,false);

        this.rotateButton = doc.getElementById("rotateId");
        ((EventTarget)rotateButton).addEventListener("click",this,false);

        this.shuffleButton = doc.getElementById("shuffleId");
        ((EventTarget)shuffleButton).addEventListener("click",this,false);

        this.masterCheckBox = (HTMLInputElement)doc.getElementById("masterId");
        itsNatDoc.addEventListener((EventTarget)masterCheckBox,"click",this,false,new NodePropertyTransport("checked",boolean.class));

        boolean master = masterCheckBox.getChecked();
        Element parent = doc.getElementById("elementListId");
        ElementGroupManager factory = itsNatDoc.getElementGroupManager();
        this.elemList = factory.createElementListFree(parent,master);

        elemList.addElement(createElement("Madrid"));
        elemList.addElement(createElement("Sevilla"));
        elemList.addElement(createElement("Segovia"));
        elemList.addElement(createElement("Barcelona"));
        elemList.addElement(createElement("Valencia"));
        elemList.addElement(createElement("Oviedo"));
    }

    public Element createElement(String text)
    {
        ItsNatDocument itsNatDoc = getItsNatDocument();
        Document doc = itsNatDoc.getDocument();
        Element itemElem = doc.createElement("li");
        itemElem.appendChild(doc.createTextNode(text));
        return itemElem;
    }

    public void endExamplePanel()
    {
        this.elemList = null;
        this.sortButton = null;
        this.rotateButton = null;
        this.shuffleButton = null;
        this.masterCheckBox = null;
    }

    public void handleEvent(Event evt)
    {
        EventTarget currTarget = evt.getCurrentTarget();
        if (currTarget == sortButton)
        {
            Collections.sort(elemList,ElementComparator.SINGLETON);
        }
        else if (currTarget == rotateButton)
        {
            Collections.rotate(elemList,1);
        }
        else if (currTarget == shuffleButton)
        {
            Collections.shuffle(elemList);
        }
        else if (currTarget == masterCheckBox)
        {
            boolean master = masterCheckBox.getChecked();
            if (master != elemList.isMaster())
            {
                ItsNatDocument itsNatDoc = getItsNatDocument();
                ElementGroupManager factory = itsNatDoc.getElementGroupManager();
                elemList = factory.createElementListFree(elemList.getParentElement(),master);
            }
        }
    }

    public static class ElementComparator implements Comparator<Element>
    {
        public static final ElementComparator SINGLETON = new ElementComparator();

        public int compare(Element li1, Element li2)
        {
            Text text1 = (Text)li1.getFirstChild();
            Text text2 = (Text)li2.getFirstChild();

            return text1.getData().compareTo(text2.getData());
        }
    }
}
TOP

Related Classes of org.itsnat.feashow.features.core.domutils.FreeElementListTreeNode$ElementComparator

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.