| /* |
| * |
| * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * - Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * - Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * - Neither the name of Oracle nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
| * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| |
| import javax.swing.*; |
| import javax.swing.event.*; |
| import javax.swing.text.*; |
| import javax.swing.border.*; |
| import javax.swing.colorchooser.*; |
| import javax.swing.filechooser.*; |
| import javax.accessibility.*; |
| |
| import java.awt.*; |
| import java.awt.event.*; |
| import java.beans.*; |
| import java.util.*; |
| import java.io.*; |
| import java.applet.*; |
| import java.net.*; |
| |
| /** |
| * Internal Frames Demo |
| * |
| * @author Jeff Dinkins |
| */ |
| public class InternalFrameDemo extends DemoModule { |
| int windowCount = 0; |
| JDesktopPane desktop = null; |
| |
| ImageIcon icon1, icon2, icon3, icon4; |
| ImageIcon smIcon1, smIcon2, smIcon3, smIcon4; |
| |
| public Integer FIRST_FRAME_LAYER = new Integer(1); |
| public Integer DEMO_FRAME_LAYER = new Integer(2); |
| public Integer PALETTE_LAYER = new Integer(3); |
| |
| public int FRAME0_X = 15; |
| public int FRAME0_Y = 280; |
| |
| public int FRAME0_WIDTH = 320; |
| public int FRAME0_HEIGHT = 230; |
| |
| public int FRAME_WIDTH = 225; |
| public int FRAME_HEIGHT = 150; |
| |
| public int PALETTE_X = 375; |
| public int PALETTE_Y = 20; |
| |
| public int PALETTE_WIDTH = 260; |
| public int PALETTE_HEIGHT = 260; |
| |
| JCheckBox windowResizable = null; |
| JCheckBox windowClosable = null; |
| JCheckBox windowIconifiable = null; |
| JCheckBox windowMaximizable = null; |
| |
| JTextField windowTitleField = null; |
| JLabel windowTitleLabel = null; |
| |
| |
| /** |
| * main method allows us to run as a standalone demo. |
| */ |
| public static void main(String[] args) { |
| InternalFrameDemo demo = new InternalFrameDemo(null); |
| demo.mainImpl(); |
| } |
| |
| /** |
| * InternalFrameDemo Constructor |
| */ |
| public InternalFrameDemo(SwingSet2 swingset) { |
| super(swingset, "InternalFrameDemo", "toolbar/JDesktop.gif"); |
| |
| // preload all the icons we need for this demo |
| icon1 = createImageIcon("misc/toast.gif", getString("InternalFrameDemo.toast")); |
| icon2 = createImageIcon("misc/duke.gif", getString("InternalFrameDemo.duke")); |
| icon3 = createImageIcon("misc/duchess.gif", getString("InternalFrameDemo.duchess")); |
| icon4 = createImageIcon("misc/cab.gif", getString("InternalFrameDemo.cab")); |
| |
| smIcon1 = createImageIcon("misc/toast_small.gif", getString("InternalFrameDemo.toast")); |
| smIcon2 = createImageIcon("misc/duke_small.gif", getString("InternalFrameDemo.duke")); |
| smIcon3 = createImageIcon("misc/duchess_small.gif", getString("InternalFrameDemo.duchess")); |
| smIcon4 = createImageIcon("misc/cab_small.gif", getString("InternalFrameDemo.cab")); |
| |
| // Create the desktop pane |
| desktop = new JDesktopPane(); |
| getDemoPanel().add(desktop, BorderLayout.CENTER); |
| |
| // Create the "frame maker" palette |
| createInternalFramePalette(); |
| |
| // Create an initial internal frame to show |
| JInternalFrame frame1 = createInternalFrame(icon1, FIRST_FRAME_LAYER, 1, 1); |
| frame1.setBounds(FRAME0_X, FRAME0_Y, FRAME0_WIDTH, FRAME0_HEIGHT); |
| |
| // Create four more starter windows |
| createInternalFrame(icon1, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT); |
| createInternalFrame(icon3, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT); |
| createInternalFrame(icon4, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT); |
| createInternalFrame(icon2, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT); |
| } |
| |
| |
| |
| /** |
| * Create an internal frame and add a scrollable imageicon to it |
| */ |
| public JInternalFrame createInternalFrame(Icon icon, Integer layer, int width, int height) { |
| JInternalFrame jif = new JInternalFrame(); |
| |
| if(!windowTitleField.getText().equals(getString("InternalFrameDemo.frame_label"))) { |
| jif.setTitle(windowTitleField.getText() + " "); |
| } else { |
| jif = new JInternalFrame(getString("InternalFrameDemo.frame_label") + " " + windowCount + " "); |
| } |
| |
| // set properties |
| jif.setClosable(windowClosable.isSelected()); |
| jif.setMaximizable(windowMaximizable.isSelected()); |
| jif.setIconifiable(windowIconifiable.isSelected()); |
| jif.setResizable(windowResizable.isSelected()); |
| |
| jif.setBounds(20*(windowCount%10), 20*(windowCount%10), width, height); |
| jif.setContentPane(new ImageScroller(this, icon, 0, windowCount)); |
| |
| windowCount++; |
| |
| desktop.add(jif, layer); |
| |
| // Set this internal frame to be selected |
| |
| try { |
| jif.setSelected(true); |
| } catch (java.beans.PropertyVetoException e2) { |
| } |
| |
| jif.show(); |
| |
| return jif; |
| } |
| |
| public JInternalFrame createInternalFramePalette() { |
| JInternalFrame palette = new JInternalFrame( |
| getString("InternalFrameDemo.palette_label") |
| ); |
| palette.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE); |
| palette.getContentPane().setLayout(new BorderLayout()); |
| palette.setBounds(PALETTE_X, PALETTE_Y, PALETTE_WIDTH, PALETTE_HEIGHT); |
| palette.setResizable(true); |
| palette.setIconifiable(true); |
| desktop.add(palette, PALETTE_LAYER); |
| |
| // ************************************* |
| // * Create create frame maker buttons * |
| // ************************************* |
| JButton b1 = new JButton(smIcon1); |
| JButton b2 = new JButton(smIcon2); |
| JButton b3 = new JButton(smIcon3); |
| JButton b4 = new JButton(smIcon4); |
| |
| // add frame maker actions |
| b1.addActionListener(new ShowFrameAction(this, icon1)); |
| b2.addActionListener(new ShowFrameAction(this, icon2)); |
| b3.addActionListener(new ShowFrameAction(this, icon3)); |
| b4.addActionListener(new ShowFrameAction(this, icon4)); |
| |
| // add frame maker buttons to panel |
| JPanel p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| |
| JPanel buttons1 = new JPanel(); |
| buttons1.setLayout(new BoxLayout(buttons1, BoxLayout.X_AXIS)); |
| |
| JPanel buttons2 = new JPanel(); |
| buttons2.setLayout(new BoxLayout(buttons2, BoxLayout.X_AXIS)); |
| |
| buttons1.add(b1); |
| buttons1.add(Box.createRigidArea(HGAP15)); |
| buttons1.add(b2); |
| |
| buttons2.add(b3); |
| buttons2.add(Box.createRigidArea(HGAP15)); |
| buttons2.add(b4); |
| |
| p.add(Box.createRigidArea(VGAP10)); |
| p.add(buttons1); |
| p.add(Box.createRigidArea(VGAP15)); |
| p.add(buttons2); |
| p.add(Box.createRigidArea(VGAP10)); |
| |
| palette.getContentPane().add(p, BorderLayout.NORTH); |
| |
| // ************************************ |
| // * Create frame property checkboxes * |
| // ************************************ |
| p = new JPanel() { |
| Insets insets = new Insets(10,15,10,5); |
| public Insets getInsets() { |
| return insets; |
| } |
| }; |
| p.setLayout(new GridLayout(1,2)); |
| |
| |
| Box box = new Box(BoxLayout.Y_AXIS); |
| windowResizable = new JCheckBox(getString("InternalFrameDemo.resizable_label"), true); |
| windowIconifiable = new JCheckBox(getString("InternalFrameDemo.iconifiable_label"), true); |
| |
| box.add(Box.createGlue()); |
| box.add(windowResizable); |
| box.add(windowIconifiable); |
| box.add(Box.createGlue()); |
| p.add(box); |
| |
| box = new Box(BoxLayout.Y_AXIS); |
| windowClosable = new JCheckBox(getString("InternalFrameDemo.closable_label"), true); |
| windowMaximizable = new JCheckBox(getString("InternalFrameDemo.maximizable_label"), true); |
| |
| box.add(Box.createGlue()); |
| box.add(windowClosable); |
| box.add(windowMaximizable); |
| box.add(Box.createGlue()); |
| p.add(box); |
| |
| palette.getContentPane().add(p, BorderLayout.CENTER); |
| |
| |
| // ************************************ |
| // * Create Frame title textfield * |
| // ************************************ |
| p = new JPanel() { |
| Insets insets = new Insets(0,0,10,0); |
| public Insets getInsets() { |
| return insets; |
| } |
| }; |
| |
| windowTitleField = new JTextField(getString("InternalFrameDemo.frame_label")); |
| windowTitleLabel = new JLabel(getString("InternalFrameDemo.title_text_field_label")); |
| |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.add(Box.createRigidArea(HGAP5)); |
| p.add(windowTitleLabel, BorderLayout.WEST); |
| p.add(Box.createRigidArea(HGAP5)); |
| p.add(windowTitleField, BorderLayout.CENTER); |
| p.add(Box.createRigidArea(HGAP5)); |
| |
| palette.getContentPane().add(p, BorderLayout.SOUTH); |
| |
| palette.show(); |
| |
| return palette; |
| } |
| |
| |
| class ShowFrameAction extends AbstractAction { |
| InternalFrameDemo demo; |
| Icon icon; |
| |
| |
| public ShowFrameAction(InternalFrameDemo demo, Icon icon) { |
| this.demo = demo; |
| this.icon = icon; |
| } |
| |
| public void actionPerformed(ActionEvent e) { |
| demo.createInternalFrame(icon, |
| getDemoFrameLayer(), |
| getFrameWidth(), |
| getFrameHeight() |
| ); |
| } |
| } |
| |
| public int getFrameWidth() { |
| return FRAME_WIDTH; |
| } |
| |
| public int getFrameHeight() { |
| return FRAME_HEIGHT; |
| } |
| |
| public Integer getDemoFrameLayer() { |
| return DEMO_FRAME_LAYER; |
| } |
| |
| class ImageScroller extends JScrollPane { |
| |
| public ImageScroller(InternalFrameDemo demo, Icon icon, int layer, int count) { |
| super(); |
| JPanel p = new JPanel(); |
| p.setBackground(Color.white); |
| p.setLayout(new BorderLayout() ); |
| |
| p.add(new JLabel(icon), BorderLayout.CENTER); |
| |
| getViewport().add(p); |
| getHorizontalScrollBar().setUnitIncrement(10); |
| getVerticalScrollBar().setUnitIncrement(10); |
| } |
| |
| public Dimension getMinimumSize() { |
| return new Dimension(25, 25); |
| } |
| |
| } |
| |
| void updateDragEnabled(boolean dragEnabled) { |
| windowTitleField.setDragEnabled(dragEnabled); |
| } |
| |
| } |