JXTaskPaneDemoPanel.java
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:9k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * $Id: JXTaskPaneDemoPanel.java,v 1.3 2005/09/10 13:14:20 l2fprod Exp $
  3.  *
  4.  * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
  5.  * Santa Clara, California 95054, U.S.A. All rights reserved.
  6.  */
  7. package org.jdesktop.demo.swingx;
  8. import java.awt.BorderLayout;
  9. import java.awt.Font;
  10. import java.awt.event.ActionEvent;
  11. import java.util.ResourceBundle;
  12. import javax.swing.AbstractAction;
  13. import javax.swing.Action;
  14. import javax.swing.BorderFactory;
  15. import javax.swing.ImageIcon;
  16. import javax.swing.JEditorPane;
  17. import javax.swing.JScrollPane;
  18. import javax.swing.JTabbedPane;
  19. import javax.swing.LookAndFeel;
  20. import javax.swing.UIManager;
  21. import javax.swing.text.html.HTMLDocument;
  22. import org.jdesktop.demo.DemoPanel;
  23. import org.jdesktop.swingx.JXErrorDialog;
  24. import org.jdesktop.swingx.JXTaskPane;
  25. import org.jdesktop.swingx.JXTaskPaneContainer;
  26. import org.jdesktop.swingx.plaf.LookAndFeelAddons;
  27. import org.jdesktop.swingx.plaf.aqua.AquaLookAndFeelAddons;
  28. import org.jdesktop.swingx.plaf.metal.MetalLookAndFeelAddons;
  29. import org.jdesktop.swingx.plaf.windows.WindowsClassicLookAndFeelAddons;
  30. import org.jdesktop.swingx.plaf.windows.WindowsLookAndFeelAddons;
  31. import org.jdesktop.swingx.util.JVM;
  32. public class JXTaskPaneDemoPanel extends DemoPanel {
  33.     
  34.     static ResourceBundle RESOURCE = ResourceBundle
  35.             .getBundle("org.jdesktop.demo.swingx.resources.JXTaskPaneDemoPanelRB");
  36.     
  37.     public JXTaskPaneDemoPanel() {
  38.         setName("JXTaskPane Demo");
  39.         initComponents();
  40.     }
  41.     
  42.     public String getHtmlDescription() {
  43.         return RESOURCE.getString("description");
  44.     }
  45.     
  46.     public String getName() {
  47.         return "Task Panes";
  48.     }
  49.     
  50.     public void initComponents() {
  51.         LookAndFeel oldLnF = UIManager.getLookAndFeel();
  52.         try {
  53.             setLayout(new BorderLayout());
  54.             setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  55.             
  56.             JTabbedPane tabs = new JTabbedPane();
  57.             
  58.             { // the metal look and feel
  59.                 UIManager.setLookAndFeel(UIManager
  60.                         .getCrossPlatformLookAndFeelClassName());
  61.                 LookAndFeelAddons.setAddon(MetalLookAndFeelAddons.class);
  62.                 if (JVM.current().isOrLater(JVM.JDK1_5)) {
  63.                     UIManager.getLookAndFeelDefaults().put(JXTaskPane.uiClassID,
  64.                             "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI");
  65.                 }
  66.                 DemoPanel demo = new DemoPanel();
  67.                 tabs.addTab("Metal L&F", demo);
  68.             }
  69.             
  70.             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  71.             
  72.             { // the windows look and feel "Luna" style
  73.                 UIManager.put("win.xpstyle.name", "luna");
  74.                 LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
  75.                 DemoPanel demo = new DemoPanel();
  76.                 tabs.addTab("Windows (Luna)", demo);
  77.             }
  78.             
  79.             { // the windows look and feel "Homestead" style
  80.                 UIManager.put("win.xpstyle.name", "homestead");
  81.                 LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
  82.                 DemoPanel demo = new DemoPanel();
  83.                 tabs.addTab("Windows (Homestead)", demo);
  84.             }
  85.             
  86.             { // the windows look and feel "Metallic" style
  87.                 UIManager.put("win.xpstyle.name", "metallic");
  88.                 LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
  89.                 DemoPanel demo = new DemoPanel();
  90.                 tabs.addTab("Windows (Silver)", demo);
  91.             }
  92.             
  93.             UIManager.put("win.xpstyle.name", null);
  94.             
  95.             { // the windows classic look and feel
  96.                 LookAndFeelAddons.setAddon(WindowsClassicLookAndFeelAddons.class);
  97.                 DemoPanel demo = new DemoPanel();
  98.                 tabs.addTab("Windows (Classic)", demo);
  99.             }
  100.             
  101.             { // the glossy look
  102.                 LookAndFeelAddons.setAddon(AquaLookAndFeelAddons.class);
  103.                 DemoPanel demo = new DemoPanel();
  104.                 tabs.addTab("Glossy", demo);
  105.             }
  106.             
  107.             add("Center", tabs);
  108.         } catch (Exception e) {
  109.             JXErrorDialog.showDialog(null, "Error", e);
  110.         } finally {
  111.             try {
  112.                 UIManager.setLookAndFeel(oldLnF.getClass().getName());
  113.             } catch (Exception e) {}
  114.         }
  115.     }
  116.     
  117.     static class DemoPanel extends JXTaskPaneContainer {
  118.         
  119.         public DemoPanel() {
  120.             JXTaskPaneContainer taskPane = new JXTaskPaneContainer();
  121.             
  122.             // "System" GROUP
  123.             JXTaskPane systemGroup = new JXTaskPane();
  124.             systemGroup.setTitle(RESOURCE.getString("tasks.systemGroup"));
  125.             systemGroup.setToolTipText(RESOURCE
  126.                     .getString("tasks.systemGroup.tooltip"));
  127.             systemGroup.setSpecial(true);
  128.             systemGroup.setIcon(new ImageIcon(JXTaskPaneDemoPanel.class
  129.                     .getResource("resources/tasks-email.png")));
  130.             
  131.             systemGroup.add(makeAction(RESOURCE.getString("tasks.email"), "",
  132.                     "resources/tasks-email.png"));
  133.             systemGroup.add(makeAction(RESOURCE.getString("tasks.delete"), "",
  134.                     "resources/tasks-recycle.png"));
  135.             
  136.             taskPane.add(systemGroup);
  137.             
  138.             // "Office" GROUP
  139.             JXTaskPane officeGroup = new JXTaskPane();
  140.             officeGroup.setTitle(RESOURCE.getString("tasks.office"));
  141.             officeGroup.add(makeAction(RESOURCE.getString("tasks.word"), "",
  142.                     "resources/tasks-writedoc.png"));
  143.             officeGroup.setExpanded(false);
  144.             officeGroup.setScrollOnExpand(true);
  145.             
  146.             taskPane.add(officeGroup);
  147.             
  148.             // "SEE ALSO" GROUP and ACTIONS
  149.             JXTaskPane seeAlsoGroup = new JXTaskPane();
  150.             seeAlsoGroup.setTitle(RESOURCE.getString("tasks.seealso"));
  151.             
  152.             seeAlsoGroup.add(makeAction("The Internet", RESOURCE
  153.                     .getString("tasks.internet.tooltip"),
  154.                     "resources/tasks-internet.png"));
  155.             
  156.             seeAlsoGroup.add(makeAction(RESOURCE.getString("tasks.help"),
  157.                     RESOURCE.getString("tasks.help.tooltip"),
  158.                     "resources/tasks-question.png"));
  159.             
  160.             taskPane.add(seeAlsoGroup);
  161.             
  162.             // "Details" GROUP
  163.             JXTaskPane detailsGroup = new JXTaskPane();
  164.             detailsGroup.setTitle(RESOURCE.getString("tasks.details"));
  165.             detailsGroup.setScrollOnExpand(true);
  166.             
  167.             JEditorPane area = new JEditorPane("text/html", "<html>");
  168.             
  169.             area.setFont(UIManager.getFont("Label.font"));
  170.             area.setEditable(false);
  171.             area.setOpaque(false);
  172.             
  173.             Font defaultFont = UIManager.getFont("Button.font");
  174.             
  175.             String stylesheet = "body { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0; font-family: "
  176.                     + defaultFont.getName()
  177.                     + "; font-size: "
  178.                     + defaultFont.getSize()
  179.                     + "pt;  }"
  180.                     + "a, p, li { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0; font-family: "
  181.                     + defaultFont.getName()
  182.                     + "; font-size: "
  183.                     + defaultFont.getSize()
  184.                     + "pt;  }";
  185.             if (area.getDocument() instanceof HTMLDocument) {
  186.                 HTMLDocument doc = (HTMLDocument)area.getDocument();
  187.                 try {
  188.                     doc.getStyleSheet().loadRules(new java.io.StringReader(stylesheet),
  189.                             null);
  190.                 } catch (Exception e) {
  191.                     // TODO: handle exception
  192.                 }
  193.             }
  194.             
  195.             area.setText(RESOURCE.getString("tasks.details.message"));
  196.             detailsGroup.add(area);
  197.             
  198.             taskPane.add(detailsGroup);
  199.             
  200.             JScrollPane scroll = new JScrollPane(taskPane);
  201.             scroll.setBorder(null);
  202.             
  203.             setLayout(new BorderLayout());
  204.             add("Center", scroll);
  205.             
  206.             setBorder(null);
  207.         }
  208.         
  209.         Action makeAction(String title, String tooltiptext, String iconPath) {
  210.             Action action = new AbstractAction(title) {
  211.                 public void actionPerformed(ActionEvent e) {}
  212.             };
  213.             action.putValue(Action.SMALL_ICON, new ImageIcon(
  214.                     JXTaskPaneDemoPanel.class.getResource(iconPath)));
  215.             action.putValue(Action.SHORT_DESCRIPTION, tooltiptext);
  216.             return action;
  217.         }
  218.     }
  219.     
  220. }