Package org.shiftone.jrat.ui

Source Code of org.shiftone.jrat.ui.DesktopFrame

package org.shiftone.jrat.ui;

import org.shiftone.jrat.core.spi.ui.ViewContainer;
import org.shiftone.jrat.inject.Injector;
import org.shiftone.jrat.ui.action.ExitAction;
import org.shiftone.jrat.ui.action.RemoveAllTabsAction;
import org.shiftone.jrat.ui.action.RemoveCurrentTabAction;
import org.shiftone.jrat.ui.action.ResizeAction;
import org.shiftone.jrat.ui.help.AboutAction;
import org.shiftone.jrat.ui.help.ShowDocsAction;
import org.shiftone.jrat.ui.inject.InjectDirAction;
import org.shiftone.jrat.ui.tab.TabbedPaneViewContainer;
import org.shiftone.jrat.ui.util.JRatFrame;
import org.shiftone.jrat.ui.viewer.OpenOutputFileAction;
import org.shiftone.jrat.util.log.Logger;
import org.shiftone.jrat.util.swing.popup.CloseTabbedPanePopupMouseAdaptor;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import java.awt.event.KeyEvent;
import java.io.File;

/**
* Class DesktopFrame
*
* @author $Author: jeffdrost $
* @version $Revision: 1.34 $
*/
public class DesktopFrame extends JRatFrame implements UIConstants, ContainerListener {

  private static final Logger LOG = Logger.getLogger(DesktopFrame.class);
  private JMenuBar menuBar = new JMenuBar();
  private TabbedPaneViewContainer tabbedPane = new TabbedPaneViewContainer();
  private ViewContainer viewContainer = tabbedPane;
  private JMenu fileMenu = new JMenu(MENU_FILE);
  private JMenu windowMenu = new JMenu(MENU_WINDOW);
  private JMenu injectMenu = new JMenu(MENU_INSTRUMENT);
  private JMenu helpMenu = new JMenu(MENU_HELP);
  private JMenuItem open = new JMenuItem(MENU_OPEN);
  private JMenuItem close = new JMenuItem(MENU_CLOSE);
  private JMenuItem closeAll = new JMenuItem(MENU_CLOSE_ALL);
  private JMenuItem exit = new JMenuItem(MENU_EXIT);
  private JMenuItem injectFile = new JMenuItem(MENU_INJECT_JAR);
  private JMenuItem injectDir = new JMenuItem(MENU_INJECT_DIR);
  private JMenuItem docs = new JMenuItem(MENU_DOCS);
  private JMenuItem license = new JMenuItem(MENU_LICENSE);
  private JMenuItem about = new JMenuItem(MENU_ABOUT);
  private JMenuItem resize640x480 = new JMenuItem(MENU_640X480);
  private JMenuItem resize800x600 = new JMenuItem(MENU_800x600);
  private OpenOutputFileAction outputFileAction;
  private Injector injector = new Injector();

  public DesktopFrame() {

    Container pane = getContentPane();
    pane.setLayout(new BorderLayout());
    // pane.add(statusBar, BorderLayout.SOUTH);
    pane.add(tabbedPane, BorderLayout.CENTER);
    addMenuBar();
    setTitle(UI_TITLE);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public void addMenuBar() {

    fileMenu.add(open);
    fileMenu.add(close);
    fileMenu.add(closeAll);
    fileMenu.addSeparator();
    fileMenu.add(exit);
    fileMenu.setMnemonic('F');
    open.setMnemonic('O');
    exit.setMnemonic('X');
    //
    windowMenu.add(resize640x480);
    windowMenu.add(resize800x600);
    windowMenu.setMnemonic('W');
    //
    injectMenu.add(injectFile);
    injectMenu.add(injectDir);
    injectMenu.setMnemonic(KeyEvent.VK_I);
    //
    helpMenu.add(docs);
    helpMenu.add(license);
    helpMenu.add(about);
    helpMenu.setMnemonic(KeyEvent.VK_H);
    about.setMnemonic(KeyEvent.VK_A);
    docs.setMnemonic(KeyEvent.VK_H);
    tabbedPane.addMouseListener(new CloseTabbedPanePopupMouseAdaptor(tabbedPane));
    //
    outputFileAction = new OpenOutputFileAction(this, viewContainer);
    open.addActionListener(outputFileAction);
    close.addActionListener(new RemoveCurrentTabAction(viewContainer));
    closeAll.addActionListener(new RemoveAllTabsAction(viewContainer));
    exit.addActionListener(new ExitAction());
    injectFile.addActionListener(InjectDirAction.createForFiles(injector, viewContainer));
    injectDir.addActionListener(InjectDirAction.createForDirs(injector, viewContainer));
    docs.addActionListener(new ShowDocsAction(viewContainer, ShowDocsAction.HOME_TITLE, ShowDocsAction.HOME_URL));
    license.addActionListener(new ShowDocsAction(viewContainer,
        ShowDocsAction.LICENSE_TITLE,
        ShowDocsAction.LICENSE_URL));
    about.addActionListener(new AboutAction(this));
    resize640x480.addActionListener(new ResizeAction(this, 640, 480));
    resize800x600.addActionListener(new ResizeAction(this, 800, 600));
    menuBar.add(fileMenu);
    menuBar.add(windowMenu);
    menuBar.add(injectMenu);
    menuBar.add(helpMenu);
    setJMenuBar(menuBar);
    //
    tabbedPane.addContainerListener(this);
    tabbedCountChanged(0);
  }

  public void openFile(File file) throws Exception {

    outputFileAction.openFile(file);
  }

  public void componentAdded(ContainerEvent e) {

    tabbedCountChanged(tabbedPane.getTabCount());
  }

  public void componentRemoved(ContainerEvent e) {

    tabbedCountChanged(tabbedPane.getTabCount());
  }

  private void tabbedCountChanged(int tabCount) {

    LOG.info("tabbedCountChanged  " + tabCount);
    boolean hasTabs = (tabCount > 0);
    close.setEnabled(hasTabs);
    closeAll.setEnabled(hasTabs);
  }

  public void setEnabled(boolean isEnable) {

    if (isEnable) {
      menuBar.setEnabled(true);
      getContentPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    } else {
      menuBar.setEnabled(false);
      getContentPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    }
    // super.setEnabled(enable);
  }
}
TOP

Related Classes of org.shiftone.jrat.ui.DesktopFrame

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.