-
Notifications
You must be signed in to change notification settings - Fork 2
/
Options.java
323 lines (264 loc) · 11.9 KB
/
Options.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
/*
* @author : alhelal
* */
package com.alhelal.textpad;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.fxmisc.richtext.CodeArea;
public class Options
{
public volatile static Options uniqueInstance;
public final BorderPane mainPane;
public final TabPane centerPane;
public final ToolBar toolbar;
public final VBox bottomPane;
public final TitledPane outputWindow;
public final HBox StatusBar;
public final Button btnNew;
public final Button btnOpen;
public final Button btnSave;
public final Button btnCut;
public final Button btnCopy;
public final Button btnPaste;
public final Button btnDelete;
public final Button btnUndo;
public final VBox topPane;
public final Button btnBuild;
public final Button btnRun;
public final ToggleButton btnFullScreen;
public final Button btnSuggest;
public final Button btnRedo;
public final Button btnSaveAll;
public final MenuBar mainMenu;
public final Menu fileMenu;
public final Menu editMenu;
public final Menu viewMenu;
public final Menu runMenu;
public final Menu toolsMenu;
public final Menu helpMenu;
public final MenuItem menuPrint;
public final MenuItem menuNew;
public final MenuItem menuOpen;
public final MenuItem menuSave;
public final MenuItem menuSaveAs;
public final MenuItem menuSaveAll;
public final MenuItem menuExit;
public final MenuItem menuCopy;
public final MenuItem menuCut;
public final MenuItem menuUndo;
public final MenuItem menuPaste;
public final MenuItem menuDelete;
public final MenuItem menuSelectAll;
public final MenuItem menuFindSelected;
public final MenuItem menuRedo;
public final MenuItem menuFind;
public final MenuItem menuReplace;
public final CheckMenuItem menuFullScreen;
public final CheckMenuItem menuShowLineNumber;
public final MenuItem menuRun;
public final MenuItem menuAssemble;
public final MenuItem menuSettings;
public final MenuItem menuOpenInTerminal;
public final MenuItem menuAbout;
public final Label StatusBarText;
public final TextField txtFind;
public final HBox findBox;
public final SplitPane outputSplitPane;
public TextArea outputText;
public Scene scene;
public CodeArea output;
public Stage stage;
public boolean fullScreen;
public boolean lineNumber;
private Options()
{
fullScreen = false;
fullScreen = true;
lineNumber = true;
mainMenu = new MenuBar();
mainMenu.getStylesheets().add(this.getClass().getResource("../resource/toolbar_style.css").toExternalForm());
fileMenu = new Menu("File");
editMenu = new Menu("Edit");
viewMenu = new Menu("View");
runMenu = new Menu("Run");
toolsMenu = new Menu("Tools");
helpMenu = new Menu("Help");
menuPrint = new MenuItem("Print ");
menuPrint.setId("menuPrint");
menuPrint.setAccelerator(new KeyCodeCombination(KeyCode.P, KeyCombination.CONTROL_DOWN));
menuNew = new MenuItem("New File ");
menuNew.setAccelerator(new KeyCodeCombination(KeyCode.N, KeyCombination.CONTROL_DOWN));
menuOpen = new MenuItem("Open File ");
menuOpen.setAccelerator(new KeyCodeCombination(KeyCode.O, KeyCombination.CONTROL_DOWN));
menuSaveAs = new MenuItem("Save File As ");
menuSave = new MenuItem("Save ");
menuSave.setAccelerator(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN));
menuSaveAll = new MenuItem("Save All ");
menuSaveAll.setAccelerator(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN,
KeyCombination.SHIFT_DOWN));
menuExit = new MenuItem("Exit ");
menuExit.setAccelerator(new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN));
menuCopy = new MenuItem("Copy ");
menuCopy.setAccelerator(new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN));
menuCut = new MenuItem("Cut ");
menuCut.setAccelerator(new KeyCodeCombination(KeyCode.X, KeyCombination.CONTROL_DOWN));
menuPaste = new MenuItem("Paste ");
menuPaste.setAccelerator(new KeyCodeCombination(KeyCode.V, KeyCombination.CONTROL_DOWN));
menuFindSelected = new MenuItem("Find Selection ");
menuFindSelected.setAccelerator(new KeyCodeCombination(KeyCode.F3, KeyCombination.CONTROL_DOWN));
menuDelete = new MenuItem("Delete ");
menuDelete.setAccelerator(new KeyCodeCombination(KeyCode.DELETE, KeyCombination.CONTROL_ANY));
menuSelectAll = new MenuItem("Select All ");
menuSelectAll.setAccelerator(new KeyCodeCombination(KeyCode.A, KeyCombination.CONTROL_DOWN));
menuFind = new MenuItem("Find ");
menuFind.setAccelerator(new KeyCodeCombination(KeyCode.F, KeyCombination.CONTROL_DOWN));
menuReplace = new MenuItem("Replace ");
menuReplace.setAccelerator(new KeyCodeCombination(KeyCode.R, KeyCombination.CONTROL_DOWN));
menuUndo = new MenuItem("Undo ");
menuUndo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
menuRedo = new MenuItem("Redo ");
menuRedo.setAccelerator(new KeyCodeCombination(KeyCode.Y, KeyCombination.CONTROL_DOWN));
menuFullScreen = new CheckMenuItem("View Full Screen ");
menuFullScreen.setAccelerator(new KeyCodeCombination(KeyCode.F11, KeyCombination.CONTROL_ANY));
menuRun = new MenuItem("Run ");
menuRun.setAccelerator(new KeyCodeCombination(KeyCode.F9, KeyCombination.CONTROL_ANY));
menuAssemble = new MenuItem("Assemble ");
menuAssemble.setAccelerator(new KeyCodeCombination(KeyCode.F10, KeyCombination.CONTROL_ANY));
menuSettings = new MenuItem(" Preferences ");
menuShowLineNumber = new CheckMenuItem("Show Line Number ");
menuShowLineNumber.setSelected(true);
menuOpenInTerminal = new MenuItem(" Open in Terminal ");
menuAbout = new MenuItem(" About ");
mainPane = new BorderPane();
topPane = new VBox();
centerPane = new TabPane();
toolbar = new ToolBar();
toolbar.getStylesheets().add(
getClass().getResource("/com/alhelal/resource/toolbar_style.css").toExternalForm());
bottomPane = new VBox();
bottomPane.setAlignment(Pos.CENTER);
bottomPane.setStyle("-fx-width: 100%");
outputText = new TextArea();
outputWindow = new TitledPane("Output", outputText);
outputText.setEditable(false);
outputWindow.setExpanded(true);
outputWindow.setStyle("-fx-width: 100%");
outputWindow.setMaxHeight(800);
StatusBar = new HBox();
StatusBar.setPadding(new Insets(10, 10, 10, 10));
StatusBarText = new Label("Ready");
btnNew = new Button();
btnNew.setId("new");
btnNew.setPrefSize(28, 28);
btnNew.setTooltip(new Tooltip("New File(Ctrl+N)"));
btnOpen = new Button();
btnOpen.setId("open");
btnOpen.setPrefSize(28, 28);
btnOpen.setTooltip(new Tooltip("Open File(Ctrl+O)"));
btnSave = new Button();
btnSave.setId("save");
btnSave.setPrefSize(28, 28);
btnSave.setTooltip(new Tooltip("Save File(Ctrl+O)"));
btnSaveAll = new Button();
btnSaveAll.setId("save_all");
btnSaveAll.setPrefSize(28, 28);
btnSaveAll.setTooltip(new Tooltip("Save All Files(Ctrl+Shift+S)"));
btnSaveAll.setPadding(new Insets(0, 20, 0, 20));
btnCut = new Button();
btnCut.setId("cut");
btnCut.setPrefSize(28, 28);
btnCut.setTooltip(new Tooltip("Cut(Ctrl+X)"));
btnCopy = new Button();
btnCopy.setId("copy");
btnCopy.setPrefSize(28, 28);
btnCopy.setTooltip(new Tooltip("Copy(Ctrl+C)"));
btnPaste = new Button();
btnPaste.setId("paste");
btnPaste.setPrefSize(28, 28);
btnPaste.setTooltip(new Tooltip("Paste(Ctrl+V)"));
btnDelete = new Button();
btnDelete.setId("delete");
btnDelete.setPrefSize(28, 28);
btnDelete.setTooltip(new Tooltip("Delete(Del)"));
btnUndo = new Button();
btnUndo.setId("undo");
btnUndo.setPrefSize(28, 28);
btnUndo.setTooltip(new Tooltip("Undo(Ctrl+Z)"));
btnRedo = new Button();
btnRedo.setId("redo");
btnRedo.setPrefSize(28, 28);
btnRedo.setTooltip(new Tooltip("Redo(Ctrl+Y)"));
btnBuild = new Button();
btnBuild.setId("assemble");
btnBuild.setPrefSize(28, 28);
btnBuild.setTooltip(new Tooltip("Assemble File(F10)"));
btnRun = new Button();
btnRun.setId("run");
btnRun.setPrefSize(28, 28);
btnRun.setTooltip(new Tooltip("Run File(F9)"));
btnFullScreen = new ToggleButton();
btnFullScreen.setId("full_screen");
btnFullScreen.setPrefSize(28, 28);
btnFullScreen.setTooltip(new Tooltip("Full Screen(F11)"));
btnSuggest = new Button();
btnSuggest.setId("suggest");
btnSuggest.setPrefSize(28, 28);
btnSuggest.setTooltip(new Tooltip("Get suggestion"));
txtFind = new TextField();
txtFind.setPromptText("Find Text(Ctrl + F)");
txtFind.setId("txtFind");
findBox = new HBox();
findBox.setAlignment(Pos.CENTER_RIGHT);
fileMenu.getItems().addAll(menuNew, new SeparatorMenuItem(), menuOpen,
new SeparatorMenuItem(), menuSave, menuSaveAs, menuSaveAll,
new SeparatorMenuItem(), menuPrint, new SeparatorMenuItem(), menuExit);
editMenu.getItems().addAll(menuUndo, menuRedo, new SeparatorMenuItem(), menuCut,
menuCopy, menuPaste, menuDelete, new SeparatorMenuItem(), menuSelectAll,
new SeparatorMenuItem(), menuFind, menuFindSelected, menuReplace);
viewMenu.getItems().addAll(menuShowLineNumber, menuFullScreen);
runMenu.getItems().addAll(menuRun, menuAssemble);
toolsMenu.getItems().addAll(menuOpenInTerminal, menuSettings);
helpMenu.getItems().add(menuAbout);
HBox.setHgrow(findBox, Priority.ALWAYS);
topPane.getChildren().addAll(mainMenu, toolbar);
mainMenu.getMenus().addAll(fileMenu, editMenu, viewMenu, runMenu, toolsMenu, helpMenu);
toolbar.getItems().addAll(btnNew, btnOpen, btnSave, btnSaveAll, new Separator(),
btnCopy, btnPaste, btnCut, btnDelete, new Separator(),
btnUndo, btnRedo, new Separator(),
btnBuild, btnRun, new Separator(),
btnFullScreen, btnSuggest, findBox, txtFind);
StatusBar.getChildren().add(StatusBarText);
outputSplitPane = new SplitPane(centerPane, outputWindow);
outputSplitPane.setStyle("-fx-box-border: transparent;");
outputSplitPane.setDividerPosition(0, 0.9);
outputSplitPane.setOrientation(Orientation.VERTICAL);
mainPane.setCenter(outputSplitPane);
mainPane.setTop(topPane);
mainPane.setBottom(bottomPane);
}
public static Options getUniqueInstance()
{
if (uniqueInstance == null)
{
synchronized (Options.class)
{
if (uniqueInstance == null)
{
uniqueInstance = new Options();
}
}
}
return uniqueInstance;
}
}