Feature/design (#214)

* Update design

* Update design
This commit is contained in:
Gravit 2019-04-07 15:10:19 +07:00 committed by GitHub
parent 0094c3b613
commit 8e87f55cff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 249 additions and 269 deletions

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextArea?>
<?import java.net.URL?>
<?import javafx.scene.layout.Pane?>
<!-- DrLeonardo Design -->
<Pane fx:id="layout" prefWidth="740.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Pane fx:id="consolePane" prefHeight="425.0" prefWidth="693.0" styleClass="consolePane">
<children>
<!-- Debug controls -->
<JFXTextArea fx:id="output" prefHeight="425.0" prefWidth="693.0" />
<JFXButton fx:id="copy" defaultButton="true" layoutX="465.0" layoutY="386.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" />
<JFXButton fx:id="action" layoutX="579.0" layoutY="386.0" prefHeight="25.0" prefWidth="100.0" text="Убить" />
</children>
</Pane>
<Pane fx:id="bar" layoutX="693.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children>
<JFXButton id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" text="" textAlignment="CENTER" />
<JFXButton id="close" alignment="CENTER" contentDisplay="CENTER" text="" textAlignment="CENTER" />
<JFXButton id="back" fx:id="back" alignment="CENTER" contentDisplay="CENTER" layoutY="380.0" text="" textAlignment="CENTER" />
</children>
</Pane>
<Pane id="mask" opacity="0.0" prefHeight="425.0" prefWidth="694.0" visible="false" />
</children>
<stylesheets>
<URL value="@styles.css" />
</stylesheets>
</Pane>

View file

@ -9,6 +9,7 @@ var loginData;
function initLauncher() { function initLauncher() {
initLoginScene(); initLoginScene();
initMenuScene(); initMenuScene();
initConsoleScene();
debug.initOverlay(); debug.initOverlay();
processing.initOverlay(); processing.initOverlay();
@ -34,7 +35,7 @@ function initLoginScene() {
bar = pane; bar = pane;
loginPane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()}); loginPane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()});
loginPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)}); loginPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)});
loginPane.lookup("#discord").setOnAction(function(){ openURL(config.discord_url); }); loginPane.lookup("#discord").setOnAction(function(){ openURL(config.discord); });
var pane = loginPane.lookup("#authPane"); var pane = loginPane.lookup("#authPane");
authPane = pane; authPane = pane;
@ -82,6 +83,7 @@ function initMenuScene() {
menuPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)}); menuPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)});
menuPane.lookup("#discord").setOnAction(function(){ openURL(config.discord); }); menuPane.lookup("#discord").setOnAction(function(){ openURL(config.discord); });
menuPane.lookup("#settings").setOnAction(goSettings); menuPane.lookup("#settings").setOnAction(goSettings);
menuPane.lookup("#goConsole").setOnAction(goConsole);
menuPane.lookup("#logout").setOnAction(function(){ menuPane.lookup("#logout").setOnAction(function(){
setCurrentScene(loginScene); setCurrentScene(loginScene);
}); });
@ -103,6 +105,32 @@ function initMenuScene() {
} }
/* ======== init Console ======== */
function initConsoleScene() {
consolePane.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())});
consolePane.setOnMouseDragged(function(event) {
if(movePoint === null) {
return;
}
stage.setX(event.getScreenX() - movePoint.getX());
stage.setY(event.getScreenY() - movePoint.getY());
});
var pane = consolePane.lookup("#bar");
bar = pane;
consolePane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()});
consolePane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)});
consolePane.lookup("#back").setOnAction(function(){
setCurrentScene(menuScene);
});
var pane = consolePane.lookup("#consolePane");
consolePane = pane;
}
/* ======== init Offline ======== */ /* ======== init Offline ======== */
function initOffline() { function initOffline() {
stage.setTitle(config.title + " [Offline]"); stage.setTitle(config.title + " [Offline]");
@ -146,6 +174,13 @@ function goAuth(event) {
doAuth(login, rsaPassword); doAuth(login, rsaPassword);
} }
/* ======== Console ======== */
function goConsole(event) {
if (overlay.current !== null) {
return;
}
}
/* ======== Settings ======== */ /* ======== Settings ======== */
function goSettings(event) { function goSettings(event) {
// Verify there's no other overlays // Verify there's no other overlays

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,014 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

View file

@ -48,7 +48,7 @@
</font> </font>
</JFXButton> </JFXButton>
<JFXButton id="clientSettings" alignment="CENTER" centerShape="false" contentDisplay="CENTER" layoutX="281.0" layoutY="355.0" styleClass="clientSettings" text="" textAlignment="CENTER" /> <JFXButton id="clientSettings" alignment="CENTER" centerShape="false" contentDisplay="CENTER" layoutX="281.0" layoutY="355.0" styleClass="clientSettings" text="" textAlignment="CENTER" />
<Label id="serverStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="306.0" layoutY="12.0" prefHeight="25.0" prefWidth="60.0" text="12/100" textAlignment="RIGHT" textFill="WHITE"> <Label id="serverStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="246.0" layoutY="12.0" prefHeight="25.0" prefWidth="104.0" text="12/100" textAlignment="RIGHT" textFill="WHITE">
<font> <font>
<Font name="System Bold" size="16.0" /> <Font name="System Bold" size="16.0" />
</font> </font>
@ -71,6 +71,7 @@
<JFXButton id="close" alignment="CENTER" contentDisplay="CENTER" styleClass="close" text="" textAlignment="CENTER" /> <JFXButton id="close" alignment="CENTER" contentDisplay="CENTER" styleClass="close" text="" textAlignment="CENTER" />
<JFXButton id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="380.0" text="" textAlignment="CENTER" /> <JFXButton id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="380.0" text="" textAlignment="CENTER" />
<JFXButton id="settings" alignment="CENTER" contentDisplay="CENTER" layoutY="92.0" text="" textAlignment="CENTER" /> <JFXButton id="settings" alignment="CENTER" contentDisplay="CENTER" layoutY="92.0" text="" textAlignment="CENTER" />
<JFXButton id="goConsole" fx:id="console" alignment="CENTER" contentDisplay="CENTER" layoutY="138.0" text="" textAlignment="CENTER" />
<JFXButton id="logout" alignment="CENTER" contentDisplay="CENTER" layoutY="334.0" text="" /> <JFXButton id="logout" alignment="CENTER" contentDisplay="CENTER" layoutY="334.0" text="" />
</children> </children>
</Pane> </Pane>

View file

@ -1,4 +1,9 @@
/* Output */ /*-- DrLeonardo Design --*/
Button {
-fx-cursor: hand;
}
/* Outputs */
#overlay > #output { #overlay > #output {
-fx-background-color: white; -fx-background-color: white;
-fx-background-radius: 0; -fx-background-radius: 0;
@ -15,34 +20,37 @@ #overlay > #output .content {
#overlay > #copy, #overlay > #copy,
#overlay > #action.close { #overlay > #action.close {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-background-color: rgba(33,133,208,.5);
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-background-color: #2d83ce;
-fx-pref-width: 150px;
-fx-pref-height: 25px;
} }
#overlay > #copy:hover, #overlay > #copy:hover,
#overlay > #copy:focused, #overlay > #copy:focused,
#overlay > #action.close:hover, #overlay > #action.close:hover,
#overlay > #action.close:focused { #overlay > #action.close:focused,
-fx-background-color: rgba(22,120,194,.5);
}
#overlay > #copy:pressed, #overlay > #copy:pressed,
#overlay > #action.close:pressed { #overlay > #action.close:pressed {
-fx-background-color: rgba(22,105,164,.5); -fx-background-color: #1568ce;
} }
/* Kill button */ /* Kill button */
#overlay > #action.kill { #overlay > #action.kill {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-background-color: rgba(219,40,40,.5);
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-background-color: #CE5757;
-fx-pref-width: 150px;
-fx-pref-height: 25px;
} }
#overlay > #action.kill:hover, #overlay > #action.kill:hover,
#overlay > #action.kill:focused { #overlay > #action.kill:focused,
-fx-background-color: rgba(202,16,16,.5);
}
#overlay > #action.kill:pressed { #overlay > #action.kill:pressed {
-fx-background-color: rgba(178,30,30,.5); -fx-background-color: #DB5252;
} }
/*-- DrLeonardo Design --*/

View file

@ -1,19 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextArea?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.20"> <Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets> <stylesheets>
<URL value="@debug.css" /> <URL value="@debug.css" />
<URL value="@../../styles.css" />
</stylesheets> </stylesheets>
<!-- Debug controls --> <!-- Debug controls -->
<TextArea fx:id="output" layoutY="28.0" prefHeight="372.0" prefWidth="600.0" /> <JFXTextArea fx:id="output" prefHeight="425.0" prefWidth="693.0" />
<Button fx:id="copy" defaultButton="true" layoutX="375.0" layoutY="352.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" /> <JFXButton fx:id="copy" defaultButton="true" layoutX="423.0" layoutY="390.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" />
<Button fx:id="action" layoutX="480.0" layoutY="352.0" prefHeight="30.0" prefWidth="100.0" /> <JFXButton fx:id="action" layoutX="583.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Убить" />
</Pane> </Pane>

View file

@ -4,22 +4,18 @@ var debug = {
initOverlay: function() { initOverlay: function() {
debug.overlay = loadFXML("dialog/overlay/debug/debug.fxml"); debug.overlay = loadFXML("dialog/overlay/debug/debug.fxml");
// Lookup output
debug.output = debug.overlay.lookup("#output"); debug.output = debug.overlay.lookup("#output");
debug.output.setEditable(false); debug.output.setEditable(false);
// Lookup copy button
debug.copy = debug.overlay.lookup("#copy"); debug.copy = debug.overlay.lookup("#copy");
debug.copy.setOnAction(function(event) { debug.copy.setOnAction(function(event) {
var content = new javafx.scene.input.ClipboardContent(); var content = new javafx.scene.input.ClipboardContent();
content.putString(debug.output.getText()); content.putString(debug.output.getText());
// Set clipboard content
javafx.scene.input.Clipboard.getSystemClipboard(). javafx.scene.input.Clipboard.getSystemClipboard().
setContent(content); setContent(content);
}); });
/// Lookup action button
debug.action = debug.overlay.lookup("#action"); debug.action = debug.overlay.lookup("#action");
debug.action.setOnAction(function(event) { debug.action.setOnAction(function(event) {
var process = debug.process; var process = debug.process;
@ -29,7 +25,6 @@ var debug = {
return; return;
} }
// Hide overlay
overlay.hide(0, null); overlay.hide(0, null);
}); });
}, },
@ -50,12 +45,10 @@ var debug = {
var alive = !forceClose && var alive = !forceClose &&
process !== null && process.isAlive(); process !== null && process.isAlive();
// Decide what we update to
var text = alive ? "Убить" : "Закрыть"; var text = alive ? "Убить" : "Закрыть";
var addClass = alive ? "kill" : "close"; var addClass = alive ? "kill" : "close";
var removeClass = alive ? "close" : "kill"; var removeClass = alive ? "close" : "kill";
// Update button
debug.action.setText(text); debug.action.setText(text);
debug.action.getStyleClass().remove(removeClass); debug.action.getStyleClass().remove(removeClass);
debug.action.getStyleClass().add(addClass); debug.action.getStyleClass().add(addClass);
@ -67,7 +60,6 @@ function debugProcess(process) {
debug.process = process; debug.process = process;
debug.updateActionButton(false); debug.updateActionButton(false);
// Create new task
var task = newTask(function() { var task = newTask(function() {
var buffer = IOHelper.newCharBuffer(); var buffer = IOHelper.newCharBuffer();
var reader = IOHelper.newReader(process.getInputStream(), var reader = IOHelper.newReader(process.getInputStream(),
@ -78,11 +70,9 @@ function debugProcess(process) {
appendFunction(new java.lang.String(buffer, 0, length)); appendFunction(new java.lang.String(buffer, 0, length));
} }
// So we wait for exit code
return process.waitFor(); return process.waitFor();
}); });
// Set completion handlers
task.setOnFailed(function(event) { task.setOnFailed(function(event) {
debug.updateActionButton(true); debug.updateActionButton(true);
debug.append(java.lang.System.lineSeparator() + task.getException()); debug.append(java.lang.System.lineSeparator() + task.getException());
@ -92,6 +82,5 @@ function debugProcess(process) {
debug.append(java.lang.System.lineSeparator() + "Exit code " + task.getValue()); debug.append(java.lang.System.lineSeparator() + "Exit code " + task.getValue());
}); });
// Gogogo
startTask(task); startTask(task);
} }

View file

@ -1,6 +1,8 @@
/*-- DrLeonardo Design --*/
#holder { #holder {
-fx-background-color: #fff; -fx-background-color: #fff;
} }
/* Labels */ /* Labels */
#holder > #settingsTitle { #holder > #settingsTitle {
-fx-font-size: 14pt; -fx-font-size: 14pt;
@ -9,8 +11,12 @@ #holder > #settingsTitle {
#holder > #apply{ #holder > #apply{
-fx-background-color: #61B373; -fx-background-color: #61B373;
-fx-text-fill: #fff;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white;
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-pref-width: 150px;
-fx-pref-height: 25px;
} }
#holder > #apply:hover, #holder > #apply:hover,
#holder > #apply:focused{ #holder > #apply:focused{
@ -25,64 +31,6 @@ #holder > #modlist > .viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
.scroll-pane {
-fx-background-color: transparent;
}
.scroll-bar:horizontal, .scroll-bar:vertical{
-fx-background-color:transparent;
}
.increment-button, .decrement-button, .increment-arrow, .decrement-arrow {
-fx-background-color: transparent;
-fx-border-color: transparent;
}
.scroll-bar:horizontal .track,
.scroll-bar:vertical .track{
-fx-background-color: transparent;
-fx-border-color: transparent;
}
.scroll-bar:horizontal .thumb,
.scroll-bar:vertical .thumb {
-fx-background-color: rgba(0, 0, 0, 0.19);
-fx-background-radius: 0;
}
.scroll-bar{
-fx-font-size: 6px;
}
.scroll-pane > .corner {
-fx-background-color: black;
}
.check-box{
-fx-background-color: transparent;
-fx-text-fill:#2c2c2c;
-fx-font-size: 13px;
-fx-background-image: url('../../images/icons/checkbox.png');
-fx-background-repeat: no-repeat;
}
.check-box .mark {
-fx-background-color: transparent;
}
.check-box .box {
-fx-background-color: transparent;
}
.check-box:selected{
-fx-background-color: transparent;
-fx-background-image: url('../../images/icons/checkbox_checked.png');
-fx-background-repeat: no-repeat;
}
.check-box:selected .mark {
-fx-background-color: transparent;
}
.check-box:selected .box {
-fx-background-color: transparent;
}
.description-text { .description-text {
-fx-font-smoothing-type: lcd; -fx-font-smoothing-type: lcd;
-fx-fill: #8c8c8c; -fx-fill: #8c8c8c;
@ -92,3 +40,4 @@ .separator *.line {
-fx-border-color: transparent; -fx-border-color: transparent;
-fx-border-width: 0 0 10 0; -fx-border-width: 0 0 10 0;
} }
/*-- DrLeonardo Design --*/

View file

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXScrollPane?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.20" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane id="holder" layoutX="171.0" layoutY="28.0" prefHeight="371.0" prefWidth="428.0"> <Pane id="holder" prefHeight="425.0" prefWidth="693.0">
<children> <children>
<ScrollPane id="modlist" hbarPolicy="NEVER"> <JFXScrollPane id="modlist" prefHeight="425.0" prefWidth="694.0">
<content> <content>
<VBox prefHeight="370.0" prefWidth="428.0"> <VBox prefHeight="232.0" prefWidth="689.0">
<children> <children>
</children> </children>
<padding> <padding>
@ -23,12 +23,13 @@
</padding> </padding>
</VBox> </VBox>
</content> </content>
</ScrollPane> </JFXScrollPane>
<Button fx:id="apply" defaultButton="true" layoutX="318.0" layoutY="336.0" prefHeight="25.0" prefWidth="100.0" text="Применить" /> <JFXButton fx:id="apply" defaultButton="true" layoutX="532.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Применить" />
</children> </children>
</Pane> </Pane>
</children> </children>
<stylesheets> <stylesheets>
<URL value="@options.css" /> <URL value="@options.css" />
<URL value="@../../styles.css" />
</stylesheets> </stylesheets>
</Pane> </Pane>

View file

@ -1,14 +1,12 @@
var options = { var options = {
file: DirBridge.dir.resolve("options.bin"), // options file file: DirBridge.dir.resolve("options.bin"),
/* options and overlay functions */
load: function(profiles) { load: function(profiles) {
LogHelper.debug("Loading options file"); LogHelper.debug("Loading options file");
try { try {
tryWithResources(new HInput(IOHelper.newInput(options.file)), options.read); tryWithResources(new HInput(IOHelper.newInput(options.file)), options.read);
} catch(e) { } catch(e) {
LogHelper.error(e); LogHelper.error(e);
//options.setDefault();
} }
}, },
@ -21,7 +19,6 @@ var options = {
} }
}, },
// Internal functions
read: function(input) { read: function(input) {
var magic = input.readInt(); var magic = input.readInt();
if (magic != config.settingsMagic) { if (magic != config.settingsMagic) {
@ -89,7 +86,7 @@ var options = {
var nodelist = new java.util.ArrayList; var nodelist = new java.util.ArrayList;
holder.getChildren().forEach(function(node,i,arr) { holder.getChildren().forEach(function(node,i,arr) {
if(node instanceof javafx.scene.control.CheckBox) if(node instanceof com.jfoenix.controls.JFXCheckBox)
nodelist.add(node); nodelist.add(node);
}); });
nodelist.forEach(function(node,i,arr) { nodelist.forEach(function(node,i,arr) {
@ -115,7 +112,7 @@ var options = {
modDescription = modFile.info; modDescription = modFile.info;
if(modFile.subTreeLevel != null && modFile.subTreeLevel > 1)//Это суб-модификация? if(modFile.subTreeLevel != null && modFile.subTreeLevel > 1)//Это суб-модификация?
subLevel = modFile.subTreeLevel; subLevel = modFile.subTreeLevel;
var testMod = new javafx.scene.control.CheckBox(modName); var testMod = new com.jfoenix.controls.JFXCheckBox(modName);
if(subLevel > 1) if(subLevel > 1)
for(var i = 1; i < subLevel; i++)//Выделение субмодификаций сдвигом. for(var i = 1; i < subLevel; i++)//Выделение субмодификаций сдвигом.
@ -141,11 +138,11 @@ var options = {
textDescr = new javafx.scene.text.Text(modDescription); textDescr = new javafx.scene.text.Text(modDescription);
if(subLevel > 1) { if(subLevel > 1) {
for(var i = 1; i < subLevel; i++){ for(var i = 1; i < subLevel; i++){
textDescr.setWrappingWidth(370-(25*i)); textDescr.setWrappingWidth(640-(25*i));
textDescr.setTranslateX(25+(25*i)); textDescr.setTranslateX(25+(25*i));
} }
} else { } else {
textDescr.setWrappingWidth(370); textDescr.setWrappingWidth(640);
textDescr.setTranslateX(25); textDescr.setTranslateX(25);
} }
textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY); textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY);
@ -159,5 +156,4 @@ var options = {
holder.getChildren().clear(); holder.getChildren().clear();
holder.getChildren().addAll(checkBoxList); holder.getChildren().addAll(checkBoxList);
} }
}; };

View file

@ -1,4 +1,4 @@
/* Label */ /*-- DrLeonardo Design --*/
#overlay > #description { #overlay > #description {
-fx-font-size: 12pt; -fx-font-size: 12pt;
-fx-text-fill: #fff; -fx-text-fill: #fff;
@ -8,3 +8,4 @@ #overlay > #description {
#overlay > #description.error { #overlay > #description.error {
-fx-text-fill: red; -fx-text-fill: red;
} }
/*-- DrLeonardo Design --*/

View file

@ -1,22 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXSpinner?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<!-- DrLeonardo Design | Fixes by Yaroslavik --> <!-- DrLeonardo Design | Fixes by Yaroslavik -->
<Pane fx:id="overlay" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.20" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<ImageView id="spinner" fx:id="spinner" fitHeight="161.0" fitWidth="161.0" layoutX="213.0" layoutY="94.0" y="-6.0">
<image>
<Image url="@../../images/icons/loading.gif" />
</image>
</ImageView>
<!-- Description --> <!-- Description -->
<Label fx:id="description" alignment="CENTER" contentDisplay="CENTER" layoutX="152.0" layoutY="249.0" prefHeight="64.0" prefWidth="283.0" text="..." textAlignment="CENTER" /> <Label fx:id="description" alignment="CENTER" contentDisplay="CENTER" layoutX="205.0" layoutY="272.0" prefHeight="120.0" prefWidth="283.0" text="..." textAlignment="CENTER" />
<JFXSpinner fx:id="spinner" layoutX="313.0" layoutY="178.0" prefHeight="70.0" prefWidth="67.0" />
</children> </children>
<stylesheets> <stylesheets>
<URL value="@processing.css" /> <URL value="@processing.css" />

View file

@ -10,14 +10,12 @@ var processing = {
processing.description = processing.overlay.lookup("#description"); processing.description = processing.overlay.lookup("#description");
// Set images // Set images
processing.processingImage = new javafx.scene.image.Image(
Launcher.getResourceURL("dialog/images/icons/loading.gif").toString());
processing.errorImage = new javafx.scene.image.Image( processing.errorImage = new javafx.scene.image.Image(
Launcher.getResourceURL("dialog/images/icons/error.png").toString()); Launcher.getResourceURL("dialog/images/icons/error.png").toString());
}, },
resetOverlay: function() { resetOverlay: function() {//JFXSpinner spinner = new JFXSpinner();
processing.spinner.setImage(processing.processingImage); //processing.spinner.setImage(processing.processingImage);
processing.description.getStyleClass().remove("error"); processing.description.getStyleClass().remove("error");
processing.description.setText("..."); processing.description.setText("...");
}, },
@ -80,7 +78,7 @@ function makeLauncherRequest(callback) {
settings.offline = true; settings.offline = true;
overlay.swap(2500, processing.overlay, function() makeLauncherRequest(callback)); overlay.swap(2500, processing.overlay, function() makeLauncherRequest(callback));
}, false); }, false);
task.updateMessage("Обновление списка серверов"); task.updateMessage("Обновление лаунчера");
startTask(task); startTask(task);
} }
function makeProfilesRequest(callback) { function makeProfilesRequest(callback) {
@ -96,11 +94,11 @@ function makeProfilesRequest(callback) {
settings.offline = true; settings.offline = true;
overlay.swap(2500, processing.overlay, function() makeProfilesRequest(callback)); overlay.swap(2500, processing.overlay, function() makeProfilesRequest(callback));
}, false); }, false);
task.updateMessage("Обновление списка серверов"); task.updateMessage("Обновление лаунчера");
startTask(task); startTask(task);
} }
function makeSetProfileRequest(profile, callback) { function makeSetProfileRequest(profile, callback) {
var task = newRequestTask(new SetProfileRequest(Launcher.getConfig(), profile)); var task = newRequestTask(new SetProfileRequest, profile);
// Set task properties and start // Set task properties and start
processing.setTaskProperties(task, callback, function() { processing.setTaskProperties(task, callback, function() {

View file

@ -1,8 +1,11 @@
/*-- DrLeonardo Design --*/
#holder { #holder {
-fx-background-color: #fff; -fx-background-color: #fff;
} }
#holder > #transferDialog { #holder > #transferDialog {
-fx-background-color: RGBA(0, 0, 0, 0.9); -fx-background-color: rgba(0, 0, 0, 0.5);
-fx-pref-width: 694px;
-fx-pref-height: 425px;
} }
/* Labels */ /* Labels */
#holder > #settingsTitle { #holder > #settingsTitle {
@ -41,62 +44,42 @@ #holder > #ramSlider:pressed > .thumb {
/* Dir options */ /* Dir options */
#holder > #deleteDir, #cancelTransfer { #holder > #deleteDir, #cancelTransfer {
-fx-background-color: #CE5757;
-fx-text-fill: white;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white;
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-background-color: #CE5757;
-fx-pref-width: 150px;
-fx-pref-height: 25px;
} }
#holder > #deleteDir:hover,#cancelTransfer:hover, #holder > #deleteDir:hover,#cancelTransfer:hover,
#holder > #deleteDir:focused,#cancelTransfer:focused { #holder > #deleteDir:focused,#cancelTransfer:focused {
-fx-opacity: 0.8; -fx-background-color: #DB5252;
} }
#holder > #changeDir { #holder > #changeDir {
-fx-background-color: #B4B4B4; -fx-background-color: transparent;
-fx-text-fill: white; -fx-text-fill: #909090;
-fx-background-radius: 0; -fx-background-radius: 0;
} }
#holder > #changeDir:hover, #holder > #changeDir:focused,
#holder > #changeDir:focused {
-fx-opacity: 0.8;
}
#holder > #changeDir:pressed { #holder > #changeDir:pressed {
-fx-opacity: 0.8; -fx-font-weight: bold;
} }
#holder > #apply,#applyTransfer{ #holder > #apply,#applyTransfer{
-fx-background-color: #61B373; -fx-background-color: #61B373;
-fx-text-fill: #fff;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white;
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-pref-width: 150px;
-fx-pref-height: 25px;
} }
#holder > #apply:hover,#applyTransfer:hover, #holder > #apply:hover,#applyTransfer:hover,
#holder > #apply:focused,#applyTransfer:focused{ #holder > #apply:focused,#applyTransfer:focused{
-fx-background-color: #74C085; -fx-background-color: #74C085;
} }
/*-- DrLeonardo Design --*/
.check-box{
-fx-background-color: transparent;
-fx-text-fill:#2c2c2c;
-fx-font-size: 13;
-fx-background-image: url('../../images/icons/checkbox.png');
-fx-background-repeat: no-repeat;
}
.check-box .mark {
-fx-background-color: transparent;
}
.check-box .box {
-fx-background-color: transparent;
}
.check-box:selected{
-fx-background-color: transparent;
-fx-background-image: url('../../images/icons/checkbox_checked.png');
-fx-background-repeat: no-repeat;
}
.check-box:selected .mark {
-fx-background-color: transparent;
}
.check-box:selected .box {
-fx-background-color: transparent;
}

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXCheckBox?>
<?import com.jfoenix.controls.JFXSlider?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Hyperlink?> <?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Separator?> <?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
@ -13,49 +13,46 @@
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.20" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane id="holder" layoutX="1.0" layoutY="28.0" prefHeight="371.0" prefWidth="598.0"> <Pane id="holder" prefHeight="425.0" prefWidth="694.0">
<children> <children>
<CheckBox fx:id="autoEnter" layoutX="14.0" layoutY="80.0" text="Автовход на сервер" /> <JFXCheckBox fx:id="autoEnter" checkedColor="#61b373" layoutX="14.0" layoutY="127.0" text="Автовход на сервер" unCheckedColor="#909090" />
<Text fill="#8c8c8c" layoutX="38.0" layoutY="95.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер" wrappingWidth="533.0000102519989" y="15.0" /> <Text fill="#8c8c8c" layoutX="38.0" layoutY="143.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер" wrappingWidth="636.9999872148037" y="15.0" />
<CheckBox fx:id="fullScreen" layoutX="13.0" layoutY="185.0" text="Клиент в полный экран" /> <JFXCheckBox fx:id="fullScreen" checkedColor="#61b373" layoutX="13.0" layoutY="250.0" text="Клиент в полный экран" unCheckedColor="#909090" />
<Text fill="#8c8c8c" layoutX="38.0" layoutY="200.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение данной функции позволяет запустить игру сразу в полноэкранном режиме" wrappingWidth="533.0000102519989" y="15.0" /> <Text fill="#8c8c8c" layoutX="38.0" layoutY="267.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение данной функции позволяет запустить игру сразу в полноэкранном режиме" wrappingWidth="636.9999872148037" y="15.0" />
<CheckBox id="debug" layoutX="13.0" layoutY="124.0" text="Режим Отладки" /> <JFXCheckBox id="debug" checkedColor="#61b373" layoutX="13.0" layoutY="183.0" text="Режим Отладки" unCheckedColor="#909090" />
<Text fill="#8c8c8c" layoutX="38.0" layoutY="139.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="533.0000016447157" y="15.0" /> <Text fill="#8c8c8c" layoutX="38.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="637.0000016447157" y="15.0" />
<!-- RAM settings --> <!-- RAM settings -->
<TextFlow layoutX="128.0" layoutY="6.0"> <TextFlow layoutX="126.0" layoutY="15.0" prefHeight="16.0" prefWidth="112.0">
<Text fx:id="ramLabel" /> <Text fx:id="ramLabel" />
</TextFlow> </TextFlow>
<Slider fx:id="ramSlider" layoutX="18.0" layoutY="26.0" prefHeight="3.0" prefWidth="563.0" /> <Separator layoutY="112.0" prefHeight="3.0" prefWidth="693.0" />
<Separator layoutY="65.0" prefHeight="1.0" prefWidth="598.0" />
<!-- RAM settings --> <!-- RAM settings -->
<!-- Deldir settings --> <!-- Deldir settings -->
<Button fx:id="deleteDir" layoutX="15.0" layoutY="333.0" prefHeight="25.0" prefWidth="245.0" text="Очистить данные игровых клиентов" textAlignment="CENTER" wrapText="true"> <JFXButton fx:id="deleteDir" layoutX="374.0" layoutY="365.0" prefHeight="25.0" prefWidth="245.0" text="Удалить клиенты" textAlignment="CENTER" wrapText="true" />
<font>
<Font name="System Bold" size="12.0" />
</font>
</Button>
<!-- Deldir settings --> <!-- Deldir settings -->
<!-- Changedir settings --> <!-- Changedir settings -->
<Button fx:id="changeDir" layoutX="14.0" layoutY="229.0" prefHeight="25.0" prefWidth="200.0" text="Сменить директорию загрузки" textAlignment="CENTER" wrapText="true" /> <JFXButton fx:id="changeDir" layoutY="400.0" prefHeight="25.0" prefWidth="200.0" text="Сменить директорию загрузки" textAlignment="CENTER" wrapText="true" />
<Hyperlink id="dirLabel" alignment="TOP_LEFT" layoutX="215.0" layoutY="230.0" prefHeight="23.0" prefWidth="371.0" text="C:/Users" wrapText="true" /> <Hyperlink id="dirLabel" alignment="TOP_LEFT" layoutX="200.0" layoutY="401.0" prefHeight="23.0" prefWidth="493.0" text="C:/Users" />
<!-- Changedir settings --> <!-- Changedir settings -->
<Button fx:id="apply" defaultButton="true" layoutX="486.0" layoutY="335.0" prefHeight="23.0" prefWidth="100.0" text="Применить" /> <JFXButton fx:id="apply" defaultButton="true" layoutX="534.0" layoutY="365.0" prefHeight="23.0" prefWidth="100.0" text="Применить" />
<Text layoutX="17.0" layoutY="19.0">Выделение памяти: </Text> <Text layoutX="16.0" layoutY="28.0">Выделение памяти: </Text>
<Pane fx:id="transferDialog" prefHeight="371.0" prefWidth="598.0"> <JFXSlider fx:id="ramSlider" layoutX="14.0" layoutY="76.0" prefHeight="14.0" prefWidth="663.0" />
<Separator layoutY="400.0" prefHeight="3.0" prefWidth="693.0" />
<Pane fx:id="transferDialog" prefHeight="425.0" prefWidth="694.0" visible="false">
<children> <children>
<Text fill="WHITE" layoutX="99.0" layoutY="155.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Перенести все данные в новую директорию?" wrappingWidth="400.13671875"> <Text fill="WHITE" layoutX="147.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Перенести все данные в новую директорию?" wrappingWidth="400.13671875">
<font> <font>
<Font size="19.0" /> <Font size="19.0" />
</font> </font>
</Text> </Text>
<Button fx:id="applyTransfer" layoutX="130.0" layoutY="186.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="124.0" text="Да, перенести!" /> <JFXButton fx:id="applyTransfer" layoutX="165.0" layoutY="226.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="124.0" text="Да, перенести!" />
<Button fx:id="cancelTransfer" layoutX="344.0" layoutY="186.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="124.0" text="Нет, не нужно." /> <JFXButton fx:id="cancelTransfer" layoutX="379.0" layoutY="226.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="124.0" text="Нет, не нужно." />
</children> </children>
</Pane> </Pane>
@ -64,5 +61,6 @@
</children> </children>
<stylesheets> <stylesheets>
<URL value="@settings.css" /> <URL value="@settings.css" />
<URL value="@../../styles.css" />
</stylesheets> </stylesheets>
</Pane> </Pane>

View file

@ -1,28 +1,23 @@
var settingsClass = Java.extend(LauncherSettingsClass.static, { var settingsClass = Java.extend(LauncherSettingsClass.static, {
setDefault: function() { setDefault: function() {
// Auth settings
settings.login = null; settings.login = null;
settings.rsaPassword = null; settings.rsaPassword = null;
settings.profile = 0; settings.profile = 0;
// Client settings
settings.updatesDir = DirBridge.defaultUpdatesDir; settings.updatesDir = DirBridge.defaultUpdatesDir;
settings.autoEnter = config.autoEnterDefault; settings.autoEnter = config.autoEnterDefault;
settings.fullScreen = config.fullScreenDefault; settings.fullScreen = config.fullScreenDefault;
settings.setRAM(config.ramDefault); settings.setRAM(config.ramDefault);
// Offline cache
settings.lastDigest = null; settings.lastDigest = null;
settings.lastProfiles.clear(); settings.lastProfiles.clear();
settings.lastHDirs.clear(); settings.lastHDirs.clear();
// Apply CLI params
cliParams.applySettings(); cliParams.applySettings();
}, },
setPassword: function(password) { setPassword: function(password) {
var encrypted = SecurityHelper.newRSAEncryptCipher(Launcher.getConfig().publicKey).doFinal(IOHelper.encode(password)); var encrypted = SecurityHelper.newRSAEncryptCipher(Launcher.getConfig().publicKey).doFinal(IOHelper.encode(password));
//settings.password = encrypted;
return encrypted; return encrypted;
}, },
@ -43,7 +38,6 @@ var settingsOverlay = {
initOverlay: function() { initOverlay: function() {
settingsOverlay.overlay = loadFXML("dialog/overlay/settings/settings.fxml"); settingsOverlay.overlay = loadFXML("dialog/overlay/settings/settings.fxml");
// Lookup autoEnter checkbox
var holder = settingsOverlay.overlay.lookup("#holder"); var holder = settingsOverlay.overlay.lookup("#holder");
var autoEnterBox = holder.lookup("#autoEnter"); var autoEnterBox = holder.lookup("#autoEnter");
@ -51,40 +45,34 @@ var settingsOverlay = {
autoEnterBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( autoEnterBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.autoEnter = nv); function(o, ov, nv) settings.autoEnter = nv);
// Lookup dir label
settingsOverlay.dirLabel = holder.lookup("#dirLabel"); settingsOverlay.dirLabel = holder.lookup("#dirLabel");
settingsOverlay.dirLabel.setOnAction(function(event) settingsOverlay.dirLabel.setOnAction(function(event)
app.getHostServices().showDocument(settings.updatesDir.toUri())); app.getHostServices().showDocument(settings.updatesDir.toUri()));
settingsOverlay.updateDirLabel(); settingsOverlay.updateDirLabel();
// Lokup transferDialog pane
settingsOverlay.transferDialog = holder.lookup("#transferDialog"); settingsOverlay.transferDialog = holder.lookup("#transferDialog");
settingsOverlay.transferDialog.setVisible(false); settingsOverlay.transferDialog.setVisible(false);
// Lookup change dir button
holder.lookup("#changeDir").setOnAction(function(event) { holder.lookup("#changeDir").setOnAction(function(event) {
var chooser = new javafx.stage.DirectoryChooser(); var chooser = new javafx.stage.DirectoryChooser();
chooser.setTitle("Сменить директорию загрузок"); chooser.setTitle("Сменить директорию загрузок");
chooser.setInitialDirectory(DirBridge.dir.toFile()); chooser.setInitialDirectory(DirBridge.dir.toFile());
// Set new result
var newDir = chooser.showDialog(stage); var newDir = chooser.showDialog(stage);
if (newDir !== null) { if (newDir !== null) {
settingsOverlay.transferCatalogDialog(newDir.toPath()); settingsOverlay.transferCatalogDialog(newDir.toPath());
} }
}); });
// Lookup fullScreen checkbox
var fullScreenBox = holder.lookup("#fullScreen"); var fullScreenBox = holder.lookup("#fullScreen");
fullScreenBox.setSelected(settings.fullScreen); fullScreenBox.setSelected(settings.fullScreen);
fullScreenBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( fullScreenBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.fullScreen = nv); function(o, ov, nv) settings.fullScreen = nv);
// Lookup RAM label
settingsOverlay.ramLabel = holder.lookup("#ramLabel"); settingsOverlay.ramLabel = holder.lookup("#ramLabel");
settingsOverlay.updateRAMLabel(); settingsOverlay.updateRAMLabel();
// Lookup RAM slider options
var ramSlider = holder.lookup("#ramSlider"); var ramSlider = holder.lookup("#ramSlider");
ramSlider.setMax(JVMHelper.RAM); ramSlider.setMax(JVMHelper.RAM);
ramSlider.setSnapToTicks(true); ramSlider.setSnapToTicks(true);
@ -99,7 +87,6 @@ var settingsOverlay = {
settingsOverlay.updateRAMLabel(); settingsOverlay.updateRAMLabel();
}); });
// Lookup delete dir button
var deleteDirButton = holder.lookup("#deleteDir"); var deleteDirButton = holder.lookup("#deleteDir");
deleteDirButton.setOnAction(function(event) { deleteDirButton.setOnAction(function(event) {
if (!settingsOverlay.deleteDirPressedAgain) { if (!settingsOverlay.deleteDirPressedAgain) {
@ -108,7 +95,6 @@ var settingsOverlay = {
return; return;
} }
// Delete dir!
settingsOverlay.deleteUpdatesDir(); settingsOverlay.deleteUpdatesDir();
settingsOverlay.deleteDirPressedAgain = false; settingsOverlay.deleteDirPressedAgain = false;
settingsOverlay.count = settingsOverlay.count+1; settingsOverlay.count = settingsOverlay.count+1;
@ -124,14 +110,11 @@ var settingsOverlay = {
)))); ))));
}); });
// Lookup debug checkbox
var debugBox = settingsOverlay.overlay.lookup("#debug"); var debugBox = settingsOverlay.overlay.lookup("#debug");
debugBox.setSelected(LogHelper.isDebugEnabled()); debugBox.setSelected(LogHelper.isDebugEnabled());
debugBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( debugBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) LogHelper.setDebugEnabled(nv)); function(o, ov, nv) LogHelper.setDebugEnabled(nv));
// Lookup apply settings button
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null)); holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
}, },
@ -145,7 +128,6 @@ var settingsOverlay = {
settingsOverlay.transferDialog.setVisible(false); settingsOverlay.transferDialog.setVisible(false);
}); });
settingsOverlay.transferDialog.lookup("#applyTransfer").setOnAction(function(event) { settingsOverlay.transferDialog.lookup("#applyTransfer").setOnAction(function(event) {
//Здесь могла быть ваша реклама, либо DirBridge.move();
DirBridge.move(newDir); DirBridge.move(newDir);
settings.updatesDir = newDir; settings.updatesDir = newDir;
DirBridge.dirUpdates = settings.updatesDir; DirBridge.dirUpdates = settings.updatesDir;
@ -177,17 +159,17 @@ var settingsOverlay = {
}; };
LogHelper.debug("Dir: %s", DirBridge.dir); LogHelper.debug("Dir: %s", DirBridge.dir);
var settings = new settingsClass; var settings = new settingsClass;
/* ====================== CLI PARAMS ===================== */ /* ====================== CLI PARAMS ===================== */
var cliParams = { var cliParams = {
login: null, password: null, profile: -1, autoLogin: false, // Auth login: null, password: null, profile: -1, autoLogin: false,
updatesDir: null, autoEnter: null, fullScreen: null, ram: -1, // Client updatesDir: null, autoEnter: null, fullScreen: null, ram: -1,
offline: false, // Offline offline: false,
init: function(params) { init: function(params) {
var named = params.getNamed(); var named = params.getNamed();
var unnamed = params.getUnnamed(); var unnamed = params.getUnnamed();
// Read auth cli params
cliParams.login = named.get("login"); cliParams.login = named.get("login");
cliParams.password = named.get("password"); cliParams.password = named.get("password");
var profile = named.get("profile"); var profile = named.get("profile");
@ -196,7 +178,6 @@ var cliParams = {
} }
cliParams.autoLogin = unnamed.contains("--autoLogin"); cliParams.autoLogin = unnamed.contains("--autoLogin");
// Read client cli params
var updatesDir = named.get("updatesDir"); var updatesDir = named.get("updatesDir");
if (updatesDir !== null) { if (updatesDir !== null) {
cliParams.updatesDir = IOHelper.toPath(named.get("updatesDir")); cliParams.updatesDir = IOHelper.toPath(named.get("updatesDir"));
@ -214,7 +195,6 @@ var cliParams = {
cliParams.ram = java.lang.Integer.parseInt(ram); cliParams.ram = java.lang.Integer.parseInt(ram);
} }
// Read offline cli param
var offline = named.get("offline"); var offline = named.get("offline");
if (offline !== null) { if (offline !== null) {
cliParams.offline = java.lang.Boolean.parseBoolean(offline); cliParams.offline = java.lang.Boolean.parseBoolean(offline);
@ -222,7 +202,6 @@ var cliParams = {
}, },
applySettings: function() { applySettings: function() {
// Apply auth params
if (cliParams.login !== null) { if (cliParams.login !== null) {
settings.login = cliParams.login; settings.login = cliParams.login;
} }
@ -233,9 +212,7 @@ var cliParams = {
settings.profile = cliParams.profile; settings.profile = cliParams.profile;
} }
// Apply client params
if (cliParams.updatesDir !== null) { if (cliParams.updatesDir !== null) {
//settings.updatesDir = cliParams.updatesDir;
} }
if (cliParams.autoEnter !== null) { if (cliParams.autoEnter !== null) {
settings.autoLogin = cliParams.autoEnter; settings.autoLogin = cliParams.autoEnter;
@ -247,7 +224,6 @@ var cliParams = {
settings.setRAM(cliParams.ram); settings.setRAM(cliParams.ram);
} }
// Apply offline param
if (cliParams.offline !== null) { if (cliParams.offline !== null) {
settings.offline = cliParams.offline; settings.offline = cliParams.offline;
} }

View file

@ -1,3 +1,13 @@
/*-- DrLeonardo Design --*/
/* Background */
#overlay {
-fx-background-color: transparent;
-fx-background-size: cover;
-fx-pref-width: 693px;
-fx-pref-height: 425px;
-fx-background-image: url('../../images/background.jpg');
}
#overlay > #utitle { #overlay > #utitle {
-fx-alignment: top-left; -fx-alignment: top-left;
} }
@ -8,11 +18,13 @@ #overlay > #description {
} }
#overlay > #description.error { #overlay > #description.error {
-fx-text-fill: red; -fx-text-fill: #CE5757;
} }
.downloadPane { .downloadPane {
-fx-background-color: rgba(0, 0, 0, 0.46); -fx-background-color: rgba(0, 0, 0, 0.3);
-fx-pref-width: 693px;
-fx-pref-height: 425px;
} }
/* Progress bar */ /* Progress bar */
@ -42,3 +54,4 @@ .progress-bar > .track {
-fx-background-insets: 0; -fx-background-insets: 0;
-fx-background-radius: 3px; -fx-background-radius: 3px;
} }
/*-- DrLeonardo Design --*/

View file

@ -1,43 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXProgressBar?>
<?import com.jfoenix.controls.JFXSpinner?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.ProgressBar?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.20" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true"> <Pane prefHeight="425.0" prefWidth="693.0" styleClass="downloadPane">
<image> <children>
<Image url="@../../images/background.png" /> <Label fx:id="description" layoutX="14.0" layoutY="302.0" prefHeight="98.0" prefWidth="660.0" text="..." textFill="WHITE" />
</image> <Label fx:id="utitle" alignment="TOP_LEFT" layoutX="59.0" layoutY="269.0" prefHeight="18.0" prefWidth="470.0" text="Обновление..." textFill="WHITE">
</ImageView>
<Pane layoutY="28.0" prefHeight="372.0" prefWidth="600.0" styleClass="downloadPane" />
<ImageView fitHeight="12.0" fitWidth="11.0" layoutX="9.0" layoutY="8.0">
<image>
<Image url="@../../images/icons/logo_small.png" />
</image>
</ImageView>
<Label fx:id="description" layoutX="12.0" layoutY="267.0" prefHeight="98.0" prefWidth="576.0" text="..." textFill="WHITE" />
<ProgressBar fx:id="progress" disable="false" layoutX="-1.0" layoutY="376.0" opacity="1.0" prefHeight="24.0" prefWidth="600.0" progress="1.0" style="" />
<!-- Update controls -->
<Label fx:id="utitle" alignment="TOP_LEFT" layoutX="15.0" layoutY="236.0" prefHeight="30.0" prefWidth="470.0" text="Обновление..." textFill="WHITE">
<font> <font>
<Font name="System Bold" size="20.0" /> <Font size="13.0" />
</font> </font>
</Label> </Label>
<ImageView fitHeight="160.0" fitWidth="160.0" layoutX="219.0" layoutY="70.0" y="-6.0"> <JFXProgressBar fx:id="progress" layoutY="407.0" prefHeight="18.0" prefWidth="693.0" />
<image> <JFXSpinner layoutX="14.0" layoutY="261.0" prefHeight="35.0" prefWidth="32.0" />
<Image url="@../../images/icons/loading.gif" /> </children></Pane>
</image>
</ImageView>
</children> </children>
<stylesheets> <stylesheets>
<URL value="@update.css" /> <URL value="@update.css" />
<URL value="@../../styles.css" />
</stylesheets> </stylesheets>
</Pane> </Pane>

View file

@ -1,11 +1,9 @@
var update = { var update = {
overlay: null, title: null, description: null, progress: null, overlay: null, title: null, description: null, progress: null,
/* State and overlay functions */
initOverlay: function() { initOverlay: function() {
update.overlay = loadFXML("dialog/overlay/update/update.fxml"); update.overlay = loadFXML("dialog/overlay/update/update.fxml");
// Lookup nodes
update.title = update.overlay.lookup("#utitle"); update.title = update.overlay.lookup("#utitle");
update.description = update.overlay.lookup("#description"); update.description = update.overlay.lookup("#description");
update.progress = update.overlay.lookup("#progress"); update.progress = update.overlay.lookup("#progress");
@ -21,7 +19,6 @@ var update = {
setError: function(e) { setError: function(e) {
LogHelper.error(e); LogHelper.error(e);
// Set error description
update.description.getStyleClass().add("error"); update.description.getStyleClass().add("error");
update.description.setText(e.toString()); update.description.setText(e.toString());
}, },
@ -34,17 +31,16 @@ var update = {
var estimatedMM = ((estimatedSeconds % 3600) / 60) | 0; var estimatedMM = ((estimatedSeconds % 3600) / 60) | 0;
var estimatedSS = (estimatedSeconds % 60) | 0; var estimatedSS = (estimatedSeconds % 60) | 0;
task.updateMessage(java.lang.String.format( task.updateMessage(java.lang.String.format(
"Файл: %s%n" + // File line "Файл: %s%n" +
"Загружено (Всего): %.2f / %.2f MiB.%n" + // Total downloaded line "Загружено (Всего): %.2f / %.2f MiB.%n" +
"%n" + "%n" +
"Средняя скорость: %.1f Kbps%n" + // Speed line "Средняя скорость: %.1f Kbps%n" +
"Примерно осталось: %d:%02d:%02d%n", // Estimated line "Примерно осталось: %d:%02d:%02d%n",
// Formatting state.filePath,
state.filePath, // File path state.getTotalDownloadedMiB() + 0.0, state.getTotalSizeMiB() + 0.0,
state.getTotalDownloadedMiB() + /* Fuck nashorn */ 0.0, state.getTotalSizeMiB() + 0.0, // Total downloaded bps <= 0.0 ? 0.0 : bps / 1024.0,
bps <= 0.0 ? 0.0 : bps / 1024.0, // Speed estimatedHH, estimatedMM, estimatedSS
estimatedHH, estimatedMM, estimatedSS // Estimated (hh:mm:ss)
)); ));
task.updateProgress(state.totalDownloaded, state.totalSize); task.updateProgress(state.totalDownloaded, state.totalSize);
}, },
@ -77,19 +73,17 @@ function offlineUpdateRequest(dirName, dir, matcher, digest) {
return; return;
} }
// Verify dir with matcher using FunctionalBridge`s API
return FunctionalBridge.offlineUpdateRequest(dir, hdir, matcher, digest).run(); return FunctionalBridge.offlineUpdateRequest(dir, hdir, matcher, digest).run();
}; };
} }
/* Export functions */ /* Export functions */
function makeUpdateRequest(dirName, dir, matcher, digest, callback) { function makeUpdateRequest(dirName, dir, matcher, digest, callback) {
var request = settings.offline ? { setStateCallback: function(stateCallback) { /* Ignored */ } } : var request = settings.offline ? { setStateCallback: function(stateCallback) { } } :
new UpdateRequest(dirName, dir, matcher, digest); new UpdateRequest(dirName, dir, matcher, digest);
var task = settings.offline ? newTask(offlineUpdateRequest(dirName, dir, matcher, digest)) : var task = settings.offline ? newTask(offlineUpdateRequest(dirName, dir, matcher, digest)) :
newRequestTask(request); newRequestTask(request);
// Set task properties and start
update.setTaskProperties(task, request, callback); update.setTaskProperties(task, request, callback);
task.updateMessage("Состояние: Хеширование"); task.updateMessage("Состояние: Хеширование");
task.updateProgress(-1, -1); task.updateProgress(-1, -1);

View file

@ -57,6 +57,26 @@ #hide {
-fx-pref-width: 45px; -fx-pref-width: 45px;
-fx-pref-height: 45px; -fx-pref-height: 45px;
} }
#back {
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-background-repeat: no-repeat;
-fx-background-color: #323232;
-fx-background-radius: 0;
-fx-background-image: url('images/icons/back.png');
-fx-pref-width: 45px;
-fx-pref-height: 45px;
}
#goConsole {
-fx-background-position: center;
-jfx-button-type: FLAT;
-fx-background-repeat: no-repeat;
-fx-background-color: #323232;
-fx-background-radius: 0;
-fx-background-image: url('images/icons/console.png');
-fx-pref-width: 45px;
-fx-pref-height: 45px;
}
#settings { #settings {
-fx-background-position: center; -fx-background-position: center;
-jfx-button-type: FLAT; -jfx-button-type: FLAT;
@ -282,7 +302,7 @@ #serverLabel{
#serverStatus{ #serverStatus{
-fx-text-fill: #323232; -fx-text-fill: #323232;
-fx-pref-width: 60px; -fx-pref-width: 120px;
-fx-pref-height: 25px; -fx-pref-height: 25px;
} }

View file

@ -17,7 +17,6 @@ var ServerPinger = ServerPingerClass.static;
var Request = RequestClass.static; var Request = RequestClass.static;
var RequestType = RequestTypeClass.static; var RequestType = RequestTypeClass.static;
var RequestException = RequestExceptionClass.static; var RequestException = RequestExceptionClass.static;
var CustomRequest = CustomRequestClass.static;
var PingRequest = PingRequestClass.static; var PingRequest = PingRequestClass.static;
var AuthRequest = AuthRequestClass.static; var AuthRequest = AuthRequestClass.static;
var JoinServerRequest = JoinServerRequestClass.static; var JoinServerRequest = JoinServerRequestClass.static;

View file

@ -1,5 +1,5 @@
var app, stage, scene, loginScene, menuScene; var app, stage, scene, loginScene, menuScene, consoleScene;
var rootPane, loginPane, authPane, menuPane; var rootPane, loginPane, authPane, menuPane, consolePane;
var LauncherApp = Java.extend(JSApplication, { var LauncherApp = Java.extend(JSApplication, {
init: function() { init: function() {
@ -20,6 +20,7 @@ var LauncherApp = Java.extend(JSApplication, {
loginPane = loadFXML("dialog/login.fxml"); loginPane = loadFXML("dialog/login.fxml");
menuPane = loadFXML("dialog/mainmenu.fxml"); menuPane = loadFXML("dialog/mainmenu.fxml");
consolePane = loadFXML("dialog/console.fxml");
loginScene = new javafx.scene.Scene(loginPane); loginScene = new javafx.scene.Scene(loginPane);
loginScene.setFill(javafx.scene.paint.Color.TRANSPARENT); loginScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
@ -27,6 +28,9 @@ var LauncherApp = Java.extend(JSApplication, {
menuScene = new javafx.scene.Scene(menuPane); menuScene = new javafx.scene.Scene(menuPane);
menuScene.setFill(javafx.scene.paint.Color.TRANSPARENT); menuScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
consoleScene = new javafx.scene.Scene(consolePane);
consoleScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
setCurrentScene(loginScene); setCurrentScene(loginScene);
initLauncher(); initLauncher();