Revision: 837
Author: allain.lalonde
Date: Tue Oct 27 14:02:28 2009
Log: Expanding new PSwing example.
http://code.google.com/p/piccolo2d/source/detail?r=837
Modified:
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingExample3.java
=======================================
---
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingExample3.java
Fri Oct 23 13:53:33 2009
+++
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingExample3.java
Tue Oct 27 14:02:28 2009
@@ -28,135 +28,208 @@
*/
package edu.umd.cs.piccolo.examples.pswing;
+import java.awt.Color;
import java.awt.Dimension;
-import java.awt.Graphics2D;
-
+import java.awt.Graphics;
+
+import javax.swing.ButtonGroup;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
import javax.swing.JFrame;
+import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.SwingUtilities;
import edu.umd.cs.piccolo.PNode;
import edu.umd.cs.piccolo.nodes.PText;
-import edu.umd.cs.piccolo.util.PPaintContext;
import edu.umd.cs.piccolox.pswing.PSwing;
import edu.umd.cs.piccolox.pswing.PSwingCanvas;
/**
* User: Sam Reid Date: Jul 11, 2005 Time: 12:15:55 PM
*/
-public class PSwingExample3 extends JFrame {
+public class PSwingExample3 extends JFrame {
private static final long serialVersionUID = 1L;
- private ExampleList exampleList;
public PSwingExample3() {
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- PSwingCanvas canvas;
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set up basic frame
setBounds(50, 50, 750, 750);
setResizable(true);
setBackground(null);
setVisible(true);
- canvas = new PSwingCanvas();
- canvas.setPanEventHandler(null);
+ final PSwingCanvas canvas = new PSwingCanvas();
getContentPane().add(canvas);
- validate();
-
- exampleList = new ExampleList("Button Examples");
-
- addButtonExamples();
-
- canvas.getLayer().addChild(exampleList);
-
-
canvas.getCamera().animateViewToCenterBounds(canvas.getLayer().getFullBounds(),
true, 1200);
+ validate();
+
+ ExampleGrid exampleGrid = new ExampleGrid(3);
+ exampleGrid.addChild(createButtonExamples());
+ exampleGrid.addChild(createSimpleComponentExamples());
+ canvas.getLayer().addChild(exampleGrid);
+ SwingUtilities.invokeLater(new Runnable() {
+
+ public void run() {
+
canvas.getCamera().animateViewToCenterBounds(canvas.getLayer().getFullBounds(),
true, 1200);
+ }
+
+ });
+
+ }
+
+ private ExampleList createSimpleComponentExamples() {
+ ExampleList exampleList = new ExampleList("Simple Components");
+ exampleList.addExample("JLabel", new PSwing(new JLabel("JLabel
Example")));
+ exampleList.addExample("JCheckBox ", new PSwing(new JCheckBox()));
+
+ JRadioButton radio1 = new JRadioButton("Radio Option 1");
+ JRadioButton radio2 = new JRadioButton("Radio Option 1");
+ ButtonGroup buttonGroup = new ButtonGroup();
+ buttonGroup.add(radio1);
+ buttonGroup.add(radio2);
+ exampleList.addExample("RadioButton 1", radio1);
+ exampleList.addExample("RadioButton 2", radio2);
+
+ JPanel examplePanel = new JPanel() {
+
+ protected void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ g.setColor(Color.RED);
+ g.fillRect(0, 0, getWidth(), getHeight());
+
+ }
+ };
+ examplePanel.setPreferredSize(new Dimension(50, 50));
+
+ exampleList.addExample("Custom JPanel ", examplePanel);
+ return exampleList;
}
- private void addButtonExamples() {
- addButtonAloneNoSizing();
- addButtonAlone200x50();
- addButtonOnPanelNoSizing();
- addButtonOnPanel200x50();
- addButtonAlone10x10();
+ private ExampleList createButtonExamples() {
+ ExampleList exampleList = new ExampleList("Button Examples");
+ addButtonAloneNoSizing(exampleList);
+ addButtonAlone200x50(exampleList);
+ addButtonOnPanelNoSizing(exampleList);
+ addButtonOnPanel200x50(exampleList);
+ addButtonAlone10x10(exampleList);
+ return exampleList;
}
- private void addButtonAloneNoSizing() {
+ private void addButtonAloneNoSizing(ExampleList exampleList) {
JButton button = new JButton("Button");
PSwing pButton = new PSwing(button);
exampleList.addExample("Alone - No Sizing", pButton);
}
-
- private void addButtonAlone200x50() {
+
+ private void addButtonAlone200x50(ExampleList exampleList) {
JButton button = new JButton("Button");
button.setPreferredSize(new Dimension(200, 50));
PSwing pButton = new PSwing(button);
exampleList.addExample("Alone - 200x50", pButton);
}
-
- private void addButtonAlone10x10() {
+
+ private void addButtonAlone10x10(ExampleList exampleList) {
JButton button = new JButton("Button");
button.setPreferredSize(new Dimension(10, 10));
PSwing pButton = new PSwing(button);
exampleList.addExample("Alone - 10x10", pButton);
}
-
- private void addButtonOnPanelNoSizing() {
+
+ private void addButtonOnPanelNoSizing(ExampleList exampleList) {
JButton button = new JButton("Button");
JPanel panel = new JPanel();
- panel.add(button);
+ panel.add(button);
PSwing pPanel = new PSwing(panel);
-
+
exampleList.addExample("On JPanel - No Sizing", pPanel);
}
-
- private void addButtonOnPanel200x50() {
+
+ private void addButtonOnPanel200x50(ExampleList exampleList) {
JButton button = new JButton("Button");
button.setPreferredSize(new Dimension(200, 50));
-
+
JPanel panel = new JPanel();
panel.add(button);
PSwing pPanel = new PSwing(panel);
-
+
exampleList.addExample("On JPanel - 200x50", pPanel);
- }
+ }
public static void main(final String[] args) {
new PSwingExample3().setVisible(true);
- }
-
+ }
+
+ class ExampleGrid extends PNode {
+ private int columns;
+
+ public ExampleGrid(int columns) {
+ this.columns = columns;
+ }
+
+ public void layoutChildren() {
+ double[] colWidths = calculateColumnWidths();
+
+ double currentY = 0;
+ for (int i = 0; i < getChildrenCount(); i++) {
+ PNode child = getChild(i);
+ child.setOffset(colWidths[i % columns] * 1.25, currentY *
1.25);
+ if (i % columns == 0 && i > 0) {
+ currentY = getFullBounds().getHeight();
+ }
+ }
+ }
+
+ private double[] calculateColumnWidths() {
+ double[] colWidths = new double[columns];
+ for (int i = 0; i < getChildrenCount(); i++) {
+ PNode child = getChild(i);
+ colWidths[i % columns] = Math.max(colWidths[i % columns],
child.getFullBounds().getWidth()
+ * child.getScale());
+ }
+ return colWidths;
+ }
+ }
+
class ExampleList extends PText {
ExampleList(String name) {
super(name);
setScale(2);
}
-
+
public void layoutChildren() {
PNode node;
double currentY = getHeight();
- for (int i=0; i<getChildrenCount(); i++) {
+ for (int i = 0; i < getChildrenCount(); i++) {
node = getChild(i);
node.setOffset(0, currentY);
currentY += node.getFullBounds().getHeight() + 5;
- }
- }
-
+ }
+ }
+
public void addExample(String name, PNode example) {
ExampleNode exampleNode = new ExampleNode(name, example);
exampleNode.setScale(0.5);
addChild(exampleNode);
}
-
+
+ public void addExample(String name, JComponent example) {
+ addExample(name, new PSwing(example));
+ }
+
class ExampleNode extends PText {
ExampleNode(String name, PNode example) {
super(name);
-
+
addChild(example);
}
-
+
public void layoutChildren() {
PNode example = getChild(0);
- example.setOffset(getWidth()+5, 0);
- //example.setScale(getHeight() / example.getHeight());
- }
- }
+ example.setOffset(getWidth() + 5, 0);
+ // example.setScale(getHeight() / example.getHeight());
+ }
+ }
}
}
--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---