1 35 36 39 package demo.swingset; 40 import swingwtx.swing.*; 41 import swingwtx.swing.event.*; 42 import swingwtx.swing.text.*; 43 import swingwtx.swing.border.*; 44 import swingwtx.swing.colorchooser.*; 45 import swingwtx.swing.filechooser.*; 46 import javax.accessibility.*; 47 48 import swingwtx.swing.plaf.metal.DefaultMetalTheme; 49 import swingwtx.swing.plaf.metal.MetalLookAndFeel; 50 51 import java.lang.reflect.*; 52 import swingwt.awt.*; 53 import swingwt.awt.event.*; 54 import java.beans.*; 55 import java.util.*; 56 import java.io.*; 57 import java.applet.*; 58 import java.net.*; 59 60 66 public class SwingSet2 extends JPanel { 67 68 String [] demos = { 69 "InternalFrameDemo", 70 "ButtonDemo", 71 "ComboBoxDemo", 72 "FileChooserDemo", 73 "HtmlDemo", 74 "ListDemo", 75 "OptionPaneDemo", 76 "ProgressBarDemo", 77 "ScrollPaneDemo", 78 "SliderDemo", 79 "SplitPaneDemo", 80 "TabbedPaneDemo", 81 "TableDemo", 82 "ToolTipDemo", 83 "TreeDemo" 84 }; 85 86 void loadDemos() { 87 for(int i = 0; i < demos.length;) { 88 if(isApplet() && demos[i].equals("FileChooserDemo")) { 89 } else { 92 loadDemo(demos[i]); 93 } 94 i++; 95 if (i == 1) 96 try { 97 setDemo((DemoModule) demosVector.get(0)); 98 } 99 catch (Exception e) {} 100 } 101 } 102 103 private static final String mac = 105 "com.sun.java.swing.plaf.mac.MacLookAndFeel"; 106 private static final String metal = 107 "swingwtx.swing.plaf.metal.MetalLookAndFeel"; 108 private static final String motif = 109 "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; 110 private static final String windows = 111 "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; 112 private static final String gtk = 113 "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"; 114 115 private static String currentLookAndFeel = metal; 117 118 private Vector demosVector = new Vector(); 120 121 private static final int PREFERRED_WIDTH = 720; 123 private static final int PREFERRED_HEIGHT = 640; 124 125 private Dimension HGAP = new Dimension(1,5); 127 private Dimension VGAP = new Dimension(5,1); 128 129 private ResourceBundle bundle = null; 131 132 private DemoModule currentDemo = null; 134 private JPanel demoPanel = null; 135 136 private JDialog aboutBox = null; 138 139 private JTextField statusField = null; 141 142 private ToggleButtonToolBar toolbar = null; 144 private ButtonGroup toolbarGroup = new ButtonGroup(); 145 146 private JMenuBar menuBar = null; 148 private JMenu lafMenu = null; 149 private JMenu themesMenu = null; 150 private JMenu audioMenu = null; 151 private JMenu toolTipMenu = null; 152 private ButtonGroup lafMenuGroup = new ButtonGroup(); 153 private ButtonGroup themesMenuGroup = new ButtonGroup(); 154 private ButtonGroup audioMenuGroup = new ButtonGroup(); 155 private ButtonGroup toolTipMenuGroup = new ButtonGroup(); 156 157 private JPopupMenu popupMenu = null; 159 private ButtonGroup popupMenuGroup = new ButtonGroup(); 160 161 private JFrame frame = null; 163 private JWindow splashScreen = null; 164 165 private Object applet = null; 167 168 private boolean DEBUG = true; 170 private int debugCounter = 0; 171 172 private JTabbedPane tabbedPane = null; 174 175 private JEditorPane demoSrcPane = null; 176 177 private JLabel splashLabel = null; 178 179 Container contentPane = null; 181 182 183 private static int numSSs = 0; 187 private static Vector swingSets = new Vector(); 188 189 public SwingSet2(Object applet) { 190 this(applet, null); 191 } 192 193 196 public SwingSet2(Object applet, GraphicsConfiguration gc) { 197 198 this.applet = applet; 200 201 if (!isApplet()) { 204 frame = createFrame(gc); 205 } 206 207 setLayout(new BorderLayout()); 209 210 setSize(PREFERRED_WIDTH,PREFERRED_HEIGHT); 212 213 createSplashScreen(); 217 218 SwingUtilities.invokeLater(new Runnable () { 220 public void run() { 221 showSplashScreen(); 222 } 223 }); 224 225 initializeDemo(); 226 preloadFirstDemo(); 227 228 SwingUtilities.invokeLater(new Runnable () { 231 public void run() { 232 showSwingSet2(); 233 hideSplash(); 234 } 235 }); 236 237 DemoLoadThread demoLoader = new DemoLoadThread(this); 239 demoLoader.start(); 240 } 241 242 243 246 public static void main(String [] args) { 247 SwingSet2 swingset = new SwingSet2(null, null); 249 } 250 251 255 256 257 public void initializeDemo() { 258 JPanel top = new JPanel(); 259 top.setLayout(new BorderLayout()); 260 add(top, BorderLayout.NORTH); 261 262 menuBar = createMenus(); 263 getFrame().setJMenuBar(menuBar); 264 265 popupMenu = createPopupMenu(); 267 268 ToolBarPanel toolbarPanel = new ToolBarPanel(); 269 toolbarPanel.setLayout(new BorderLayout()); 270 toolbar = new ToggleButtonToolBar(); 271 toolbarPanel.add(toolbar, BorderLayout.CENTER); 272 top.add(toolbarPanel, BorderLayout.SOUTH); 273 275 tabbedPane = new JTabbedPane(); 276 add(tabbedPane, BorderLayout.CENTER); 277 tabbedPane.addChangeListener(new TabListener()); 278 279 statusField = new JTextField(""); 280 statusField.setEditable(false); 281 add(statusField, BorderLayout.SOUTH); 282 283 demoPanel = new JPanel(); 284 demoPanel.setLayout(new BorderLayout()); 285 demoPanel.setBorder(new EtchedBorder()); 286 tabbedPane.addTab("Hi There!", demoPanel); 287 288 demoSrcPane = new JEditorPane("text/html", getString("SourceCode.loading")); 290 demoSrcPane.setEditable(false); 291 292 JScrollPane scroller = new JScrollPane(); 293 scroller.getViewport().add(demoSrcPane); 294 295 tabbedPane.addTab( 296 getString("TabbedPane.src_label"), 297 null, 298 demoSrcPane, 299 getString("TabbedPane.src_tooltip") 300 ); 301 } 302 303 DemoModule currentTabDemo = null; 304 class TabListener implements ChangeListener { 305 public void stateChanged(ChangeEvent e) { 306 boolean srcSelected = tabbedPane.getSelectedIndex() == 1; 307 if(currentTabDemo != currentDemo && demoSrcPane != null && srcSelected) { 308 demoSrcPane.setText(getString("SourceCode.loading")); 309 if (!SwingWTUtils.isWindows()) 311 SwingUtilities.invokeIn(new Runnable () { 312 public void run() { 313 Dimension d = getFrame().getSize(); 314 d.width++; 315 d.height++; 316 getFrame().setSize(d); 317 } 318 }, 100); 319 invalidate(); 320 repaint(); 321 } 322 if(currentTabDemo != currentDemo && srcSelected) { 323 currentTabDemo = currentDemo; 324 setSourceCode(currentDemo); 325 if (!SwingWTUtils.isWindows()) 327 SwingUtilities.invokeIn(new Runnable () { 328 public void run() { 329 Dimension d = getFrame().getSize(); 330 d.width++; 331 d.height++; 332 getFrame().setSize(d); 333 } 334 }, 100); 335 invalidate(); 336 repaint(); 337 } 338 } 339 } 340 341 342 345 public JMenuBar createMenus() { 346 JMenuItem mi; 347 JMenuBar menuBar = new JMenuBar(); 349 352 JMenu fileMenu = (JMenu) menuBar.add(new JMenu(getString("FileMenu.file_label"))); 354 fileMenu.setMnemonic(getMnemonic("FileMenu.file_mnemonic")); 355 357 createMenuItem(fileMenu, "FileMenu.about_label", "FileMenu.about_mnemonic", 358 "FileMenu.about_accessible_description", new AboutAction(this)); 359 360 fileMenu.addSeparator(); 361 362 createMenuItem(fileMenu, "FileMenu.open_label", "FileMenu.open_mnemonic", 363 "FileMenu.open_accessible_description", null); 364 365 createMenuItem(fileMenu, "FileMenu.save_label", "FileMenu.save_mnemonic", 366 "FileMenu.save_accessible_description", null); 367 368 createMenuItem(fileMenu, "FileMenu.save_as_label", "FileMenu.save_as_mnemonic", 369 "FileMenu.save_as_accessible_description", null); 370 371 372 if(!isApplet()) { 373 fileMenu.addSeparator(); 374 375 createMenuItem(fileMenu, "FileMenu.exit_label", "FileMenu.exit_mnemonic", 376 "FileMenu.exit_accessible_description", new ExitAction(this) 377 ); 378 } 379 380 if (numSSs == 0) { 382 lafMenu = (JMenu) menuBar.add(new JMenu(getString("LafMenu.laf_label"))); 384 lafMenu.setMnemonic(getMnemonic("LafMenu.laf_mnemonic")); 385 388 mi = createLafMenuItem(lafMenu, "LafMenu.java_label", "LafMenu.java_mnemonic", 389 "LafMenu.java_accessible_description", metal); 390 mi.setSelected(true); 392 createLafMenuItem(lafMenu, "LafMenu.mac_label", "LafMenu.mac_mnemonic", 393 "LafMenu.mac_accessible_description", mac); 394 395 createLafMenuItem(lafMenu, "LafMenu.motif_label", "LafMenu.motif_mnemonic", 396 "LafMenu.motif_accessible_description", motif); 397 398 createLafMenuItem(lafMenu, "LafMenu.windows_label", "LafMenu.windows_mnemonic", 399 "LafMenu.windows_accessible_description", windows); 400 401 createLafMenuItem(lafMenu, "LafMenu.gtk_label", "LafMenu.gtk_mnemonic", 402 "LafMenu.gtk_accessible_description", gtk); 403 404 themesMenu = (JMenu) menuBar.add(new JMenu(getString("ThemesMenu.themes_label"))); 406 themesMenu.setMnemonic(getMnemonic("ThemesMenu.themes_mnemonic")); 407 410 audioMenu = (JMenu) themesMenu.add(new JMenu(getString("AudioMenu.audio_label"))); 412 audioMenu.setMnemonic(getMnemonic("AudioMenu.audio_mnemonic")); 413 416 createAudioMenuItem(audioMenu, "AudioMenu.on_label", 417 "AudioMenu.on_mnemonic", 418 "AudioMenu.on_accessible_description", 419 new OnAudioAction(this)); 420 421 mi = createAudioMenuItem(audioMenu, "AudioMenu.default_label", 422 "AudioMenu.default_mnemonic", 423 "AudioMenu.default_accessible_description", 424 new DefaultAudioAction(this)); 425 mi.setSelected(true); 427 createAudioMenuItem(audioMenu, "AudioMenu.off_label", 428 "AudioMenu.off_mnemonic", 429 "AudioMenu.off_accessible_description", 430 new OffAudioAction(this)); 431 432 mi = createThemesMenuItem(themesMenu, "ThemesMenu.default_label", "ThemesMenu.default_mnemonic", 434 "ThemesMenu.default_accessible_description", new DefaultMetalTheme()); 435 mi.setSelected(true); 437 createThemesMenuItem(themesMenu, "ThemesMenu.aqua_label", "ThemesMenu.aqua_mnemonic", 438 "ThemesMenu.aqua_accessible_description", new AquaTheme()); 439 440 createThemesMenuItem(themesMenu, "ThemesMenu.charcoal_label", "ThemesMenu.charcoal_mnemonic", 441 "ThemesMenu.charcoal_accessible_description", new CharcoalTheme()); 442 443 createThemesMenuItem(themesMenu, "ThemesMenu.contrast_label", "ThemesMenu.contrast_mnemonic", 444 "ThemesMenu.contrast_accessible_description", new ContrastTheme()); 445 446 createThemesMenuItem(themesMenu, "ThemesMenu.emerald_label", "ThemesMenu.emerald_mnemonic", 447 "ThemesMenu.emerald_accessible_description", new EmeraldTheme()); 448 449 createThemesMenuItem(themesMenu, "ThemesMenu.ruby_label", "ThemesMenu.ruby_mnemonic", 450 "ThemesMenu.ruby_accessible_description", new RubyTheme()); 451 452 toolTipMenu = (JMenu) menuBar.add(new JMenu( 454 getString("ToolTipMenu.tooltip_label"))); 455 toolTipMenu.setMnemonic(getMnemonic("ToolTipMenu.tooltip_mnemonic")); 456 459 mi = createToolTipMenuItem(toolTipMenu, "ToolTipMenu.on_label", 461 "ToolTipMenu.on_mnemonic", 462 "ToolTipMenu.on_accessible_description", 463 new ToolTipAction(this, true)); 464 mi.setSelected(true); 465 466 createToolTipMenuItem(toolTipMenu, "ToolTipMenu.off_label", 467 "ToolTipMenu.off_mnemonic", 468 "ToolTipMenu.off_accessible_description", 469 new ToolTipAction(this, false)); 470 } 471 472 473 return menuBar; 474 } 475 476 479 public JMenuItem createToolTipMenuItem(JMenu menu, String label, 480 String mnemonic, 481 String accessibleDescription, 482 Action action) { 483 JRadioButtonMenuItem mi = (JRadioButtonMenuItem)menu.add( 484 new JRadioButtonMenuItem(getString(label))); 485 toolTipMenuGroup.add(mi); 486 mi.setMnemonic(getMnemonic(mnemonic)); 487 mi.addActionListener(action); 490 491 return mi; 492 } 493 494 497 public JMenuItem createAudioMenuItem(JMenu menu, String label, 498 String mnemonic, 499 String accessibleDescription, 500 Action action) { 501 JRadioButtonMenuItem mi = (JRadioButtonMenuItem) menu.add(new JRadioButtonMenuItem(getString(label))); 502 audioMenuGroup.add(mi); 503 mi.setMnemonic(getMnemonic(mnemonic)); 504 mi.addActionListener(action); 506 507 return mi; 508 } 509 510 513 public JMenuItem createMenuItem(JMenu menu, String label, String mnemonic, 514 String accessibleDescription, Action action) { 515 JMenuItem mi = (JMenuItem) menu.add(new JMenuItem(getString(label))); 516 mi.setMnemonic(getMnemonic(mnemonic)); 517 mi.addActionListener(action); 519 if(action == null) { 520 mi.setEnabled(false); 521 } 522 return mi; 523 } 524 525 528 public JMenuItem createThemesMenuItem(JMenu menu, String label, String mnemonic, 529 String accessibleDescription, DefaultMetalTheme theme) { 530 JRadioButtonMenuItem mi = (JRadioButtonMenuItem) menu.add(new JRadioButtonMenuItem(getString(label))); 531 themesMenuGroup.add(mi); 532 mi.setMnemonic(getMnemonic(mnemonic)); 533 mi.addActionListener(new ChangeThemeAction(this, theme)); 535 536 return mi; 537 } 538 539 542 public JMenuItem createLafMenuItem(JMenu menu, String label, String mnemonic, 543 String accessibleDescription, String laf) { 544 JMenuItem mi = (JRadioButtonMenuItem) menu.add(new JRadioButtonMenuItem(getString(label))); 545 lafMenuGroup.add(mi); 546 mi.setMnemonic(getMnemonic(mnemonic)); 547 mi.addActionListener(new ChangeLookAndFeelAction(this, laf)); 549 550 mi.setEnabled(isAvailableLookAndFeel(laf)); 551 552 return mi; 553 } 554 555 558 public JMenuItem createMultiscreenMenuItem(JMenu menu, int screen) { 559 JMenuItem mi = null; 560 if (screen == MultiScreenAction.ALL_SCREENS) { 561 mi = (JMenuItem) menu.add(new JMenuItem(getString("MultiMenu.all_label"))); 562 mi.setMnemonic(getMnemonic("MultiMenu.all_mnemonic")); 563 } 566 else { 567 mi = (JMenuItem) menu.add(new JMenuItem(getString("MultiMenu.single_label") + " " + 568 screen)); 569 mi.setMnemonic(KeyEvent.VK_0 + screen); 570 573 } 574 mi.addActionListener(new MultiScreenAction(this, screen)); 575 return mi; 576 } 577 578 public JPopupMenu createPopupMenu() { 579 JPopupMenu popup = new JPopupMenu("JPopupMenu demo"); 580 581 createPopupMenuItem(popup, "LafMenu.java_label", "LafMenu.java_mnemonic", 582 "LafMenu.java_accessible_description", metal); 583 584 createPopupMenuItem(popup, "LafMenu.mac_label", "LafMenu.mac_mnemonic", 585 "LafMenu.mac_accessible_description", mac); 586 587 createPopupMenuItem(popup, "LafMenu.motif_label", "LafMenu.motif_mnemonic", 588 "LafMenu.motif_accessible_description", motif); 589 590 createPopupMenuItem(popup, "LafMenu.windows_label", "LafMenu.windows_mnemonic", 591 "LafMenu.windows_accessible_description", windows); 592 593 createPopupMenuItem(popup, "LafMenu.gtk_label", "LafMenu.gtk_mnemonic", 594 "LafMenu.gtk_accessible_description", gtk); 595 596 602 return popup; 603 } 604 605 608 public JMenuItem createPopupMenuItem(JPopupMenu menu, String label, String mnemonic, 609 String accessibleDescription, String laf) { 610 JMenuItem mi = (JMenuItem) menu.add(new JMenuItem(getString(label))); 611 popupMenuGroup.add(mi); 612 mi.setMnemonic(getMnemonic(mnemonic)); 613 mi.addActionListener(new ChangeLookAndFeelAction(this, laf)); 615 mi.setEnabled(isAvailableLookAndFeel(laf)); 616 617 return mi; 618 } 619 620 621 625 public void preloadFirstDemo() { 626 } 629 630 631 634 public DemoModule addDemo(DemoModule demo) { 635 demosVector.addElement(demo); 636 SwingUtilities.invokeLater(new SwingSetRunnable(this, demo) { 638 public void run() { 639 SwitchToDemoAction action = new SwitchToDemoAction(swingset, (DemoModule) obj); 640 JButton tb = swingset.getToolBar().addButton(action); 641 if (tb == null) return; 642 tb.setText(""); 643 tb.setToolTipText(((DemoModule)obj).getToolTip()); 644 if(demos[demos.length-1].equals(obj.getClass().getName())) { 645 setStatus(getString("Status.popupMenuAccessible")); 646 } 647 } 648 }); 649 return demo; 650 } 651 652 653 656 public void setDemo(DemoModule demo) { 657 currentDemo = demo; 658 659 JComponent currentDemoPanel = demo.getDemoPanel(); 661 SwingUtilities.updateComponentTreeUI(currentDemoPanel); 662 663 demoPanel.removeAll(); 664 demoPanel.add(currentDemoPanel, BorderLayout.CENTER); 665 666 tabbedPane.setSelectedIndex(0); 667 tabbedPane.setTitleAt(0, demo.getName()); 668 tabbedPane.setToolTipTextAt(0, demo.getToolTip()); 669 } 670 671 672 676 public void showSwingSet2() { 677 if(!isApplet() && getFrame() != null) { 678 JFrame f = getFrame(); 680 f.setTitle(getString("Frame.title")); 681 f.getContentPane().add(this, BorderLayout.CENTER); 682 f.setLocation(0, 0); 683 f.setSize(PREFERRED_WIDTH, PREFERRED_HEIGHT); 684 f.show(); 685 numSSs++; 686 swingSets.add(this); 687 } 688 } 689 690 693 public void createSplashScreen() { 694 splashLabel = new JLabel(createImageIcon("Splash.jpg", "Splash.accessible_description")); 695 696 if(!isApplet()) { 697 splashScreen = new JWindow(getFrame()); 698 splashScreen.getContentPane().add(splashLabel); 699 splashScreen.pack(); 700 Rectangle screenRect = getFrame().getGraphicsConfiguration().getBounds(); 701 splashScreen.setSize(550, 300); 702 splashScreen.setLocation( 703 screenRect.x + screenRect.width/2 - splashScreen.getSize().width/2, 704 screenRect.y + screenRect.height/2 - splashScreen.getSize().height/2); 705 706 } 707 } 708 709 public void showSplashScreen() { 710 if(!isApplet()) { 711 splashScreen.show(); 712 } else { 713 add(splashLabel, BorderLayout.CENTER); 714 validate(); 715 repaint(); 716 } 717 } 718 719 722 public void hideSplash() { 723 if(!isApplet()) { 724 splashScreen.setVisible(false); 725 splashScreen = null; 726 splashLabel = null; 727 } 728 } 729 730 734 737 void loadDemo(String classname) { 738 classname = "demo.swingset." + classname; 739 setStatus(getString("Status.loading") + getString(classname + ".name")); 740 DemoModule demo = null; 741 try { 742 Class demoClass = Class.forName(classname); 743 Constructor demoConstructor = demoClass.getConstructor(new Class []{SwingSet2.class}); 744 demo = (DemoModule) demoConstructor.newInstance(new Object []{this}); 745 addDemo(demo); 746 toolbar.invalidate(); 747 } catch (Exception e) { 748 System.out.println("Error occurred loading demo: " + classname); 749 e.printStackTrace(); 750 } 751 setStatus(""); 752 } 753 754 765 protected boolean isAvailableLookAndFeel(String laf) { 766 try { 767 Class lnfClass = Class.forName(laf); 768 LookAndFeel newLAF = (LookAndFeel)(lnfClass.newInstance()); 769 return newLAF.isSupportedLookAndFeel(); 770 } catch(Exception e) { return false; 772 } 773 } 774 775 776 779 public boolean isApplet() { 780 return (applet != null); 781 } 782 783 786 public Object getApplet() { 787 return applet; 788 } 789 790 791 794 public JFrame getFrame() { 795 return frame; 796 } 797 798 801 public JMenuBar getMenuBar() { 802 return menuBar; 803 } 804 805 808 public ToggleButtonToolBar getToolBar() { 809 return toolbar; 810 } 811 812 815 public ButtonGroup getToolBarGroup() { 816 return toolbarGroup; 817 } 818 819 823 public Container getContentPane() { 824 if(contentPane == null) { 825 if(getFrame() != null) { 826 contentPane = getFrame().getContentPane(); 827 } else if (getApplet() != null) { 828 contentPane = null; 829 } 830 } 831 return contentPane; 832 } 833 834 838 public static JFrame createFrame(GraphicsConfiguration gc) { 839 JFrame frame = new JFrame(gc); 840 if (numSSs == 0) { 841 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 842 } else { 843 WindowListener l = new WindowAdapter() { 844 public void windowClosing(WindowEvent e) { 845 numSSs--; 846 swingSets.remove(this); 847 } 848 }; 849 frame.addWindowListener(l); 850 } 851 return frame; 852 } 853 854 855 858 public void setStatus(String s) { 859 SwingUtilities.invokeLater(new SwingSetRunnable(this, s) { 861 public void run() { 862 swingset.statusField.setText((String ) obj); 863 } 864 }); 865 } 866 867 868 871 public String getString(String key) { 872 if (key.startsWith("demo.swingset.")) 873 key = key.substring(14, key.length()); 874 String value = null; 875 try { 876 value = getResourceBundle().getString(key); 877 } catch (MissingResourceException e) { 878 System.out.println("java.util.MissingResourceException: Couldn't find value for: " + key); 879 } 880 if(value == null) { 881 value = "Could not find resource: " + key + " "; 882 } 883 return value; 884 } 885 886 890 public ResourceBundle getResourceBundle() { 891 if(bundle == null) { 892 bundle = ResourceBundle.getBundle("resources.swingset"); 893 } 894 return bundle; 895 } 896 897 901 public char getMnemonic(String key) { 902 return (getString(key)).charAt(0); 903 } 904 905 908 public ImageIcon createImageIcon(String filename, String description) { 909 String path = "/resources/images/" + filename; 910 return new ImageIcon(getClass().getResource(path)); 911 } 912 913 916 public void debug(String s) { 917 if(DEBUG) { 918 System.out.println((debugCounter++) + ": " + s); 919 } 920 } 921 922 925 public void setLookAndFeel(String laf) { 926 if(currentLookAndFeel != laf) { 927 currentLookAndFeel = laf; 928 themesMenu.setEnabled(laf == metal); 929 updateLookAndFeel(); 930 } 931 } 932 933 936 public void updateLookAndFeel() { 937 try { 938 UIManager.setLookAndFeel(currentLookAndFeel); 939 for (Iterator itr = swingSets.iterator(); itr.hasNext(); ) { 940 SwingSet2 ss = (SwingSet2)itr.next(); 941 SwingUtilities.updateComponentTreeUI(ss); 942 } 943 if (!isApplet()) { 945 SwingUtilities.updateComponentTreeUI(getFrame()); 946 } else { 947 } 949 951 } catch (Exception ex) { 952 System.out.println("Failed loading L&F: " + currentLookAndFeel); 953 System.out.println(ex); 954 } 955 956 for (int i = 0; i < demosVector.size(); i++) { 958 DemoModule demo = (DemoModule) demosVector.elementAt(i); 959 if(currentDemo != demo) { 960 SwingUtilities.invokeLater(new SwingSetRunnable(this, demo) { 962 public void run() { 963 SwingUtilities.updateComponentTreeUI(((DemoModule)obj).getDemoPanel()); 964 } 965 }); 966 } 967 } 968 969 } 970 971 974 public void setSourceCode(DemoModule demo) { 975 SwingUtilities.invokeLater(new SwingSetRunnable(this, demo) { 977 public void run() { 978 swingset.demoSrcPane.setText(((DemoModule)obj).getSourceCode()); 979 invalidate(); 981 } 982 }); 983 } 984 985 static Insets zeroInsets = new Insets(1,1,1,1); 989 protected class ToggleButtonToolBar extends JToolBar { 990 public ToggleButtonToolBar() { 991 super(); 992 setPreferredSize(new swingwt.awt.Dimension(700, 48)); 993 } 994 995 JButton addButton(Action a) { 996 JButton b = add(a); 997 parent.invalidate(); 998 invalidate(); 999 parent.invalidate(); 1000 return b; 1001 } 1002 } 1003 1004 class ToolBarPanel extends JPanel implements ContainerListener { 1008 1009 public boolean contains(int x, int y) { 1010 Component c = getParent(); 1011 if (c != null) { 1012 Rectangle r = c.getBounds(); 1013 return (x >= 0) && (x < r.width) && (y >= 0) && (y < r.height); 1014 } 1015 else { 1016 return super.contains(x,y); 1017 } 1018 } 1019 1020 public void componentAdded(ContainerEvent e) { 1021 Container c = e.getContainer().getParent(); 1022 if (c != null) { 1023 c.getParent().validate(); 1024 c.getParent().repaint(); 1025 } 1026 } 1027 1028 public void componentRemoved(ContainerEvent e) { 1029 Container c = e.getContainer().getParent(); 1030 if (c != null) { 1031 c.getParent().validate(); 1032 c.getParent().repaint(); 1033 } 1034 } 1035 } 1036 1037 1041 1048 class SwingSetRunnable implements Runnable { 1049 protected SwingSet2 swingset; 1050 protected Object obj; 1051 1052 public SwingSetRunnable(SwingSet2 swingset, Object obj) { 1053 this.swingset = swingset; 1054 this.obj = obj; 1055 } 1056 1057 public void run() { 1058 } 1059 } 1060 1061 1062 1066 public class SwitchToDemoAction extends AbstractAction { 1067 SwingSet2 swingset; 1068 DemoModule demo; 1069 1070 public SwitchToDemoAction(SwingSet2 swingset, DemoModule demo) { 1071 super(demo.getName(), demo.getIcon()); 1072 this.swingset = swingset; 1073 this.demo = demo; 1074 } 1075 1076 public void actionPerformed(ActionEvent e) { 1077 swingset.setDemo(demo); 1078 } 1079 } 1080 1081 class OkAction extends AbstractAction { 1082 JDialog aboutBox; 1083 1084 protected OkAction(JDialog aboutBox) { 1085 super("OkAction"); 1086 this.aboutBox = aboutBox; 1087 } 1088 1089 public void actionPerformed(ActionEvent e) { 1090 aboutBox.setVisible(false); 1091 } 1092 } 1093 1094 class ChangeLookAndFeelAction extends AbstractAction { 1095 SwingSet2 swingset; 1096 String laf; 1097 protected ChangeLookAndFeelAction(SwingSet2 swingset, String laf) { 1098 super("ChangeTheme"); 1099 this.swingset = swingset; 1100 this.laf = laf; 1101 } 1102 1103 public void actionPerformed(ActionEvent e) { 1104 swingset.setLookAndFeel(laf); 1105 } 1106 } 1107 1108 class ActivatePopupMenuAction extends AbstractAction { 1109 SwingSet2 swingset; 1110 JPopupMenu popup; 1111 protected ActivatePopupMenuAction(SwingSet2 swingset, JPopupMenu popup) { 1112 super("ActivatePopupMenu"); 1113 this.swingset = swingset; 1114 this.popup = popup; 1115 } 1116 1117 public void actionPerformed(ActionEvent e) { 1118 Dimension invokerSize = getSize(); 1119 Dimension popupSize = popup.getPreferredSize(); 1120 popup.show(swingset, (invokerSize.width - popupSize.width) / 2, 1121 (invokerSize.height - popupSize.height) / 2); 1122 } 1123 } 1124 1125 class OnAudioAction extends AbstractAction { 1127 SwingSet2 swingset; 1128 protected OnAudioAction(SwingSet2 swingset) { 1129 super("Audio On"); 1130 this.swingset = swingset; 1131 } 1132 public void actionPerformed(ActionEvent e) { 1133 UIManager.put("AuditoryCues.playList", 1134 UIManager.get("AuditoryCues.allAuditoryCues")); 1135 swingset.updateLookAndFeel(); 1136 } 1137 } 1138 1139 class DefaultAudioAction extends AbstractAction { 1141 SwingSet2 swingset; 1142 protected DefaultAudioAction(SwingSet2 swingset) { 1143 super("Audio Default"); 1144 this.swingset = swingset; 1145 } 1146 public void actionPerformed(ActionEvent e) { 1147 UIManager.put("AuditoryCues.playList", 1148 UIManager.get("AuditoryCues.defaultCueList")); 1149 swingset.updateLookAndFeel(); 1150 } 1151 } 1152 1153 class OffAudioAction extends AbstractAction { 1155 SwingSet2 swingset; 1156 protected OffAudioAction(SwingSet2 swingset) { 1157 super("Audio Off"); 1158 this.swingset = swingset; 1159 } 1160 public void actionPerformed(ActionEvent e) { 1161 UIManager.put("AuditoryCues.playList", 1162 UIManager.get("AuditoryCues.noAuditoryCues")); 1163 swingset.updateLookAndFeel(); 1164 } 1165 } 1166 1167 class ToolTipAction extends AbstractAction { 1169 SwingSet2 swingset; 1170 boolean status; 1171 protected ToolTipAction(SwingSet2 swingset, boolean status) { 1172 super("ToolTip Control"); 1173 this.swingset = swingset; 1174 this.status = status; 1175 } 1176 1177 public void actionPerformed(ActionEvent e) { 1178 } 1180 } 1181 1182 class ChangeThemeAction extends AbstractAction { 1183 SwingSet2 swingset; 1184 DefaultMetalTheme theme; 1185 protected ChangeThemeAction(SwingSet2 swingset, DefaultMetalTheme theme) { 1186 super("ChangeTheme"); 1187 this.swingset = swingset; 1188 this.theme = theme; 1189 } 1190 1191 public void actionPerformed(ActionEvent e) { 1192 MetalLookAndFeel.setCurrentTheme(theme); 1193 swingset.updateLookAndFeel(); 1194 } 1195 } 1196 1197 class ExitAction extends AbstractAction { 1198 SwingSet2 swingset; 1199 protected ExitAction(SwingSet2 swingset) { 1200 super("ExitAction"); 1201 this.swingset = swingset; 1202 } 1203 1204 public void actionPerformed(ActionEvent e) { 1205 System.exit(0); 1206 } 1207 } 1208 1209 class AboutAction extends AbstractAction { 1210 SwingSet2 swingset; 1211 protected AboutAction(SwingSet2 swingset) { 1212 super("AboutAction"); 1213 this.swingset = swingset; 1214 } 1215 1216 public void actionPerformed(ActionEvent e) { 1217 JLabel panel = new JLabel(swingset.createImageIcon("About.jpg", "AboutBox.accessible_description")); 1219 1220 aboutBox = new JDialog(swingset.getFrame(), getString("AboutBox.title"), false); 1221 aboutBox.getContentPane().add(panel, BorderLayout.CENTER); 1222 1223 JPanel buttonpanel = new JPanel(); 1225 buttonpanel.setOpaque(false); 1226 JButton button = (JButton) buttonpanel.add( 1227 new JButton(getString("AboutBox.ok_button_text")) 1228 ); 1229 aboutBox.add(buttonpanel, BorderLayout.SOUTH); 1230 1231 button.addActionListener(new OkAction(aboutBox)); 1232 aboutBox.pack(); 1233 Point p = swingset.getLocationOnScreen(); 1234 aboutBox.setLocation(p.x + 10, p.y +10); 1235 aboutBox.setSize(480, 480); 1236 aboutBox.show(); 1237 } 1238 } 1239 1240 class MultiScreenAction extends AbstractAction { 1241 static final int ALL_SCREENS = -1; 1242 int screen; 1243 protected MultiScreenAction(SwingSet2 swingset, int screen) { 1244 super("MultiScreenAction"); 1245 this.screen = screen; 1246 } 1247 1248 public void actionPerformed(ActionEvent e) { 1249 SwingSet2 swingset = new SwingSet2(null, 1250 null); 1251 } 1252 } 1253 1254 1258 class DemoLoadThread extends Thread { 1259 SwingSet2 swingset; 1260 1261 public DemoLoadThread(SwingSet2 swingset) { 1262 this.swingset = swingset; 1263 } 1264 1265 public void run() { 1266 swingset.loadDemos(); 1267 } 1268 } 1269 1270 class AboutPanel extends JComponent { 1271 ImageIcon aboutimage = null; 1272 SwingSet2 swingset = null; 1273 1274 public AboutPanel(SwingSet2 swingset) { 1275 this.swingset = swingset; 1276 aboutimage = swingset.createImageIcon("About.jpg", "AboutBox.accessible_description"); 1277 setOpaque(false); 1278 } 1279 1280 public void paint(Graphics g) { 1281 aboutimage.paintIcon(this, g, 0, 0); 1282 super.paint(g); 1283 } 1284 1285 public Dimension getPreferredSize() { 1286 return new Dimension(aboutimage.getIconWidth(), 1287 aboutimage.getIconHeight()); 1288 } 1289 } 1290 1291} 1292 1293 | Popular Tags |