1
2
3
4
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
39
40
41
42
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
66 explorersplit=new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(diagelemtree),new JScrollPane(diagramtree));
67 explorersplit.setOneTouchExpandable(true);
68 explorersplit.setResizeWeight(0.60);
69
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 }