Package com.commander4j.sys

Source Code of com.commander4j.sys.JInternalFrameMenuTree$ButtonHandler

/*
* Created on 15-Oct-2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.commander4j.sys;

/**
* @author David Garratt
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Enumeration;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

import org.apache.log4j.Logger;

import com.commander4j.db.JDBModule;

public class JInternalFrameMenuTree extends JInternalFrame

{
  private static final long serialVersionUID = 1;
  protected JToolBar jtreeToolbar;
  protected JButton btnExpandAll;
  protected JButton btnExpandNode;
  protected JButton btnCollapseAll;
  protected JButton btnCollapseNode;
  protected JTree tree;
  final int screenWidth = 300;
  final int screenHeight = 600;
  final Logger logger = Logger.getLogger(JInternalFrameMenuTree.class);

  public class MenuTreeRenderer extends DefaultTreeCellRenderer
  {
    private static final long serialVersionUID = 1;

    public MenuTreeRenderer()
    {
      setFrameIcon(Common.icon_home);
    }

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
      super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

      setIcon(JDBModule.getModuleIcon(getMenuIconFilename(value), getMenuItemType(value)));
      setToolTipText(getMenuHint(value));

      return this;
    }

    protected String getMenuItemType(Object value) {
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
      JMenuOption nodeInfo = (JMenuOption) (node.getUserObject());
      String type = nodeInfo.moduleType;

      return type;
    }

    protected String getMenuHint(Object value) {
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
      JMenuOption nodeInfo = (JMenuOption) (node.getUserObject());
      String type = nodeInfo.hint;
      return type;
    }

    protected String getMenuIconFilename(Object value) {
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
      JMenuOption nodeInfo = (JMenuOption) (node.getUserObject());
      String type = nodeInfo.iconFilename;
      return type;
    }
  }

  public JInternalFrameMenuTree(String menuID, String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable, JMenuBar menubar, JMenu menu)
  {

    setTitle(title);
    setResizable(resizable);
    setClosable(closable);
    setMaximizable(maximizable);
    setIconifiable(iconifiable);
    setFont(Common.font_std);
    this.addInternalFrameListener(new InternalFrameAdapter() {
      public void internalFrameIconified(InternalFrameEvent evt) {
        JLaunchMenu.cascadeFrames();
      }

      public void internalFrameDeiconified(InternalFrameEvent evt) {
        JLaunchMenu.cascadeFrames();
      }
    });

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    setSize(screenWidth+Common.LFTreeMenuAdjustWidth, screenHeight+Common.LFTreeMenuAdjustHeight);
    setLocation((screenSize.width - (screenWidth+Common.LFTreeMenuAdjustWidth)) / 2, (screenSize.height - (screenHeight+Common.LFTreeMenuAdjustHeight)) / 2);
    setResizable(true);

    Container container = getContentPane();

    JMenuOption menuOption = new JMenuOption(Common.selectedHostID, Common.sessionID);
    menuOption.menuID = "MAIN";
    menuOption.moduleID = "";
    menuOption.description = "Main Menu";
    menuOption.moduleType = "MENU";
    menuOption.sequenceID = 0;

    DefaultMutableTreeNode top = new DefaultMutableTreeNode(menuOption);

    buildMenuTree(menuID, top, menubar, 0, menu);

    tree = new JTree(top);
    tree.setCellRenderer(new MenuTreeRenderer());
    ToolTipManager.sharedInstance().registerComponent(tree);

    tree.setFont(Common.font_tree);

    tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

    tree.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent me) {
        if (me.getClickCount() == 2)
        {
          int x = me.getX();
          int y = me.getY();

          TreePath path = tree.getPathForLocation(x, y);

          if (path == null)
            return;

          DefaultMutableTreeNode option = (DefaultMutableTreeNode)

          tree.getLastSelectedPathComponent();
          if (option.isLeaf())
          {
            JMenuOption selectedOption = new JMenuOption(Common.selectedHostID, Common.sessionID);
            selectedOption = (JMenuOption) option.getUserObject();

            if (selectedOption.moduleType.equals("FORM"))
            {
              JLaunchMenu.runForm(selectedOption.moduleID);
            }
            if (selectedOption.moduleType.equals("REPORT"))
            {
              JLaunchReport.runReport(selectedOption.moduleID,null,"",null,"");
            }
            if (selectedOption.moduleType.equals("EXEC"))
            {
              JLaunchExec.runExec(Common.selectedHostID, Common.sessionID, selectedOption.moduleID);
            }
          }
        }
      }
    });

    JScrollPane treeview = new JScrollPane(tree);
    treeview.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    treeview.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    container.add(treeview);

    ButtonHandler buttonhandler = new ButtonHandler();

    jtreeToolbar = new JToolBar();
    jtreeToolbar.setOrientation(0);
    jtreeToolbar.setFloatable(false);

    btnExpandAll = new JButton(Common.icon_expand_all);
    btnExpandAll.addActionListener(buttonhandler);
    btnExpandAll.setToolTipText("Expand all menu items");
    btnExpandAll.setSize(30,30);
    btnExpandAll.setMaximumSize(new Dimension(30,30));
    btnExpandAll.setMinimumSize(new Dimension(30,30));
    btnExpandAll.setPreferredSize(new Dimension(30,30));

    btnExpandNode = new JButton(Common.icon_expand_node);
    btnExpandNode.addActionListener(buttonhandler);
    btnExpandNode.setToolTipText("Expand selected menu branch");
    btnExpandNode.setSize(30,30);
    btnExpandNode.setMaximumSize(new Dimension(30,30));
    btnExpandNode.setMinimumSize(new Dimension(30,30));
    btnExpandNode.setPreferredSize(new Dimension(30,30));

    btnCollapseAll = new JButton(Common.icon_collapse_all);
    btnCollapseAll.addActionListener(buttonhandler);
    btnCollapseAll.setToolTipText("Collapse menu tree");
    btnCollapseAll.setSize(30,30);
    btnCollapseAll.setMaximumSize(new Dimension(30,30));
    btnCollapseAll.setMinimumSize(new Dimension(30,30));
    btnCollapseAll.setPreferredSize(new Dimension(30,30));

    btnCollapseNode = new JButton(Common.icon_collapse_node);
    btnCollapseNode.addActionListener(buttonhandler);
    btnCollapseNode.setToolTipText("Collapse selected menu branch");
    btnCollapseNode.setSize(30,30);
    btnCollapseNode.setMaximumSize(new Dimension(30,30));
    btnCollapseNode.setMinimumSize(new Dimension(30,30));
    btnCollapseNode.setPreferredSize(new Dimension(30,30));

    jtreeToolbar.add(btnExpandAll);
    jtreeToolbar.add(btnExpandNode);
    jtreeToolbar.add(btnCollapseAll);
    jtreeToolbar.add(btnCollapseNode);

    container.add(jtreeToolbar, BorderLayout.NORTH);

    setVisible(true);

  }

  public void expandAll(JTree tree, boolean expand) {
    TreeNode root = (TreeNode) tree.getModel().getRoot();

    // Traverse tree from root
    expandAll(tree, new TreePath(root), expand);
  }

  private void expandAll(JTree tree, TreePath parent, boolean expand) {
    // Traverse children
    try
    {
      TreeNode node = (TreeNode) parent.getLastPathComponent();
      if (node.getChildCount() >= 0)
      {
        for (Enumeration<?> e = node.children(); e.hasMoreElements();)
        {
          TreeNode n = (TreeNode) e.nextElement();
          TreePath path = parent.pathByAddingChild(n);
          expandAll(tree, path, expand);
        }
      }
      // Expansion or collapse must be done bottom-up
      if (expand)
      {
        tree.expandPath(parent);
      }
      else
      {
        tree.collapsePath(parent);
      }
    }
    catch (Exception e)
    {

    }
  }

  public class ButtonHandler implements ActionListener
  {
    public void actionPerformed(ActionEvent event) {
      if (event.getSource() == btnExpandAll)
      {
        expandAll(tree, true);
      }
      if (event.getSource() == btnCollapseAll)
      {
        expandAll(tree, false);
      }
      if (event.getSource() == btnExpandNode)
      {
        TreePath path = tree.getSelectionPath();
        expandAll(tree, path, true);
      }
      if (event.getSource() == btnCollapseNode)
      {
        TreePath path = tree.getSelectionPath();
        expandAll(tree, path, false);
      }
    }
  }

  private void buildMenuTree(String menuID, DefaultMutableTreeNode node, JMenuBar menubar, int level, JMenu menu) {

    JDBModule m = new JDBModule(Common.selectedHostID, Common.sessionID);

    try
    {
      // logger.debug("buildMenuTree :"+node);

      PreparedStatement stmt;
      ResultSet rs;
      stmt = Common.hostList.getHost(Common.selectedHostID).getConnection(Common.sessionID).prepareStatement(Common.hostList.getHost(Common.selectedHostID).getSqlstatements().getSQL("JInternalFrameMenuTree.buildMenuTree"));
      stmt.setString(1, menuID);
      stmt.setString(2, Common.userList.getUser(Common.sessionID).getUserId());
      stmt.setFetchSize(25);
      rs = stmt.executeQuery();

      while (rs.next())
      {
        JMenuOption menuOption = new JMenuOption(Common.selectedHostID, Common.sessionID);
        menuOption.load(rs);

        DefaultMutableTreeNode newnode = new DefaultMutableTreeNode(menuOption);
        node.add(newnode);
        if (menuOption.moduleType.equals("MENU"))
        {
          JMenu newmenu = new JMenu(menuOption.description);
          newmenu.setFont(Common.font_menu);
          newmenu.setMnemonic(menuOption.mnemonic);

          if (level == 0)
          {
            menubar.add(newmenu);
          }
          else
          {
            newmenu.setIcon(Common.icon_menu);
            menu.add(newmenu);
          }
          buildMenuTree(menuOption.moduleID, newnode, menubar, level + 1, newmenu);
        }
        else
        {
          JMenuItem newmenuitem = new JMenuPulldownMenuItem(menuOption);

          m.setModuleId(menuOption.moduleID);
          m.getModuleProperties();

          String type = m.getType();

          newmenuitem.setIcon(JDBModule.getModuleIcon(m.getIconFilename(), type));

          newmenuitem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
              JMenuPulldownMenuItem o = (JMenuPulldownMenuItem) evt.getSource();
              if (o.getModuleType().equals("FORM"))
              {
                JLaunchMenu.runForm(o.toString());
              }
              if (o.getModuleType().equals("REPORT"))
              {
                JLaunchReport.runReport(o.toString(),null,"",null,"");
              }
              if (o.getModuleType().equals("EXEC"))
              {
                JLaunchExec.runExec(Common.selectedHostID, Common.sessionID, o.toString());
              }
            }
          });

          menu.add(newmenuitem);
        }
      }
      rs.close();
      stmt.close();
    }
    catch (Exception ex)
    {
      JOptionPane.showMessageDialog(null, "Error in JInternalFrameMenuTree");
    }

  }

}
TOP

Related Classes of com.commander4j.sys.JInternalFrameMenuTree$ButtonHandler

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.