View Javadoc

1   /*
2    * MainFrame.java
3    *
4    * Created on 24. august 2005, 15:57
5    */
6   
7   package com.vikash.firsttool.UI;
8   import com.vikash.firsttool.ProfileImpl.ToolModel;
9   import javax.swing.*;
10  import java.awt.*;
11  import java.awt.event.*; 
12  
13  /***
14   *
15   * @author  studajb
16   */
17  public class MainFrame extends JFrame
18  
19  {
20      
21      MainEditor editor;
22      JDesktopPane desktoppane;
23      ToolBar bar;
24      DiagramElementTreePane diagelemtree;
25      DiagramTreePane diagramtree;
26      ToolsStatusBar statusBar;
27      JSplitPane explorersplit;
28      JSplitPane editorsplit;
29      Container contentPane;
30      ToolMenuBar menubar;
31      JPanel mainPanel;
32      String filename=null;
33      
34      
35      public MainFrame(){
36          
37      	/*
38          Toolkit kit=Toolkit.getDefaultToolkit();
39          Dimension screensize=kit.getScreenSize();
40          int WIDTH=screensize.width;
41          int HEIGHT=screensize.height;
42          setSize(WIDTH,HEIGHT-25);
43          */
44  		setExtendedState(Frame.MAXIMIZED_BOTH);
45          
46          
47          contentPane=getContentPane();
48          createFrameComponents();
49          updateTitle();
50          initialiseActions();
51      }
52      
53      public void createFrameComponents(){
54          
55          menubar=new ToolMenuBar(this);
56          setJMenuBar(menubar);
57          bar= new ToolBar(this);
58          
59          desktoppane=new JDesktopPane();
60          desktoppane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
61          ToolModel model=ToolModel.getInstance(true);
62          diagelemtree=new DiagramElementTreePane(this);
63          diagramtree=new DiagramTreePane(this);
64          editor=new MainEditor(this);
65          //splitpane for the explorer
66          explorersplit=new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(diagelemtree),new JScrollPane(diagramtree));
67          explorersplit.setOneTouchExpandable(true);
68          explorersplit.setResizeWeight(0.60);
69          //split pane seperating explorer pane and desktop pane
70          
71          editorsplit=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,explorersplit,desktoppane);
72          editorsplit.setOneTouchExpandable(true);
73          
74          contentPane.add(bar,BorderLayout.NORTH);
75          contentPane.add(editorsplit,BorderLayout.CENTER);
76          statusBar=new ToolsStatusBar();
77          contentPane.add(statusBar,BorderLayout.SOUTH);
78          
79          
80          
81      }
82      public void initialiseActions(){
83          CopyAction.getinstance(this,true);
84          CutAction.getinstance(this,true);
85          PasteAction.getinstance(this,true);
86          DeleteAction.getinstance(this,true);
87          DeleteViewAction.getinstance(this,true);
88          UndoAction.getinstance(this,true);
89          RedoAction.getinstance(this,true);
90      }
91      public void refreshComponents(){
92          remove(menubar);
93          remove(bar);
94          remove(editorsplit);
95          remove(statusBar);
96          validate();
97          createFrameComponents();
98          setFileName(null);
99          updateTitle();
100         initialiseActions();
101         validate();
102         
103         
104     }
105     public MainEditor getEditor(){
106         return editor;
107     }
108     
109     public DiagramElementTreePane getDiagramElementTree(){
110         return diagelemtree;
111     }
112     public DiagramTreePane getDiagramTree(){
113         return diagramtree;
114     }
115     public JDesktopPane getDesktopPane(){
116         return desktoppane;
117     }
118     public ToolsStatusBar getStatusBar(){
119         return statusBar;
120     }
121     public ToolBar getToolBar(){
122         return bar;
123     }
124     public void setFileName(String filename){
125         this.filename=filename;
126     }
127     public String getFileName(){
128         return this.filename;
129     }
130     public void updateTitle(){
131         if(this.filename==null){
132             setTitle("Threat Modelling Tool");
133         }
134         else
135             setTitle("Threat Modelling Tool -   File: "+getFileName());
136     }
137     public void exit(){
138         
139         if(saveBeforeExit())
140             System.exit(0);
141     }
142     public boolean saveBeforeExit(){
143         if(((DiagramElementTreeModel)diagelemtree.getModel()).isTreeChanged() ||((DiagramTreeModel)diagramtree.getModel()).isTreeChanged() ){
144             int result=JOptionPane.showInternalConfirmDialog(desktoppane,"Do you want to save changes?");
145             if (result == JOptionPane.YES_OPTION ){
146                 editor.savefile();
147                 return true;
148             }
149             if (result == JOptionPane.NO_OPTION) {
150                 return true;
151             }
152             if(result == JOptionPane.CANCEL_OPTION){
153                 return false;
154             }
155             
156         }
157         
158         return true;
159     }
160 }