diff --git a/G-Earth/src/main/java/gearth/Main.java b/G-Earth/src/main/java/gearth/Main.java
index 736dc3a..133bfd3 100644
--- a/G-Earth/src/main/java/gearth/Main.java
+++ b/G-Earth/src/main/java/gearth/Main.java
@@ -1,49 +1,42 @@
package gearth;
import gearth.misc.AdminValidator;
+import gearth.misc.Cacher;
+import gearth.misc.UpdateChecker;
import gearth.ui.GEarthController;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
-import javafx.scene.control.Alert;
-import javafx.scene.control.ButtonType;
-import javafx.scene.control.Hyperlink;
-import javafx.scene.control.Label;
import javafx.scene.image.Image;
-import javafx.scene.layout.FlowPane;
-import javafx.scene.layout.Region;
-import javafx.scene.web.WebView;
import javafx.stage.Stage;
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.artifact.versioning.ComparableVersion;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-
-// run as root issue Invalid MIT-MAGIC-COOKIE-1 key fix: https://stackoverflow.com/questions/48139447/invalid-mit-magic-cookie-1-key
public class Main extends Application {
public static Application main;
public static String version = "1.5";
- private static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest";
+ public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest";
+ public static String theme = "G-Earth";
+
+ static {
+ if (Cacher.getCacheContents().has("theme")) {
+ theme = Cacher.getCacheContents().getString("theme");
+ }
+ }
@Override
public void start(Stage primaryStage) throws Exception{
main = this;
- FXMLLoader loader = new FXMLLoader(getClass().getResource("ui/G-Earth.fxml"));
+ FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/G-Earth.fxml"));
Parent root = loader.load();
GEarthController companion = loader.getController();
companion.setStage(primaryStage);
- primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("G-EarthLogoSmaller.png")));
+ primaryStage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", theme))));
- primaryStage.setTitle("G-Earth " + version);
+ primaryStage.setTitle(theme + " " + version);
// https://stackoverflow.com/questions/20732100/javafx-why-does-stage-setresizablefalse-cause-additional-margins
// primaryStage.setScene(new Scene(root, 650, 295));
primaryStage.setScene(new Scene(root));
@@ -51,7 +44,7 @@ public class Main extends Application {
primaryStage.sizeToScene();
primaryStage.show();
- primaryStage.getScene().getStylesheets().add(getClass().getResource("ui/bootstrap3.css").toExternalForm());
+ primaryStage.getScene().getStylesheets().add(getClass().getResource(String.format("/gearth/themes/%s/styling.css", theme)).toExternalForm());
primaryStage.setOnCloseRequest( event -> {
companion.exit();
@@ -61,61 +54,8 @@ public class Main extends Application {
System.exit(0);
});
- new Thread(() -> {
- if (!AdminValidator.isAdmin()) {
- Platform.runLater(() -> {
- Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK);
- alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
- alert.setResizable(false);
- alert.show();
- });
-
- }
- }).start();
-
- new Thread(() -> {
- try {
- JSONObject object = new JSONObject(IOUtils.toString(
- new URL(gitApi).openStream(), StandardCharsets.UTF_8));
-
- String gitv = (String)object.get("tag_name");
- if (new ComparableVersion(version).compareTo(new ComparableVersion(gitv)) < 0) {
- Platform.runLater(() -> {
- String body = (String)object.get("body");
- boolean isForcedUpdate = body.contains("(!)");
-
- Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK);
-
- FlowPane fp = new FlowPane();
- Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:");
- Hyperlink link = new Hyperlink("https://github.com/sirjonasxx/G-Earth/releases");
- fp.getChildren().addAll( lbl, link);
- link.setOnAction(event -> {
- Main.main.getHostServices().showDocument(link.getText());
- event.consume();
- });
-
-
-
- WebView webView = new WebView();
- webView.getEngine().loadContent("A new version of G-Earth has been found ("+gitv+")
Update to the latest version:
https://github.com/sirjonasxx/G-Earth/releases");
- webView.setPrefSize(500, 200);
-
- alert.setResizable(false);
- alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
- alert.getDialogPane().setContent(fp);
- if (isForcedUpdate) {
- alert.setOnCloseRequest(event -> System.exit(0));
- }
- alert.show();
-
- });
- }
-
- } catch (IOException e) {
-// e.printStackTrace();
- }
- }).start();
+ AdminValidator.validate();
+ UpdateChecker.checkForUpdates();
}
@@ -146,15 +86,3 @@ public class Main extends Application {
return null;
}
}
-
-// Hi
-// I'm
-// Lande
-// I want
-// The role
-// Developer
-// Pls
-// You say :
-// Change 10 lines
-// I dit it.
-// https://i.imgur.com/QEHV2NZ.png
diff --git a/G-Earth/src/main/java/gearth/misc/AdminValidator.java b/G-Earth/src/main/java/gearth/misc/AdminValidator.java
index ca31aab..04eac91 100644
--- a/G-Earth/src/main/java/gearth/misc/AdminValidator.java
+++ b/G-Earth/src/main/java/gearth/misc/AdminValidator.java
@@ -1,5 +1,10 @@
package gearth.misc;
+import javafx.application.Platform;
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+import javafx.scene.layout.Region;
+
import java.io.PrintStream;
import java.util.prefs.Preferences;
@@ -34,4 +39,18 @@ public class AdminValidator {
return isAdmin;
}
+ public static void validate() {
+ new Thread(() -> {
+ if (!AdminValidator.isAdmin()) {
+ Platform.runLater(() -> {
+ Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK);
+ alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
+ alert.setResizable(false);
+ alert.show();
+ });
+
+ }
+ }).start();
+ }
+
}
diff --git a/G-Earth/src/main/java/gearth/misc/UpdateChecker.java b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java
new file mode 100644
index 0000000..47db3d5
--- /dev/null
+++ b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java
@@ -0,0 +1,71 @@
+package gearth.misc;
+
+import gearth.Main;
+import javafx.application.Platform;
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.Hyperlink;
+import javafx.scene.control.Label;
+import javafx.scene.layout.FlowPane;
+import javafx.scene.layout.Region;
+import javafx.scene.web.WebView;
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.artifact.versioning.ComparableVersion;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+import static gearth.Main.gitApi;
+import static gearth.Main.version;
+
+public class UpdateChecker {
+
+ public static void checkForUpdates() {
+ new Thread(() -> {
+ try {
+ JSONObject object = new JSONObject(IOUtils.toString(
+ new URL(gitApi).openStream(), StandardCharsets.UTF_8));
+
+ String gitv = (String)object.get("tag_name");
+ if (new ComparableVersion(version).compareTo(new ComparableVersion(gitv)) < 0) {
+ Platform.runLater(() -> {
+ String body = (String)object.get("body");
+ boolean isForcedUpdate = body.contains("(!)");
+
+ Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK);
+
+ FlowPane fp = new FlowPane();
+ Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:");
+ Hyperlink link = new Hyperlink("https://github.com/sirjonasxx/G-Earth/releases");
+ fp.getChildren().addAll( lbl, link);
+ link.setOnAction(event -> {
+ Main.main.getHostServices().showDocument(link.getText());
+ event.consume();
+ });
+
+
+
+ WebView webView = new WebView();
+ webView.getEngine().loadContent("A new version of G-Earth has been found ("+gitv+")
Update to the latest version:
https://github.com/sirjonasxx/G-Earth/releases");
+ webView.setPrefSize(500, 200);
+
+ alert.setResizable(false);
+ alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
+ alert.getDialogPane().setContent(fp);
+ if (isForcedUpdate) {
+ alert.setOnCloseRequest(event -> System.exit(0));
+ }
+ alert.show();
+
+ });
+ }
+
+ } catch (IOException e) {
+// e.printStackTrace();
+ }
+ }).start();
+ }
+
+}
diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java
index 9ed4fe3..5d78d27 100644
--- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java
+++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java
@@ -26,8 +26,8 @@ public class GExtensionStoreLauncher extends InternalExtensionFormLauncher {
FXMLLoader loader = new FXMLLoader(UiLogger.class.getResource("UiLogger.fxml"));
Parent root = loader.load();
- stage.setTitle("G-Earth | Packet Logger");
+ stage.setTitle(String.format("%s | Packet Logger", Main.theme));
stage.initModality(Modality.NONE);
- stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png")));
+ stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", Main.theme))));
Scene scene = new Scene(root);
- scene.getStylesheets().add("/gearth/ui/bootstrap3.css");
+ scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", Main.theme));
scene.getStylesheets().add("/gearth/services/internal_extensions/uilogger/logger.css");
UiLoggerController controller = loader.getController();
diff --git a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java
index 50cab54..860545e 100644
--- a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java
+++ b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java
@@ -8,7 +8,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
-import java.net.MalformedURLException;
import java.net.URL;
import java.util.Random;
@@ -133,7 +132,7 @@ public class GUnityFileServer extends HttpServlet
private void getLogo(HttpServletResponse response) throws IOException {
OutputStream out = response.getOutputStream();
- InputStream in = Main.class.getResourceAsStream("G-EarthLogo.png");
+ InputStream in = Main.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", Main.theme));
byte[] bytes = new byte[4096];
int bytesRead;
diff --git a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java b/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java
index 86738f1..b6f6c24 100644
--- a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java
+++ b/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java
@@ -144,7 +144,8 @@ public class ExtensionItemContainer extends GridPane {
parent.getChildren().add(this);
if (item.extensionType() == ExtensionType.INTERNAL) {
- setBackground(new Background(new BackgroundFill(Paint.valueOf("F0FFFF"), CornerRadii.EMPTY, Insets.EMPTY)));
+ getStyleClass().clear();
+ getStyleClass().add("internalExtension");
}
@@ -176,7 +177,8 @@ public class ExtensionItemContainer extends GridPane {
ExtensionItemContainer this2 = this;
item.getDeletedObservable().addListener(() -> Platform.runLater(() -> {
if (item.isInstalledExtension()) {
- setBackground(new Background(new BackgroundFill(Paint.valueOf("#cccccc"),null, null)));
+ getStyleClass().clear();
+ getStyleClass().add("disconnectedExtension");
getChildren().remove(buttonsBox);
add(additionalButtonBox, 4, 0);
reloadButton.setVisible(true);
@@ -191,7 +193,8 @@ public class ExtensionItemContainer extends GridPane {
item = extension;
initExtension();
- setBackground(new Background(new BackgroundFill(Paint.valueOf("#ffffff"),null, null)));
+ getStyleClass().clear();
+ getStyleClass().add("connectedExtension");
getChildren().remove(additionalButtonBox);
if (buttonsBox != null) {
add(buttonsBox, 4, 0);
diff --git a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java b/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java
index ac49d83..b7ad0b0 100644
--- a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java
+++ b/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java
@@ -1,5 +1,6 @@
package gearth.ui.extensions.logger;
+import gearth.Main;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
@@ -34,15 +35,15 @@ public class ExtensionLogger {
stage = new Stage();
- stage.setTitle("G-Earth | Extension Console");
+ stage.setTitle(String.format("%s | Extension Console", Main.theme));
stage.initModality(Modality.NONE);
- stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png")));
+ stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", Main.theme))));
stage.setAlwaysOnTop(true);
stage.setMinHeight(235);
stage.setMinWidth(370);
Scene scene = new Scene(root);
- scene.getStylesheets().add("/gearth/ui/bootstrap3.css");
+ scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", Main.theme));
scene.getStylesheets().add("/gearth/ui/extensions/logger/logger.css");
ExtensionLoggerController controller = loader.getController();
controller.setStage(stage);
diff --git a/G-Earth/src/main/java/gearth/ui/info/InfoController.java b/G-Earth/src/main/java/gearth/ui/info/InfoController.java
index 59991b6..9cd30c4 100644
--- a/G-Earth/src/main/java/gearth/ui/info/InfoController.java
+++ b/G-Earth/src/main/java/gearth/ui/info/InfoController.java
@@ -6,7 +6,6 @@ import javafx.scene.control.*;
import gearth.ui.SubForm;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
-import javafx.scene.layout.FlowPane;
import javafx.scene.layout.Region;
import javafx.scene.web.WebView;
@@ -34,9 +33,10 @@ public class InfoController extends SubForm {
}
public void initialize() {
+ version.setText(version.getText().replace("$theme", Main.theme));
version.setText(version.getText().replace("$version", Main.version));
- img_logo.setImage(new Image("/gearth/G-EarthLogo.png"));
+ img_logo.setImage(new Image(String.format("/gearth/themes/%s/logo.png", Main.theme)));
link_ase.setTooltip(new Tooltip("https://allseeingeye.to"));
link_darkbox.setTooltip(new Tooltip("https://darkbox.nl"));
diff --git a/G-Earth/src/main/resources/gearth/G-EarthLogo.ico b/G-Earth/src/main/resources/gearth/themes/G-Earth/logo.ico
similarity index 100%
rename from G-Earth/src/main/resources/gearth/G-EarthLogo.ico
rename to G-Earth/src/main/resources/gearth/themes/G-Earth/logo.ico
diff --git a/G-Earth/src/main/resources/gearth/G-EarthLogo.png b/G-Earth/src/main/resources/gearth/themes/G-Earth/logo.png
similarity index 100%
rename from G-Earth/src/main/resources/gearth/G-EarthLogo.png
rename to G-Earth/src/main/resources/gearth/themes/G-Earth/logo.png
diff --git a/G-Earth/src/main/resources/gearth/G-EarthLogoSmaller.png b/G-Earth/src/main/resources/gearth/themes/G-Earth/logoSmall.png
similarity index 100%
rename from G-Earth/src/main/resources/gearth/G-EarthLogoSmaller.png
rename to G-Earth/src/main/resources/gearth/themes/G-Earth/logoSmall.png
diff --git a/G-Earth/src/main/resources/gearth/ui/bootstrap3.css b/G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css
similarity index 99%
rename from G-Earth/src/main/resources/gearth/ui/bootstrap3.css
rename to G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css
index e09e83b..57a06a8 100644
--- a/G-Earth/src/main/resources/gearth/ui/bootstrap3.css
+++ b/G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css
@@ -890,4 +890,23 @@ VBox > .split-menu-button.last > .arrow-button {
.check-box:pressed > .box,
.radio-button:pressed > .radio {
-fx-background-color: #50c0e2;
+}
+
+
+/*g-earth stuff*/
+
+.hyperlink {
+ -fx-text-fill: #0096c8;
+}
+
+.internalExtension {
+ -fx-background-color: #F0FFFF;
+}
+
+.disconnectedExtension {
+ -fx-background-color: #CCCCCC;
+}
+
+.connectedExtension {
+ -fx-background-color: #FFFFFF;
}
\ No newline at end of file
diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logo.ico b/G-Earth/src/main/resources/gearth/themes/Tanji/logo.ico
new file mode 100644
index 0000000..2f5815f
Binary files /dev/null and b/G-Earth/src/main/resources/gearth/themes/Tanji/logo.ico differ
diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logo.png b/G-Earth/src/main/resources/gearth/themes/Tanji/logo.png
new file mode 100644
index 0000000..6c93e4c
Binary files /dev/null and b/G-Earth/src/main/resources/gearth/themes/Tanji/logo.png differ
diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logoSmall.png b/G-Earth/src/main/resources/gearth/themes/Tanji/logoSmall.png
new file mode 100644
index 0000000..6c93e4c
Binary files /dev/null and b/G-Earth/src/main/resources/gearth/themes/Tanji/logoSmall.png differ
diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/themes/Tanji/styling.css
new file mode 100644
index 0000000..18a7cc1
--- /dev/null
+++ b/G-Earth/src/main/resources/gearth/themes/Tanji/styling.css
@@ -0,0 +1,910 @@
+.root {
+ -fx-body-color : #F5F5F5;
+ -fx-outer-border : #cecece;
+}
+.button,.menu-button,.toggle-button,.split-menu-button {
+ -fx-font-size: 14;
+ -fx-background-radius: 4;
+ -fx-border-radius: 4;
+ -fx-pref-height: 30;
+ -fx-min-width: 30;
+}
+.button,.menu-button,.split-menu-button,.toggle-button,.number-button {
+ -fx-background-insets: 0, 0, -1, 0;
+}
+
+.split-menu-button > .label {
+ -fx-border-radius: 4 0 0 4;
+ -fx-background-radius: 3 0 0 3;
+}
+
+.split-menu-button > .arrow-button {
+ -fx-border-radius: 0 4 4 0;
+ -fx-background-radius: 0 3 3 0;
+}
+
+.lg {
+ -fx-min-height: 46;
+ -fx-max-height: 46;
+ -fx-font-size: 18;
+}
+
+.sm {
+ -fx-min-height: 30;
+ -fx-max-height: 30;
+}
+
+.xs {
+ -fx-min-height: 22;
+ -fx-max-height: 22;
+ -fx-font-size: 10;
+}
+
+.primary .arrow,
+.success .arrow,
+.info .arrow,
+.warning .arrow,
+.danger .arrow {
+ -fx-background-color: transparent, white;
+}
+
+.primary > .label,
+.success > .label,
+.info > .label,
+.warning > .label,
+.danger > .label {
+ -fx-text-fill: white;
+}
+
+.action-btn {
+ -fx-min-width: 80;
+}
+
+/*positions*/
+/*first*/
+.button.first, .menu-button.first, .toggle-button.first, .text-field.first, .text-area.first {
+ -fx-border-radius: 4 0 0 4;
+ -fx-background-radius: 4 0 0 4;
+}
+
+.split-menu-button.first > .arrow-button, .split-menu-button.middle > .arrow-button {
+ -fx-border-radius: 0;
+ -fx-background-radius: 0;
+}
+
+VBox > .button.first,
+VBox > .menu-button.first,
+VBox > .toggle-button.first,
+VBox > .split-menu-button.first,
+VBox > .text-field.first,
+VBox > .text-area.first {
+ -fx-border-radius: 4 4 0 0;
+ -fx-background-radius: 4 4 0 0;
+}
+
+VBox > .split-menu-button.first > .label {
+ -fx-border-radius: 4 0 0 0;
+ -fx-background-radius: 3 0 0 0;
+}
+VBox > .split-menu-button.first > .arrow-button {
+ -fx-border-radius: 0 4 0 0;
+ -fx-background-radius: 0 3 0 0;
+}
+/*middle*/
+.middle {
+ -fx-border-radius: 0;
+ -fx-background-radius: 0;
+}
+
+/*last*/
+.split-menu-button.middle > .label, .split-menu-button.last > .label {
+ -fx-border-radius: 0;
+ -fx-background-radius: 0;
+}
+
+.split-menu-button.last {
+ -fx-border-radius: 0 4 4 0;
+ -fx-background-radius: 0 4 4 0;
+}
+
+.button.middle, .text-field.middle, .text-area.middle, .split-menu-button.middle, .toggle-button.middle {
+ -fx-border-radius: 0;
+ -fx-background-radius: 0;
+}
+
+.button.last, .text-field.last, .text-area.last, .split-menu-button.last, .toggle-button.last, .menu-button.last {
+ -fx-border-radius: 0 4 4 0;
+ -fx-background-radius: 0 4 4 0;
+}
+VBox > .button.last,
+VBox > .menu-button.last,
+VBox > .toggle-button.last,
+VBox > .split-menu-button.last,
+VBox > .text-field.last,
+VBox > .text-area.last {
+ -fx-border-radius: 0 0 4 4;
+ -fx-background-radius: 0 0 4 4;
+}
+
+VBox > .split-menu-button.last > .label {
+ -fx-border-radius: 0 0 0 4;
+ -fx-background-radius: 0 0 0 3;
+}
+VBox > .split-menu-button.last > .arrow-button {
+ -fx-border-radius: 0 0 4 0;
+ -fx-background-radius: 0 0 3 0;
+}
+
+/*button styles*/
+
+/*default button settings*/
+
+/*bgcolor setting*/
+.color-picker,.date-picker > .arrow-button,
+.number-button,.left-arrow-button,.right-arrow-button,
+.button,.split-menu-button,.toggle-button,.menu-button,
+.font-menu-button, .split-menu-button > .label, .split-menu-button > .arrow-button {
+ -fx-background-color: white;
+}
+
+.color-picker,.date-picker > .arrow-button,
+.button,.menu-button,.toggle-button,.number-button,.left-arrow-button,.right-arrow-button,
+.font-menu-button,
+.split-menu-button > .label,.split-menu-button > .arrow-button {
+ -fx-border-color: #cccccc;
+ -fx-text-fill: #000000;
+}
+/*just for the special split menu button*/
+.split-menu-button > .label {
+ -fx-border-width: 1 0 1 1;
+}
+/*for date picker arrow button*/
+.date-picker > .arrow-button {
+ -fx-border-radius: 0 4 4 0;
+}
+.combo-box > .arrow-button, .choice-box > .arrow-button {
+ -fx-border-width: 0;
+}
+/*hover state*/
+.color-picker:hover,
+.date-picker:hover > .arrow-button,
+.combo-box:hover,.choice-box:hover,
+.number-button:hover,.left-arrow-button:hover,.right-arrow-button:hover,
+.button:hover,.menu-button:hover,.toggle-button:hover,
+.font-menu-button:hover,
+.split-menu-button > .label:hover, .split-menu-button > .arrow-button:hover {
+ -fx-background-color: #e6e6e6;
+ -fx-border-color: #acacac;
+}
+/*pressed selected*/
+.color-picker:pressed,.color-picker:selected,
+.number-button:pressed,.number-button:selected,
+.date-picker:pressed > .arrow-button,
+.combo-box:pressed > .arrow-button,.combo-box:selected > .arrow-button,
+.choice-box:pressed > .arrow-button,.choice-box:selected > .arrow-button,
+.font-menu-button:pressed,.font-menu-button:selected,
+.left-arrow-button:pressed,.left-arrow-button:selected,
+.right-arrow-button:pressed,.right-arrow-button:selected,
+.button:pressed, .button:selected,.menu-button:pressed,.menu-button:selected
+,.toggle-button:pressed,.toggle-button:selected,
+.split-menu-button:pressed > .label, .split-menu-button > .arrow-button:pressed {
+ -fx-background-color: #e6e6e6;
+ -fx-border-color: #acacac;
+ -fx-effect: innershadow(gaussian, #adadad, 10, 0, 0, 3);
+}
+
+/*primary*/
+
+.button.primary,.split-menu-button.primary,.toggle-button.primary,.menu-button.primary,
+.split-menu-button.primary > .label, .split-menu-button.primary > .arrow-button {
+ -fx-background-color: #b77714;
+}
+
+.button.primary,.menu-button.primary,.toggle-button.primary,
+.split-menu-button.primary > .label,.split-menu-button.primary > .arrow-button {
+ -fx-border-color: #a46a37;
+ -fx-text-fill: white;
+}
+/*hover state*/
+.button.primary:hover,.menu-button.primary:hover,.toggle-button.primary:hover,
+.split-menu-button.primary > .label:hover, .split-menu-button.primary > .arrow-button:hover {
+ -fx-border-color: #744d15;
+ -fx-background-color: #905710;
+}
+/*pressed selected*/
+.button.primary:pressed, .button.primary:selected,
+.menu-button.primary:pressed,.menu-button.primary:selected
+,.toggle-button.primary:pressed,.toggle-button.primary:selected,
+.split-menu-button.primary:pressed > .label, .split-menu-button.primary > .arrow-button:pressed {
+ -fx-background-color: #905710;
+ -fx-border-color: #744d15;
+ -fx-effect: innershadow(gaussian, #744d15, 10, 0, 0, 3);
+}
+
+/*success*/
+
+.button.success,.split-menu-button.success,.toggle-button.success,.menu-button.success,
+.split-menu-button.success > .label, .split-menu-button.success > .arrow-button {
+ -fx-background-color: #5cb85c;
+}
+
+.button.success,.menu-button.success,.toggle-button.success,
+.split-menu-button.success > .label,.split-menu-button.success > .arrow-button {
+ -fx-border-color: #4cae4c;
+ -fx-text-fill: white;
+}
+/*hover state*/
+.button.success:hover,.menu-button.success:hover,.toggle-button.success:hover,
+.split-menu-button.success > .label:hover, .split-menu-button.success > .arrow-button:hover {
+ -fx-border-color: #398439;
+ -fx-background-color: #449d44;
+}
+/*pressed selected*/
+.button.success:pressed, .button.success:selected,
+.menu-button.success:pressed,.menu-button.success:selected
+,.toggle-button.success:pressed,.toggle-button.success:selected,
+.split-menu-button.success:pressed > .label, .split-menu-button.success > .arrow-button:pressed {
+ -fx-background-color: #449d44;
+ -fx-border-color: #398439;
+ -fx-effect: innershadow(gaussian, #398439, 10, 0, 0, 3);
+}
+
+/*info*/
+
+.button.info,.split-menu-button.info,.toggle-button.info,.menu-button.info,
+.split-menu-button.info > .label, .split-menu-button.info > .arrow-button {
+ -fx-background-color: #e2ab40;
+}
+
+.button.info,.menu-button.info,.toggle-button.info,
+.split-menu-button.info > .label,.split-menu-button.info > .arrow-button {
+ -fx-border-color: #e29b23;
+ -fx-text-fill: white;
+}
+/*hover state*/
+.button.info:hover,.menu-button.info:hover,.toggle-button.info:hover,
+.split-menu-button.info > .label:hover, .split-menu-button.info > .arrow-button:hover {
+ -fx-border-color: #bc862a;
+ -fx-background-color: #d59735;
+}
+/*pressed selected*/
+.button.info:pressed, .button.info:selected,
+.menu-button.info:pressed,.menu-button.info:selected
+,.toggle-button.info:pressed,.toggle-button.info:selected,
+.split-menu-button.info:pressed > .label, .split-menu-button.info > .arrow-button:pressed {
+ -fx-background-color: #31b0d5;
+ -fx-border-color: #269abc;
+ -fx-effect: innershadow(gaussian, #269abc, 10, 0, 0, 3);
+}
+
+/*warning*/
+
+.button.warning,.split-menu-button.warning,.toggle-button.warning,.menu-button.warning,
+.split-menu-button.warning > .label, .split-menu-button.warning > .arrow-button {
+ -fx-background-color: #f0ad4e;
+}
+
+.button.warning,.menu-button.warning,.toggle-button.warning,
+.split-menu-button.warning > .label,.split-menu-button.warning > .arrow-button {
+ -fx-border-color: #eea236;
+ -fx-text-fill: white;
+}
+/*hover state*/
+.button.warning:hover,.menu-button.warning:hover,.toggle-button.warning:hover,
+.split-menu-button.warning > .label:hover, .split-menu-button.warning > .arrow-button:hover {
+ -fx-border-color: #d58512;
+ -fx-background-color: #ec971f;
+}
+/*pressed selected*/
+.button.warning:pressed, .button.warning:selected,
+.menu-button.warning:pressed,.menu-button.warning:selected
+,.toggle-button.warning:pressed,.toggle-button.warning:selected,
+.split-menu-button.warning:pressed > .label, .split-menu-button.warning > .arrow-button:pressed {
+ -fx-background-color: #ec971f;
+ -fx-border-color: #d58512;
+ -fx-effect: innershadow(gaussian, #d58512, 10, 0, 0, 3);
+}
+
+/*danger*/
+
+.button.danger,.split-menu-button.danger,.toggle-button.danger,.menu-button.danger,
+.split-menu-button.danger > .label, .split-menu-button.danger > .arrow-button {
+ -fx-background-color: #d9534f;
+}
+
+.button.danger,.menu-button.danger,.toggle-button.danger,
+.split-menu-button.danger > .label,.split-menu-button.danger > .arrow-button {
+ -fx-border-color: #d43f3a;
+ -fx-text-fill: white;
+}
+/*hover state*/
+.button.danger:hover,.menu-button.danger:hover,.toggle-button.danger:hover,
+.split-menu-button.danger > .label:hover, .split-menu-button.danger > .arrow-button:hover {
+ -fx-border-color: #ac2925;
+ -fx-background-color: #c9302c;
+}
+/*pressed selected*/
+.button.danger:pressed, .button.danger:selected,
+.menu-button.danger:pressed,.menu-button.danger:selected
+,.toggle-button.danger:pressed,.toggle-button.danger:selected,
+.split-menu-button.danger:pressed > .label, .split-menu-button.danger > .arrow-button:pressed {
+ -fx-border-color: #ac2925;
+ -fx-background-color: #c9302c;
+ -fx-effect: innershadow(gaussian, #ac2925, 10, 0, 0, 3);
+}
+
+.menu-item {
+ -fx-min-width: 200;
+}
+
+.menu-item:focused {
+ -fx-background-color: #f5f5f5;
+}
+
+.menu-item:focused > * {
+ -fx-text-fill: #000000;
+}
+.menu-item:focused .arrow {
+ -fx-background-color: #333333;
+}
+
+.check-menu-item:checked:hover > .left-container > .check,
+.check-menu-item:checked:focused > .left-container > .check,
+.radio-menu-item:checked:hover > .left-container > .radio,
+.radio-menu-item:checked:focused > .left-container > .radio {
+ -fx-background-color: #333333;
+}
+
+.context-menu {
+ -fx-border-radius: 4;
+ -fx-background-radius: 4;
+ -fx-border-color: #bebec0;
+}
+
+.context-menu > * {
+ -fx-padding: 5 0 5 0;
+}
+
+.separator {
+ -fx-padding: 5 0 5 0;
+}
+
+.text-field {
+ -fx-pref-height: 30;
+}
+
+.combo-box, .choice-box {
+ -fx-background-insets: 0;
+ -fx-border-color: #cecece;
+ -fx-padding: -1;
+ -fx-border-width: 1;
+}
+.combo-box, .choice-box, .color-picker, .date-picker {
+ -fx-border-radius: 4;
+ -fx-background-radius: 4;
+ -fx-pref-height: 30;
+}
+
+.combo-box:editable > .arrow-button {
+ -fx-background-color: white;
+}
+
+.combo-box:editable > .arrow-button:hover {
+ -fx-background-color: #e6e6e6;
+}
+
+.combo-box:editable > .arrow-button:pressed {
+ -fx-effect: innershadow(gaussian, #adadad, 10, 0, 0, 3);
+}
+
+.combo-box > .text-input, .date-picker > .text-input {
+ -fx-background-radius: 4 0 0 4;
+ -fx-border-width: 0;
+}
+
+.text-field, .text-area {
+ -fx-border-color: #cccccc;
+ -fx-background-color: white;
+ -fx-border-radius: 4;
+ -fx-background-radius: 4;
+ -fx-effect: innershadow(gaussian, transparent, 0, 0, 0, 0);
+}
+
+.text-field:focused, .text-area:focused {
+ -fx-border-color: #e9b365;
+ -fx-effect: dropshadow(gaussian, #e9b365, 10, 0, 0, 0);
+}
+
+.text-area .scroll-pane, .text-area .scroll-pane .content {
+ -fx-background-color: white;
+ -fx-background-radius: 4;
+}
+
+.tab-pane .tab-header-background {
+ -fx-background-color: #f4f4f4;
+}
+.tab-pane.plain .tab-header-background {
+ -fx-background-color: transparent;
+}
+
+.tab-pane .tab-header-area .tab {
+ -fx-border-radius: 4 4 0 0;
+ -fx-background-radius: 5 5 0 0;
+ -fx-background-color: transparent;
+ -fx-border-color: transparent;
+ -fx-padding: 3 10 5 10;
+ -fx-background-insets: 0;
+}
+
+.tab-pane .tab-header-area .tab .tab-label {
+ -fx-text-fill: #b77714;
+}
+
+.tab-pane .tab-header-area .tab:hover {
+ -fx-background-color: #eeeeee;
+}
+
+.tab-pane .tab-header-area .tab:selected {
+ -fx-focus-color: transparent;
+ -fx-border-color: #dddddd #dddddd white #dddddd;
+ -fx-background-color: white;
+}
+.tab-pane .tab-header-area .tab:selected .tab-label {
+ -fx-text-fill: #333333;
+}
+.tab-pane > .tab-content-area {
+ -fx-background-color: white;
+}
+
+.tab-pane .tab-header-area .tab .tab-label {
+ -fx-focus-color: transparent;
+}
+
+.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator {
+ -fx-border-color: transparent;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button {
+ -fx-background-color: #b77714;
+}
+.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-close-button {
+ -fx-background-color: #333333;
+}
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button:hover {
+ -fx-background-color: red;
+ -fx-cursor: hand;
+}
+
+.scroll-bar {
+ -fx-background-color: transparent;
+ -fx-background-radius: 0;
+ -fx-block-increment: 50;
+}
+
+.corner {
+ -fx-background-color: transparent;
+}
+
+.scroll-bar .decrement-button, .scroll-bar .decrement-arrow {
+ visibility: hidden;
+ -fx-pref-height: 1;
+ -fx-pref-width: 1;
+}
+
+.scroll-bar .increment-button, .scroll-bar .increment-arrow {
+ visibility: hidden;
+ -fx-pref-height: 1;
+ -fx-pref-width: 1;
+}
+
+.scroll-bar:vertical {
+ -fx-pref-width: 10;
+}
+
+.scroll-bar:horizontal {
+ -fx-pref-height: 10;
+}
+
+.scroll-bar:horizontal .track,
+.scroll-bar:vertical .track {
+ -fx-background-color: transparent;
+ -fx-border-color: transparent;
+ -fx-background-radius: 5;
+}
+
+.scroll-bar:vertical .track-background,
+.scroll-bar:horizontal .track-background {
+ -fx-background-color: transparent;
+ -fx-background-insets: 0;
+ -fx-background-radius: 5;
+}
+
+.scroll-bar:horizontal .thumb {
+ -fx-background-color: #c9c9c9;
+ -fx-background-insets: 2 0 2 0;
+ -fx-background-radius: 5;
+}
+
+.scroll-bar:vertical .thumb {
+ -fx-background-color: #c9c9c9;
+ -fx-background-insets: 0 2 0 2;
+ -fx-background-radius: 5;
+}
+
+.scroll-bar:horizontal .thumb:hover,
+.scroll-bar:vertical .thumb:hover {
+ -fx-background-color: #b5b5b5;
+}
+
+.scroll-bar:horizontal .thumb:pressed,
+.scroll-bar:vertical .thumb:pressed {
+ -fx-background-color: #a0a0a0;
+}
+
+.scroll-bar:vertical .increment-button, .scroll-bar:vertical .decrement-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 5;
+ -fx-padding: 5;
+}
+
+.scroll-bar:horizontal .increment-button, .scroll-bar:horizontal .decrement-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 5;
+ -fx-padding: 5;
+}
+
+.scroll-bar:vertical:focused,
+.scroll-bar:horizontal:focused {
+ -fx-background-color: transparent, rgb(96, 96, 96), rgb(96, 96, 96);
+}
+
+.menu-bar {
+ -fx-background-color: white;
+}
+.menu-bar > .container > .menu-button {
+ -fx-background-radius: 0;
+ -fx-background-insets: 0;
+ -fx-border-width: 0;
+ -fx-border-radius: 0;
+}
+.menu-bar > .container > .menu-button:hover,
+.menu-bar > .container > .menu-button:showing {
+ -fx-background-color: #e2b14a;
+}
+
+.color-palette {
+ -fx-background-color: white;
+}
+
+.pagination > .pagination-control > .control-box {
+ -fx-spacing: -1;
+}
+.pagination > .pagination-control > .control-box > .left-arrow-button {
+ -fx-border-radius: 3 0 0 3;
+ -fx-border-insets: 0 0 0 7;
+ -fx-background-insets: 0 0 0 7, 0 0 0 5, 1 1 1 6, 2 2 2 7;
+}
+.pagination > .pagination-control > .control-box > .right-arrow-button {
+ -fx-border-radius: 0 3 3 0;
+ -fx-border-insets: 0 7 0 0;
+ -fx-background-insets: 0 7 -1 0, 0 5 0 0, 1 6 1 1, 2 7 2 2;
+}
+.pagination > .pagination-control > .control-box > .number-button {
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+}
+
+.progress-bar > .track {
+ -fx-pref-height: 10;
+ -fx-background-radius: 3;
+ -fx-effect: innershadow(gaussian, #e4e4e4, 4, 0, 0, 1);
+ -fx-background-color: #f5f5f5;
+}
+
+.progress-bar > .bar {
+ -fx-background-insets: 0;
+ -fx-background-color: #b77714;
+}
+
+.progress-bar.success > .bar {
+ -fx-background-insets: 0;
+ -fx-background-color: #5cb85c;
+}
+
+.progress-bar.info > .bar {
+ -fx-background-insets: 0;
+ -fx-background-color: #5bc0de;
+}
+
+.progress-bar.warning > .bar {
+ -fx-background-insets: 0;
+ -fx-background-color: #f0ad4e
+}
+
+.progress-bar.danger > .bar {
+ -fx-background-insets: 0;
+ -fx-background-color: #d9534f;
+}
+
+.tooltip {
+ -fx-background: white;
+ -fx-text-fill: #333333;
+ -fx-background-color: white;
+ -fx-background-radius: 4px;
+ -fx-border-radius: 4px;
+ -fx-border-color: #C0C0C0;
+ -fx-background-insets: 0;
+ -fx-padding: 0.667em 0.75em 0.667em 0.75em; /* 10px */
+ -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.5), 10, 0.0, 0, 3);
+ -fx-font-size: 0.85em;
+}
+
+.tooltip.success {
+ -fx-background: #dff0d8;
+ -fx-background-color: #dff0d8;
+ -fx-text-fill: #99bb96;
+ -fx-border-color: #d6e9c6;
+}
+
+.tooltip.info {
+ -fx-background: #f6e4c1;
+ -fx-background-color: #f6e4c1;
+ -fx-text-fill: #8f5c16;
+ -fx-border-color: #f7c195;
+}
+
+.tooltip.warning {
+ -fx-background: #fcf8e3;
+ -fx-background-color: #fcf8e3;
+ -fx-text-fill: #8a6e3c;
+ -fx-border-color: #faebcc;
+}
+
+.tooltip.danger {
+ -fx-background: #f2dede;
+ -fx-background-color: #f2dede;
+ -fx-text-fill: #a94442;
+ -fx-border-color: #ebccd1;
+}
+
+.titled-pane > .title {
+ -fx-background-color: #f5f5f5;
+ -fx-border-color: #dddddd;
+ /*-fx-background-insets: 5, 1, 5;*/
+ -fx-background-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0;
+ -fx-border-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0;
+ -fx-padding: 11
+}
+
+.titled-pane > .content {
+ -fx-background-color: white;
+ -fx-background-radius: 0 0 4 4;
+ -fx-border-radius: 0 0 4 4;
+ -fx-border-color: #dddddd;
+ /*-fx-padding: -11;*/
+}
+
+.titled-pane.primary {
+ -fx-text-fill: white;
+}
+
+.titled-pane.primary > .title {
+ -fx-background-color: #b77714;
+ -fx-border-color: #b77714;
+}
+
+.titled-pane.primary > .content {
+ -fx-border-color: #b77714;
+}
+
+.titled-pane.success .arrow,
+.titled-pane.info .arrow,
+.titled-pane.warning .arrow,
+.titled-pane.danger .arrow {
+ -fx-background-color: -fx-mark-highlight-color, -fx-mark-color;
+}
+
+.titled-pane.success {
+ -fx-text-fill: #3c763d;
+}
+
+.titled-pane.success > .title {
+ -fx-background-color: #dff0d8;
+ -fx-border-color: #d6e9c6;
+}
+
+.titled-pane.success > .content {
+ -fx-border-color: #d6e9c6;
+}
+
+.titled-pane.info {
+ -fx-text-fill: #8f5c16;
+}
+
+.titled-pane.info > .title {
+ -fx-background-color: #f7d9c2;
+ -fx-border-color: #f7c195;
+}
+
+.titled-pane.info > .content {
+ -fx-border-color: #f7c195;
+}
+
+.titled-pane.warning {
+ -fx-text-fill: #8a6d3b;
+}
+
+.titled-pane.warning > .title {
+ -fx-background-color: #fcf8e3;
+ -fx-border-color: #faebcc;
+}
+
+.titled-pane.warning > .content {
+ -fx-border-color: #faebcc;
+}
+
+.titled-pane.danger {
+ -fx-text-fill: #a94442;
+}
+
+.titled-pane.danger > .title {
+ -fx-background-color: #f2dede;
+ -fx-border-color: #eacbd0;
+}
+
+.titled-pane.danger > .content {
+ -fx-border-color: #eacbd0;
+}
+
+.accordion > .titled-pane > .title,
+.accordion > .titled-pane > .content {
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+}
+
+.tool-bar:vertical { /* left */
+ -fx-border-color: transparent #dddddd transparent transparent;
+}
+
+.tool-bar { /* top */
+ -fx-background-color: white;
+ -fx-border-color: transparent transparent #dddddd transparent;
+}
+
+.tool-bar:vertical {
+ -fx-background-insets: 0, 0 1 0 0;
+}
+
+/*table view columns*/
+.filler,.column-header,.show-hide-columns-button {
+ -fx-background-color: #dddddd, white, white;
+}
+.show-hide-columns-button {
+ -fx-border-width: 0;
+ -fx-background-insets: 0 0 1 1;
+}
+.column-header:hover,.show-hide-columns-button:hover {
+ -fx-background-color: #dddddd, white, #f8f8f8;
+}
+.column-header-background > .filler {
+ -fx-border-color: transparent #dddddd transparent transparent;
+ -fx-border-insets: 0 1 0 0;
+}
+.column-drag-header {
+ -fx-background-color: #2fb254;
+}
+
+/*split pane*/
+.split-pane > .split-pane-divider {
+ -fx-background-color: white;
+ -fx-border-color: #eeeeee;
+ -fx-pref-width: 8;
+}
+.split-pane:horizontal > .split-pane-divider {
+ -fx-background-insets: 0, 0 1 0 1;
+ -fx-border-width: 0 1 0 1;
+}
+/* vertical the two nodes are placed on top of each other. */
+.split-pane:vertical > .split-pane-divider {
+ -fx-background-insets: 0, 1 0 1 0;
+ -fx-border-width: 1 0 1 0;
+}
+.split-pane > .split-pane-divider:hover {
+ -fx-background-color: #E0E0E0;
+}
+
+/*******************************************************************************
+ * *
+ * CheckBox *
+ * *
+ ******************************************************************************/
+.check-box > .box {
+ -fx-background-radius: 3;
+ /*-fx-padding: 0.166667em 0.166667em 0.25em 0.25em; !* 2 2 3 3 *!*/
+ -fx-padding:0;
+ -fx-border-color: #e2b14a;
+ -fx-border-radius: 3;
+ -fx-background-color: white;
+}
+.check-box > .box > .mark {
+ -fx-background-color: null;
+ -fx-padding: 0.416667em 0.416667em 0.5em 0.5em; /* 5 5 6 6 */
+ -fx-shape: "M927.936 272.992l-68.288-68.288c-12.608-12.576-32.96-12.576-45.536 0l-409.44 409.44-194.752-196.16c-12.576-12.576-32.928-12.576-45.536 0l-68.288 68.288c-12.576 12.608-12.576 32.96 0 45.536l285.568 287.488c12.576 12.576 32.96 12.576 45.536 0l500.736-500.768c12.576-12.544 12.576-32.96 0-45.536z";
+ -fx-background-insets: -3 -3 1 0;
+}
+.check-box {
+ -fx-label-padding: 0.2em 0.0em 0.3em 0.416667em; /* 0 0 0 5 */
+ -fx-text-fill: -fx-text-background-color;
+ -fx-padding: 0 0 2 0;
+}
+.check-box:indeterminate > .box {
+ -fx-padding: 0;
+}
+.check-box:selected > .box > .mark {
+ -fx-background-color: linear-gradient(to bottom, #e2b14a, #e29a16);
+}
+
+/*******************************************************************************
+ * *
+ * RadioButton *
+ * *
+ ******************************************************************************/
+
+.radio-button {
+ -fx-label-padding: 0.0em 0.0em 0.1em 0.416667em; /* 0 0 0 5 */
+ -fx-text-fill: -fx-text-background-color;
+ -fx-padding: 0 0 .5 0;
+}
+.radio-button > .radio,
+.radio-button:focused > .radio {
+ -fx-border-color: #e2b14a;
+ -fx-border-radius: 1em;
+ -fx-background-radius: 1.0em; /* large value to make sure this remains circular */
+ -fx-padding: 1 2 3 2;
+ -fx-background-color: white;
+}
+.radio-button > .radio > .dot {
+ -fx-background-color: transparent;
+ -fx-background-radius: 1.0em; /* large value to make sure this remains circular */
+ -fx-padding: 0.333333em; /* 4 -- radius of the inner black dot when selected */
+ -fx-background-insets: 3 2 1 2;
+}
+.radio-button:selected > .radio,.radio-button:hover > .radio {
+ -fx-fill-color: #e2b14a;
+}
+.radio-button:pressed > .radio {
+ -fx-background-color: #e2ab40;
+}
+.radio-button:selected > .radio > .dot {
+ -fx-background-color: #e2b14a;
+}
+
+/*common things*/
+.check-box:hover > .box,
+.check-box:selected > .box,
+.radio-button:hover > .radio,
+.radio-button:selected > .radio {
+ -fx-background-color: linear-gradient(to bottom, white, #efefef);
+}
+
+.check-box:pressed > .box,
+.radio-button:pressed > .radio {
+ -fx-background-color: #e2ab40;
+}
+
+
+.hyperlink {
+ -fx-text-fill: #c88600;
+}
+
+.internalExtension {
+ -fx-background-color: #fff0e3;
+}
+
+.disconnectedExtension {
+ -fx-background-color: #CCCCCC;
+}
+
+.connectedExtension {
+ -fx-background-color: #FFFFFF;
+}
\ No newline at end of file
diff --git a/G-Earth/src/main/resources/gearth/ui/info/Info.fxml b/G-Earth/src/main/resources/gearth/ui/info/Info.fxml
index c15b547..b78aabc 100644
--- a/G-Earth/src/main/resources/gearth/ui/info/Info.fxml
+++ b/G-Earth/src/main/resources/gearth/ui/info/Info.fxml
@@ -15,7 +15,7 @@
-