KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > modeler > ModelEditor


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
31 package com.genimen.djeneric.tools.modeler;
32
33 import java.awt.AWTEvent JavaDoc;
34 import java.awt.BorderLayout JavaDoc;
35 import java.awt.Color JavaDoc;
36 import java.awt.Component JavaDoc;
37 import java.awt.Dimension JavaDoc;
38 import java.awt.Font JavaDoc;
39 import java.awt.Image JavaDoc;
40 import java.awt.Toolkit JavaDoc;
41 import java.awt.event.ActionEvent JavaDoc;
42 import java.awt.event.AdjustmentEvent JavaDoc;
43 import java.awt.event.InputEvent JavaDoc;
44 import java.awt.event.KeyEvent JavaDoc;
45 import java.awt.event.KeyListener JavaDoc;
46 import java.awt.event.MouseEvent JavaDoc;
47 import java.awt.event.WindowEvent JavaDoc;
48 import java.awt.print.PageFormat JavaDoc;
49 import java.awt.print.PrinterJob JavaDoc;
50 import java.io.BufferedReader JavaDoc;
51 import java.io.BufferedWriter JavaDoc;
52 import java.io.ByteArrayOutputStream JavaDoc;
53 import java.io.File JavaDoc;
54 import java.io.FileOutputStream JavaDoc;
55 import java.io.FileReader JavaDoc;
56 import java.io.FileWriter JavaDoc;
57 import java.io.IOException JavaDoc;
58 import java.net.URL JavaDoc;
59 import java.util.ArrayList JavaDoc;
60
61 import javax.imageio.ImageIO JavaDoc;
62 import javax.swing.ButtonGroup JavaDoc;
63 import javax.swing.ImageIcon JavaDoc;
64 import javax.swing.JButton JavaDoc;
65 import javax.swing.JFileChooser JavaDoc;
66 import javax.swing.JLabel JavaDoc;
67 import javax.swing.JMenu JavaDoc;
68 import javax.swing.JMenuBar JavaDoc;
69 import javax.swing.JMenuItem JavaDoc;
70 import javax.swing.JOptionPane JavaDoc;
71 import javax.swing.JPanel JavaDoc;
72 import javax.swing.JRadioButtonMenuItem JavaDoc;
73 import javax.swing.JScrollBar JavaDoc;
74 import javax.swing.JScrollPane JavaDoc;
75 import javax.swing.JSlider JavaDoc;
76 import javax.swing.JTabbedPane JavaDoc;
77 import javax.swing.JTextArea JavaDoc;
78 import javax.swing.RepaintManager JavaDoc;
79 import javax.swing.event.ChangeEvent JavaDoc;
80
81 import com.genimen.djeneric.language.Messages;
82 import com.genimen.djeneric.repository.DjDomain;
83 import com.genimen.djeneric.repository.DjExtent;
84 import com.genimen.djeneric.repository.DjModelView;
85 import com.genimen.djeneric.repository.DjPackage;
86 import com.genimen.djeneric.repository.DjPersistenceManager;
87 import com.genimen.djeneric.repository.DjPersistenceManagerFactory;
88 import com.genimen.djeneric.repository.DjSession;
89 import com.genimen.djeneric.repository.exceptions.CatalogException;
90 import com.genimen.djeneric.repository.exceptions.DjenericException;
91 import com.genimen.djeneric.structure.EditorDefinition;
92 import com.genimen.djeneric.structure.ResourceDefinition;
93 import com.genimen.djeneric.structure.ScriptDefinition;
94 import com.genimen.djeneric.tools.common.AboutDialog;
95 import com.genimen.djeneric.tools.common.DjenericTool;
96 import com.genimen.djeneric.tools.common.ExportSelectionDialog;
97 import com.genimen.djeneric.tools.io.DjenericDocumentHandler;
98 import com.genimen.djeneric.tools.modeler.diagrammer.ColorChooserDialog;
99 import com.genimen.djeneric.tools.modeler.diagrammer.ExtentViewer;
100 import com.genimen.djeneric.tools.modeler.diagrammer.PaintPanel;
101 import com.genimen.djeneric.tools.modeler.dialogs.CreateRelationDialog;
102 import com.genimen.djeneric.tools.modeler.dialogs.ExtentSelectorDialog;
103 import com.genimen.djeneric.tools.modeler.dialogs.ImportModeDialog;
104 import com.genimen.djeneric.tools.modeler.dialogs.MergeViewDialog;
105 import com.genimen.djeneric.tools.modeler.dialogs.ModelVersionDialog;
106 import com.genimen.djeneric.tools.modeler.dialogs.OpenDialog;
107 import com.genimen.djeneric.tools.modeler.dialogs.PackageEditorDialog;
108 import com.genimen.djeneric.tools.modeler.dialogs.RoleEditorDialog;
109 import com.genimen.djeneric.tools.modeler.dialogs.SaveAsDialog;
110 import com.genimen.djeneric.tools.modeler.domaineditor.DomainEditor;
111 import com.genimen.djeneric.tools.modeler.extenteditor.ExtentEditor;
112 import com.genimen.djeneric.tools.modeler.io.ModelDocumentHandler;
113 import com.genimen.djeneric.tools.modeler.schemagenerator.SchemaGeneratorDlg;
114 import com.genimen.djeneric.tools.modeler.userperspective.ViewEditor;
115 import com.genimen.djeneric.tools.modeler.util.ModelChecker;
116 import com.genimen.djeneric.tools.modeler.util.ModelDescriber;
117 import com.genimen.djeneric.ui.DjCloseable;
118 import com.genimen.djeneric.ui.DjStatusListener;
119 import com.genimen.djeneric.ui.DjTabbedPane;
120 import com.genimen.djeneric.ui.DjVerticalFlowLayout;
121 import com.genimen.djeneric.ui.Util;
122 import com.genimen.djeneric.util.DjEnvironment;
123 import com.genimen.djeneric.util.DjFileFilter;
124 import com.genimen.djeneric.util.DjLogPrintStream;
125 import com.genimen.djeneric.util.DjLogger;
126 import com.genimen.djeneric.util.DjProgressDisplayer;
127 import com.genimen.djeneric.util.DjVersion;
128
129 class CloseableScrollPane extends JScrollPane JavaDoc implements DjCloseable
130 {
131   private static final long serialVersionUID = 1L;
132   JTabbedPane JavaDoc _owner;
133
134   public CloseableScrollPane(JTabbedPane JavaDoc owner)
135   {
136     _owner = owner;
137   }
138
139   public boolean canClose()
140   {
141     return true;
142   }
143
144   public boolean close()
145   {
146     _owner.remove(this);
147     return true;
148   }
149 }
150 public class ModelEditor extends DjenericTool implements DjStatusListener, DjProgressDisplayer, KeyListener JavaDoc
151 {
152   private static final long serialVersionUID = 1L;
153   private final String JavaDoc PROPERTIES_FILE_NAME = DjEnvironment.getAbsoluteFileName("modeleditor.properties");
154   private final static String JavaDoc LOG_FILE_NAME = DjEnvironment.getAbsoluteFileName("modeleditor.log");
155   private final String JavaDoc NOT_MODELER_MSG = Messages.getString("ModelEditor.ModelReadOnlyNoPrivs");
156   public static final String JavaDoc DUMP_EXTENSION = "dmp";
157   public static final String JavaDoc MODEL_EXTENSION = "djmm";
158   public static final String JavaDoc VIEW_EXTENSION = "djvw";
159   public Font JavaDoc _largerFont = new Font JavaDoc("Arial", Font.BOLD, 14);
160   public Font JavaDoc _font = new Font JavaDoc("Arial", Font.BOLD, 11);
161   // do not change this size (plus in box)
162
public Font JavaDoc _smallfont = new Font JavaDoc("Arial", Font.BOLD, 11);
163   public Color JavaDoc _relationColor = new Color JavaDoc(0x00, 0x00, 0x00);
164   public Color JavaDoc _selectionColor = Color.red;
165   public final static String JavaDoc OK_MSG = Messages.getString("global.Ok");
166   final static int A4 = 150;
167   final static int A3 = (new Double JavaDoc(A4 / Math.sqrt(2))).intValue();
168   final static int A5 = (new Double JavaDoc(A4 * Math.sqrt(2) * Math.sqrt(2))).intValue();
169   public final static String JavaDoc NEW_EXTENT_PREFIX = Messages.getString("ModelEditor.NewExtent1");
170   JPanel JavaDoc contentPane;
171   BorderLayout JavaDoc borderLayout1 = new BorderLayout JavaDoc();
172   boolean _inRelationAddMode = false;
173   ExtentViewer _relationMaster = null;
174   ExtentViewer _lastPressedExtentViewer = null;
175   int _lastPressedX = -1;
176   int _lastPressedY = -1;
177   int _lastCorner = -1;
178   DjPersistenceManager _mgr;
179   DjTabbedPane _tabs = new DjTabbedPane();
180   JPanel JavaDoc _diagramPanel = new JPanel JavaDoc();
181   BorderLayout JavaDoc borderLayout2 = new BorderLayout JavaDoc();
182   PaintPanel _paintPanel = new PaintPanel();
183   private JLabel JavaDoc _lblStatus = new JLabel JavaDoc();
184   ArrayList JavaDoc _allEditorsOpen = new ArrayList JavaDoc();
185   int _newCounter = 1;
186   DjModelView _theView = null;
187   int _selectionBoxX1 = -1;
188   int _selectionBoxY1 = -1;
189   int _selectionBoxX2 = -1;
190   int _selectionBoxY2 = -1;
191   int _newIncrement = 0;
192   ViewEditor _viewEditor = new ViewEditor(this);
193   JMenuBar JavaDoc _mainMenu = new JMenuBar JavaDoc();
194   JMenu JavaDoc _mnuFile = new JMenu JavaDoc();
195   JMenuItem JavaDoc _mnuExit = new JMenuItem JavaDoc();
196   JMenuItem JavaDoc _mnuSave = new JMenuItem JavaDoc();
197   JMenuItem JavaDoc _mnuExport2Image = new JMenuItem JavaDoc();
198   JMenuItem JavaDoc _mnuSaveAs = new JMenuItem JavaDoc();
199   JMenuItem JavaDoc _mnuDeleteView = new JMenuItem JavaDoc();
200   JMenu JavaDoc _mnuTools = new JMenu JavaDoc();
201   JMenu JavaDoc _mnuExport = new JMenu JavaDoc();
202   JMenuItem JavaDoc _mnuExportModel = new JMenuItem JavaDoc();
203   JMenuItem JavaDoc _mnuExportView = new JMenuItem JavaDoc();
204   JMenu JavaDoc _mnuImport = new JMenu JavaDoc();
205   JMenuItem JavaDoc _mnuImportView = new JMenuItem JavaDoc();
206   JMenuItem JavaDoc _mnuImportModel = new JMenuItem JavaDoc();
207   JMenuItem JavaDoc _mnuOpenView = new JMenuItem JavaDoc();
208   JMenuItem JavaDoc _mnuNewView = new JMenuItem JavaDoc();
209   JMenuItem JavaDoc _mnuSaveModelOnly = new JMenuItem JavaDoc();
210   JPanel JavaDoc jPanel1 = new JPanel JavaDoc();
211   BorderLayout JavaDoc borderLayout3 = new BorderLayout JavaDoc();
212   JButton JavaDoc _butAdd = new JButton JavaDoc();
213   JButton JavaDoc _butEdit = new JButton JavaDoc();
214   JButton JavaDoc _butAddRelation = new JButton JavaDoc();
215   JButton JavaDoc _butDelete = new JButton JavaDoc();
216   JButton JavaDoc _butPrint = new JButton JavaDoc();
217   JPanel JavaDoc _buttonPanel = new JPanel JavaDoc();
218   JLabel JavaDoc _spaceHolder = new JLabel JavaDoc();
219   JButton JavaDoc _butColor = new JButton JavaDoc();
220   JButton JavaDoc _butViewEditor = new JButton JavaDoc();
221   DjVerticalFlowLayout verticalFlowLayout1 = new DjVerticalFlowLayout();
222   JButton JavaDoc _butDomains = new JButton JavaDoc();
223   JSlider JavaDoc _zoomSlider = new JSlider JavaDoc();
224   JButton JavaDoc _butHideExtent = new JButton JavaDoc();
225   JButton JavaDoc _butCreate = new JButton JavaDoc();
226   JLabel JavaDoc _spaceHolder1 = new JLabel JavaDoc();
227   JButton JavaDoc _butSave = new JButton JavaDoc();
228   JPanel JavaDoc jPanel2 = new JPanel JavaDoc();
229   JLabel JavaDoc _imgLocked = new JLabel JavaDoc();
230   JMenu JavaDoc _mnuShow = new JMenu JavaDoc();
231   JRadioButtonMenuItem JavaDoc _mnuShowAlias = new JRadioButtonMenuItem JavaDoc();
232   JRadioButtonMenuItem JavaDoc _mnuShowQualified = new JRadioButtonMenuItem JavaDoc();
233   JRadioButtonMenuItem JavaDoc _mnuShowExtent = new JRadioButtonMenuItem JavaDoc();
234   JRadioButtonMenuItem JavaDoc _mnuShowClass = new JRadioButtonMenuItem JavaDoc();
235   JMenuItem JavaDoc _mnuPrint = new JMenuItem JavaDoc();
236   JMenu JavaDoc _mnuHelp = new JMenu JavaDoc();
237   JMenuItem JavaDoc _mnuAbout = new JMenuItem JavaDoc();
238   JMenuItem JavaDoc _mnuScript = new JMenuItem JavaDoc();
239   JMenuItem JavaDoc _mnuQualityCheck = new JMenuItem JavaDoc();
240   JMenuItem JavaDoc _mnuModelDescr = new JMenuItem JavaDoc();
241   JMenu JavaDoc _mnuTabs = new JMenu JavaDoc();
242   JMenuItem JavaDoc _mnuRemoveTab = new JMenuItem JavaDoc();
243   JMenuItem JavaDoc _mnuNextTab = new JMenuItem JavaDoc();
244   JMenuItem JavaDoc _mnuPrevTab = new JMenuItem JavaDoc();
245   JMenuItem JavaDoc _mnuValidateRepository = new JMenuItem JavaDoc();
246   JMenu JavaDoc _mnuEdit = new JMenu JavaDoc();
247   JMenuItem JavaDoc _mnuNewExtent = new JMenuItem JavaDoc();
248   JMenuItem JavaDoc _mnuEditExtent = new JMenuItem JavaDoc();
249   JMenuItem JavaDoc _mnuDeleteExtent = new JMenuItem JavaDoc();
250   JMenuItem JavaDoc _mnuNewRelation = new JMenuItem JavaDoc();
251   JMenuItem JavaDoc _mnuAddExtentFromModel = new JMenuItem JavaDoc();
252   JMenuItem JavaDoc _mnuDomains = new JMenuItem JavaDoc();
253   JMenuItem JavaDoc _mnuPackages = new JMenuItem JavaDoc();
254   JMenuItem JavaDoc _mnuDefineEditors = new JMenuItem JavaDoc();
255   JMenuItem JavaDoc _mnuModelHistory = new JMenuItem JavaDoc();
256   JMenuItem JavaDoc _mnuKeyboard = new JMenuItem JavaDoc();
257   JMenuItem JavaDoc _mnuSelectAll = new JMenuItem JavaDoc();
258   JMenuItem JavaDoc _mnuHideExtent = new JMenuItem JavaDoc();
259   String JavaDoc _lastOpenedViewName = "";
260   JMenuItem JavaDoc mnuMergeView = new JMenuItem JavaDoc();
261   JPanel JavaDoc jPanel3 = new JPanel JavaDoc();
262   BorderLayout JavaDoc borderLayout4 = new BorderLayout JavaDoc();
263   JScrollBar JavaDoc _xscroller = new JScrollBar JavaDoc();
264   JScrollBar JavaDoc _yscroller = new JScrollBar JavaDoc();
265   JMenuItem JavaDoc _mnuReloadModel = new JMenuItem JavaDoc();
266   String JavaDoc _originalViewDefinition = "";
267
268   /**
269    * Construct the frame
270    *
271    * @param repositories
272    * Description of the Parameter
273    */

274   public ModelEditor(String JavaDoc repositories)
275   {
276     enableEvents(AWTEvent.WINDOW_EVENT_MASK);
277     setIconImage(getImage("modeler.gif"));
278     try
279     {
280       setStatusLabel(_lblStatus);
281       DjPersistenceManagerFactory fact = new DjPersistenceManagerFactory(this, repositories);
282       _mgr = fact.createInstance();
283       if (!_mgr.getCurrentUser().isAdministrator())
284       {
285         throw new Exception JavaDoc(Messages.getString("ModelEditor.YouNeedAdminPrivs"));
286       }
287       if (_mgr.getSchemaLoadLog().length() > 0)
288       {
289         JOptionPane.showMessageDialog(this, _mgr.getSchemaLoadLog(), Messages.getString("ModelEditor.SeriousWarnings"),
290                                       JOptionPane.ERROR_MESSAGE);
291       }
292       _theView = _mgr.createModelView();
293       _paintPanel.setManager(_mgr);
294       jbInit();
295       _butSave.setIcon(getImageIcon("save.gif"));
296       _butAdd.setIcon(getImageIcon("add.gif"));
297       _butCreate.setIcon(getImageIcon("new.gif"));
298       _butDelete.setIcon(getImageIcon("delete.gif"));
299       _butHideExtent.setIcon(getImageIcon("remove.gif"));
300       _butEdit.setIcon(getImageIcon("edit.gif"));
301       _butColor.setIcon(getImageIcon("colors.gif"));
302       _butPrint.setIcon(getImageIcon("print.gif"));
303       _butDomains.setIcon(getImageIcon("domain.gif"));
304       _butAddRelation.setIcon(getImageIcon("relation.gif"));
305       _butViewEditor.setIcon(getImageIcon("modelview.gif"));
306       _imgLocked.setIcon(getImageIcon("locked.gif"));
307       _imgLocked.setVisible(false);
308       loadProps(PROPERTIES_FILE_NAME);
309
310       _paintPanel.setViewMode(Integer.parseInt(getProperty("diagrammer.show", String.valueOf(PaintPanel.SHOW_CLASS))));
311
312       switch (_paintPanel.getViewMode())
313       {
314         case PaintPanel.SHOW_ALIAS :
315           _mnuShowAlias.setSelected(true);
316           break;
317         case PaintPanel.SHOW_CLASS :
318           _mnuShowClass.setSelected(true);
319           break;
320         case PaintPanel.SHOW_EXTENT :
321           _mnuShowExtent.setSelected(true);
322           break;
323         case PaintPanel.SHOW_QUALIFIED :
324           _mnuShowQualified.setSelected(true);
325           break;
326         default :
327           break;
328       }
329
330       int width = Integer.parseInt(getProperty("window.width", "400"));
331       int height = Integer.parseInt(getProperty("window.height", "400"));
332       setSize(new Dimension JavaDoc(width, height));
333       checkBordersAndSizes();
334       addKeyListener(this);
335       _butAddRelation.addKeyListener(this);
336       _diagramPanel.addKeyListener(this);
337       updateTitle();
338       clear();
339       if (!_mgr.getCurrentUser().isModeler())
340       {
341         setStatusMessage(NOT_MODELER_MSG);
342       }
343       _originalViewDefinition = getViewDefinition();
344     }
345     catch (Exception JavaDoc e)
346     {
347       handleException(e);
348       System.exit(-1);
349     }
350   }
351
352   public void clear()
353   {
354     _viewEditor.clear();
355   }
356
357   private void updateTitle()
358   {
359     String JavaDoc title = Messages.getString("ModelEditor.DjenericModeler", DjVersion.getVersion(), _theView.getCode());
360     try
361     {
362       title += " - " + _mgr.getConnectionTitle();
363     }
364     catch (Exception JavaDoc x)
365     {
366       DjLogger.log(x);
367     }
368     setTitle(title);
369   }
370
371   /**
372    * Component initialization
373    *
374    * @exception Exception
375    * Description of the Exception
376    */

377   private void jbInit() throws Exception JavaDoc
378   {
379     contentPane = (JPanel JavaDoc) this.getContentPane();
380     contentPane.setLayout(borderLayout1);
381     this.setSize(new Dimension JavaDoc(549, 584));
382     _diagramPanel.setLayout(borderLayout2);
383     _paintPanel.setPreferredSize(new Dimension JavaDoc(100, 100));
384     _paintPanel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter JavaDoc()
385     {
386       public void mouseDragged(MouseEvent JavaDoc e)
387       {
388         _paintPanel_mouseDragged(e);
389       }
390
391       public void mouseMoved(MouseEvent JavaDoc e)
392       {
393         _paintPanel_mouseMoved(e);
394       }
395     });
396     _paintPanel.addMouseListener(new java.awt.event.MouseAdapter JavaDoc()
397     {
398       public void mousePressed(MouseEvent JavaDoc e)
399       {
400         _paintPanel_mousePressed(e);
401       }
402
403       public void mouseReleased(MouseEvent JavaDoc e)
404       {
405         _paintPanel_mouseReleased(e);
406       }
407
408       public void mouseClicked(MouseEvent JavaDoc e)
409       {
410         _paintPanel_mouseClicked(e);
411       }
412     });
413     setStatusMessage(OK_MSG);
414     _mnuFile.setMnemonic('F');
415     _mnuFile.setText(Messages.getString("global.File"));
416     _mnuExit.setMnemonic('X');
417     _mnuExit.setText(Messages.getString("global.Exit"));
418     _mnuExit.addActionListener(new java.awt.event.ActionListener JavaDoc()
419     {
420       public void actionPerformed(ActionEvent JavaDoc e)
421       {
422         mnuExit(e);
423       }
424     });
425     _mnuSave.setToolTipText(Messages.getString("ModelEditor.SavesModelAndDiag"));
426     _mnuSave.setMnemonic('S');
427     _mnuSave.setText(Messages.getString("ModelEditor.SaveAll"));
428     _mnuSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(83, java.awt.event.KeyEvent.CTRL_MASK, false));
429     _mnuSave.addActionListener(new java.awt.event.ActionListener JavaDoc()
430     {
431       public void actionPerformed(ActionEvent JavaDoc e)
432       {
433         mnuSave(e);
434       }
435     });
436     _mnuExport2Image.setToolTipText(Messages.getString("ModelEditor.ExportDiagram"));
437     _mnuExport2Image.setMnemonic('J');
438     _mnuExport2Image.setText(Messages.getString("ModelEditor.ExportDiagram"));
439     _mnuExport2Image.addActionListener(new java.awt.event.ActionListener JavaDoc()
440     {
441       public void actionPerformed(ActionEvent JavaDoc e)
442       {
443         mnuExportPng(e);
444       }
445     });
446     _mnuSaveAs.setMnemonic('A');
447     _mnuSaveAs.setText(Messages.getString("ModelEditor.SaveViewAs"));
448     _mnuSaveAs.addActionListener(new java.awt.event.ActionListener JavaDoc()
449     {
450       public void actionPerformed(ActionEvent JavaDoc e)
451       {
452         mnuSaveAs(e);
453       }
454     });
455     _mnuDeleteView.setMnemonic('D');
456     _mnuDeleteView.setText(Messages.getString("ModelEditor.DeleteView"));
457     _mnuDeleteView.addActionListener(new java.awt.event.ActionListener JavaDoc()
458     {
459       public void actionPerformed(ActionEvent JavaDoc e)
460       {
461         mnuDeleteView(e);
462       }
463     });
464     _mnuTools.setMnemonic('T');
465     _mnuTools.setText(Messages.getString("global.Tools"));
466     _mnuExport.setMnemonic('E');
467     _mnuExport.setText(Messages.getString("ModelEditor.Export"));
468     _mnuExportModel.setMnemonic('M');
469     _mnuExportModel.setText(Messages.getString("ModelEditor.Model"));
470     _mnuExportModel.addActionListener(new java.awt.event.ActionListener JavaDoc()
471     {
472       public void actionPerformed(ActionEvent JavaDoc e)
473       {
474         mnuExportModel(e);
475       }
476     });
477     _mnuExportView.setMnemonic('V');
478     _mnuExportView.setText(Messages.getString("ModelEditor.View"));
479     _mnuExportView.addActionListener(new java.awt.event.ActionListener JavaDoc()
480     {
481       public void actionPerformed(ActionEvent JavaDoc e)
482       {
483         mnuExportView(e);
484       }
485     });
486     _mnuImport.setMnemonic('I');
487     _mnuImport.setText(Messages.getString("ModelEditor.Import"));
488     mnuMergeView.setText(Messages.getString("ModelEditor.MergeView"));
489     mnuMergeView.addActionListener(new java.awt.event.ActionListener JavaDoc()
490     {
491       public void actionPerformed(ActionEvent JavaDoc e)
492       {
493         mnuMergeView(e);
494       }
495     });
496     _mnuImportView.setMnemonic('V');
497     _mnuImportView.setText(Messages.getString("ModelEditor.View"));
498     _mnuImportView.addActionListener(new java.awt.event.ActionListener JavaDoc()
499     {
500       public void actionPerformed(ActionEvent JavaDoc e)
501       {
502         mnuImportView(e);
503       }
504     });
505     _mnuImportModel.setMnemonic('M');
506     _mnuImportModel.setText(Messages.getString("ModelEditor.Model"));
507     _mnuImportModel.addActionListener(new java.awt.event.ActionListener JavaDoc()
508     {
509       public void actionPerformed(ActionEvent JavaDoc e)
510       {
511         mnuImportModel(e);
512       }
513     });
514     _mnuOpenView.setMnemonic('O');
515     _mnuOpenView.setText(Messages.getString("ModelEditor.OpenView"));
516     _mnuOpenView.setAccelerator(javax.swing.KeyStroke.getKeyStroke(79, java.awt.event.KeyEvent.CTRL_MASK, false));
517     _mnuOpenView.addActionListener(new java.awt.event.ActionListener JavaDoc()
518     {
519       public void actionPerformed(ActionEvent JavaDoc e)
520       {
521         mnuOpenView(e);
522       }
523     });
524     _mnuNewView.setMnemonic('N');
525     _mnuNewView.setText(Messages.getString("ModelEditor.NewView"));
526     _mnuNewView.setAccelerator(javax.swing.KeyStroke.getKeyStroke(78, java.awt.event.KeyEvent.CTRL_MASK, false));
527     _mnuNewView.addActionListener(new java.awt.event.ActionListener JavaDoc()
528     {
529       public void actionPerformed(ActionEvent JavaDoc e)
530       {
531         mnuNewView(e);
532       }
533     });
534     _mnuSaveModelOnly.setMnemonic('M');
535     _mnuSaveModelOnly.setText(Messages.getString("ModelEditor.SaveModelOnly"));
536     _mnuSaveModelOnly.addActionListener(new java.awt.event.ActionListener JavaDoc()
537     {
538       public void actionPerformed(ActionEvent JavaDoc e)
539       {
540         mnuSaveModel(e);
541       }
542     });
543     _lblStatus.setToolTipText(Messages.getString("ModelEditor.DblClick"));
544     _lblStatus.setText(Messages.getString("global.Ok"));
545     _lblStatus.addMouseListener(new java.awt.event.MouseAdapter JavaDoc()
546     {
547       public void mouseClicked(MouseEvent JavaDoc e)
548       {
549         _status_mouseClicked(e);
550       }
551     });
552     jPanel1.setLayout(borderLayout3);
553     _butAdd.setPreferredSize(new Dimension JavaDoc(24, 24));
554     _butAdd.setToolTipText(Messages.getString("ModelEditor.AddExtent"));
555     _butAdd.addActionListener(new java.awt.event.ActionListener JavaDoc()
556     {
557       public void actionPerformed(ActionEvent JavaDoc e)
558       {
559         _butAdd(e);
560       }
561     });
562     _butEdit.addActionListener(new java.awt.event.ActionListener JavaDoc()
563     {
564       public void actionPerformed(ActionEvent JavaDoc e)
565       {
566         _butEdit(e);
567       }
568     });
569     _butEdit.setPreferredSize(new Dimension JavaDoc(24, 24));
570     _butEdit.setToolTipText(Messages.getString("global.Edit"));
571     _butAddRelation.setToolTipText(Messages.getString("ModelEditor.CreateNewRel"));
572     _butAddRelation.setPreferredSize(new Dimension JavaDoc(24, 24));
573     _butAddRelation.addActionListener(new java.awt.event.ActionListener JavaDoc()
574     {
575       public void actionPerformed(ActionEvent JavaDoc e)
576       {
577         _butAddRelation(e);
578       }
579     });
580     _butDelete.addActionListener(new java.awt.event.ActionListener JavaDoc()
581     {
582       public void actionPerformed(ActionEvent JavaDoc e)
583       {
584         _butDelete(e);
585       }
586     });
587     _butDelete.setPreferredSize(new Dimension JavaDoc(24, 24));
588     _butDelete.setToolTipText(Messages.getString("ModelEditor.DeleteExtentFromModel"));
589     _butPrint.setToolTipText(Messages.getString("ModelEditor.PrintDiagram"));
590     _butPrint.setPreferredSize(new Dimension JavaDoc(24, 24));
591     _butPrint.addActionListener(new java.awt.event.ActionListener JavaDoc()
592     {
593       public void actionPerformed(ActionEvent JavaDoc e)
594       {
595         _butPrint(e);
596       }
597     });
598     _buttonPanel.setLayout(verticalFlowLayout1);
599