IWindow.java :  » Net » hyperpool-0.4.0 » vicazh » hyperpool » Java Open Source

Java Open Source » Net » hyperpool 0.4.0 
hyperpool 0.4.0 » vicazh » hyperpool » IWindow.java
package vicazh.hyperpool;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import org.jdesktop.jdic.tray.*;
import org.jdesktop.jdic.tray.internal.*;

/**
 * The windows manager
 * 
 * @author Victor Zhigunov
 * @version 0.4.0
 */
public class IWindow implements ActionListener, TreeSelectionListener {

  private Container container;

  private String resource;

  private Reader reader;

  private JMenuItem menu;

  private AbstractButton button;

  private Map<Object, Window> map;

  private JTree tree;

  private Component component;

  private TrayIcon tray;

  private JMenuItem menuTray;

  private SystemTray systemTray;

  /**
   * @param container
   *            manager container
   * @param resource
   *            xml resource
   * @param reader
   *            xml reader
   * @param menu
   *            create menu
   * @param button
   *            create button
   * @param map
   *            frames map
   * @param tree
   *            manager tree
   * @param component
   *            application component
   * @param trayIcon
   *            tray icon
   * @param trayArg
   *            tray arg
   * @param trayMenu
   *            tray menu
   * @param status
   *            tray status
   * @param menuTray
   *            tray menu item
   */
  public IWindow(Container container, String resource, Reader reader,
      JMenuItem menu, AbstractButton button, Map<Object, Window> map,
      JTree tree, Component component, Icon trayIcon, String trayArg,
      JPopupMenu trayMenu, boolean status, JMenuItem menuTray) {
    this.container = container;
    this.resource = resource;
    this.reader = reader;
    this.menu = menu;
    menu.addActionListener(this);
    this.button = button;
    button.addActionListener(this);
    this.map = map;
    this.tree = tree;
    tree.addTreeSelectionListener(this);
    this.component = component;
    try {
      systemTray = SystemTray.getDefaultSystemTray();
      tray = new TrayIcon(trayIcon, trayArg, trayMenu);
      tray.addActionListener(this);
      this.menuTray = menuTray;
      menuTray.addActionListener(this);
      tray(status);
    } catch (Throwable e) {
      menuTray.setEnabled(false);
      component.setVisible(true);
    }
    valueChanged(null);
  }

  public Component get() {
    int count = container.getComponentCount();
    for (int i = 0; i < count; i++) {
      Component c = container.getComponent(i);
      if (c.isVisible())
        return c;
    }
    return null;
  }

  private void tray(boolean b) {
    component.setVisible(!b);
    if (b)
      systemTray.addTrayIcon(tray);
    else
      systemTray.removeTrayIcon(tray);
  }

  public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    if (source == menu || source == button) {
      valueChanged(null);
      try {
        reader.getObject(resource);
      } catch (Exception ex) {
        Start.logger.log(Level.SEVERE, ex.getMessage(), ex);
      }
    } else if (source instanceof TrayIconService)
      tray(false);
    else if (source == menuTray)
      tray(true);
    else {
      String command = e.getActionCommand();
      if (command.equals("close"))
        stop();
      else {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
            .getLastSelectedPathComponent();
        if (node == null)
          return;
        Window window = map.get(String.valueOf(node.getUserObject()
            .hashCode()));
        if (window != null)
          window.dispose();
      }
    }
  }

  public void valueChanged(TreeSelectionEvent e) {
    if (e != null) {
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
          .getLastSelectedPathComponent();
      if (node != null) {
        Object n = node.getUserObject();
        if (n instanceof IElement) {
          Component c = map.get(String.valueOf(n.hashCode()));
          if (c == null) {
            menu.setEnabled(true);
            button.setEnabled(true);
            return;
          } else
            c.setVisible(true);
        }
      }
    }
    menu.setEnabled(false);
    button.setEnabled(false);
  }

  public void stop() {
    for (Window e : map.values())
      e.dispose();
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.