Fixed issue where partial number of settings weren't loaded and improved ThemeManager
This commit is contained in:
parent
defd8924ae
commit
9e040c6d7a
5 changed files with 97 additions and 39 deletions
|
@ -79,7 +79,7 @@ public class DashboardController implements Initializable {
|
|||
@FXML
|
||||
Tab paramsTab, authTab, headersTab, bodyTab;
|
||||
|
||||
private JFXSnackbar snackBar = new JFXSnackbar(dashboard);
|
||||
private JFXSnackbar snackbar;
|
||||
private final String[] httpMethods = {"GET", "POST", "PUT", "DELETE", "PATCH"};
|
||||
private List<StringKeyValueFieldController> paramsControllers;
|
||||
private List<String> appendedParams;
|
||||
|
@ -110,6 +110,8 @@ public class DashboardController implements Initializable {
|
|||
Services.loggingService.logSevere("Could not load headers/body tabs.", e, LocalDateTime.now());
|
||||
}
|
||||
|
||||
snackbar = new JFXSnackbar(dashboard);
|
||||
|
||||
responseBox.getChildren().remove(0);
|
||||
promptLayer.setVisible(true);
|
||||
httpMethodBox.getItems().addAll(httpMethods);
|
||||
|
@ -150,7 +152,7 @@ public class DashboardController implements Initializable {
|
|||
String address = addressField.getText();
|
||||
if (address.equals("")) {
|
||||
promptLayer.setVisible(true);
|
||||
snackBar.show("Please enter an address.", 3000);
|
||||
snackbar.show("Please enter an address.", 3000);
|
||||
return;
|
||||
}
|
||||
switch (httpMethodBox.getValue()) {
|
||||
|
@ -165,7 +167,7 @@ public class DashboardController implements Initializable {
|
|||
if (requestManager == null || requestManager.getClass() != GETRequestManager.class)
|
||||
requestManager = new GETRequestManager(getRequest);
|
||||
else if (requestManager.isRunning()) {
|
||||
snackBar.show("Please wait while the current request is processed.", 3000);
|
||||
snackbar.show("Please wait while the current request is processed.", 3000);
|
||||
return;
|
||||
} else {
|
||||
requestManager.setRequest(getRequest);
|
||||
|
@ -187,7 +189,7 @@ public class DashboardController implements Initializable {
|
|||
if (requestManager == null || requestManager.getClass() != DataDispatchRequestManager.class)
|
||||
requestManager = new DataDispatchRequestManager(dataDispatchRequest);
|
||||
else if (requestManager.isRunning()) {
|
||||
snackBar.show("Please wait while the current request is processed.", 3000);
|
||||
snackbar.show("Please wait while the current request is processed.", 3000);
|
||||
return;
|
||||
} else {
|
||||
requestManager.setRequest(dataDispatchRequest);
|
||||
|
@ -204,7 +206,7 @@ public class DashboardController implements Initializable {
|
|||
if (requestManager == null || requestManager.getClass() != DELETERequestManager.class)
|
||||
requestManager = new DELETERequestManager(deleteRequest);
|
||||
else if (requestManager.isRunning()) {
|
||||
snackBar.show("Please wait while the current request is processed.", 3000);
|
||||
snackbar.show("Please wait while the current request is processed.", 3000);
|
||||
return;
|
||||
} else {
|
||||
requestManager.setRequest(deleteRequest);
|
||||
|
@ -221,7 +223,7 @@ public class DashboardController implements Initializable {
|
|||
Services.historyManager.saveHistory(getState());
|
||||
} catch (MalformedURLException MURLE) {
|
||||
promptLayer.setVisible(true);
|
||||
snackBar.show("Invalid address. Please verify and try again.", 3000);
|
||||
snackbar.show("Invalid address. Please verify and try again.", 3000);
|
||||
} catch (Exception E) {
|
||||
Services.loggingService.logSevere("Request execution failed.", E, LocalDateTime.now());
|
||||
errorLayer.setVisible(true);
|
||||
|
@ -254,7 +256,7 @@ public class DashboardController implements Initializable {
|
|||
} else if (throwable.getClass() == RedirectException.class) {
|
||||
RedirectException redirect = (RedirectException) throwable;
|
||||
addressField.setText(redirect.getNewLocation());
|
||||
snackBar.show("Resource moved permanently. Redirecting...", 3000);
|
||||
snackbar.show("Resource moved permanently. Redirecting...", 3000);
|
||||
requestManager = null;
|
||||
sendRequest();
|
||||
return;
|
||||
|
@ -277,7 +279,7 @@ public class DashboardController implements Initializable {
|
|||
private void onCancelled() {
|
||||
loadingLayer.setVisible(false);
|
||||
promptLayer.setVisible(true);
|
||||
snackBar.show("Request canceled.", 2000);
|
||||
snackbar.show("Request canceled.", 2000);
|
||||
requestManager.reset();
|
||||
}
|
||||
|
||||
|
@ -341,7 +343,7 @@ public class DashboardController implements Initializable {
|
|||
responseArea.setText("No body found in the response.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
snackBar.show("Response could not be parsed.", 5000);
|
||||
snackbar.show("Response could not be parsed.", 5000);
|
||||
Services.loggingService.logSevere("Response could not be parsed.", e, LocalDateTime.now());
|
||||
errorLayer.setVisible(true);
|
||||
errorTitle.setText("Parsing Error");
|
||||
|
|
|
@ -19,6 +19,7 @@ package com.rohitawate.everest.controllers;
|
|||
import com.jfoenix.controls.JFXButton;
|
||||
import com.rohitawate.everest.models.DashboardState;
|
||||
import com.rohitawate.everest.util.Services;
|
||||
import com.rohitawate.everest.util.themes.ThemeManager;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.property.StringProperty;
|
||||
|
@ -71,6 +72,7 @@ public class HomeWindowController implements Initializable {
|
|||
private final KeyCombination focusAuth = new KeyCodeCombination(KeyCode.A, KeyCombination.ALT_DOWN);
|
||||
private final KeyCombination focusHeaders = new KeyCodeCombination(KeyCode.H, KeyCombination.ALT_DOWN);
|
||||
private final KeyCombination focusBody = new KeyCodeCombination(KeyCode.B, KeyCombination.ALT_DOWN);
|
||||
private final KeyCombination refreshTheme = new KeyCodeCombination(KeyCode.T, KeyCombination.SHIFT_DOWN);
|
||||
|
||||
private HashMap<Tab, DashboardController> tabControllerMap;
|
||||
private List<HistoryItemController> historyItemControllers;
|
||||
|
@ -188,6 +190,8 @@ public class HomeWindowController implements Initializable {
|
|||
if (!httpMethod.equals("GET") && !httpMethod.equals("DELETE")) {
|
||||
controller.requestOptionsTab.getSelectionModel().select(controller.bodyTab);
|
||||
}
|
||||
} else if (refreshTheme.match(e)) {
|
||||
ThemeManager.refreshTheme();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -22,13 +22,15 @@ import com.rohitawate.everest.util.EverestUtilities;
|
|||
import com.rohitawate.everest.util.Services;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* Loads up custom values into Settings from settings.json.
|
||||
* Loads up custom values into Settings from Everest/config/settings.json.
|
||||
*/
|
||||
public class SettingsLoader implements Runnable {
|
||||
public Thread settingsLoaderThread;
|
||||
private JsonNode nodes;
|
||||
|
||||
public SettingsLoader() {
|
||||
settingsLoaderThread = new Thread(this, "Settings loader thread");
|
||||
|
@ -40,27 +42,64 @@ public class SettingsLoader implements Runnable {
|
|||
try {
|
||||
File settingsFile = new File("Everest/config/settings.json");
|
||||
|
||||
System.out.print("Settings file found. Loading settings... ");
|
||||
System.out.println("Settings file found. Loading settings... ");
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
JsonNode nodes = mapper.readTree(settingsFile);
|
||||
nodes = mapper.readTree(settingsFile);
|
||||
|
||||
Settings.responseAreaFont = nodes.get("responseAreaFont").toString();
|
||||
Settings.responseAreaFontSize = nodes.get("responseAreaFontSize").asInt();
|
||||
Settings.responseAreaFont = setStringSetting(Settings.responseAreaFont, "responseAreaFont");
|
||||
Settings.responseAreaFontSize = setIntegerSetting(Settings.responseAreaFontSize, "responseAreaFontSize");
|
||||
|
||||
Settings.connectionTimeOutEnable = nodes.get("connectionTimeOutEnable").asBoolean();
|
||||
Settings.connectionTimeOutEnable = setBooleanSetting(Settings.connectionTimeOutEnable, "connectionTimeOutEnable");
|
||||
if (Settings.connectionTimeOutEnable)
|
||||
Settings.connectionTimeOut = nodes.get("connectionTimeOut").asInt();
|
||||
Settings.connectionTimeOut = setIntegerSetting(Settings.connectionTimeOut, "connectionTimeOut");
|
||||
|
||||
Settings.connectionReadTimeOutEnable = nodes.get("connectionReadTimeOutEnable").asBoolean();
|
||||
Settings.connectionReadTimeOutEnable = setBooleanSetting(Settings.connectionReadTimeOutEnable, "connectionReadTimeOutEnable");
|
||||
if (Settings.connectionReadTimeOutEnable)
|
||||
Settings.connectionReadTimeOut = nodes.get("connectionReadTimeOut").asInt();
|
||||
Settings.connectionReadTimeOut = setIntegerSetting(Settings.connectionReadTimeOut, "connectionReadTimeOut");
|
||||
|
||||
Settings.theme = EverestUtilities.trimString(nodes.get("theme").toString());
|
||||
} catch (Exception E) {
|
||||
Services.loggingService.logInfo("Default settings will be used.", LocalDateTime.now());
|
||||
} finally {
|
||||
Services.loggingService.logInfo("Settings loaded.", LocalDateTime.now());
|
||||
Settings.theme = EverestUtilities.trimString(setStringSetting(Settings.theme, "theme"));
|
||||
} catch (IOException IOE) {
|
||||
Services.loggingService.logInfo("Settings file not found. Using defaults", LocalDateTime.now());
|
||||
}
|
||||
}
|
||||
|
||||
private String setStringSetting(String defaultValue, String identifier) {
|
||||
JsonNode value = nodes.get(identifier);
|
||||
|
||||
if (value != null) {
|
||||
defaultValue = value.toString();
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Loaded: " + defaultValue, LocalDateTime.now());
|
||||
} else {
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Not found. Using default value.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private int setIntegerSetting(int defaultValue, String identifier) {
|
||||
JsonNode value = nodes.get(identifier);
|
||||
|
||||
if (value != null) {
|
||||
defaultValue = value.asInt();
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Loaded: " + defaultValue, LocalDateTime.now());
|
||||
} else {
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Not found. Using default value.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private boolean setBooleanSetting(boolean defaultValue, String identifier) {
|
||||
JsonNode value = nodes.get(identifier);
|
||||
|
||||
if (value != null) {
|
||||
defaultValue = value.asBoolean();
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Loaded: " + defaultValue, LocalDateTime.now());
|
||||
} else {
|
||||
Services.loggingService.logInfo("[" + identifier + "]: Not found. Using default value.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,25 +28,38 @@ import java.util.List;
|
|||
public class ThemeManager {
|
||||
private static List<Parent> parentNodes = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Refreshes the theme of all the registered parents by replacing
|
||||
* the old external one with the new one. The fallback theme ie "Adreana"
|
||||
* is always retained.
|
||||
*/
|
||||
public static void refreshTheme() {
|
||||
if (!Settings.theme.equals("Adreana")) {
|
||||
File themeFile = new File("Everest/themes/" + Settings.theme + ".css");
|
||||
if (themeFile.exists()) {
|
||||
String themePath = themeFile.toURI().toString();
|
||||
|
||||
for (Parent parent : parentNodes) {
|
||||
parent.getStylesheets().clear();
|
||||
parent.getStylesheets().add(themePath);
|
||||
parent.getStylesheets().remove(1);
|
||||
parent.getStylesheets().add(1, themePath);
|
||||
}
|
||||
|
||||
Services.loggingService.logInfo("Theme changed to " + Settings.theme, LocalDateTime.now());
|
||||
Services.loggingService.logInfo("Theme changed to " + Settings.theme + ".", LocalDateTime.now());
|
||||
} else {
|
||||
Services.loggingService.logInfo(Settings.theme + ": No such theme file found.", LocalDateTime.now());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void setTheme(Parent parent) {
|
||||
if (!Settings.theme.equals("Adreana")) {
|
||||
File themeFile = new File("Everest/themes/" + Settings.theme + ".css");
|
||||
if (themeFile.exists()) {
|
||||
parent.getStylesheets().add(themeFile.toURI().toString());
|
||||
parentNodes.add(parent);
|
||||
} else {
|
||||
Services.loggingService.logInfo(Settings.theme + ": No such theme file found.", LocalDateTime.now());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue