Package clips.directory.editors.servicePacketTemplate

Source Code of clips.directory.editors.servicePacketTemplate.TreeModelSelService

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

package clips.directory.editors.servicePacketTemplate;

import cli_fmw.delegate.directory.DirectoryItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.directory.complex.DirectoryServicesGroup;
import clips.delegate.directory.complex.DirectoryServicesGroupItem;
import cli_fmw.utils.Selector;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.main.ClipsException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

/**
*
* @author lacoste
*/
public class TreeModelSelService extends  DefaultTreeModel {

    Map<DirectoryServicesGroupItem, Selector<DirectoryServiceItem>> services =
            new HashMap<DirectoryServicesGroupItem, Selector<DirectoryServiceItem>>();
    SelectorEditableExceptional<DirectoryServicesGroupItem> di;
           
    public TreeModelSelService() throws ClipsException {
        super(new DefaultMutableTreeNode("Справочник услуг"));

        DirectoryServicesGroup directory = (DirectoryServicesGroup)
            DirectoryLocator.getDirectory(DirectoryServicesGroup.class, false);
        di = directory.getItems();
    }

    private Selector<DirectoryServiceItem> getServices(DirectoryServicesGroupItem item) throws ClipsException {
        Selector<DirectoryServiceItem> ss = services.get(item);
        if(ss == null) {
            DirectoryService ds = (DirectoryService)
                    DirectoryLocator.getDirectory(DirectoryService.class, false);
            ss = ds.getFilteredItems(item);
            services.put(item, ss);
        }
        return ss;
    }   

   
    @Override
    public Object getChild(Object parent, int index) {
        try {
            if(parent instanceof DefaultMutableTreeNode) {
              return di.get(index);
            } else {
                DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) parent;
                SelectorEditableExceptional<DirectoryServicesGroupItem> it = item.getItems();
                if (index < it.size()) {                                       
                    return it.get(index);
                } else {                   
                    return getServices(item).get(index - it.size());
                }
            }
        } catch (ClipsException ex) { ex.printStackTrace(); }
        return null;
    }

    @Override
    public int getChildCount(Object parent) {
        try {
            if(parent instanceof DefaultMutableTreeNode) {
                return di.size();
            } else {
                DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) parent;
                SelectorEditableExceptional<DirectoryServicesGroupItem> it = item.getItems();
                return it.size() + getServices(item).size();
            }
        } catch (ClipsException ex) {
            ex.printStackTrace();
        }
        return 0;
    }

    @Override
    public boolean isLeaf(Object node) {
        if (node instanceof DirectoryServiceItem){
            return true;
        }    
        return false;
    }
   
}
TOP

Related Classes of clips.directory.editors.servicePacketTemplate.TreeModelSelService

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.