KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > modeler > userperspective > ViewEditor


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, is permitted provided that the following conditions are met: -
6  * Redistributions of source code must retain the above copyright notice, this
7  * list of conditions and the following disclaimer. - Redistributions in binary
8  * form must reproduce the above copyright notice, this list of conditions and
9  * the following disclaimer in the documentation and/or other materials
10  * provided with the distribution. - All advertising materials mentioning
11  * features or use of this software must display the following acknowledgment:
12  * "This product includes Djeneric." - Products derived from this software may
13  * not be called "Djeneric" nor may "Djeneric" appear in their names without
14  * prior written permission of Genimen BV. - Redistributions of any form
15  * whatsoever must retain the following acknowledgment: "This product includes
16  * Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG, OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.modeler.userperspective;
31
32 import java.awt.BorderLayout JavaDoc;
33 import java.awt.Color JavaDoc;
34 import java.awt.Dimension JavaDoc;
35 import java.awt.FlowLayout JavaDoc;
36 import java.awt.event.ActionEvent JavaDoc;
37 import java.awt.event.ActionListener JavaDoc;
38 import java.awt.event.KeyAdapter JavaDoc;
39 import java.awt.event.KeyEvent JavaDoc;
40 import java.awt.event.MouseEvent JavaDoc;
41 import java.util.ArrayList JavaDoc;
42 import java.util.Collections JavaDoc;
43 import java.util.HashMap JavaDoc;
44 import java.util.Iterator JavaDoc;
45
46 import javax.swing.BorderFactory JavaDoc;
47 import javax.swing.DefaultComboBoxModel JavaDoc;
48 import javax.swing.JButton JavaDoc;
49 import javax.swing.JCheckBox JavaDoc;
50 import javax.swing.JComboBox JavaDoc;
51 import javax.swing.JLabel JavaDoc;
52 import javax.swing.JList JavaDoc;
53 import javax.swing.JOptionPane JavaDoc;
54 import javax.swing.JPanel JavaDoc;
55 import javax.swing.JScrollPane JavaDoc;
56 import javax.swing.JSplitPane JavaDoc;
57 import javax.swing.JTabbedPane JavaDoc;
58 import javax.swing.JTextArea JavaDoc;
59 import javax.swing.JTextField JavaDoc;
60 import javax.swing.JToolTip JavaDoc;
61 import javax.swing.JTree JavaDoc;
62 import javax.swing.border.Border JavaDoc;
63 import javax.swing.border.TitledBorder JavaDoc;
64 import javax.swing.event.TreeSelectionEvent JavaDoc;
65 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
66 import javax.swing.tree.DefaultTreeModel JavaDoc;
67 import javax.swing.tree.TreeNode JavaDoc;
68 import javax.swing.tree.TreePath JavaDoc;
69
70 import com.genimen.djeneric.language.Messages;
71 import com.genimen.djeneric.repository.DjExtent;
72 import com.genimen.djeneric.repository.DjProperty;
73 import com.genimen.djeneric.repository.DjRelation;
74 import com.genimen.djeneric.repository.exceptions.CatalogException;
75 import com.genimen.djeneric.repository.exceptions.DjenericException;
76 import com.genimen.djeneric.repository.exceptions.ObjectNotDefinedException;
77 import com.genimen.djeneric.structure.EditorDefinition;
78 import com.genimen.djeneric.structure.EditorDefinitionComparator;
79 import com.genimen.djeneric.structure.ExtentUsage;
80 import com.genimen.djeneric.structure.RelationDescriptor;
81 import com.genimen.djeneric.structure.RelationUsage;
82 import com.genimen.djeneric.structure.ResourceDefinition;
83 import com.genimen.djeneric.structure.ResourceDefinitionComparator;
84 import com.genimen.djeneric.structure.ScriptDefinition;
85 import com.genimen.djeneric.tools.io.DjenericDocumentHandler;
86 import com.genimen.djeneric.tools.modeler.ModelEditor;
87 import com.genimen.djeneric.tools.modeler.dialogs.ExtentSelectorDialog;
88 import com.genimen.djeneric.ui.DjCloseable;
89 import com.genimen.djeneric.ui.DjMultiLineToolTip;
90 import com.genimen.djeneric.ui.DjPropertyPathCompleter;
91 import com.genimen.djeneric.ui.DjVerticalFlowLayout;
92 import com.genimen.djeneric.ui.Util;
93 import com.genimen.djeneric.util.DjLogger;
94 import com.genimen.djeneric.util.DjStringComparator;
95
96 public class ViewEditor extends JPanel JavaDoc implements DjCloseable
97 {
98   private static final long serialVersionUID = 1L;
99   BorderLayout JavaDoc borderLayout1 = new BorderLayout JavaDoc();
100   JSplitPane JavaDoc _treeSplitter = new JSplitPane JavaDoc();
101   ExtentNode _root = new ExtentNode(new ExtentUsage());
102   DefaultTreeModel JavaDoc _treeModel = new DefaultTreeModel JavaDoc(_root);
103   ExtentNodeRenderer _treeCellRendrer = new ExtentNodeRenderer();
104   boolean _ignoreEditorChange = false;
105   boolean _ignoreImageIconChange = false;
106
107   DefaultTreeModel JavaDoc _editorTreeModel;
108
109   ModelEditor _modelEditor;
110   JPanel JavaDoc jPanel9 = new JPanel JavaDoc();
111   JScrollPane JavaDoc jScrollPane1 = new JScrollPane JavaDoc();
112   BorderLayout JavaDoc borderLayout8 = new BorderLayout JavaDoc();
113   JCheckBox JavaDoc _chkDeleteAllowed = new JCheckBox JavaDoc();
114   JCheckBox JavaDoc _chkInsertAllowed = new JCheckBox JavaDoc();
115   JPanel JavaDoc _pnlVisualRight = new JPanel JavaDoc();
116   JCheckBox JavaDoc _chkEditAllowed = new JCheckBox JavaDoc();
117   DjVerticalFlowLayout verticalFlowLayout2 = new DjVerticalFlowLayout();
118   JPanel JavaDoc _pnlVisualLeft = new JPanel JavaDoc();
119   DjVerticalFlowLayout verticalFlowLayout = new DjVerticalFlowLayout();
120   JTree JavaDoc _tree = new JTree JavaDoc();
121   JLabel JavaDoc _lblTitle = new JLabel JavaDoc();
122   JTextField JavaDoc _edtNodeTitle = new JTextField JavaDoc();
123   JLabel JavaDoc _lblExtent = new JLabel JavaDoc();
124   JLabel JavaDoc _lblExtentName = new JLabel JavaDoc();
125   JLabel JavaDoc _lblImageIcon = new JLabel JavaDoc();
126   JTextField JavaDoc _edtDescriptor = new JTextField JavaDoc()
127                                                    {
128                                                      private static final long serialVersionUID = 1L;
129
130                                                      public JToolTip JavaDoc createToolTip()
131                                                      {
132                                                        DjMultiLineToolTip tip = new DjMultiLineToolTip();
133                                                        tip.setComponent(this);
134                                                        return tip;
135                                                      }
136                                                    };
137   JLabel JavaDoc _lblId = new JLabel JavaDoc();
138   JTextField JavaDoc _edtNodeId = new JTextField JavaDoc();
139   JCheckBox JavaDoc _chkRecursive = new JCheckBox JavaDoc();
140   JTabbedPane JavaDoc _mainTab = new JTabbedPane JavaDoc();
141   JList JavaDoc _lstExtents = new JList JavaDoc();
142   JPanel JavaDoc _pnlExtents = new JPanel JavaDoc();
143   JButton JavaDoc _butStructureAdd = new JButton JavaDoc();
144   JButton JavaDoc _butStructureDelete = new JButton JavaDoc();
145   DjVerticalFlowLayout verticalFlowLayout1 = new DjVerticalFlowLayout();
146   JButton JavaDoc _butStructureUp = new JButton JavaDoc();
147   JPanel JavaDoc _pnlRightBelow = new JPanel JavaDoc();
148   JPanel JavaDoc jPanel3 = new JPanel JavaDoc();
149   JPanel JavaDoc _pnlButtons = new JPanel JavaDoc();
150   BorderLayout JavaDoc borderLayout3 = new BorderLayout JavaDoc();
151   BorderLayout JavaDoc borderLayout2 = new BorderLayout JavaDoc();
152   JButton JavaDoc _butStructureDown = new JButton JavaDoc();
153   JScrollPane JavaDoc _scrExtents = new JScrollPane JavaDoc();
154   JCheckBox JavaDoc _chkHideAddedExtents = new JCheckBox JavaDoc();
155   EditorEditor _pnlEditor = new EditorEditor();
156   ArrayList JavaDoc _allEditors = new ArrayList JavaDoc();
157   ArrayList JavaDoc _allScripts = new ArrayList JavaDoc();
158   ArrayList JavaDoc _allResources = new ArrayList JavaDoc();
159   BorderLayout JavaDoc borderLayout5 = new BorderLayout JavaDoc();
160   Border JavaDoc border1;
161   TitledBorder JavaDoc titledBorder1;
162   JLabel JavaDoc _lblOqlWhere = new JLabel JavaDoc();
163   JLabel JavaDoc _lblRecursive = new JLabel JavaDoc();
164   JComboBox JavaDoc _cbbEditor = new JComboBox JavaDoc();
165   JComboBox JavaDoc _cbbEditorTarget = new JComboBox JavaDoc();
166   JLabel JavaDoc _lblDescriptor = new JLabel JavaDoc();
167   JTextArea JavaDoc _edtOqlWhere = new JTextArea JavaDoc();
168   ResourceManagerPanel _pnlResources = new ResourceManagerPanel();
169   JLabel JavaDoc _lblEditorTarget = new JLabel JavaDoc();
170   JLabel JavaDoc _lblEditor = new JLabel JavaDoc();
171   JComboBox JavaDoc _cbbImageIcon = new JComboBox JavaDoc();
172   ScriptEditor _pnlScripts = new ScriptEditor();
173   boolean _isVersionSafeToSafe = true;
174   JPanel JavaDoc _pnlOptions = new JPanel JavaDoc();
175   FlowLayout JavaDoc flowLayoutCheckboxes = new FlowLayout JavaDoc();
176   JCheckBox JavaDoc _chkOnDiagramOnly = new JCheckBox JavaDoc();
177   DjPropertyPathCompleter _oqlCompleter = null;
178   DjPropertyPathCompleter _descriptorCompleter = null;
179   JTabbedPane JavaDoc _nodeTab = new JTabbedPane JavaDoc();
180   JPanel JavaDoc _pnlNodeVisuals = new JPanel JavaDoc();
181   JPanel JavaDoc _pnlNodeEditing = new JPanel JavaDoc();
182   JPanel JavaDoc _pnlNodeAdvanced = new JPanel JavaDoc();
183   BorderLayout JavaDoc borderLayout4 = new BorderLayout JavaDoc();
184   BorderLayout JavaDoc borderLayout6 = new BorderLayout JavaDoc();
185   BorderLayout JavaDoc borderLayout9 = new BorderLayout JavaDoc();
186   JPanel JavaDoc _pnlEditingLeft = new JPanel JavaDoc();
187   JPanel JavaDoc _pnlEditingRight = new JPanel JavaDoc();
188   JPanel JavaDoc _pnlAdvancedLeft = new JPanel JavaDoc();
189   JPanel JavaDoc _pnlAdvancedRight = new JPanel JavaDoc();
190   DjVerticalFlowLayout verticalFlowLayout3 = new DjVerticalFlowLayout();
191   DjVerticalFlowLayout verticalFlowLayout4 = new DjVerticalFlowLayout();
192   DjVerticalFlowLayout verticalFlowLayout5 = new DjVerticalFlowLayout();
193   DjVerticalFlowLayout verticalFlowLayout6 = new DjVerticalFlowLayout();
194   JLabel JavaDoc _lblCustomNodeClass = new JLabel JavaDoc();
195   JCheckBox JavaDoc _chkCustomNodeClass = new JCheckBox JavaDoc();
196   JLabel JavaDoc _lblCustomNodeClassChk = new JLabel JavaDoc();
197   JTextField JavaDoc _edtCustomNodeClass = new JTextField JavaDoc();
198   JPanel JavaDoc _pnlCustomNodeClass = new JPanel JavaDoc();
199   BorderLayout JavaDoc borderLayout7 = new BorderLayout JavaDoc();
200   JButton JavaDoc _butAddCustom = new JButton JavaDoc();
201   JScrollPane JavaDoc jScrollPane2 = new JScrollPane JavaDoc();
202   JPanel JavaDoc jPanel1 = new JPanel JavaDoc();
203   BorderLayout JavaDoc borderLayout10 = new BorderLayout JavaDoc();
204
205   public ViewEditor()
206   {
207   }
208
209   public ViewEditor(ModelEditor editor)
210   {
211     _modelEditor = editor;
212
213     try
214     {
215       _pnlEditor.setEditorReferences(this);
216       _pnlResources.setEditorReferences(this);
217       _pnlScripts.setEditorReferences(this);
218       jbInit();
219       _butAddCustom.setIcon(ModelEditor.getImageIcon("addcustom.gif"));
220       _butStructureAdd.setIcon(ModelEditor.getImageIcon("add.gif"));
221       _butStructureDelete.setIcon(ModelEditor.getImageIcon("remove.gif"));
222       _butStructureUp.setIcon(ModelEditor.getImageIcon("up.gif"));
223       _butStructureDown.setIcon(ModelEditor.getImageIcon("down.gif"));
224       _tree.putClientProperty("JTree.lineStyle", "Angled");
225       _cbbImageIcon.setRenderer(new ResourceListRenderer(false));
226
227       _oqlCompleter = new DjPropertyPathCompleter(null, _edtOqlWhere);
228       _oqlCompleter.addStatusListener(editor);
229
230       _descriptorCompleter = new DjPropertyPathCompleter(null, _edtDescriptor);
231       _descriptorCompleter.addStatusListener(editor);
232
233     }
234     catch (Exception JavaDoc ex)
235     {
236       JOptionPane.showMessageDialog(this, ex.getMessage());
237       DjLogger.log(ex);
238     }
239   }
240
241   void jbInit() throws Exception JavaDoc
242   {
243     flowLayoutCheckboxes.setAlignment(FlowLayout.LEFT);
244     border1 = BorderFactory.createEtchedBorder(Color.white, new Color JavaDoc(142, 142, 142));
245     titledBorder1 = new TitledBorder JavaDoc(border1, Messages.getString("ViewEditor.NodeSettings"));
246     this.setLayout(borderLayout1);
247     jPanel9.setLayout(borderLayout8);
248     _pnlVisualRight.setLayout(verticalFlowLayout2);
249     _pnlVisualLeft.setLayout(verticalFlowLayout1);
250     _tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener JavaDoc()
251     {
252       public void valueChanged(TreeSelectionEvent JavaDoc e)
253       {
254         _tree_valueChanged(e);
255       }
256     });
257     _tree.setCellRenderer(_treeCellRendrer);
258     _tree.setModel(_treeModel);
259     _tree.setShowsRootHandles(false);
260     _tree.setAutoscrolls(true);
261     _tree.setDoubleBuffered(true);
262     _tree.setToggleClickCount(0);
263     _lblTitle.setText(Messages.getString("global.Title"));
264     _edtNodeTitle.addKeyListener(new java.awt.event.KeyAdapter JavaDoc()
265     {
266       public void keyReleased(KeyEvent JavaDoc e)
267       {
268         _edtNodeTitle_keyReleased(e);
269       }
270     });
271     _chkEditAllowed.addActionListener(new java.awt.event.ActionListener JavaDoc()
272     {
273       public void actionPerformed(ActionEvent JavaDoc e)
274       {
275         _chkEditAllowed_actionPerformed(e);
276       }
277     });
278     _chkInsertAllowed.addActionListener(new java.awt.event.ActionListener JavaDoc()
279     {
280       public void actionPerformed(ActionEvent JavaDoc e)
281       {
282         _chkInsertAllowed_actionPerformed(e);
283       }
284     });
285     _chkDeleteAllowed.addActionListener(new java.awt.event.ActionListener JavaDoc()
286     {
287       public void actionPerformed(ActionEvent JavaDoc e)
288       {
289         _chkDeleteAllowed_actionPerformed(e);
290       }
291     });
292     _lblExtent.setText(Messages.getString("global.Extent"));
293     _lblRecursive.setText(Messages.getString("ViewEditor.Recursive"));
294     _chkEditAllowed.setText(Messages.getString("global.EditAllowed"));
295     _chkInsertAllowed.setText(Messages.getString("global.Insertallowed"));
296     _chkDeleteAllowed.setToolTipText("");
297     _chkDeleteAllowed.setText(Messages.getString("global.DeleteAllowed"));
298     _lblImageIcon.setText(Messages.getString("ViewEditor.ImageIcon"));
299     _edtDescriptor.addKeyListener(new java.awt.event.KeyAdapter JavaDoc()
300     {
301       public void keyReleased(KeyEvent JavaDoc e)
302       {
303         _edtDescriptor_keyReleased(e);
304       }
305     });
306     _edtDescriptor.setToolTipText(Messages.getString("global.Descriptor"));
307
308     _lblId.setText(Messages.getString("ViewEditor.ID"));
309     _lblId.setToolTipText(Messages.getString("ViewEditor.IDTooltip"));
310     _edtNodeId.setToolTipText(Messages.getString("ViewEditor.IDTooltip"));
311     _edtNodeId.addKeyListener(new java.awt.event.KeyAdapter JavaDoc()
312     {
313       public void keyReleased(KeyEvent JavaDoc e)
314       {
315         _edtNodeId_keyReleased(e);
316       }
317     });
318     _chkRecursive.setText("");
319     _lblRecursive.setToolTipText(Messages.getString("ViewEditor.RecursiveTooltip"));
320     _chkRecursive.setToolTipText(Messages.getString("ViewEditor.RecursiveTooltip"));
321     _chkRecursive.addActionListener(new java.awt.event.ActionListener JavaDoc()
322     {
323       public void actionPerformed(ActionEvent JavaDoc e)
324       {
325         _chkRecursive_actionPerformed(e);
326       }
327     });
328     _lstExtents.addMouseListener(new java.awt.event.MouseAdapter JavaDoc()
329     {
330       public void mouseClicked(MouseEvent JavaDoc e)
331       {
332         _lstExtents_mouseClicked(e);
333       }
334     });
335
336     _pnlExtents.setLayout(borderLayout3);
337     _butStructureAdd.setPreferredSize(new Dimension JavaDoc(24, 24));
338     _butStructureAdd.addActionListener(new java.awt.event.ActionListener JavaDoc()
339     {
340       public void actionPerformed(ActionEvent JavaDoc e)
341       {
342         _butStructureAdd_actionPerformed(e);
343       }
344     });
345     _butStructureDelete.setPreferredSize(new Dimension JavaDoc(24, 24));
346     _butStructureDelete.addActionListener(new java.awt.event.ActionListener JavaDoc()
347     {
348       public void actionPerformed(ActionEvent JavaDoc e)
349       {
350         _butStructureDelete_actionPerformed(e);
351       }
352     });
353     _butStructureUp.setPreferredSize(new Dimension JavaDoc(24, 24));
354     _butStructureUp.addActionListener(new java.awt.event.ActionListener JavaDoc()
355     {
356       public void actionPerformed(ActionEvent JavaDoc e)
357       {
358         _butStructureUp_actionPerformed(e);
359       }
360     });
361     _pnlRightBelow.setLayout(borderLayout5);
362     jPanel3.setLayout(borderLayout2);
363     _pnlButtons.setLayout(verticalFlowLayout);
364     _butStructureDown.setPreferredSize(new Dimension JavaDoc(24, 24));
365     _butStructureDown.addActionListener(new java.awt.event.ActionListener JavaDoc()
366     {
367       public void actionPerformed(ActionEvent JavaDoc e)
368       {
369         _butStructureDown_actionPerformed(e);
370       }
371     });
372     _chkHideAddedExtents.setSelected(true);
373     _chkHideAddedExtents.setText(Messages.getString("ViewEditor.HideAdded"));
374     _chkHideAddedExtents.addActionListener(new java.awt.event.ActionListener JavaDoc()
375     {
376       public void actionPerformed(ActionEvent JavaDoc e)
377       {
378         _chkHideAddedExtents_actionPerformed(e);
379       }
380     });
381     _lblOqlWhere.setText(Messages.getString("ViewEditor.OQLWhere"));
382     _cbbEditor.setPreferredSize(new Dimension JavaDoc(130, 21));
383     _cbbEditor.addActionListener(new java.awt.event.ActionListener JavaDoc()
384     {
385       public void actionPerformed(ActionEvent JavaDoc e)
386       {
387         _cbbEditor_actionPerformed(e);
388       }
389     });
390     _cbbEditorTarget.setPreferredSize(new Dimension JavaDoc(130, 21));
391     _cbbEditorTarget.addActionListener(new java.awt.event.ActionListener JavaDoc()
392     {
393       public void actionPerformed(ActionEvent JavaDoc e)
394       {
395         _cbb_cbbEditorTarget_actionPerformed(e);
396       }
397     });
398     _lblDescriptor.setText(Messages.getString("global.Descriptor"));
399     _edtOqlWhere.addKeyListener(new java.awt.event.KeyAdapter JavaDoc()
400     {
401       public void keyReleased(KeyEvent JavaDoc e)
402       {
403         _edtQBEFilter_keyReleased(e);
404       }
405     });
406     _edtOqlWhere.setFont(new java.awt.Font JavaDoc("Monospaced", 0, 12));
407     _edtOqlWhere.setToolTipText(Messages.getString("ViewEditor.Oql2FilterWith"));
408
409     _edtDescriptor.setFont(new java.awt.Font JavaDoc("Monospaced", 0, 12));
410     _lblEditorTarget.setText(Messages.getString("ViewEditor.EditorTarget"));
411     _lblEditor.setText(Messages.getString("ViewEditor.Editor"));
412     _cbbImageIcon.addActionListener(new java.awt.event.ActionListener JavaDoc()
413     {
414       public void actionPerformed(ActionEvent JavaDoc e)
415       {
416         _cbbImageIcon_actionPerformed(e);
417       }
418     });
419     _cbbImageIcon.setPreferredSize(new Dimension JavaDoc(130, 21));
420     _pnlOptions.setLayout(flowLayoutCheckboxes);
421     _chkOnDiagramOnly.setSelected(true);
422     _chkOnDiagramOnly.setText(Messages.getString("ViewEditor.DiagramExtentsOnly"));
423     _chkOnDiagramOnly.addActionListener(new java.awt.event.ActionListener JavaDoc()
424     {
425       public void actionPerformed(ActionEvent JavaDoc e)
426       {
427         _chkOnDiagramOnly_actionPerformed(e);
428       }
429     });
430     _pnlNodeVisuals.setLayout(borderLayout4);
431     _pnlNodeEditing.setLayout(borderLayout6);
432     _pnlNodeAdvanced.setLayout(borderLayout9);
433     _pnlEditingLeft.setLayout(verticalFlowLayout3);
434     _pnlEditingRight.setLayout(verticalFlowLayout4);
435     _pnlAdvancedRight.setLayout(verticalFlowLayout5);
436     _pnlAdvancedLeft.setLayout(verticalFlowLayout6);
437     _lblCustomNodeClass.setText(Messages.getString("ViewEditor.CustomNodeClass"));
438     _lblCustomNodeClassChk.setText(Messages.getString("ViewEditor.HasCustomNodeClass"));
439     _edtCustomNodeClass.setFont(new java.awt.Font JavaDoc("Monospaced", 0, 12));
440     _edtCustomNodeClass.setToolTipText(Messages.getString("ViewEditor.CustomNodeClassTooltip"));
441     _edtCustomNodeClass.addKeyListener(new KeyAdapter JavaDoc()
442     {
443       public void keyReleased(KeyEvent JavaDoc e)
444       {
445         _edtCustomNodeClass_keyReleased(e);
446       }
447     });
448     _chkCustomNodeClass.addActionListener(new ActionListener JavaDoc()
449     {
450       public void actionPerformed(ActionEvent JavaDoc e)
451       {
452         _chkCustomNodeClass_actionPerformed(e);
453       }
454     });
455     _pnlCustomNodeClass.setLayout(borderLayout7);
456     _butAddCustom.setToolTipText(Messages.getString("ViewEditor.AddCustom"));
457     _butAddCustom.addActionListener(new ActionListener JavaDoc()
458     {
459       public void actionPerformed(ActionEvent JavaDoc e)
460       {
461         _butAddCustom_actionPerformed(e);
462       }
463     });
464     _butAddCustom.setPreferredSize(new Dimension JavaDoc(24, 24));
465     jPanel1.setLayout(borderLayout10);
466     _pnlOptions.add(_chkOnDiagramOnly, null);
467     _pnlOptions.add(_chkHideAddedExtents, null);
468     jPanel3.add(_scrExtents, BorderLayout.CENTER);
469     jPanel3.add(_pnlButtons, BorderLayout.WEST);
470     _scrExtents.getViewport().add(_lstExtents);
471     _treeSplitter.add(jPanel9, JSplitPane.LEFT);
472     jPanel9.add(jScrollPane1, BorderLayout.CENTER);
473     _treeSplitter.add(_pnlExtents, JSplitPane.RIGHT);
474     _pnlExtents.add(jPanel3, BorderLayout.CENTER);
475     jScrollPane1.getViewport().add(_tree, null);
476     jPanel3.add(_pnlRightBelow, BorderLayout.SOUTH);
477     _pnlButtons.add(_butStructureAdd);
478     _pnlButtons.add(_butAddCustom);
479     _pnlButtons.add(_butStructureDelete);
480     _pnlButtons.add(_butStructureUp);
481     _pnlButtons.add(_butStructureDown);
482     _mainTab.add(_treeSplitter, Messages.getString("ViewEditor.TreeStructure"));
483     _mainTab.add(_pnlEditor, Messages.getString("ViewEditor.Editors"));
484     _mainTab.add(_pnlResources, Messages.getString("global.Resources"));
485     _mainTab.add(_pnlScripts, Messages.getString("ViewEditor.Scripts"));
486
487     _pnlVisualLeft.add(_lblExtent, null);
488     _pnlVisualLeft.add(_lblId, null);
489     _pnlVisualLeft.add(_lblTitle, null);
490     _pnlVisualLeft.add(_lblDescriptor, null);
491     _pnlVisualLeft.add(_lblImageIcon, null);
492     _pnlVisualLeft.add(_lblRecursive, null);
493
494     _pnlVisualRight.add(_lblExtentName, null);
495     _pnlVisualRight.add(_edtNodeId, null);
496     _pnlVisualRight.add(_edtNodeTitle, null);
497     _pnlVisualRight.add(_edtDescriptor, null);
498     _pnlVisualRight.add(_cbbImageIcon, null);
499     _pnlVisualRight.add(_chkRecursive);
500     _pnlNodeVisuals.add(_pnlVisualLeft, java.awt.BorderLayout.WEST);
501     this.add(_mainTab, BorderLayout.CENTER);
502     _pnlNodeVisuals.add(_pnlVisualRight, java.awt.BorderLayout.CENTER);
503     _pnlRightBelow.add(_pnlOptions, java.awt.BorderLayout.CENTER);
504     _pnlRightBelow.add(_nodeTab, java.awt.BorderLayout.SOUTH);
505     _nodeTab.add(_pnlNodeVisuals, Messages.getString("global.General"));
506     _nodeTab.add(_pnlNodeEditing, Messages.getString("global.Editing"));
507     _nodeTab.add(_pnlNodeAdvanced, Messages.getString("global.Advanced"));
508     _pnlNodeEditing.add(_pnlEditingLeft, java.awt.BorderLayout.WEST);
509     _pnlEditingLeft.add(_lblEditorTarget);
510     _pnlEditingLeft.add(_lblEditor);
511     _pnlEditingLeft.add(_chkInsertAllowed);
512     _pnlEditingLeft.add(_chkEditAllowed);
513     _pnlNodeEditing.add(_pnlEditingRight, java.awt.BorderLayout.CENTER);
514     _pnlEditingRight.add(_cbbEditorTarget);
515     _pnlEditingRight.add(_cbbEditor);
516     _pnlEditingRight.add(_chkDeleteAllowed);
517     _pnlNodeAdvanced.add(_pnlAdvancedLeft, java.awt.BorderLayout.WEST);
518     _pnlAdvancedLeft.add(_lblCustomNodeClassChk);
519     _pnlAdvancedLeft.add(_lblOqlWhere, null);
520     _pnlAdvancedRight.add(_pnlCustomNodeClass);
521     _pnlCustomNodeClass.add(_chkCustomNodeClass, java.awt.BorderLayout.WEST);
522     _pnlCustomNodeClass.add(_edtCustomNodeClass, java.awt.BorderLayout.CENTER);
523     jScrollPane2.getViewport().add(_edtOqlWhere);
524     _pnlNodeAdvanced.add(jPanel1, java.awt.BorderLayout.CENTER);
525     jPanel1.add(_pnlAdvancedRight, java.awt.BorderLayout.NORTH);
526     jPanel1.add(jScrollPane2, java.awt.BorderLayout.CENTER);
527     _treeSplitter.setDividerLocation(350);
528     _root.setTree(_tree);
529     _root.setModel(_treeModel);
530     Util.sizeLabels(_pnlVisualLeft);
531     Util.sizeLabels(_pnlVisualRight);
532     Util.sizeLabels(_pnlEditingLeft);
533     Util.sizeLabels(_pnlEditingRight);
534     Util.sizeLabels(_pnlAdvancedRight);
535     Util.sizeLabels(_pnlAdvancedLeft);
536   }
537
538   public ExtentNode[] getSelectedNodes()
539   {
540     if (_tree.getSelectionPath() == null) return new ExtentNode[0];
541     ArrayList JavaDoc result = new ArrayList JavaDoc(10);
542
543     TreePath JavaDoc[] tp = _tree.getSelectionPaths();
544
545     for (int qq = 0; qq < tp.length; qq++)
546     {
547       DefaultMutableTreeNode JavaDoc node = (DefaultMutableTreeNode JavaDoc) (tp[qq].getLastPathComponent());
548       if (node instanceof ExtentNode) result.add(node);
549     }
550     return (ExtentNode[]) result.toArray(new ExtentNode[0]);
551   }
552
553   void enableEditors(boolean b)
554   {
555     _edtNodeTitle.setEnabled(b);
556     _edtOqlWhere.setEnabled(b);
557     _edtDescriptor.setEnabled(b);
558     _chkDeleteAllowed.setEnabled(b);
559     _chkEditAllowed.setEnabled(b);
560     _chkInsertAllowed.setEnabled(b);
561     _chkRecursive.setEnabled(b);
562     _cbbEditor.setEnabled(b);
563     _cbbEditorTarget.setEnabled(b);
564     _cbbImageIcon.setEnabled(b);
565     _chkCustomNodeClass.setEnabled(b);
566     _edtCustomNodeClass.setEnabled(b && _chkCustomNodeClass.isSelected());
567   }
568
569   void _tree_valueChanged(TreeSelectionEvent JavaDoc e)
570   {
571     updateSelectedNodeData();
572   }
573
574   public void load(DjenericDocumentHandler dh) throws DjenericException
575   {
576     clear();
577     ExtentUsage[] usages = dh.getTreeStructure(_modelEditor.getPersistenceManager());
578     for (int i = 0; i < usages.length; i++)
579     {
580       ExtentNode aRoot = createRootExtent(usages[i].getExtent());
581       createSubTree(aRoot, usages[i], new HashMap JavaDoc(), 0);
582     }
583
584     EditorDefinition[] editors = dh.getEditors(_modelEditor.getPersistenceManager());
585
586     for (int i = 0; i < editors.length; i++)
587     {
588       _allEditors.add(editors[i]);
589     }
590     sortEditors();
591
592     ResourceDefinition[] resources = dh.getResources();
593
594     for (int i = 0; i < resources.length; i++)
595     {
596       _allResources.add(resources[i]);
597     }
598
599     sortResources();
600
601     ScriptDefinition[] scripts = dh.getScripts(_modelEditor);
602
603     for (int i = 0; i < scripts.length; i++)
604     {
605       _allScripts.add(scripts[i]);
606     }
607
608     synchronize();
609
610     _isVersionSafeToSafe = dh.isVersionSafeToSave();
611   }
612
613   public boolean isVersionSafeToSave()
614   {
615     return _isVersionSafeToSafe;
616   }
617
618   public EditorDefinition[] getEditors()
619   {
620     return (EditorDefinition[]) _allEditors.toArray(new EditorDefinition[0]);
621   }
622
623   public EditorDefinition getEditorByName(String JavaDoc name)
624   {
625     for (int i =