Package cli_fmw.utils.intelliwriter.templates

Source Code of cli_fmw.utils.intelliwriter.templates.IntelliTemplateTreeModel

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.utils.intelliwriter.templates;

import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.delegate.directory.complex.DirectoryTextTemplateTree;
import cli_fmw.delegate.directory.complex.DirectoryTextTemplateTreeItem;
import cli_fmw.delegate.directory.simple.DirectorySimpleItem;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.main.ClipsException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

/**
*
* @author axe
*/
public class IntelliTemplateTreeModel implements TreeModel {
   
    private DirectorySimpleItem type;
    private String root = "Шаблоны";
    private List<TreeModelListener> tml =  new ArrayList<TreeModelListener>();
   
    public IntelliTemplateTreeModel(DirectorySimpleItem type) {
        this.type = type;       
    }

    @Override
    public Object getChild(Object parent, int index) {
        if(parent == root) {
            try {
                DirectoryTextTemplateTree dir = (DirectoryTextTemplateTree)
                        DirectoryLocator.getDirectory(DirectoryTextTemplateTree.class, false);
                List<DirectoryTextTemplateTreeItem> items = dir.getItems(type);
                return items.get(index);
            } catch (ClipsException ex) {
                ex.printStackTrace();
            }
        } else if(parent instanceof DirectoryTextTemplateTreeItem) {
          //  try {
                DirectoryTextTemplateTreeItem item = (DirectoryTextTemplateTreeItem) parent;
                SelectorEditableExceptional<DirectoryTextTemplateTreeItem> sel = item.getItems();
                return sel.get(index);
           /* } catch (ClipsException ex) {
                ex.printStackTrace();
            }*/
        }
        return null;
    }

    @Override
    public int getChildCount(Object parent) {
        if(parent == root) {
            try {
                DirectoryTextTemplateTree dir = (DirectoryTextTemplateTree)
                        DirectoryLocator.getDirectory(DirectoryTextTemplateTree.class, false);
                List<DirectoryTextTemplateTreeItem> items = dir.getItems(type);
                return items.size();
            } catch (ClipsException ex) {
                ex.printStackTrace();
            }
        } else if(parent instanceof DirectoryTextTemplateTreeItem) {
            //try {
                DirectoryTextTemplateTreeItem item = (DirectoryTextTemplateTreeItem) parent;
                SelectorEditableExceptional<DirectoryTextTemplateTreeItem> sel = item.getItems();
                return sel.size();
            /*} catch (ClipsException ex) {
                ex.printStackTrace();
            }*/
        }
        return 0;
    }

    @Override
    public boolean isLeaf(Object node) {
        return false;
    }

    @Override
    public Object getRoot() {
        return root;
    }

    @Override
    public void valueForPathChanged(TreePath path, Object newValue) {
        Object node = path.getLastPathComponent();
        if(node!= null &&
                node != root) {
            if(node instanceof DirectoryTextTemplateTreeItem) {
                try {
                    DirectoryTextTemplateTreeItem item = (DirectoryTextTemplateTreeItem) node;
                    item.setTitle(newValue.toString());
                } catch (ClipsException ex) {
                    MessageBox.showException(ex);
                }
            }
        }       
    }

    @Override
    public int getIndexOfChild(Object parent, Object child) {
        if(child != null && parent != null) {
            if(parent == root) {
                try {
                    DirectoryTextTemplateTree dir = (DirectoryTextTemplateTree)
                            DirectoryLocator.getDirectory(DirectoryTextTemplateTree.class, false);
                    List<DirectoryTextTemplateTreeItem> items = dir.getItems(type);
                    return items.indexOf(child);
                } catch (ClipsException ex) {
                    ex.printStackTrace();
                }
            } else if(parent instanceof DirectoryTextTemplateTreeItem) {
               // try {
                    DirectoryTextTemplateTreeItem item = (DirectoryTextTemplateTreeItem) parent;
                    SelectorEditableExceptional<DirectoryTextTemplateTreeItem> sel = item.getItems();
                    for(int i=0; i<sel.size(); i++) {
                        if(sel.get(i) == child) {
                            return i;
                        }
                    }
               /* } catch (ClipsException ex) {
                    ex.printStackTrace();
                }*/
            }
        }
        return -1;
    }

    @Override
    public void addTreeModelListener(TreeModelListener l) {
        if(tml.indexOf(l) == -1) {
            tml.add(l);
        }
    }

    @Override
    public void removeTreeModelListener(TreeModelListener l) {
        tml.remove(l);
    }
   
   
    public void nodeChanged(TreePath path) {
        Iterator<TreeModelListener> it = tml.iterator();
        while(it.hasNext()) {
            it.next().treeNodesChanged(new TreeModelEvent(this, path));
        }
    }

    public void nodesInserted(TreePath path) {
        Iterator<TreeModelListener> it = tml.iterator();
        while(it.hasNext()) {
            it.next().treeNodesInserted(new TreeModelEvent(this, path));
        }
    }

    public void nodesRemoved(TreePath path) {
        Iterator<TreeModelListener> it = tml.iterator();
        while(it.hasNext()) {
            it.next().treeNodesRemoved(new TreeModelEvent(this, path));
        }       
    }

    public void structureChanged(TreePath path) {
        Iterator<TreeModelListener> it = tml.iterator();
        while(it.hasNext()) {
            it.next().treeStructureChanged(new TreeModelEvent(type, path));
        }       
    }   
}
TOP

Related Classes of cli_fmw.utils.intelliwriter.templates.IntelliTemplateTreeModel

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.