Add themes

Update UI
This commit is contained in:
Dmitry Isaenko 2019-10-22 09:24:56 +03:00
parent baf0b3f79e
commit 6dc19ebdc5
15 changed files with 422 additions and 93 deletions

View file

@ -6,7 +6,7 @@
<groupId>loper</groupId> <groupId>loper</groupId>
<artifactId>LogiLedus</artifactId> <artifactId>LogiLedus</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.1-SNAPSHOT</version>
<!-- <url></url> --> <!-- <url></url> -->
<description> <description>

View file

@ -5,6 +5,7 @@ import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.stage.Stage; import javafx.stage.Stage;
import logiledus.Mediator;
import java.io.IOException; import java.io.IOException;
import java.util.Locale; import java.util.Locale;
@ -35,8 +36,9 @@ public class AboutWindow {
new Image(getClass().getResourceAsStream("/ico/appIcon_64.png")), new Image(getClass().getResourceAsStream("/ico/appIcon_64.png")),
new Image(getClass().getResourceAsStream("/ico/appIcon_128.png")) new Image(getClass().getResourceAsStream("/ico/appIcon_128.png"))
); );
stageAbout.setScene(new Scene(parentAbout, 500, 500)); Scene scene = new Scene(parentAbout, 500, 500);
scene.getStylesheets().add(Mediator.getInstance().getPreferences().getTheme());
stageAbout.setScene(scene);
stageAbout.show(); stageAbout.show();
} catch (IOException ignored){} } catch (IOException ignored){}

View file

@ -14,12 +14,6 @@ public class AppPreferences {
public void setUseTray(boolean value){ preferences.putBoolean("USE_TRAY", value); } public void setUseTray(boolean value){ preferences.putBoolean("USE_TRAY", value); }
public boolean getUseTray(){ return preferences.getBoolean("USE_TRAY", true); } public boolean getUseTray(){ return preferences.getBoolean("USE_TRAY", true); }
/* public void setTheme(String value){ preferences.put("THEME", value); }
public void setPath(String path){ public String getTheme(){ return preferences.get("THEME", "/light.css"); }
preferences.put("PATH", path);
}
public String getPath(){
return preferences.get("PATH", "/");
}
*/
} }

View file

@ -16,7 +16,7 @@ import java.util.Locale;
import java.util.ResourceBundle; import java.util.ResourceBundle;
public class MainFx extends Application { public class MainFx extends Application {
public static final String appVersion = "v1.0"; public static final String appVersion = "v1.1";
private static boolean traySupport = true; private static boolean traySupport = true;
@ -38,9 +38,6 @@ public class MainFx extends Application {
SwingUtilities.invokeLater(this::addAppToTray); SwingUtilities.invokeLater(this::addAppToTray);
} }
//-------------------------------------------------------- //--------------------------------------------------------
Mediator.getInstance().setHostServices(getHostServices());
Mediator.getInstance().setPreferences(appPreferences);
FXMLLoader loader = new FXMLLoader(getClass().getResource("/Main.fxml")); FXMLLoader loader = new FXMLLoader(getClass().getResource("/Main.fxml"));
Locale locale = new Locale(Locale.getDefault().getISO3Language()); Locale locale = new Locale(Locale.getDefault().getISO3Language());
@ -78,7 +75,12 @@ public class MainFx extends Application {
primaryStage.setMinWidth(1215); primaryStage.setMinWidth(1215);
primaryStage.setMinHeight(550); primaryStage.setMinHeight(550);
Scene mainScene = new Scene(root, 1215, 525); Scene mainScene = new Scene(root, 1215, 525);
mainScene.getStylesheets().add("/light.css"); mainScene.getStylesheets().add(appPreferences.getTheme());
Mediator.getInstance().setHostServices(getHostServices());
Mediator.getInstance().setPreferences(appPreferences);
Mediator.getInstance().setScene(mainScene);
primaryStage.setScene(mainScene); primaryStage.setScene(mainScene);
primaryStage.show(); primaryStage.show();

View file

@ -1,16 +1,19 @@
package logiledus; package logiledus;
import javafx.application.HostServices; import javafx.application.HostServices;
import javafx.scene.Scene;
public class Mediator{ public class Mediator{
private HostServices hostServices; private HostServices hostServices;
private AppPreferences preferences; private AppPreferences preferences;
private Scene scene;
public static Mediator getInstance(){ return MediatorHolder.INSTANCE; } public static Mediator getInstance(){ return MediatorHolder.INSTANCE; }
public void setHostServices(HostServices hostServices){ this.hostServices = hostServices; } public void setHostServices(HostServices hostServices){ this.hostServices = hostServices; }
public void setPreferences(AppPreferences preferences){ this.preferences = preferences; } public void setPreferences(AppPreferences preferences){ this.preferences = preferences; }
public void setScene(Scene scene){ this.scene = scene; }
private static class MediatorHolder{ private static class MediatorHolder{
private static final Mediator INSTANCE = new Mediator(); private static final Mediator INSTANCE = new Mediator();
@ -18,4 +21,9 @@ public class Mediator{
public HostServices getHostServices() { return hostServices; } public HostServices getHostServices() { return hostServices; }
public AppPreferences getPreferences() { return preferences; } public AppPreferences getPreferences() { return preferences; }
public void setTheme(String themeString){
scene.getStylesheets().remove(0);
scene.getStylesheets().add(themeString);
}
} }

View file

@ -16,16 +16,26 @@ public class SettingsController implements Initializable {
private Button cancelBtn, okBtn; private Button cancelBtn, okBtn;
@FXML @FXML
private CheckBox trayCB; private CheckBox trayCB, drkThemeCB;
@Override @Override
public void initialize(URL url, ResourceBundle resourceBundle) { public void initialize(URL url, ResourceBundle resourceBundle) {
trayCB.setSelected(Mediator.getInstance().getPreferences().getUseTray()); trayCB.setSelected(Mediator.getInstance().getPreferences().getUseTray());
if (Mediator.getInstance().getPreferences().getTheme().equals("/dark.css"))
drkThemeCB.setSelected(true);
cancelBtn.setOnAction(actionEvent -> ((Stage) cancelBtn.getScene().getWindow()).close()); cancelBtn.setOnAction(actionEvent -> ((Stage) cancelBtn.getScene().getWindow()).close());
okBtn.setOnAction(actionEvent -> { okBtn.setOnAction(actionEvent -> {
Mediator.getInstance().getPreferences().setUseTray(trayCB.isSelected()); Mediator.getInstance().getPreferences().setUseTray(trayCB.isSelected());
if (drkThemeCB.isSelected()) {
Mediator.getInstance().getPreferences().setTheme("/dark.css");
Mediator.getInstance().setTheme("/dark.css");
}
else {
Mediator.getInstance().getPreferences().setTheme("/light.css");
Mediator.getInstance().setTheme("/light.css");
}
((Stage) cancelBtn.getScene().getWindow()).close(); ((Stage) cancelBtn.getScene().getWindow()).close();
}); });

View file

@ -5,6 +5,7 @@ import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.stage.Stage; import javafx.stage.Stage;
import logiledus.Mediator;
import java.io.IOException; import java.io.IOException;
import java.util.Locale; import java.util.Locale;
@ -35,7 +36,9 @@ public class SettingsWindow {
new Image(getClass().getResourceAsStream("/ico/appIcon_64.png")), new Image(getClass().getResourceAsStream("/ico/appIcon_64.png")),
new Image(getClass().getResourceAsStream("/ico/appIcon_128.png")) new Image(getClass().getResourceAsStream("/ico/appIcon_128.png"))
); );
stageAbout.setScene(new Scene(parentAbout, 500, 500)); Scene scene = new Scene(parentAbout, 500, 500);
scene.getStylesheets().add(Mediator.getInstance().getPreferences().getTheme());
stageAbout.setScene(scene);
stageAbout.show(); stageAbout.show();

View file

@ -1,16 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.ColorPicker?> <?import javafx.scene.control.*?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.MenuButton?>
<?import javafx.scene.control.RadioMenuItem?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiledus.Controllers.EffectsController"> <VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiledus.Controllers.EffectsController">
<padding> <padding>
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" /> <Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />

View file

@ -9,6 +9,7 @@
<?import javafx.scene.control.ToolBar?> <?import javafx.scene.control.ToolBar?>
<?import javafx.scene.control.Tooltip?> <?import javafx.scene.control.Tooltip?>
<?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.SVGPath?> <?import javafx.scene.shape.SVGPath?>
@ -33,7 +34,7 @@
<children> <children>
<TabPane fx:id="MainTabPane" side="LEFT" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS"> <TabPane fx:id="MainTabPane" side="LEFT" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS">
<tabs> <tabs>
<Tab fx:id="KeyLedTab"> <Tab fx:id="KeyLedTab" closable="false">
<content> <content>
<fx:include fx:id="KeysLeds" source="KeysLedsPane.fxml" VBox.vgrow="ALWAYS" /> <fx:include fx:id="KeysLeds" source="KeysLedsPane.fxml" VBox.vgrow="ALWAYS" />
</content> </content>
@ -41,7 +42,7 @@
<SVGPath content="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" /> <SVGPath content="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" />
</graphic> </graphic>
</Tab> </Tab>
<Tab fx:id="EffectsTab"> <Tab fx:id="EffectsTab" closable="false">
<content> <content>
<ScrollPane fitToWidth="true"> <ScrollPane fitToWidth="true">
<fx:include fx:id="Effects" source="EffectsPane.fxml" VBox.vgrow="ALWAYS" /> <fx:include fx:id="Effects" source="EffectsPane.fxml" VBox.vgrow="ALWAYS" />
@ -51,7 +52,7 @@
<SVGPath content="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /> <SVGPath content="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" />
</graphic> </graphic>
</Tab> </Tab>
<Tab fx:id="GameModeTab"> <Tab fx:id="GameModeTab" closable="false">
<content> <content>
<ScrollPane fitToWidth="true" prefHeight="200.0" prefWidth="200.0"> <ScrollPane fitToWidth="true" prefHeight="200.0" prefWidth="200.0">
<content> <content>
@ -71,57 +72,64 @@
<top> <top>
<ToolBar styleClass="header" BorderPane.alignment="CENTER"> <ToolBar styleClass="header" BorderPane.alignment="CENTER">
<items> <items>
<Button fx:id="applyBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> <HBox spacing="5.0" styleClass="header-box">
<tooltip> <children>
<Tooltip text="%btn_apply" /> <Button fx:id="applyBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
</tooltip> <tooltip>
<graphic> <Tooltip text="%btn_apply" />
<SVGPath content="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" /> </tooltip>
</graphic> <graphic>
</Button> <SVGPath content="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" />
<Pane prefWidth="10.0" /> </graphic>
<Button fx:id="openBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> <HBox.margin>
<graphic> <Insets right="10.0" />
<SVGPath content="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z" /> </HBox.margin>
</graphic> </Button>
<tooltip> <Button fx:id="openBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
<Tooltip text="%btn_open" /> <graphic>
</tooltip> <SVGPath content="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z" />
</Button> </graphic>
<Button fx:id="saveBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> <tooltip>
<graphic> <Tooltip text="%btn_open" />
<SVGPath content="M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z" /> </tooltip>
</graphic> </Button>
<tooltip> <Button fx:id="saveBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
<Tooltip text="%btn_save" /> <graphic>
</tooltip> <SVGPath content="M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z" />
</Button> </graphic>
<Button fx:id="saveAsBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> <tooltip>
<graphic> <Tooltip text="%btn_save" />
<SVGPath content="M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M17 2H5C3.89 2 3 2.9 3 4V18C3 19.1 3.89 20 5 20H19C20.1 20 21 19.1 21 18V6L17 2M19 18H5V4H16.17L19 6.83V18M12 11C10.34 11 9 12.34 9 14S10.34 17 12 17 15 15.66 15 14 13.66 11 12 11M6 5H15V9H6V5Z" /> </tooltip>
</graphic> </Button>
<tooltip> <Button fx:id="saveAsBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
<Tooltip text="%btn_save_as" /> <graphic>
</tooltip> <SVGPath content="M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M17 2H5C3.89 2 3 2.9 3 4V18C3 19.1 3.89 20 5 20H19C20.1 20 21 19.1 21 18V6L17 2M19 18H5V4H16.17L19 6.83V18M12 11C10.34 11 9 12.34 9 14S10.34 17 12 17 15 15.66 15 14 13.66 11 12 11M6 5H15V9H6V5Z" />
</Button> </graphic>
<Pane prefWidth="10.0" /> <tooltip>
<Button fx:id="settingsBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> <Tooltip text="%btn_save_as" />
<graphic> </tooltip>
<SVGPath content="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /> </Button>
</graphic> <Button fx:id="settingsBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
<tooltip> <graphic>
<Tooltip text="%btn_settings" /> <SVGPath content="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" />
</tooltip> </graphic>
</Button> <tooltip>
<Pane prefWidth="10.0" /> <Tooltip text="%btn_settings" />
<Button fx:id="aboutBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0"> </tooltip>
<graphic> <HBox.margin>
<SVGPath content="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /> <Insets left="10.0" right="10.0" />
</graphic> </HBox.margin>
<tooltip> </Button>
<Tooltip text="%menu_item_about" /> <Button fx:id="aboutBtn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="36.0" prefWidth="42.0">
</tooltip> <graphic>
</Button> <SVGPath content="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" />
</graphic>
<tooltip>
<Tooltip text="%menu_item_about" />
</tooltip>
</Button>
</children>
</HBox>
</items> </items>
</ToolBar> </ToolBar>
</top> </top>

View file

@ -17,9 +17,10 @@
</ButtonBar> </ButtonBar>
</bottom> </bottom>
<center> <center>
<VBox BorderPane.alignment="CENTER"> <VBox spacing="5.0" BorderPane.alignment="CENTER">
<children> <children>
<CheckBox fx:id="trayCB" mnemonicParsing="false" text="%setting_tray_support" /> <CheckBox fx:id="trayCB" mnemonicParsing="false" text="%setting_tray_support" />
<CheckBox fx:id="drkThemeCB" mnemonicParsing="false" text="%setting_use_dark_theme" />
</children> </children>
</VBox> </VBox>
</center> </center>

299
src/main/resources/dark.css Normal file
View file

@ -0,0 +1,299 @@
.root{
-fx-background: #2b2b2b;
}
.tool-bar{
-fx-background-color: #2b2b2b;
}
/* -======================== Buttons =====================- */
.button SVGPath{
-fx-fill: #ebebeb;
}
.button, .toggle-button, .menu-button {
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-border-color: #47ca60;
-fx-border-radius: 2;
-fx-border-width: 2;
-fx-text-fill: #ebebeb;
//-fx-effect: dropshadow(three-pass-box, #dadada, 2, 0, 0, 0);
}
.menu-button:hover, .button:hover, .choice-box:hover, .menu-button:focused:hover, .button:focused:hover, .choice-box:focused:hover, .toggle-button:hover, .toggle-button:focused:hover{
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-border-color: #4a81dd;
-fx-border-radius: 2;
-fx-border-width: 2;
-fx-text-fill: #ebebeb;
//-fx-effect: dropshadow(three-pass-box, #4a81dd, 2, 0, 0, 0);
}
.menu-button:focused, .button:focused, .choice-box:focused, .toggle-button:focused{
-fx-background-color: #4b4e51;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-border-color: #4c7352;
-fx-border-radius: 2;
-fx-border-width: 2;
-fx-text-fill: #ebebeb;
//-fx-effect: dropshadow(three-pass-box, #dadada, 2, 0, 0, 0);
}
.menu-button:pressed, .button:pressed, .menu-button:pressed:hover, .button:pressed:hover, .toggle-button:pressed, .toggle-button:pressed:hover{
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-border-color: #e82382;
-fx-border-radius: 2;
-fx-border-width: 2;
-fx-text-fill: #ebebeb;
//-fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0);
}
/* -======================== Buttons keys =====================- */
.toggle-button:selected, .toggle-button:selected:hover{
-fx-background-color: #214131;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 8;
-fx-border-color: #ccfed1;
-fx-border-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
//-fx-effect: dropshadow(three-pass-box, #dadada, 2, 0, 0, 0);
}
.button_keycap, .toggle-button_keycap {
-fx-background-color: #3c3f41;
-fx-background-radius: 8;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #cfcfcf;
-fx-border-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #8f8f8f, 1, 0, 0, 0);
}
.button_keycap:hover, .button_keycap:focused:hover, .toggle-button_keycap:hover, .toggle-button_keycap:focused:hover{
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #4a81dd;
-fx-border-radius: 8;
-fx-background-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #4a81dd, 2, 0, 0, 0);
}
.button_keycap:focused, .toggle-button_keycap:focused{
-fx-background-color: #dadada;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #8f8f8f;
-fx-border-radius: 8;
-fx-background-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #8f8f8f, 1, 0, 0, 0);
}
.button_keycap:pressed, .button_keycap:pressed:hover, .toggle-button_keycap:pressed, .toggle-button_keycap:pressed:hover{
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #e82382;
-fx-border-radius: 8;
-fx-background-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0);
}
.toggle-button_keycap:selected, .toggle-button_keycap:selected:hover{
-fx-background-color: #214131;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #ccfed1;
-fx-border-radius: 8;
-fx-background-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: none;
}
.always_off_button:disabled, .always_off_button:disabled:selected {
-fx-opacity: 1.0;
-fx-background-color: #412441;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-border-color: #f1cbf1;
-fx-border-radius: 8;
-fx-background-radius: 8;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #f1cbf1, 1, 0, 0, 0);
}
/* -======================== TextArea =====================- */
.text-area{
-fx-background-color: transparent;
-fx-control-inner-background: #3c3f41;
-fx-border-color: #06b9bb;
-fx-border-radius: 3;
-fx-border-width: 1;
-fx-text-fill: #ebebeb;
}
.progress-bar {
-fx-background-color: transparent;
-fx-box-border: transparent;
}
.progress-bar > .track {
-fx-background-color: transparent;
-fx-box-border: transparent;
}
.progress-bar > .bar {
-fx-background-color: linear-gradient(to right, #00bce4, #ff5f53);
-fx-background-radius: 2;
-fx-background-insets: 1 1 2 1;
-fx-padding: 0.23em;
}
.dialog-pane {
-fx-background-color: #3c3f41;
}
.dialog-pane > .button-bar > .container{
-fx-background-color: #2b2b2b;
}
.dialog-pane > .label{
-fx-padding: 10 5 10 5;
}
/* -======================== ToolBar =========================- */
/*
.tool-bar{
-fx-background-color: transparent;
}
*/
/* -======================== Choice box =========================- */
.choice-box {
-fx-background-color: #3c3f41;
-fx-border-color: #3c3f41;
-fx-border-radius: 3;
-fx-border-width: 2;
-fx-mark-color: #eea11e;
-fx-effect: dropshadow(three-pass-box, #b4b4b4, 2, 0, 0, 0);
}
.choice-box > .label {
-fx-text-fill: #ebebeb;
}
.choice-box:pressed, .choice-box:pressed:hover{
-fx-background-color: #3c3f41;
-fx-border-color: #eea11e;
-fx-border-radius: 3;
-fx-border-width: 2;
-fx-text-fill: #ebebeb;
-fx-effect: dropshadow(three-pass-box, #eea11e, 2, 0, 0, 0);
}
// Background color of the whole context menu
.choice-box .context-menu {
-fx-background-color: #3c3f41;
}
// Focused item background color in the list
.choice-box .context-menu .menu-item:focused {
-fx-background-color: #eea11e;
}
.choice-box .context-menu .menu-item:focused .label {
-fx-text-fill: #ebebeb;
}
/* -======================== TAB PANE =========================- */
.tab-pane .tab SVGPath{
-fx-fill: #ebebeb;
}
.tab-pane .tab:selected SVGPath, .tab-pane .tab:selected:hover SVGPath{
-fx-fill: #ebebeb;
}
.tab-pane .tab:hover SVGPath{
-fx-fill: #d0d0d0;
}
.tab-pane .tab{
-fx-background-color: #3c3f41; /* #2b2b2b; */
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
-fx-border-radius: 0 0 0 0;
-fx-border-width: 0 0 3 0;
-fx-border-color: #2b2b2b;
}
.tab-pane .tab:selected{
-fx-background-color: #3c3f41;/*#2b2b2b; */
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
-fx-border-radius: 0 0 0 0;
-fx-border-width: 0 0 3 0;
-fx-border-color: #40b9bb; /* #289de8; */
}
.tab-pane > .tab-header-area {
-fx-background-insets: 0.0;
-fx-padding: 5 5 5 5;
}
.tab-pane > .tab-header-area > .tab-header-background
{
-fx-background-color: #2b2b2b;
}
.tab-pane > .tab-header-area > .headers-region > .tab {
-fx-padding: 10;
}
/* -========================== Context menu =====================- */
.menu-button .label {
-fx-text-fill: #ebebeb;
}
.menu-button .arrow {
-fx-background-color: #ebebeb;
}
.context-menu {
-fx-background-color: #3c3f41;
-fx-cursor: hand;
}
.context-menu .menu-item .label {
-fx-text-fill: #ebebeb;
}
.context-menu .menu-item:focused .label {
-fx-text-fill: white;
}
/* -========================== Text Field =====================- */
.text-field {
-fx-border-color: #289de8;
-fx-border-width: 0 0 1 0;
-fx-background-color: transparent;
-fx-text-fill: #ebebeb;
}
.text-field:focused {
-fx-border-color: #e82382;
-fx-border-width: 0 0 1 0;
-fx-background-color: transparent;
-fx-text-fill: #e82382;
}
/* -========================== footer pane =====================- */
.footer{
-fx-background-color: #3c3f41;
-fx-border-color: #ebebeb;
-fx-border-width: 1 0 0 0;
}
/* -========================== header pane =====================- */
.header {
-fx-background-image: url("pttrn_drk.png");
-fx-background-position: center;
-fx-background-repeat: repeat;
-fx-border-color: #b5b5b5;
-fx-border-width: 0 0 1 0;
}
.header-box {
-fx-background-color: #3c3f41;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-padding: 3.5;
}

View file

@ -46,18 +46,18 @@
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
//-fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0); //-fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0);
} }
/* -======================== Buttons keys =====================- */
.toggle-button:selected, .toggle-button:selected:hover{ .toggle-button:selected, .toggle-button:selected:hover{
-fx-background-color: #e1feeb; -fx-background-color: #e1feeb;
-fx-background-insets: 0 0 0 0, 0, 1, 2; -fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2; -fx-background-radius: 8;
-fx-border-color: #ccfed1; -fx-border-color: #ccfed1;
-fx-border-radius: 2; -fx-border-radius: 8;
-fx-border-width: 2; -fx-border-width: 1;
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
//-fx-effect: dropshadow(three-pass-box, #dadada, 2, 0, 0, 0); -fx-effect: dropshadow(three-pass-box, #dadada, 2, 0, 0, 0);
} }
/* -======================== Buttons keys =====================- */
.button_keycap, .toggle-button_keycap { .button_keycap, .toggle-button_keycap {
-fx-background-color: #fefefe; -fx-background-color: #fefefe;
-fx-background-radius: 8; -fx-background-radius: 8;
@ -108,7 +108,7 @@
-fx-background-radius: 8; -fx-background-radius: 8;
-fx-border-width: 1; -fx-border-width: 1;
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
-fx-effect: none; -fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0);
} }
.always_off_button:disabled, .always_off_button:disabled:selected { .always_off_button:disabled, .always_off_button:disabled:selected {
@ -128,7 +128,7 @@
-fx-control-inner-background: #fefefe; -fx-control-inner-background: #fefefe;
-fx-border-color: #06b9bb; -fx-border-color: #06b9bb;
-fx-border-radius: 3; -fx-border-radius: 3;
-fx-border-width: 2; -fx-border-width: 1;
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
} }
@ -215,16 +215,16 @@
-fx-focus-color: transparent; -fx-focus-color: transparent;
-fx-faint-focus-color: transparent; -fx-faint-focus-color: transparent;
-fx-border-radius: 0 0 0 0; -fx-border-radius: 0 0 0 0;
-fx-border-width: 3 0 0 0; -fx-border-width: 0 0 3 0;
-fx-border-color: #fefefe; -fx-border-color: #fefefe;
} }
.tab-pane .tab:selected{ .tab-pane .tab:selected{
-fx-background-color: #ebebeb; -fx-background-color: #fefefe;
-fx-focus-color: transparent; -fx-focus-color: transparent;
-fx-faint-focus-color: transparent; -fx-faint-focus-color: transparent;
-fx-border-radius: 0 0 0 0; -fx-border-radius: 0 0 0 0;
-fx-border-width: 3 0 0 0; -fx-border-width: 0 0 3 0;
-fx-border-color: #40b9bb; /* #289de8; */ -fx-border-color: #40b9bb; /* #289de8; */
} }
@ -235,7 +235,7 @@
.tab-pane > .tab-header-area > .tab-header-background .tab-pane > .tab-header-area > .tab-header-background
{ {
-fx-background-color: #fefefe; -fx-background-color: #ebebeb;
} }
.tab-pane > .tab-header-area > .headers-region > .tab { .tab-pane > .tab-header-area > .headers-region > .tab {
@ -279,3 +279,10 @@
-fx-border-color: #b5b5b5; -fx-border-color: #b5b5b5;
-fx-border-width: 0 0 1 0; -fx-border-width: 0 0 1 0;
} }
.header-box {
-fx-background-color: #ebebeb;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
-fx-background-radius: 2;
-fx-padding: 3.5;
}

View file

@ -705,3 +705,4 @@ setting_tray_support=Minimize to tray
setting_save_and_close=Save and close setting_save_and_close=Save and close
setting_cancel=Cancel setting_cancel=Cancel
open=Open open=Open
setting_use_dark_theme=Use dark theme

View file

@ -31,3 +31,4 @@ setting_tray_support=\u0421\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044
setting_cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C setting_cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
setting_save_and_close=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044C setting_save_and_close=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044C
open=\u041E\u0442\u043A\u0440\u044B\u0442\u044C open=\u041E\u0442\u043A\u0440\u044B\u0442\u044C
setting_use_dark_theme=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0442\u0451\u043C\u043D\u0443\u044E \u0442\u0435\u043C\u0443

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB