1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package coras.client.ui;
22
23 import java.awt.BorderLayout;
24 import java.awt.CardLayout;
25 import java.awt.event.MouseListener;
26 import java.beans.PropertyVetoException;
27
28 import javax.swing.JDesktopPane;
29 import javax.swing.JInternalFrame;
30 import javax.swing.JPanel;
31 import javax.swing.JScrollPane;
32 import javax.swing.JSplitPane;
33 import javax.swing.JTree;
34 import javax.swing.event.TreeSelectionListener;
35 import javax.swing.tree.DefaultMutableTreeNode;
36 import javax.swing.tree.TreeModel;
37 import javax.swing.tree.TreePath;
38
39 import coras.common.CorasElement;
40 import coras.common.CorasPackage;
41 /***
42 * @author fvr
43 *
44 * TODO To change the template for this generated type comment go to
45 * Window - Preferences - Java - Code Style - Code Templates
46 */
47 public class PackagePanel extends JPanel {
48
49 private JSplitPane horizontalSplitPane = null;
50 private JSplitPane verticalSplitPane = null;
51 private JScrollPane treeScrollPane = null;
52 private JTree tree = null;
53 private JDesktopPane desktopPane = null;
54 private CorasPackage thePackage;
55 private JPanel infoPanel = null;
56 private JPanel noInfoPanel = null;
57 private PackageDetailsPanel packageDetailsPanel = null;
58 private ElementDetailsPanel elementDetailsPanel = null;
59 /***
60 * This is the default constructor
61 */
62 public PackagePanel() {
63 super();
64 initialize();
65 }
66
67 public void setTreeModel(TreeModel model) {
68 getTree().setModel(model);
69 }
70
71 public void addTreeSelectionListener(TreeSelectionListener listener) {
72 getTree().addTreeSelectionListener(listener);
73 }
74
75 public void addTreeMouseListener(MouseListener listener) {
76 getTree().addMouseListener(listener);
77 }
78
79 /***
80 * @param subprocessNode
81 */
82 public void makeVisible(DefaultMutableTreeNode subprocessNode) {
83 getTree().makeVisible(new TreePath(subprocessNode.getPath()));
84 }
85
86 public synchronized void setCategoryEnabled(boolean enabled) {
87 getPackageDetailsPanel().setCategoryEnabled(enabled);
88 getElementDetailsPanel().setCategoryEnabled(enabled);
89 }
90
91 public synchronized void setDomainEnabled(boolean enabled) {
92 getPackageDetailsPanel().setDomainEnabled(enabled);
93 getElementDetailsPanel().setDomainEnabled(enabled);
94 }
95
96 /***
97 * @param frame
98 */
99 public void addInternalFrame(JInternalFrame frame) {
100 getDesktopPane().add(frame);
101 }
102
103 public void removeInternalFrame(JInternalFrame frame) {
104 getDesktopPane().remove(frame);
105 }
106
107 /***
108 * @param projectFrame
109 */
110 public void setActiveInternalFrame(JInternalFrame frame) {
111 try {
112 frame.setIcon(false);
113 } catch (PropertyVetoException e) {
114
115 e.printStackTrace();
116 }
117 getDesktopPane().moveToFront(frame);
118 getDesktopPane().getDesktopManager().activateFrame(frame);
119 }
120
121 /***
122 * This method initializes this
123 *
124 * @return void
125 */
126 private void initialize() {
127 this.setLayout(new BorderLayout());
128 this.setBounds(0, 0, 500, 400);
129 this.add(getHorizontalSplitPane(), java.awt.BorderLayout.CENTER);
130 }
131
132 /***
133 * This method initializes jSplitPane
134 *
135 * @return javax.swing.JSplitPane
136 */
137 private JSplitPane getHorizontalSplitPane() {
138 if (horizontalSplitPane == null) {
139 horizontalSplitPane = new JSplitPane();
140 horizontalSplitPane.setLeftComponent(getVerticalSplitPane());
141 horizontalSplitPane.setRightComponent(getDesktopPane());
142 }
143 return horizontalSplitPane;
144 }
145
146 /***
147 * This method initializes jSplitPane1
148 *
149 * @return javax.swing.JSplitPane
150 */
151 private JSplitPane getVerticalSplitPane() {
152 if (verticalSplitPane == null) {
153 verticalSplitPane = new JSplitPane();
154 verticalSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
155 verticalSplitPane.setTopComponent(getTreeScrollPane());
156 verticalSplitPane.setBottomComponent(getInfoPanel());
157 }
158 return verticalSplitPane;
159 }
160
161 /***
162 * This method initializes jScrollPane
163 *
164 * @return javax.swing.JScrollPane
165 */
166 private JScrollPane getTreeScrollPane() {
167 if (treeScrollPane == null) {
168 treeScrollPane = new JScrollPane();
169 treeScrollPane.setViewportView(getTree());
170 }
171 return treeScrollPane;
172 }
173
174 /***
175 * This method initializes jTree
176 *
177 * @return javax.swing.JTree
178 */
179 private JTree getTree() {
180 if (tree == null) {
181 tree = new JTree();
182 tree.setCellRenderer(new CorasTreeCellRenderer());
183 tree.setToggleClickCount(-1);
184 tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
185 public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
186 if (e.isAddedPath()) {
187 TreePath path = e.getPath();
188 DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
189 Object o = node.getUserObject();
190 CardLayout layout = (CardLayout) getInfoPanel().getLayout();
191 if (o instanceof CorasPackage) {
192 getPackageDetailsPanel().setPackage((CorasPackage) o);
193 layout.show(getInfoPanel(), getPackageDetailsPanel().getName());
194 } else if (o instanceof CorasElement) {
195 getElementDetailsPanel().setElement((CorasElement) o);
196 layout.show(getInfoPanel(), getElementDetailsPanel().getName());
197 } else {
198 layout.show(getInfoPanel(), getNoInfoPanel().getName());
199 }
200 }
201 }
202 });
203 }
204 return tree;
205 }
206
207 /***
208 * This method initializes jDesktopPane
209 *
210 * @return javax.swing.JDesktopPane
211 */
212 private JDesktopPane getDesktopPane() {
213 if (desktopPane == null) {
214 desktopPane = new JDesktopPane();
215 }
216 return desktopPane;
217 }
218
219 /***
220 * This method initializes jPanel
221 *
222 * @return javax.swing.JPanel
223 */
224 private JPanel getInfoPanel() {
225 if (infoPanel == null) {
226 infoPanel = new JPanel();
227 infoPanel.setLayout(new CardLayout());
228 infoPanel.add(getNoInfoPanel(), getNoInfoPanel().getName());
229 infoPanel.add(getPackageDetailsPanel(), getPackageDetailsPanel().getName());
230 infoPanel.add(getElementDetailsPanel(), getElementDetailsPanel().getName());
231 }
232 return infoPanel;
233 }
234 /***
235 * This method initializes jPanel
236 *
237 * @return javax.swing.JPanel
238 */
239 private JPanel getNoInfoPanel() {
240 if (noInfoPanel == null) {
241 noInfoPanel = new JPanel();
242 noInfoPanel.setName("noInfo");
243 noInfoPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "No Selection", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
244 }
245 return noInfoPanel;
246 }
247 /***
248 * This method initializes packageDetailsPanel
249 *
250 * @return coras.client.ui.PackageDetailsPanel
251 */
252 private PackageDetailsPanel getPackageDetailsPanel() {
253 if (packageDetailsPanel == null) {
254 packageDetailsPanel = new PackageDetailsPanel();
255 packageDetailsPanel.setName("packageDetailsPanel");
256 packageDetailsPanel.setEditable(false);
257 packageDetailsPanel.setDomainEnabled(false);
258 packageDetailsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Package Info", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
259 }
260 return packageDetailsPanel;
261 }
262 /***
263 * This method initializes elementDetailsPanel
264 *
265 * @return coras.client.ui.ElementDetailsPanel
266 */
267 private ElementDetailsPanel getElementDetailsPanel() {
268 if (elementDetailsPanel == null) {
269 elementDetailsPanel = new ElementDetailsPanel();
270 elementDetailsPanel.setName("elementDetailsPanel");
271 elementDetailsPanel.setEditable(false);
272 elementDetailsPanel.setDomainEnabled(false);
273 elementDetailsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Element Info", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
274 }
275 return elementDetailsPanel;
276 }
277
278 }