Package org.cafesip.jiplet.console.client

Source Code of org.cafesip.jiplet.console.client.TreeView

/*
* Created on Dec 10, 2008
*
* Copyright 2005 CafeSip.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.cafesip.jiplet.console.client;

import org.cafesip.gwtcomp.client.ui.PopupMenu;
import org.cafesip.gwtcomp.client.ui.SuperTree;
import org.cafesip.gwtcomp.client.ui.SuperTreeItem;
import org.cafesip.gwtcomp.client.ui.SuperTreeListener;
import org.cafesip.gwtcomp.client.utils.HTMLHelper;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TreeItem;

/**
* @author Becky McElroy
*
*/
public class TreeView extends ScrollPanel
{
    private static TreeView instance = null;

    private SuperTree tree;

    private SuperTreeItem connectors;

    private SuperTreeItem contexts;

    private SuperTreeItem realms;

    public TreeView()
    {
        super();

        setStyleName("jiplet-MenuTree");
        setSize("100%", "100%");

        tree = new SuperTree();
        tree.setMultiSelectionEnabled(false);
        setWidget(tree);

        init();

        instance = this;
    }

    public static TreeView getInstance()
    {
        if (instance == null)
        {
            new TreeView();
        }

        return instance;
    }

    private void init()
    {
        SuperTreeItem root = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                .getModuleBaseURL()
                + "gwtcomp-icons/gohome.png", "Home"), 1);
        root.setUserObject(new RootOperationListener());
        tree.addItem(root);

        connectors = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                .getModuleBaseURL()
                + "gwtcomp-icons/folder.png", "Connectors"), 1);
        connectors.setUserObject(new ConnectorOperationListener(
                ConnectorOperationListener.CONNECTORS_REFRESH));
        connectors.setContextMenu(createConnectorsContextMenu());
        root.addItem(connectors);
        connectors.addItem("");

        contexts = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                .getModuleBaseURL()
                + "gwtcomp-icons/folder_html.png", "Contexts"), 1);
        contexts.setUserObject(new ContextOperationListener(
                ContextOperationListener.CONTEXTS_REFRESH));
        contexts.setContextMenu(createContextsContextMenu());
        root.addItem(contexts);
        contexts.addItem("");

        realms = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                .getModuleBaseURL()
                + "gwtcomp-icons/folder_locked.png", "Realms"), 1);
        realms.setUserObject(new RealmOperationListener(
                RealmOperationListener.REALMS_REFRESH));
        realms.setContextMenu(createRealmsContextMenu());
        root.addItem(realms);
        realms.addItem("");

        initTreeListeners();

        root.setState(true);
    }

    private void initTreeListeners()
    {
        tree.addTreeListener(new SuperTreeListener()
        {

            public void onCollapse(TreeItem item)
            {
                // item.setState(false);
            }

            public void onExpand(TreeItem item)
            {
                if (item.getUserObject() != null)
                {
                    // children in tree have never been seen, get them
                    ((ClickListener) item.getUserObject()).onClick(item
                            .getWidget());
                }
                // else
                // {
                // item.setState(true);
                // }
            }

            public void onPopup(String level, PopupMenu menu,
                    TreeItem[] treeItems)
            {
            }

            public void onSelect(String level, TreeItem[] treeItems)
            {
                if (treeItems.length != 1)
                {
                    return;
                }

                if (treeItems[0].getUserObject() != null)
                {
                    // single action treeItem with no context menu
                    ((ClickListener) treeItems[0].getUserObject())
                            .onClick(treeItems[0].getWidget());
                }
            }

        });
    }

    private PopupMenu createConnectorsContextMenu()
    {
        PopupMenu menu = new PopupMenu();

        HTML refresh = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/reload.png", "Refresh"));
        ClickListener listener = new ConnectorOperationListener(
                ConnectorOperationListener.CONNECTORS_REFRESH);
        refresh
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(refresh);

        menu.addSeparator();

        HTML list = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/view_tree.png", "List Connectors")); // icon?
        listener = new ConnectorOperationListener(
                ConnectorOperationListener.CONNECTORS_LIST);
        list.addClickListener(new TreeContextMenuItemListener(menu, listener));
        menu.addMenuItem(list);

        return menu;
    }

    private PopupMenu createContextsContextMenu()
    {
        PopupMenu menu = new PopupMenu();

        HTML refresh = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/reload.png", "Refresh"));
        ClickListener listener = new ContextOperationListener(
                ContextOperationListener.CONTEXTS_REFRESH);
        refresh
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(refresh);

        HTML list = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/view_tree.png", "List Contexts"));
        listener = new ContextOperationListener(
                ContextOperationListener.CONTEXTS_LIST);
        list.addClickListener(new TreeContextMenuItemListener(menu, listener));
        menu.addMenuItem(list);

        HTML create = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/edit_add.png", "Add a Context"));
        listener = new ContextOperationListener(
                ContextOperationListener.CONTEXT_ADD);
        create
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(create);

        return menu;
    }

    private PopupMenu createContextContextMenu(String contextName,
            SuperTreeItem contextItem)
    {
        PopupMenu menu = new PopupMenu();

        HTML refresh = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/reload.png", "Refresh"));
        ClickListener listener = new ContextOperationListener(
                ContextOperationListener.CONTEXT_JIPLETS_REFRESH, contextName,
                contextItem);
        refresh
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(refresh);

        HTML view = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/view_detailed.png", "View Properties"));
        listener = new ContextOperationListener(
                ContextOperationListener.CONTEXT_VIEW_PROPERTIES, contextName);
        view.addClickListener(new TreeContextMenuItemListener(menu, listener));
        menu.addMenuItem(view);

        HTML delete = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/editdelete.png", "Remove the Context"));
        listener = new ContextOperationListener(
                ContextOperationListener.CONTEXT_DELETE, contextName);
        delete
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(delete);

        return menu;
    }

    private PopupMenu createRealmsContextMenu()
    {
        PopupMenu menu = new PopupMenu();

        HTML refresh = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/reload.png", "Refresh"));
        ClickListener listener = new RealmOperationListener(
                RealmOperationListener.REALMS_REFRESH);
        refresh
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(refresh);

        menu.addSeparator();

        HTML list = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/view_tree.png", "List Realms")); // icon?
        listener = new RealmOperationListener(
                RealmOperationListener.REALMS_LIST);
        list.addClickListener(new TreeContextMenuItemListener(menu, listener));
        menu.addMenuItem(list);

        HTML create = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/edit_add.png", "Add a Realm"));
        listener = new RealmOperationListener(RealmOperationListener.REALM_ADD);
        create
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(create);

        return menu;
    }

    private PopupMenu createRealmContextMenu(String realm)
    {
        PopupMenu menu = new PopupMenu();

        HTML view = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/view_detailed.png", "View Properties"));
        ClickListener listener = new RealmOperationListener(
                RealmOperationListener.REALM_VIEW_PROPERTIES, realm);
        view.addClickListener(new TreeContextMenuItemListener(menu, listener));
        menu.addMenuItem(view);

        HTML manage = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/kuser.png", "Manage Users"));
        listener = new RealmOperationListener(
                RealmOperationListener.REALM_USER_MANAGE, realm);
        manage
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(manage);

        HTML delete = new HTML(HTMLHelper.imageWithText(GWT.getModuleBaseURL()
                + "gwtcomp-icons/editdelete.png", "Remove the Realm"));
        listener = new RealmOperationListener(
                RealmOperationListener.REALM_DELETE, realm);
        delete
                .addClickListener(new TreeContextMenuItemListener(menu,
                        listener));
        menu.addMenuItem(delete);

        return menu;
    }

    public void refreshConnectors(String[] list)
    {
        connectors.removeItems();

        for (String element : list)
        {
            SuperTreeItem item = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                    .getModuleBaseURL()
                    + "gwtcomp-icons/usbpendrive_mount.png", element), 1);

            ConnectorOperationListener actionListener = new ConnectorOperationListener(
                    ConnectorOperationListener.CONNECTOR_VIEW_PROPERTIES,
                    element);
            item.setUserObject(actionListener);

            connectors.addItem(item);
        }

        connectors.setState(true);
        connectors.setUserObject(null);
    }

    public void refreshContexts(String[] list)
    {
        contexts.removeItems();

        for (String element : list)
        {
            SuperTreeItem item = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                    .getModuleBaseURL()
                    + "gwtcomp-icons/www.png", element), 1);

            item.setUserObject(new ContextOperationListener(
                    ContextOperationListener.CONTEXT_JIPLETS_REFRESH, element,
                    item));
            item.setContextMenu(createContextContextMenu(element, item));
            item.addItem("");

            contexts.addItem(item);
        }

        contexts.setState(true);       
        contexts.setUserObject(null);
    }

    public void refreshJiplets(String contextName, String[] list,
            Object userParm)
    {
        SuperTreeItem context = (SuperTreeItem) userParm;

        context.removeItems();
        for (String element : list)
        {
            SuperTreeItem item = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                    .getModuleBaseURL()
                    + "gwtcomp-icons/networksettings.png", element), 1);

            ContextOperationListener actionListener = new ContextOperationListener(
                    ContextOperationListener.CONTEXT_JIPLET_VIEW_PROPERTIES,
                    contextName, element);
            item.setUserObject(actionListener);

            context.addItem(item);
        }

        context.setState(true);       
        context.setUserObject(null);
    }

    public void refreshRealms(String[] list)
    {
        realms.removeItems();

        for (String element : list)
        {
            SuperTreeItem item = new SuperTreeItem(HTMLHelper.imageWithText(GWT
                    .getModuleBaseURL()
                    + "gwtcomp-icons/encrypted.png", element), 1);

            item.setContextMenu(createRealmContextMenu(element));

            realms.addItem(item);
        }

        realms.setState(true);
        realms.setUserObject(null);
    }

}
TOP

Related Classes of org.cafesip.jiplet.console.client.TreeView

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.