Skip to content

Commit 7351b87

Browse files
committed
Made UserData instance object.
Moved theme persisting to initialize methods. Code view also closes when new analysis is started.
1 parent 56ca6b4 commit 7351b87

File tree

10 files changed

+29
-27
lines changed

10 files changed

+29
-27
lines changed

src/main/java/ee/ut/similaritydetector/ui/SimilarityDetectorLauncher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void loadMainView(Stage stage) throws IOException {
4646
// Icon from: https://icons-for-free.com/spy-131964785010048699/ [25.03.2021]
4747
stage.getIcons().add(new Image(getClass().getResourceAsStream("/ee/ut/similaritydetector/img/app_icon.png")));
4848
stage.show();
49-
stage.setUserData(new UserData(true));
49+
UserData.getInstance().setDarkMode(true);
5050
stage.setOnCloseRequest(this::showExitConfirmationAlert);
5151
MainViewController.stage = stage;
5252
}
@@ -74,7 +74,7 @@ private void showExitConfirmationAlert(WindowEvent windowEvent) {
7474
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
7575
stage.getIcons().add(new Image(getClass().getResourceAsStream("/ee/ut/similaritydetector/img/app_icon.png")));
7676
// Dark mode
77-
if (((UserData) MainViewController.stage.getUserData()).isDarkMode()) {
77+
if (UserData.getInstance().isDarkMode()) {
7878
alert.getDialogPane().getStylesheets().add(String.valueOf(this.getClass().getResource(
7979
"/ee/ut/similaritydetector/style/dark_mode.scss")));
8080
}

src/main/java/ee/ut/similaritydetector/ui/components/AccordionTableView.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ public AccordionTableView(SimilarSolutionCluster cluster) {
7676
lineText.append(word).append(" ");
7777
Text text = new Text(lineText.toString());
7878
if (text.getLayoutBounds().getWidth() > 400 - 50) {
79-
System.out.println(lineText);
8079
headerText.append(System.lineSeparator());
8180
lineText.delete(0, lineText.length());
8281
lineText.append(word);

src/main/java/ee/ut/similaritydetector/ui/controllers/CodePaneController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ private void onTabClosed() {
5555
*/
5656
public void loadSolutionSourceCode() throws Exception {
5757
codeTab.setText(solution.getAuthor() + " - " + solution.getExerciseName());
58-
UserData userData = (UserData) MainViewController.stage.getUserData();
59-
if (userData.isDarkMode()) {
58+
if (UserData.getInstance().isDarkMode()) {
6059
loadDarkThemeHTML();
6160
} else {
6261
loadLightThemeHTML();

src/main/java/ee/ut/similaritydetector/ui/controllers/CodeViewController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ private void initialize() {
9999
arrowImg.setFitWidth(9);
100100
hideSideBarButton.setGraphic(arrowImg);
101101
hideSideBarButton.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
102+
103+
// Persists dark theme if it was activated before
104+
Platform.runLater(menuBarController::persistCurrentTheme);
102105
}
103106

104107
/**

src/main/java/ee/ut/similaritydetector/ui/controllers/MainViewController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ private void initialize() {
8585
toolTipManager.setDismissDelay(10000);
8686
toolTipManager.setInitialDelay(600);
8787
toolTipManager.setReshowDelay(300);
88+
89+
// Persists dark theme if it was activated before
90+
Platform.runLater(menuBarController::persistCurrentTheme);
8891
}
8992

9093
/**
@@ -238,9 +241,6 @@ private void openResultsView(Analyser analyser) throws IOException {
238241
stage.setScene(resultsViewScene);
239242
stage.setTitle("Source code similarity detector - Results - " + analyser.getZipDirectory().getName());
240243

241-
// Persists dark theme if it was activated before
242-
Platform.runLater(() -> menuBarController.persistCurrentTheme());
243-
244244
// Makes the "View clusters" button clickable if analysis found any clusters
245245
controller.toggleClusterButtonUsability();
246246

src/main/java/ee/ut/similaritydetector/ui/controllers/MenuBarController.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,11 @@ public MenuItem getCloseAllTabsMenuItem() {
4646

4747
@FXML
4848
private void initialize() {
49-
lightTheme.setOnAction(event -> Platform.runLater(this::activateClassicTheme));
49+
lightTheme.setOnAction(event -> Platform.runLater(this::activateLightTheme));
5050
darkTheme.setOnAction(event -> Platform.runLater(this::activateDarkTheme));
5151
// When scenes are switched then persists theme
5252
if (MainViewController.stage != null) {
53-
UserData userData = (UserData) MainViewController.stage.getUserData();
54-
if (userData.isDarkMode()) {
53+
if (UserData.getInstance().isDarkMode()) {
5554
darkTheme.setSelected(true);
5655
} else {
5756
lightTheme.setSelected(true);
@@ -72,9 +71,7 @@ private void exitMenuItemClicked() {
7271
* Activates dark theme on every currently opened window by adding a css stylesheet to the scenes.
7372
*/
7473
private void activateDarkTheme() {
75-
UserData userData = (UserData) MainViewController.stage.getUserData();
76-
userData.setDarkMode(true);
77-
MainViewController.stage.setUserData(userData);
74+
UserData.getInstance().setDarkMode(true);
7875
Stage.getWindows().forEach(window -> {
7976
ObservableList<String> stylesheets = window.getScene().getStylesheets();
8077
if (! stylesheets.contains(String.valueOf(this.getClass().getResource(darkThemeStylesheetPath)))) {
@@ -89,10 +86,8 @@ private void activateDarkTheme() {
8986
/**
9087
* Activates light theme on every currently opened window by adding a css stylesheet to the scenes.
9188
*/
92-
private void activateClassicTheme() {
93-
UserData userData = (UserData) MainViewController.stage.getUserData();
94-
userData.setDarkMode(false);
95-
MainViewController.stage.setUserData(userData);
89+
private void activateLightTheme() {
90+
UserData.getInstance().setDarkMode(false);
9691
Stage.getWindows().forEach(window -> window.getScene().getStylesheets().remove(String.valueOf(this.getClass().getResource(darkThemeStylesheetPath))));
9792
if (CodeViewController.getInstance() != null){
9893
CodeViewController.getInstance().getOpenCodePanes().forEach(CodePaneController::loadLightThemeHTML);
@@ -106,7 +101,7 @@ public void persistCurrentTheme() {
106101
if (darkTheme.isSelected()) {
107102
activateDarkTheme();
108103
} else {
109-
activateClassicTheme();
104+
activateLightTheme();
110105
}
111106
}
112107

src/main/java/ee/ut/similaritydetector/ui/controllers/ResultsViewController.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ResultsViewController {
2222

2323
private Analyser analyser;
2424
private MainViewController mainViewController;
25+
private Stage codeViewStage;
2526

2627
@FXML
2728
private MenuBarController menuBarController;
@@ -70,6 +71,8 @@ public void setMainViewController(MainViewController mainViewController) {
7071

7172
@FXML
7273
private void initialize() {
74+
// Persists dark theme if it was activated before
75+
Platform.runLater(menuBarController::persistCurrentTheme);
7376
}
7477

7578
/**
@@ -148,10 +151,8 @@ private void openCodeView() throws IOException {
148151
// Icon from: https://icons-for-free.com/spy-131964785010048699/ [25.03.2021]
149152
newWindow.getIcons().add(new Image(getClass().getResourceAsStream("/ee/ut/similaritydetector/img/app_icon.png")));
150153

151-
// Persists dark theme if it was activated before
152-
Platform.runLater(menuBarController::persistCurrentTheme);
153-
154154
newWindow.show();
155+
codeViewStage = newWindow;
155156

156157
// Resize cluster table columns
157158
Platform.runLater(controller::resizeClusterTableColumns);
@@ -160,6 +161,11 @@ private void openCodeView() throws IOException {
160161
@FXML
161162
private void runNewAnalysis() {
162163
try {
164+
// Close code view if open
165+
if (codeViewStage != null) {
166+
codeViewStage.close();
167+
codeViewStage = null;
168+
}
163169
openMainView();
164170
} catch (IOException e) {
165171
e.printStackTrace();
@@ -177,9 +183,6 @@ private void openMainView() throws IOException {
177183
// Icon from: https://icons-for-free.com/spy-131964785010048699/ [25.03.2021]
178184
MainViewController.stage.getIcons().add(new Image(getClass().getResourceAsStream("/ee/ut/similaritydetector/img/app_icon.png")));
179185

180-
// Persists dark theme if it was activated before
181-
Platform.runLater(menuBarController::persistCurrentTheme);
182-
183186
mainViewController.openOptions();
184187
MainViewController.stage.show();
185188
}

src/main/java/ee/ut/similaritydetector/ui/utils/AlertUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static Alert createAlert(String errorMessage, String contextMessage, Aler
2323
stage.setTitle("");
2424
stage.getIcons().add(new Image(AlertUtils.class.getResourceAsStream("/ee/ut/similaritydetector/img/app_icon.png")));
2525
// Dark mode
26-
if (((UserData) MainViewController.stage.getUserData()).isDarkMode()) {
26+
if (UserData.getInstance().isDarkMode()) {
2727
alert.getDialogPane().getStylesheets().add(String.valueOf(AlertUtils.class.getResource(
2828
"/ee/ut/similaritydetector/style/dark_mode.scss")));
2929
}

src/main/java/ee/ut/similaritydetector/ui/utils/UserData.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ public UserData(boolean isDarkMode) {
1414
}
1515

1616
public static UserData getInstance() {
17+
if (instance == null) {
18+
instance = new UserData(true);
19+
}
1720
return instance;
1821
}
1922

src/main/resources/ee/ut/similaritydetector/style/code_view_style.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
#hideSideBarButton {
3232
-fx-background-radius: 1000;
33-
-fx-opacity: 0.85;
33+
-fx-opacity: 0.9;
3434
}
3535

3636
#hideSideBarButton:focused {

0 commit comments

Comments
 (0)