Package com.ponysdk.ui.server.basic

Source Code of com.ponysdk.ui.server.basic.PTreeItem

package com.ponysdk.ui.server.basic;

import java.util.ArrayList;
import java.util.List;

import com.ponysdk.core.instruction.Add;
import com.ponysdk.core.instruction.Remove;
import com.ponysdk.core.instruction.Update;
import com.ponysdk.core.stm.Txn;
import com.ponysdk.ui.terminal.Dictionnary.PROPERTY;
import com.ponysdk.ui.terminal.WidgetType;

/**
* An item that can be contained within a {@link PTree}. Each tree item is assigned a unique DOM id in order
* to support ARIA.
* <p>
* <h3>Example</h3> {@example http://ponysdk.com/sample/#Tree}
* </p>
*/
public class PTreeItem extends PObject {

    private PTree tree;

    private boolean isRoot = false;

    private String html;

    private final List<PTreeItem> children = new ArrayList<PTreeItem>();

    private boolean selected;

    private boolean open;

    private PWidget widget;

    PTreeItem(final boolean isRoot) {
        this.isRoot = isRoot;
        create.put(PROPERTY.ROOT, isRoot);
    }

    public PTreeItem() {
        this(false);
    }

    public PTreeItem(final String html) {
        this();
        this.html = html;
        create.put(PROPERTY.TEXT, html);
    }

    public PTreeItem(final PWidget widget) {
        this();
        this.widget = widget;
    }

    private void setWidget() {
        if (widget == null) return;

        if (widget.getParent() != null) {
            widget.removeFromParent();
        }

        if (tree != null) {
            tree.orphan(widget);
            final Remove remove = new Remove(widget.getID(), tree.getID());
            Txn.get().getTxnContext().save(remove);
        }

        if (tree != null) {
            tree.adopt(widget, this);
            final Add add = new Add(widget.getID(), getID());
            add.put(PROPERTY.WIDGET, true);
            Txn.get().getTxnContext().save(add);
        }
    }

    @Override
    protected WidgetType getWidgetType() {
        return WidgetType.TREE_ITEM;
    }

    public boolean isRoot() {
        return isRoot;
    }

    public String getHtml() {
        return html;
    }

    public void setHTML(final String html) {
        this.html = html;
        final Update update = new Update(ID);
        update.put(PROPERTY.TEXT, html);

        Txn.get().getTxnContext().save(update);
    }

    final void setTree(final PTree tree) {
        this.tree = tree;
        if (isRoot) {
            final Add add = new Add(tree.getID(), getID());
            add.put(PROPERTY.ROOT, true);
            Txn.get().getTxnContext().save(add);
        }
        setWidget();
    }

    public PTree getTree() {
        return tree;
    }

    public int getChildCount() {
        return children.size();
    }

    public PTreeItem insertItem(final int beforeIndex, final PTreeItem item) {
        children.add(beforeIndex, item);
        item.setTree(tree);
        final Add add = new Add(item.getID(), getID());
        add.put(PROPERTY.INDEX, beforeIndex);
        Txn.get().getTxnContext().save(add);
        return item;
    }

    public PTreeItem addItem(final PTreeItem item) {
        return insertItem(getChildCount(), item);
    }

    public PTreeItem addItem(final String itemHtml) {
        return addItem(new PTreeItem(itemHtml));
    }

    public boolean removeItem(final PTreeItem item) {
        final Remove add = new Remove(tree.getID(), getID());
        Txn.get().getTxnContext().save(add);
        return children.remove(item);
    }

    public void setSelected(final boolean selected) {
        this.selected = selected;
        final Update update = new Update(ID);
        update.put(PROPERTY.SELECTED, selected);
        Txn.get().getTxnContext().save(update);
    }

    public boolean isSelected() {
        return selected;
    }

    public void setState(final boolean open) {
        this.open = open;
        final Update update = new Update(ID);
        update.put(PROPERTY.STATE, open);
        Txn.get().getTxnContext().save(update);
    }

    public boolean getState() {
        return open;
    }

    public PTreeItem getChild(final int index) {
        return children.get(index);
    }

    public PWidget getWidget() {
        return widget;
    }

}
TOP

Related Classes of com.ponysdk.ui.server.basic.PTreeItem

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.