MainWindow.java
资源名称:swingx.zip [点击查看]
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:9k
源码类别:
xml/soap/webservice
开发平台:
Java
- /*
- * MainWindow.java
- *
- * Created on April 5, 2005, 8:51 AM
- */
- package org.jdesktop.demo;
- import com.jgoodies.looks.HeaderStyle;
- import com.jgoodies.looks.Options;
- import com.jgoodies.looks.plastic.PlasticLookAndFeel;
- import com.jgoodies.looks.plastic.PlasticTheme;
- import java.awt.EventQueue;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import javax.swing.JFrame;
- import javax.swing.JMenu;
- import javax.swing.UIManager;
- import javax.swing.plaf.metal.MetalLookAndFeel;
- import javax.swing.plaf.metal.MetalTheme;
- import org.jdesktop.swingx.util.WindowUtils;
- /**
- *
- * @author rbair
- */
- public class MainWindow extends javax.swing.JFrame {
- private DemoPanel demo;
- private SourceBrowserWindow sourceWindow;
- /**
- * Creates new form MainWindow
- */
- public MainWindow(DemoPanel demo) {
- this.demo = demo;
- sourceWindow = new SourceBrowserWindow(demo.getSourceRootDir());
- sourceWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
- initComponents();
- demo.addMenuItems(menuBar);
- setContentPane(demo.getContent());
- setSize(800, 600);
- setLocation(WindowUtils.getPointForCentering(this));
- menuBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
- }
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
- private void initComponents() {
- javax.swing.JSeparator jSeparator1;
- menuBar = new javax.swing.JMenuBar();
- menu = new javax.swing.JMenu();
- menuViewSourceMI = new javax.swing.JMenuItem();
- jSeparator1 = new javax.swing.JSeparator();
- menuExitMI = new javax.swing.JMenuItem();
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- menu.setText("Menu");
- menu.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- menuActionPerformed(evt);
- }
- });
- menuViewSourceMI.setText("View Source...");
- menuViewSourceMI.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- menuViewSourceMIActionPerformed(evt);
- }
- });
- menu.add(menuViewSourceMI);
- menu.add(jSeparator1);
- menuExitMI.setText("Exit");
- menuExitMI.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- menuExitMIActionPerformed(evt);
- }
- });
- menu.add(menuExitMI);
- menuBar.add(menu);
- setJMenuBar(menuBar);
- pack();
- }
- // </editor-fold>//GEN-END:initComponents
- private void menuExitMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuExitMIActionPerformed
- System.exit(0);
- }//GEN-LAST:event_menuExitMIActionPerformed
- private void menuViewSourceMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuViewSourceMIActionPerformed
- //open up the SourceBrowserWindow, non-modally. Load it with the source
- //files for the currently running demo.
- sourceWindow.setSelectedSourceFile(demo.getSourceFile());
- if (!sourceWindow.isVisible()) {
- sourceWindow.setTitle(getTitle() + " Source Browser");
- sourceWindow.setLocation(WindowUtils.getPointForStaggering(this));
- sourceWindow.setVisible(true);
- } else {
- sourceWindow.toFront();
- }
- }//GEN-LAST:event_menuViewSourceMIActionPerformed
- private void menuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_menuActionPerformed
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JMenu menu;
- private javax.swing.JMenuBar menuBar;
- private javax.swing.JMenuItem menuExitMI;
- private javax.swing.JMenuItem menuViewSourceMI;
- // End of variables declaration//GEN-END:variables
- /**
- * Mapping of all of the THEMES currently supported. These are PlasticLookAndFeel themes.
- */
- private static Map<String,MetalTheme> THEMES = null;
- public static void main(String[] args) {
- CmdLineParser parser = new CmdLineParser();
- CmdLineParser.Option dOption = parser.addStringOption('d', "Demo");
- try {
- parser.parse(args);
- } catch (CmdLineParser.UnknownOptionException ex) {
- ex.printStackTrace();
- printUsage();
- System.exit(1);
- } catch (CmdLineParser.IllegalOptionValueException ex) {
- ex.printStackTrace();
- printUsage();
- System.exit(2);
- }
- //look for the -d argument
- final String demoClassName = (String)parser.getOptionValue(dOption);
- setAppLookAndFeel();
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- DemoPanel demo = (DemoPanel)Class.forName(demoClassName).newInstance();
- MainWindow mainWindow = new MainWindow(demo);
- mainWindow.setTitle(demo.getName());
- mainWindow.setVisible(true);
- } catch (Exception e) {
- System.err.println("Failed to find, create, and open the MainWindow. " +
- "The Demo class was '" + demoClassName + "'");
- e.printStackTrace();
- printUsage();
- System.exit(3);
- }
- }
- });
- }
- private static void printUsage() {
- System.out.println("Pass in the name of the JFrame that is to be the main window " +
- "for this app, like so:n" +
- "-w org.jdesktop.binding.demo.blar.BlarWindow");
- }
- /**
- * Sets the application look and feel. Currently, the look and feel and theme
- * can be changed on the command line by the command line properties
- * "org.jdesktop.demo.BindingDemo.LookAndFeel" and "org.jdesktop.demo.BindingDemo.Theme".
- */
- private static void setAppLookAndFeel() {
- //set the look and feel for the app
- try {
- //initialize the THEMES map if they have not already been so initialized
- if (THEMES == null) {
- initThemes();
- }
- //The defaultClassName and defaultThemeName are the look and feel class name and theme name to use if no system property
- //has been set.
- String defaultClassName = "com.jgoodies.looks.plastic.PlasticXPLookAndFeel";
- String defaultThemeName = "com.jgoodies.looks.plastic.theme.ExperienceBlue";
- String className = defaultClassName;
- String themeName = defaultThemeName;
- try {
- System.getProperty("org.jdesktop.demo.Theme", defaultThemeName);
- System.getProperty("org.jdesktop.demo.LookAndFeel", defaultClassName);
- } catch (Throwable e) {
- //didn't work, oh well.
- }
- //set the current plasic look and feel theme, and the current look and feel
- //Object theme = THEMES.get(themeName);
- Object theme = null;
- if (theme == null) {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } else if (theme instanceof PlasticTheme){
- PlasticLookAndFeel.setMyCurrentTheme((PlasticTheme)THEMES.get(themeName));
- UIManager.setLookAndFeel(className);
- } else if (theme instanceof MetalTheme) {
- MetalLookAndFeel.setCurrentTheme((MetalTheme)THEMES.get(themeName));
- UIManager.setLookAndFeel(className);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * Initializes the THEMES map.
- */
- private static void initThemes() {
- THEMES = new HashMap<String,MetalTheme>();
- List list = PlasticLookAndFeel.getInstalledThemes();
- for (Iterator itr = list.iterator(); itr.hasNext();) {
- PlasticTheme element = (PlasticTheme) itr.next();
- THEMES.put(element.getClass().getName(), element);
- }
- //add the normal swing themes
- THEMES.put("javax.swing.plaf.metal.DefaultMetalTheme", new javax.swing.plaf.metal.DefaultMetalTheme());
- THEMES.put("javax.swing.plaf.metal.OceanTheme", new javax.swing.plaf.metal.OceanTheme());
- }
- }