-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWindow.java
More file actions
112 lines (94 loc) · 3.72 KB
/
Window.java
File metadata and controls
112 lines (94 loc) · 3.72 KB
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
package me.david.sploty4.gui;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import me.david.sploty4.Sploty;
import me.david.sploty4.constants.AppConstants;
import me.david.sploty4.gui.menu.MenuManager;
import me.david.sploty4.gui.shortCurts.MainShortcuts;
import me.david.sploty4.gui.tab.BrowserTab;
import me.david.sploty4.gui.tab.TabList;
import me.david.sploty4.setting.settings.GeneralSettings;
import me.david.sploty4.storage.FileComponent;
import me.david.sploty4.storage.FileSerializer;
import java.io.IOException;
public class Window implements FileComponent {
private Stage stage;
private Scene scene;
private MenuManager menuBar = new MenuManager(this);
private MainShortcuts shortcurts;
private TabList tabBar;
private StackPane tabsPane;
public Window(Stage stage, BrowserTab... tabs){
this.stage = stage;
tabsPane = new StackPane();
tabBar = new TabList(this, tabsPane);
tabBar.getTabs().addAll(tabs);
if(tabs.length == 0) tabBar.getTabs().add(new BrowserTab(tabBar, ((GeneralSettings) Sploty.getSettingManager().getSettingByClass(GeneralSettings.class)).getDefaultsite().toExternalForm()));
buildGui();
}
public Window(Stage stage, FileSerializer serializer) {
this.stage = stage;
tabsPane = new StackPane();
tabBar = new TabList(this, tabsPane);
try {
read(serializer);
} catch (IOException e) {
Sploty.getLogger().exception(e, "Failed reading from Session File");
}
if(tabBar.getTabs().size() == 0) tabBar.getTabs().add(new BrowserTab(tabBar, ((GeneralSettings) Sploty.getSettingManager().getSettingByClass(GeneralSettings.class)).getDefaultsite().toExternalForm()));
buildGui();
}
private void buildGui() {
tabsPane.getChildren().addAll(tabBar);
VBox box = new VBox();
box.getStylesheets().add("/themes/external/flatred.css");
box.getChildren().addAll(menuBar, tabsPane);
scene = new Scene(box, 400, 350);
shortcurts = new MainShortcuts(this);
//scene.setFill(Color.OLDLACE);
stage.setScene(scene);
stage.setTitle("Sploty4 WebBrowser - " + AppConstants.VERSION);
stage.setFullScreenExitHint("Press Esc to leave Fullscreen");
stage.setMaximized(true);
stage.getIcons().add(Sploty.SPLOTY_ICON);
stage.setOnCloseRequest(windowEvent -> Sploty.getGuiManager().getWindows().remove(this));
stage.show();
stage.requestFocus();
}
public BrowserTab getCurrentTab(){
return tabBar.getCurrentTab();
}
public MainShortcuts getShortcurts() {
return shortcurts;
}
public Stage getStage() {
return stage;
}
public Scene getScene() {
return scene;
}
public MenuManager getMenuBar() {
return menuBar;
}
public TabList getTabBar() {
return tabBar;
}
@Override
public void read(final FileSerializer serializer) throws IOException {
int size = serializer.readVarInt(), selected = serializer.readVarInt();
for (int i = 0;i < size;i++)
tabBar.getTabs().add(new BrowserTab(tabBar, serializer.readString()));
tabBar.getSelectionModel().select(selected);
}
@Override
public void write(final FileSerializer serializer) throws IOException {
serializer.writeVarInt(tabBar.getTabs().size());
serializer.writeVarInt(tabBar.getSelectionModel().getSelectedIndex());
for (final Tab tab : tabBar.getTabs())
serializer.writeString(((BrowserTab) tab).getCurrentUrl());
}
}