001: /*
002: * $RCSfile: JCanvas3DExample.java,v $
003: *
004: * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * - Redistribution of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * - Redistribution in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * Neither the name of Sun Microsystems, Inc. or the names of
019: * contributors may be used to endorse or promote products derived
020: * from this software without specific prior written permission.
021: *
022: * This software is provided "AS IS," without a warranty of any
023: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
024: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
025: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
026: * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
027: * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
028: * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
029: * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
030: * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
031: * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
032: * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
033: * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
034: * POSSIBILITY OF SUCH DAMAGES.
035: *
036: * You acknowledge that this software is not designed, licensed or
037: * intended for use in the design, construction, operation or
038: * maintenance of any nuclear facility.
039: *
040: * $Revision: 1.4 $
041: * $Date: 2007/02/09 17:21:42 $
042: * $State: Exp $
043: */
044:
045: package org.jdesktop.j3d.examples.jcanvas3d;
046:
047: /**
048: * Simple Java 3D example program that displays universes within lightweight swing components, layed in JInternalFrame objects.
049: */
050: import java.awt.Toolkit;
051: import javax.swing.table.DefaultTableModel;
052:
053: public class JCanvas3DExample extends javax.swing.JFrame implements
054: java.awt.event.ActionListener {
055:
056: /**
057: * Creates new form JCanvas3DExample
058: */
059: public JCanvas3DExample() {
060: initComponents();
061: Toolkit.getDefaultToolkit().setDynamicLayout(true);
062: setDefaultCloseOperation(EXIT_ON_CLOSE);
063: }
064:
065: /** This method is called from within the constructor to
066: * initialize the form.
067: * WARNING: Do NOT modify this code. The content of this method is
068: * always regenerated by the Form Editor.
069: */
070: // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
071: private void initComponents() {
072: java.awt.GridBagConstraints gridBagConstraints;
073:
074: splitPane = new javax.swing.JSplitPane();
075: scrollPane = new javax.swing.JScrollPane();
076: panel = new javax.swing.JPanel();
077: addButton = new javax.swing.JButton();
078: delayCheckBox = new javax.swing.JCheckBox();
079: interactiveCheckBox = new javax.swing.JCheckBox();
080: randomCheckBox = new javax.swing.JCheckBox();
081: desktopPane = new javax.swing.JDesktopPane();
082:
083: setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
084: splitPane.setDividerLocation(300);
085: splitPane.setDividerSize(8);
086: splitPane.setContinuousLayout(true);
087: splitPane.setOneTouchExpandable(true);
088: panel.setLayout(new java.awt.GridBagLayout());
089:
090: addButton.setText("Create New Frame");
091: addButton
092: .setToolTipText("Adds a new frame containing an universe into the desktop pane");
093: addButton.addActionListener(this );
094:
095: panel.add(addButton, new java.awt.GridBagConstraints());
096:
097: delayCheckBox.setText("Resize Delayed");
098: delayCheckBox
099: .setToolTipText("Shows the effect of using a delayed resizing to the internal frames.");
100: gridBagConstraints = new java.awt.GridBagConstraints();
101: gridBagConstraints.gridx = 0;
102: gridBagConstraints.gridy = 1;
103: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
104: panel.add(delayCheckBox, gridBagConstraints);
105:
106: interactiveCheckBox.setSelected(true);
107: interactiveCheckBox.setText("Interactive Cube");
108: interactiveCheckBox
109: .setToolTipText("Tests the use of AWT behaviors on the displayed component.");
110: interactiveCheckBox.setBorder(javax.swing.BorderFactory
111: .createEmptyBorder(0, 0, 0, 0));
112: interactiveCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
113: interactiveCheckBox.addActionListener(this );
114:
115: gridBagConstraints = new java.awt.GridBagConstraints();
116: gridBagConstraints.gridx = 0;
117: gridBagConstraints.gridy = 2;
118: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
119: panel.add(interactiveCheckBox, gridBagConstraints);
120:
121: randomCheckBox.setText("Random start angle");
122: randomCheckBox.setBorder(javax.swing.BorderFactory
123: .createEmptyBorder(0, 0, 0, 0));
124: randomCheckBox.setEnabled(false);
125: randomCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
126: gridBagConstraints = new java.awt.GridBagConstraints();
127: gridBagConstraints.gridx = 0;
128: gridBagConstraints.gridy = 3;
129: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
130: panel.add(randomCheckBox, gridBagConstraints);
131:
132: scrollPane.setViewportView(panel);
133:
134: splitPane.setLeftComponent(scrollPane);
135:
136: desktopPane.setBackground(new java.awt.Color(153, 153, 201));
137: desktopPane.setPreferredSize(new java.awt.Dimension(300, 300));
138: splitPane.setRightComponent(desktopPane);
139:
140: getContentPane().add(splitPane, java.awt.BorderLayout.CENTER);
141:
142: java.awt.Dimension screenSize = java.awt.Toolkit
143: .getDefaultToolkit().getScreenSize();
144: setBounds((screenSize.width - 1011) / 2,
145: (screenSize.height - 733) / 2, 1011, 733);
146: }
147:
148: // Code for dispatching events from components to event handlers.
149:
150: public void actionPerformed(java.awt.event.ActionEvent evt) {
151: if (evt.getSource() == addButton) {
152: JCanvas3DExample.this .addButtonActionPerformed(evt);
153: } else if (evt.getSource() == interactiveCheckBox) {
154: JCanvas3DExample.this
155: .interactiveCheckBoxActionPerformed(evt);
156: }
157: }// </editor-fold>//GEN-END:initComponents
158:
159: private void interactiveCheckBoxActionPerformed(
160: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_interactiveCheckBoxActionPerformed
161: randomCheckBox
162: .setEnabled(interactiveCheckBox.isSelected() ? false
163: : true);
164: }//GEN-LAST:event_interactiveCheckBoxActionPerformed
165:
166: private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
167: JInternalWorld iWorld;
168: // we create an internal world to be added within the JDesktop.
169: iWorld = new JInternalWorld(interactiveCheckBox.isSelected(),
170: delayCheckBox.isSelected(), randomCheckBox.isSelected());
171: iWorld.setSize(256, 256);
172: iWorld.setLocation(50, 50);
173: iWorld.setResizable(true);
174: desktopPane.add(iWorld);
175: iWorld.setVisible(true);
176: }//GEN-LAST:event_addButtonActionPerformed
177:
178: /**
179: * @param args the command line arguments
180: */
181: public static void main(String args[]) {
182: java.awt.EventQueue.invokeLater(new Runnable() {
183: public void run() {
184: new JCanvas3DExample().setVisible(true);
185: }
186: });
187: }
188:
189: // Variables declaration - do not modify//GEN-BEGIN:variables
190: private javax.swing.JButton addButton;
191: private javax.swing.JCheckBox delayCheckBox;
192: private javax.swing.JDesktopPane desktopPane;
193: private javax.swing.JCheckBox interactiveCheckBox;
194: private javax.swing.JPanel panel;
195: private javax.swing.JCheckBox randomCheckBox;
196: private javax.swing.JScrollPane scrollPane;
197: private javax.swing.JSplitPane splitPane;
198: // End of variables declaration//GEN-END:variables
199:
200: }
|