--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/demo/share/jfc/SwingSet2/InternalFrameDemo.java Fri Mar 23 13:43:39 2018 -0700
@@ -0,0 +1,342 @@
+/*
+ *
+ * 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);
+ }
+
+}