Revision: 912
Author: allain.lalonde
Date: Wed Dec 2 11:50:15 2009
Log: Modifying SwingLayoutNode so that it accepts a Container during
construction. Otherwise, creating a node that uses BoxLayout is impossible
without making the node's layout mutable.
http://code.google.com/p/piccolo2d/source/detail?r=912
Modified:
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/SwingLayoutExample.java
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/swing/SwingLayoutNode.java
=======================================
---
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/SwingLayoutExample.java
Tue Dec 1 14:06:59 2009
+++
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/SwingLayoutExample.java
Wed Dec 2 11:50:15 2009
@@ -121,8 +121,9 @@
gridBagLayoutNode.setOffset(400, 250);
rootNode.addChild(gridBagLayoutNode);
- final SwingLayoutNode boxLayoutNode = new SwingLayoutNode();
- boxLayoutNode.setLayout(new
BoxLayout(boxLayoutNode.getContainer(), BoxLayout.Y_AXIS));
+ JPanel container = new JPanel();
+ container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
+ final SwingLayoutNode boxLayoutNode = new
SwingLayoutNode(container);
boxLayoutNode.addChild(new MyPPath(new Rectangle2D.Double(0, 0,
50, 50), Color.yellow, new BasicStroke(2),
Color.red));
boxLayoutNode.addChild(new MyPPath(new Rectangle2D.Double(0, 0,
100, 50), Color.orange, new BasicStroke(2),
=======================================
---
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/swing/SwingLayoutNode.java
Wed Dec 2 11:29:54 2009
+++
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/swing/SwingLayoutNode.java
Wed Dec 2 11:50:15 2009
@@ -38,6 +38,7 @@
import java.util.Collection;
import java.util.Iterator;
+import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JPanel;
@@ -63,7 +64,7 @@
private static final Anchor DEFAULT_ANCHOR = Anchor.WEST;
/** Container for ProxyComponents. */
- private final JPanel container;
+ private final Container container;
private final PropertyChangeListener propertyChangeListener;
@@ -85,7 +86,21 @@
* not be null.
*/
public SwingLayoutNode(final LayoutManager layoutManager) {
- container = new JPanel(layoutManager);
+ this(new JPanel(layoutManager));
+ }
+
+ /**
+ * Constructs a SwingLayoutNode that lays out its children as though
they
+ * were children of the provided Container.
+ *
+ * Whatever LayoutManager is being used by the container will be used
when
+ * laying out nodes.
+ *
+ * @param container Container in which child nodes will effectively be
laid
+ * out
+ */
+ public SwingLayoutNode(Container container) {
+ this.container = container;
propertyChangeListener = new PropertyChangeListener() {
public void propertyChange(final PropertyChangeEvent event) {
final String propertyName = event.getPropertyName();
@@ -131,7 +146,7 @@
*/
public Container getContainer() {
return container;
- }
+ }
/**
* Adds a child at the specified index. Like Swing, bad things can
happen if
--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en