Source code: com/virtuosotechnologies/lib/basiccommand/builder/AbstractAWTContainerBuilderNode.java
1 /*
2 ================================================================================
3
4 FILE: AbstractAWTContainerBuilderNode.java
5
6 PROJECT:
7
8 Virtuoso Utilities
9
10 CONTENTS:
11
12 An element container builder that builds an AWT Container.
13
14 PROGRAMMERS:
15
16 Daniel Azuma (DA) <dazuma@kagi.com>
17
18 COPYRIGHT:
19
20 Copyright (C) 2003 Daniel Azuma (dazuma@kagi.com)
21
22 This program is free software; you can redistribute it and/or
23 modify it under the terms of the GNU General Public License as
24 published by the Free Software Foundation; either version 2
25 of the License, or (at your option) any later version.
26
27 This program is distributed in the hope that it will be useful,
28 but WITHOUT ANY WARRANTY; without even the implied warranty of
29 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 GNU General Public License for more details.
31
32 You should have received a copy of the GNU General Public
33 License along with this program; if not, write to
34 Free Software Foundation, Inc.
35 59 Temple Place, Suite 330
36 Boston, MA 02111-1307 USA
37
38 ================================================================================
39 */
40
41
42 package com.virtuosotechnologies.lib.basiccommand.builder;
43
44
45 import java.awt.Component;
46 import java.awt.Container;
47 import javax.swing.JComponent;
48
49 import com.virtuosotechnologies.lib.command.CommandNode;
50
51
52 /**
53 * An element container builder that builds an AWT Container. Subclass this
54 * to pass implement createChildNode(), and also to pass in the proper type
55 * of component in the constructor and/or implement createInitialElement().
56 */
57 public abstract class AbstractAWTContainerBuilderNode
58 extends AbstractContainerElementBuilderNode
59 {
60 /**
61 * Constructor implementation
62 */
63 protected AbstractAWTContainerBuilderNode(
64 CommandNode commandNode,
65 AbstractBranchBuilderNode parent,
66 int index)
67 {
68 super(commandNode, parent, index, null);
69 }
70
71
72 /**
73 * Constructor implementation
74 */
75 protected AbstractAWTContainerBuilderNode(
76 CommandNode commandNode,
77 AbstractBranchBuilderNode parent,
78 int index,
79 Container container)
80 {
81 super(commandNode, parent, index, container);
82 }
83
84
85 /**
86 * Add indexed element
87 */
88 protected void addElementAt(
89 int pos,
90 Object element)
91 {
92 Container container = (Container)getElement();
93 container.add((Component)element, pos);
94 // Not sure why the following is necessary, but the layout
95 // sometimes doesn't want to update otherwise.
96 if (container instanceof JComponent)
97 {
98 JComponent jcomp = (JComponent)container;
99 jcomp.revalidate();
100 jcomp.repaint();
101 }
102 }
103
104
105 /**
106 * Remove indexed element
107 */
108 protected void removeElementAt(
109 int pos)
110 {
111 Container container = (Container)getElement();
112 container.remove(pos);
113 // Not sure why the following is necessary, but the layout
114 // sometimes doesn't want to update otherwise.
115 if (container instanceof JComponent)
116 {
117 JComponent jcomp = (JComponent)container;
118 jcomp.revalidate();
119 jcomp.repaint();
120 }
121 }
122
123
124 /**
125 * Remove all elements
126 */
127 protected void removeAllElements()
128 {
129 Container container = (Container)getElement();
130 container.removeAll();
131 // Not sure why the following is necessary, but the layout
132 // sometimes doesn't want to update otherwise.
133 if (container instanceof JComponent)
134 {
135 JComponent jcomp = (JComponent)container;
136 jcomp.revalidate();
137 jcomp.repaint();
138 }
139 }
140 }