32
Launcher/runtime/dialog/console.fxml
Normal 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>
|
|
@ -9,6 +9,7 @@ var loginData;
|
|||
function initLauncher() {
|
||||
initLoginScene();
|
||||
initMenuScene();
|
||||
initConsoleScene();
|
||||
|
||||
debug.initOverlay();
|
||||
processing.initOverlay();
|
||||
|
@ -34,7 +35,7 @@ function initLoginScene() {
|
|||
bar = pane;
|
||||
loginPane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()});
|
||||
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");
|
||||
authPane = pane;
|
||||
|
@ -82,6 +83,7 @@ function initMenuScene() {
|
|||
menuPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)});
|
||||
menuPane.lookup("#discord").setOnAction(function(){ openURL(config.discord); });
|
||||
menuPane.lookup("#settings").setOnAction(goSettings);
|
||||
menuPane.lookup("#goConsole").setOnAction(goConsole);
|
||||
menuPane.lookup("#logout").setOnAction(function(){
|
||||
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 ======== */
|
||||
function initOffline() {
|
||||
stage.setTitle(config.title + " [Offline]");
|
||||
|
@ -146,6 +174,13 @@ function goAuth(event) {
|
|||
doAuth(login, rsaPassword);
|
||||
}
|
||||
|
||||
/* ======== Console ======== */
|
||||
function goConsole(event) {
|
||||
if (overlay.current !== null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* ======== Settings ======== */
|
||||
function goSettings(event) {
|
||||
// Verify there's no other overlays
|
||||
|
|
BIN
Launcher/runtime/dialog/images/icons/back.png
Normal file
After Width: | Height: | Size: 346 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 16 KiB |
BIN
Launcher/runtime/dialog/images/icons/console.png
Normal file
After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 1,014 B |
Before Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 322 B |
|
@ -48,7 +48,7 @@
|
|||
</font>
|
||||
</JFXButton>
|
||||
<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 name="System Bold" size="16.0" />
|
||||
</font>
|
||||
|
@ -71,6 +71,7 @@
|
|||
<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="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="" />
|
||||
</children>
|
||||
</Pane>
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/* Output */
|
||||
/*-- DrLeonardo Design --*/
|
||||
Button {
|
||||
-fx-cursor: hand;
|
||||
}
|
||||
|
||||
/* Outputs */
|
||||
#overlay > #output {
|
||||
-fx-background-color: white;
|
||||
-fx-background-radius: 0;
|
||||
|
@ -15,34 +20,37 @@ #overlay > #output .content {
|
|||
#overlay > #copy,
|
||||
#overlay > #action.close {
|
||||
-fx-background-radius: 0;
|
||||
-fx-background-color: rgba(33,133,208,.5);
|
||||
-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:focused,
|
||||
#overlay > #action.close:hover,
|
||||
#overlay > #action.close:focused {
|
||||
-fx-background-color: rgba(22,120,194,.5);
|
||||
}
|
||||
|
||||
#overlay > #action.close:focused,
|
||||
#overlay > #copy:pressed,
|
||||
#overlay > #action.close:pressed {
|
||||
-fx-background-color: rgba(22,105,164,.5);
|
||||
-fx-background-color: #1568ce;
|
||||
}
|
||||
|
||||
/* Kill button */
|
||||
#overlay > #action.kill {
|
||||
-fx-background-radius: 0;
|
||||
-fx-background-color: rgba(219,40,40,.5);
|
||||
-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:focused {
|
||||
-fx-background-color: rgba(202,16,16,.5);
|
||||
}
|
||||
|
||||
#overlay > #action.kill:focused,
|
||||
#overlay > #action.kill:pressed {
|
||||
-fx-background-color: rgba(178,30,30,.5);
|
||||
-fx-background-color: #DB5252;
|
||||
}
|
||||
/*-- DrLeonardo Design --*/
|
|
@ -1,19 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import com.jfoenix.controls.JFXButton?>
|
||||
<?import com.jfoenix.controls.JFXTextArea?>
|
||||
<?import java.net.URL?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.TextArea?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
|
||||
<!-- 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>
|
||||
<URL value="@debug.css" />
|
||||
<URL value="@../../styles.css" />
|
||||
</stylesheets>
|
||||
|
||||
<!-- Debug controls -->
|
||||
<TextArea fx:id="output" layoutY="28.0" prefHeight="372.0" prefWidth="600.0" />
|
||||
<Button fx:id="copy" defaultButton="true" layoutX="375.0" layoutY="352.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" />
|
||||
<Button fx:id="action" layoutX="480.0" layoutY="352.0" prefHeight="30.0" prefWidth="100.0" />
|
||||
<JFXTextArea fx:id="output" prefHeight="425.0" prefWidth="693.0" />
|
||||
<JFXButton fx:id="copy" defaultButton="true" layoutX="423.0" layoutY="390.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" />
|
||||
<JFXButton fx:id="action" layoutX="583.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Убить" />
|
||||
</Pane>
|
||||
|
|
|
@ -4,22 +4,18 @@ var debug = {
|
|||
initOverlay: function() {
|
||||
debug.overlay = loadFXML("dialog/overlay/debug/debug.fxml");
|
||||
|
||||
// Lookup output
|
||||
debug.output = debug.overlay.lookup("#output");
|
||||
debug.output.setEditable(false);
|
||||
|
||||
// Lookup copy button
|
||||
debug.copy = debug.overlay.lookup("#copy");
|
||||
debug.copy.setOnAction(function(event) {
|
||||
var content = new javafx.scene.input.ClipboardContent();
|
||||
content.putString(debug.output.getText());
|
||||
|
||||
// Set clipboard content
|
||||
javafx.scene.input.Clipboard.getSystemClipboard().
|
||||
setContent(content);
|
||||
});
|
||||
|
||||
/// Lookup action button
|
||||
debug.action = debug.overlay.lookup("#action");
|
||||
debug.action.setOnAction(function(event) {
|
||||
var process = debug.process;
|
||||
|
@ -29,7 +25,6 @@ var debug = {
|
|||
return;
|
||||
}
|
||||
|
||||
// Hide overlay
|
||||
overlay.hide(0, null);
|
||||
});
|
||||
},
|
||||
|
@ -50,12 +45,10 @@ var debug = {
|
|||
var alive = !forceClose &&
|
||||
process !== null && process.isAlive();
|
||||
|
||||
// Decide what we update to
|
||||
var text = alive ? "Убить" : "Закрыть";
|
||||
var addClass = alive ? "kill" : "close";
|
||||
var removeClass = alive ? "close" : "kill";
|
||||
|
||||
// Update button
|
||||
debug.action.setText(text);
|
||||
debug.action.getStyleClass().remove(removeClass);
|
||||
debug.action.getStyleClass().add(addClass);
|
||||
|
@ -67,7 +60,6 @@ function debugProcess(process) {
|
|||
debug.process = process;
|
||||
debug.updateActionButton(false);
|
||||
|
||||
// Create new task
|
||||
var task = newTask(function() {
|
||||
var buffer = IOHelper.newCharBuffer();
|
||||
var reader = IOHelper.newReader(process.getInputStream(),
|
||||
|
@ -78,11 +70,9 @@ function debugProcess(process) {
|
|||
appendFunction(new java.lang.String(buffer, 0, length));
|
||||
}
|
||||
|
||||
// So we wait for exit code
|
||||
return process.waitFor();
|
||||
});
|
||||
|
||||
// Set completion handlers
|
||||
task.setOnFailed(function(event) {
|
||||
debug.updateActionButton(true);
|
||||
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());
|
||||
});
|
||||
|
||||
// Gogogo
|
||||
startTask(task);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/*-- DrLeonardo Design --*/
|
||||
#holder {
|
||||
-fx-background-color: #fff;
|
||||
}
|
||||
|
||||
/* Labels */
|
||||
#holder > #settingsTitle {
|
||||
-fx-font-size: 14pt;
|
||||
|
@ -9,8 +11,12 @@ #holder > #settingsTitle {
|
|||
|
||||
#holder > #apply{
|
||||
-fx-background-color: #61B373;
|
||||
-fx-text-fill: #fff;
|
||||
-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:focused{
|
||||
|
@ -25,64 +31,6 @@ #holder > #modlist > .viewport {
|
|||
-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 {
|
||||
-fx-font-smoothing-type: lcd;
|
||||
-fx-fill: #8c8c8c;
|
||||
|
@ -92,3 +40,4 @@ .separator *.line {
|
|||
-fx-border-color: transparent;
|
||||
-fx-border-width: 0 0 10 0;
|
||||
}
|
||||
/*-- DrLeonardo Design --*/
|
|
@ -1,21 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import com.jfoenix.controls.JFXButton?>
|
||||
<?import com.jfoenix.controls.JFXScrollPane?>
|
||||
<?import java.net.URL?>
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.ScrollPane?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
|
||||
<!-- 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>
|
||||
<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>
|
||||
<ScrollPane id="modlist" hbarPolicy="NEVER">
|
||||
<JFXScrollPane id="modlist" prefHeight="425.0" prefWidth="694.0">
|
||||
<content>
|
||||
<VBox prefHeight="370.0" prefWidth="428.0">
|
||||
<VBox prefHeight="232.0" prefWidth="689.0">
|
||||
<children>
|
||||
</children>
|
||||
<padding>
|
||||
|
@ -23,12 +23,13 @@
|
|||
</padding>
|
||||
</VBox>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
<Button fx:id="apply" defaultButton="true" layoutX="318.0" layoutY="336.0" prefHeight="25.0" prefWidth="100.0" text="Применить" />
|
||||
</JFXScrollPane>
|
||||
<JFXButton fx:id="apply" defaultButton="true" layoutX="532.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Применить" />
|
||||
</children>
|
||||
</Pane>
|
||||
</children>
|
||||
<stylesheets>
|
||||
<URL value="@options.css" />
|
||||
<URL value="@../../styles.css" />
|
||||
</stylesheets>
|
||||
</Pane>
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
var options = {
|
||||
file: DirBridge.dir.resolve("options.bin"), // options file
|
||||
file: DirBridge.dir.resolve("options.bin"),
|
||||
|
||||
/* options and overlay functions */
|
||||
load: function(profiles) {
|
||||
LogHelper.debug("Loading options file");
|
||||
try {
|
||||
tryWithResources(new HInput(IOHelper.newInput(options.file)), options.read);
|
||||
} catch(e) {
|
||||
LogHelper.error(e);
|
||||
//options.setDefault();
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -21,7 +19,6 @@ var options = {
|
|||
}
|
||||
},
|
||||
|
||||
// Internal functions
|
||||
read: function(input) {
|
||||
var magic = input.readInt();
|
||||
if (magic != config.settingsMagic) {
|
||||
|
@ -89,7 +86,7 @@ var options = {
|
|||
var nodelist = new java.util.ArrayList;
|
||||
|
||||
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.forEach(function(node,i,arr) {
|
||||
|
@ -115,7 +112,7 @@ var options = {
|
|||
modDescription = modFile.info;
|
||||
if(modFile.subTreeLevel != null && modFile.subTreeLevel > 1)//Это суб-модификация?
|
||||
subLevel = modFile.subTreeLevel;
|
||||
var testMod = new javafx.scene.control.CheckBox(modName);
|
||||
var testMod = new com.jfoenix.controls.JFXCheckBox(modName);
|
||||
|
||||
if(subLevel > 1)
|
||||
for(var i = 1; i < subLevel; i++)//Выделение субмодификаций сдвигом.
|
||||
|
@ -141,11 +138,11 @@ var options = {
|
|||
textDescr = new javafx.scene.text.Text(modDescription);
|
||||
if(subLevel > 1) {
|
||||
for(var i = 1; i < subLevel; i++){
|
||||
textDescr.setWrappingWidth(370-(25*i));
|
||||
textDescr.setWrappingWidth(640-(25*i));
|
||||
textDescr.setTranslateX(25+(25*i));
|
||||
}
|
||||
} else {
|
||||
textDescr.setWrappingWidth(370);
|
||||
textDescr.setWrappingWidth(640);
|
||||
textDescr.setTranslateX(25);
|
||||
}
|
||||
textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY);
|
||||
|
@ -159,5 +156,4 @@ var options = {
|
|||
holder.getChildren().clear();
|
||||
holder.getChildren().addAll(checkBoxList);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Label */
|
||||
/*-- DrLeonardo Design --*/
|
||||
#overlay > #description {
|
||||
-fx-font-size: 12pt;
|
||||
-fx-text-fill: #fff;
|
||||
|
@ -8,3 +8,4 @@ #overlay > #description {
|
|||
#overlay > #description.error {
|
||||
-fx-text-fill: red;
|
||||
}
|
||||
/*-- DrLeonardo Design --*/
|
|
@ -1,22 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import com.jfoenix.controls.JFXSpinner?>
|
||||
<?import java.net.URL?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
|
||||
<!-- 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>
|
||||
<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 -->
|
||||
<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>
|
||||
<stylesheets>
|
||||
<URL value="@processing.css" />
|
||||
|
|
|
@ -10,14 +10,12 @@ var processing = {
|
|||
processing.description = processing.overlay.lookup("#description");
|
||||
|
||||
// Set images
|
||||
processing.processingImage = new javafx.scene.image.Image(
|
||||
Launcher.getResourceURL("dialog/images/icons/loading.gif").toString());
|
||||
processing.errorImage = new javafx.scene.image.Image(
|
||||
Launcher.getResourceURL("dialog/images/icons/error.png").toString());
|
||||
},
|
||||
|
||||
resetOverlay: function() {
|
||||
processing.spinner.setImage(processing.processingImage);
|
||||
resetOverlay: function() {//JFXSpinner spinner = new JFXSpinner();
|
||||
//processing.spinner.setImage(processing.processingImage);
|
||||
processing.description.getStyleClass().remove("error");
|
||||
processing.description.setText("...");
|
||||
},
|
||||
|
@ -80,7 +78,7 @@ function makeLauncherRequest(callback) {
|
|||
settings.offline = true;
|
||||
overlay.swap(2500, processing.overlay, function() makeLauncherRequest(callback));
|
||||
}, false);
|
||||
task.updateMessage("Обновление списка серверов");
|
||||
task.updateMessage("Обновление лаунчера");
|
||||
startTask(task);
|
||||
}
|
||||
function makeProfilesRequest(callback) {
|
||||
|
@ -96,11 +94,11 @@ function makeProfilesRequest(callback) {
|
|||
settings.offline = true;
|
||||
overlay.swap(2500, processing.overlay, function() makeProfilesRequest(callback));
|
||||
}, false);
|
||||
task.updateMessage("Обновление списка серверов");
|
||||
task.updateMessage("Обновление лаунчера");
|
||||
startTask(task);
|
||||
}
|
||||
function makeSetProfileRequest(profile, callback) {
|
||||
var task = newRequestTask(new SetProfileRequest(Launcher.getConfig(), profile));
|
||||
var task = newRequestTask(new SetProfileRequest, profile);
|
||||
|
||||
// Set task properties and start
|
||||
processing.setTaskProperties(task, callback, function() {
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
/*-- DrLeonardo Design --*/
|
||||
#holder {
|
||||
-fx-background-color: #fff;
|
||||
}
|
||||
#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 */
|
||||
#holder > #settingsTitle {
|
||||
|
@ -41,62 +44,42 @@ #holder > #ramSlider:pressed > .thumb {
|
|||
|
||||
/* Dir options */
|
||||
#holder > #deleteDir, #cancelTransfer {
|
||||
-fx-background-color: #CE5757;
|
||||
-fx-text-fill: white;
|
||||
-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:focused,#cancelTransfer:focused {
|
||||
-fx-opacity: 0.8;
|
||||
-fx-background-color: #DB5252;
|
||||
}
|
||||
|
||||
#holder > #changeDir {
|
||||
-fx-background-color: #B4B4B4;
|
||||
-fx-text-fill: white;
|
||||
-fx-background-color: transparent;
|
||||
-fx-text-fill: #909090;
|
||||
-fx-background-radius: 0;
|
||||
}
|
||||
|
||||
#holder > #changeDir:hover,
|
||||
#holder > #changeDir:focused {
|
||||
-fx-opacity: 0.8;
|
||||
}
|
||||
|
||||
#holder > #changeDir:focused,
|
||||
#holder > #changeDir:pressed {
|
||||
-fx-opacity: 0.8;
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
#holder > #apply,#applyTransfer{
|
||||
-fx-background-color: #61B373;
|
||||
-fx-text-fill: #fff;
|
||||
-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:focused,#applyTransfer:focused{
|
||||
-fx-background-color: #74C085;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
/*-- DrLeonardo Design --*/
|
|
@ -1,11 +1,11 @@
|
|||
<?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 javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.CheckBox?>
|
||||
<?import javafx.scene.control.Hyperlink?>
|
||||
<?import javafx.scene.control.Separator?>
|
||||
<?import javafx.scene.control.Slider?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
@ -13,49 +13,46 @@
|
|||
|
||||
<!-- 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>
|
||||
<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>
|
||||
<CheckBox fx:id="autoEnter" layoutX="14.0" layoutY="80.0" text="Автовход на сервер" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="95.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер" wrappingWidth="533.0000102519989" y="15.0" />
|
||||
<CheckBox fx:id="fullScreen" layoutX="13.0" layoutY="185.0" text="Клиент в полный экран" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="200.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение данной функции позволяет запустить игру сразу в полноэкранном режиме" wrappingWidth="533.0000102519989" y="15.0" />
|
||||
<CheckBox id="debug" layoutX="13.0" layoutY="124.0" text="Режим Отладки" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="139.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="533.0000016447157" y="15.0" />
|
||||
<JFXCheckBox fx:id="autoEnter" checkedColor="#61b373" layoutX="14.0" layoutY="127.0" text="Автовход на сервер" unCheckedColor="#909090" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="143.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер" wrappingWidth="636.9999872148037" y="15.0" />
|
||||
<JFXCheckBox fx:id="fullScreen" checkedColor="#61b373" layoutX="13.0" layoutY="250.0" text="Клиент в полный экран" unCheckedColor="#909090" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="267.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение данной функции позволяет запустить игру сразу в полноэкранном режиме" wrappingWidth="636.9999872148037" y="15.0" />
|
||||
<JFXCheckBox id="debug" checkedColor="#61b373" layoutX="13.0" layoutY="183.0" text="Режим Отладки" unCheckedColor="#909090" />
|
||||
<Text fill="#8c8c8c" layoutX="38.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="637.0000016447157" y="15.0" />
|
||||
|
||||
<!-- 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" />
|
||||
</TextFlow>
|
||||
<Slider fx:id="ramSlider" layoutX="18.0" layoutY="26.0" prefHeight="3.0" prefWidth="563.0" />
|
||||
<Separator layoutY="65.0" prefHeight="1.0" prefWidth="598.0" />
|
||||
<Separator layoutY="112.0" prefHeight="3.0" prefWidth="693.0" />
|
||||
<!-- RAM settings -->
|
||||
|
||||
<!-- Deldir settings -->
|
||||
<Button fx:id="deleteDir" layoutX="15.0" layoutY="333.0" prefHeight="25.0" prefWidth="245.0" text="Очистить данные игровых клиентов" textAlignment="CENTER" wrapText="true">
|
||||
<font>
|
||||
<Font name="System Bold" size="12.0" />
|
||||
</font>
|
||||
</Button>
|
||||
<JFXButton fx:id="deleteDir" layoutX="374.0" layoutY="365.0" prefHeight="25.0" prefWidth="245.0" text="Удалить клиенты" textAlignment="CENTER" wrapText="true" />
|
||||
<!-- Deldir settings -->
|
||||
|
||||
<!-- Changedir settings -->
|
||||
<Button fx:id="changeDir" layoutX="14.0" layoutY="229.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" />
|
||||
<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="200.0" layoutY="401.0" prefHeight="23.0" prefWidth="493.0" text="C:/Users" />
|
||||
<!-- Changedir settings -->
|
||||
|
||||
<Button fx:id="apply" defaultButton="true" layoutX="486.0" layoutY="335.0" prefHeight="23.0" prefWidth="100.0" text="Применить" />
|
||||
<Text layoutX="17.0" layoutY="19.0">Выделение памяти: </Text>
|
||||
<Pane fx:id="transferDialog" prefHeight="371.0" prefWidth="598.0">
|
||||
<JFXButton fx:id="apply" defaultButton="true" layoutX="534.0" layoutY="365.0" prefHeight="23.0" prefWidth="100.0" text="Применить" />
|
||||
<Text layoutX="16.0" layoutY="28.0">Выделение памяти: </Text>
|
||||
<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>
|
||||
<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 size="19.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<Button fx:id="applyTransfer" layoutX="130.0" layoutY="186.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="applyTransfer" layoutX="165.0" layoutY="226.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>
|
||||
</Pane>
|
||||
|
||||
|
@ -64,5 +61,6 @@
|
|||
</children>
|
||||
<stylesheets>
|
||||
<URL value="@settings.css" />
|
||||
<URL value="@../../styles.css" />
|
||||
</stylesheets>
|
||||
</Pane>
|
||||
|
|
|
@ -1,28 +1,23 @@
|
|||
var settingsClass = Java.extend(LauncherSettingsClass.static, {
|
||||
setDefault: function() {
|
||||
// Auth settings
|
||||
settings.login = null;
|
||||
settings.rsaPassword = null;
|
||||
settings.profile = 0;
|
||||
|
||||
// Client settings
|
||||
settings.updatesDir = DirBridge.defaultUpdatesDir;
|
||||
settings.autoEnter = config.autoEnterDefault;
|
||||
settings.fullScreen = config.fullScreenDefault;
|
||||
settings.setRAM(config.ramDefault);
|
||||
|
||||
// Offline cache
|
||||
settings.lastDigest = null;
|
||||
settings.lastProfiles.clear();
|
||||
settings.lastHDirs.clear();
|
||||
|
||||
// Apply CLI params
|
||||
cliParams.applySettings();
|
||||
},
|
||||
|
||||
setPassword: function(password) {
|
||||
var encrypted = SecurityHelper.newRSAEncryptCipher(Launcher.getConfig().publicKey).doFinal(IOHelper.encode(password));
|
||||
//settings.password = encrypted;
|
||||
return encrypted;
|
||||
},
|
||||
|
||||
|
@ -43,7 +38,6 @@ var settingsOverlay = {
|
|||
initOverlay: function() {
|
||||
settingsOverlay.overlay = loadFXML("dialog/overlay/settings/settings.fxml");
|
||||
|
||||
// Lookup autoEnter checkbox
|
||||
var holder = settingsOverlay.overlay.lookup("#holder");
|
||||
|
||||
var autoEnterBox = holder.lookup("#autoEnter");
|
||||
|
@ -51,40 +45,34 @@ var settingsOverlay = {
|
|||
autoEnterBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
|
||||
function(o, ov, nv) settings.autoEnter = nv);
|
||||
|
||||
// Lookup dir label
|
||||
settingsOverlay.dirLabel = holder.lookup("#dirLabel");
|
||||
settingsOverlay.dirLabel.setOnAction(function(event)
|
||||
app.getHostServices().showDocument(settings.updatesDir.toUri()));
|
||||
settingsOverlay.updateDirLabel();
|
||||
|
||||
// Lokup transferDialog pane
|
||||
settingsOverlay.transferDialog = holder.lookup("#transferDialog");
|
||||
settingsOverlay.transferDialog.setVisible(false);
|
||||
|
||||
// Lookup change dir button
|
||||
holder.lookup("#changeDir").setOnAction(function(event) {
|
||||
|
||||
var chooser = new javafx.stage.DirectoryChooser();
|
||||
chooser.setTitle("Сменить директорию загрузок");
|
||||
chooser.setInitialDirectory(DirBridge.dir.toFile());
|
||||
|
||||
// Set new result
|
||||
var newDir = chooser.showDialog(stage);
|
||||
if (newDir !== null) {
|
||||
settingsOverlay.transferCatalogDialog(newDir.toPath());
|
||||
}
|
||||
});
|
||||
|
||||
// Lookup fullScreen checkbox
|
||||
var fullScreenBox = holder.lookup("#fullScreen");
|
||||
fullScreenBox.setSelected(settings.fullScreen);
|
||||
fullScreenBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
|
||||
function(o, ov, nv) settings.fullScreen = nv);
|
||||
|
||||
// Lookup RAM label
|
||||
settingsOverlay.ramLabel = holder.lookup("#ramLabel");
|
||||
settingsOverlay.updateRAMLabel();
|
||||
|
||||
// Lookup RAM slider options
|
||||
var ramSlider = holder.lookup("#ramSlider");
|
||||
ramSlider.setMax(JVMHelper.RAM);
|
||||
ramSlider.setSnapToTicks(true);
|
||||
|
@ -99,7 +87,6 @@ var settingsOverlay = {
|
|||
settingsOverlay.updateRAMLabel();
|
||||
});
|
||||
|
||||
// Lookup delete dir button
|
||||
var deleteDirButton = holder.lookup("#deleteDir");
|
||||
deleteDirButton.setOnAction(function(event) {
|
||||
if (!settingsOverlay.deleteDirPressedAgain) {
|
||||
|
@ -108,7 +95,6 @@ var settingsOverlay = {
|
|||
return;
|
||||
}
|
||||
|
||||
// Delete dir!
|
||||
settingsOverlay.deleteUpdatesDir();
|
||||
settingsOverlay.deleteDirPressedAgain = false;
|
||||
settingsOverlay.count = settingsOverlay.count+1;
|
||||
|
@ -124,14 +110,11 @@ var settingsOverlay = {
|
|||
))));
|
||||
});
|
||||
|
||||
// Lookup debug checkbox
|
||||
var debugBox = settingsOverlay.overlay.lookup("#debug");
|
||||
debugBox.setSelected(LogHelper.isDebugEnabled());
|
||||
debugBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
|
||||
function(o, ov, nv) LogHelper.setDebugEnabled(nv));
|
||||
|
||||
|
||||
// Lookup apply settings button
|
||||
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
|
||||
},
|
||||
|
||||
|
@ -145,7 +128,6 @@ var settingsOverlay = {
|
|||
settingsOverlay.transferDialog.setVisible(false);
|
||||
});
|
||||
settingsOverlay.transferDialog.lookup("#applyTransfer").setOnAction(function(event) {
|
||||
//Здесь могла быть ваша реклама, либо DirBridge.move();
|
||||
DirBridge.move(newDir);
|
||||
settings.updatesDir = newDir;
|
||||
DirBridge.dirUpdates = settings.updatesDir;
|
||||
|
@ -177,17 +159,17 @@ var settingsOverlay = {
|
|||
};
|
||||
LogHelper.debug("Dir: %s", DirBridge.dir);
|
||||
var settings = new settingsClass;
|
||||
|
||||
/* ====================== CLI PARAMS ===================== */
|
||||
var cliParams = {
|
||||
login: null, password: null, profile: -1, autoLogin: false, // Auth
|
||||
updatesDir: null, autoEnter: null, fullScreen: null, ram: -1, // Client
|
||||
offline: false, // Offline
|
||||
login: null, password: null, profile: -1, autoLogin: false,
|
||||
updatesDir: null, autoEnter: null, fullScreen: null, ram: -1,
|
||||
offline: false,
|
||||
|
||||
init: function(params) {
|
||||
var named = params.getNamed();
|
||||
var unnamed = params.getUnnamed();
|
||||
|
||||
// Read auth cli params
|
||||
cliParams.login = named.get("login");
|
||||
cliParams.password = named.get("password");
|
||||
var profile = named.get("profile");
|
||||
|
@ -196,7 +178,6 @@ var cliParams = {
|
|||
}
|
||||
cliParams.autoLogin = unnamed.contains("--autoLogin");
|
||||
|
||||
// Read client cli params
|
||||
var updatesDir = named.get("updatesDir");
|
||||
if (updatesDir !== null) {
|
||||
cliParams.updatesDir = IOHelper.toPath(named.get("updatesDir"));
|
||||
|
@ -214,7 +195,6 @@ var cliParams = {
|
|||
cliParams.ram = java.lang.Integer.parseInt(ram);
|
||||
}
|
||||
|
||||
// Read offline cli param
|
||||
var offline = named.get("offline");
|
||||
if (offline !== null) {
|
||||
cliParams.offline = java.lang.Boolean.parseBoolean(offline);
|
||||
|
@ -222,7 +202,6 @@ var cliParams = {
|
|||
},
|
||||
|
||||
applySettings: function() {
|
||||
// Apply auth params
|
||||
if (cliParams.login !== null) {
|
||||
settings.login = cliParams.login;
|
||||
}
|
||||
|
@ -233,9 +212,7 @@ var cliParams = {
|
|||
settings.profile = cliParams.profile;
|
||||
}
|
||||
|
||||
// Apply client params
|
||||
if (cliParams.updatesDir !== null) {
|
||||
//settings.updatesDir = cliParams.updatesDir;
|
||||
}
|
||||
if (cliParams.autoEnter !== null) {
|
||||
settings.autoLogin = cliParams.autoEnter;
|
||||
|
@ -247,7 +224,6 @@ var cliParams = {
|
|||
settings.setRAM(cliParams.ram);
|
||||
}
|
||||
|
||||
// Apply offline param
|
||||
if (cliParams.offline !== null) {
|
||||
settings.offline = cliParams.offline;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
-fx-alignment: top-left;
|
||||
}
|
||||
|
@ -8,11 +18,13 @@ #overlay > #description {
|
|||
}
|
||||
|
||||
#overlay > #description.error {
|
||||
-fx-text-fill: red;
|
||||
-fx-text-fill: #CE5757;
|
||||
}
|
||||
|
||||
.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 */
|
||||
|
@ -42,3 +54,4 @@ .progress-bar > .track {
|
|||
-fx-background-insets: 0;
|
||||
-fx-background-radius: 3px;
|
||||
}
|
||||
/*-- DrLeonardo Design --*/
|
|
@ -1,43 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import com.jfoenix.controls.JFXProgressBar?>
|
||||
<?import com.jfoenix.controls.JFXSpinner?>
|
||||
<?import java.net.URL?>
|
||||
<?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.text.Font?>
|
||||
|
||||
<!-- 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>
|
||||
<ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@../../images/background.png" />
|
||||
</image>
|
||||
</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 name="System Bold" size="20.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<ImageView fitHeight="160.0" fitWidth="160.0" layoutX="219.0" layoutY="70.0" y="-6.0">
|
||||
<image>
|
||||
<Image url="@../../images/icons/loading.gif" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Pane prefHeight="425.0" prefWidth="693.0" styleClass="downloadPane">
|
||||
<children>
|
||||
<Label fx:id="description" layoutX="14.0" layoutY="302.0" prefHeight="98.0" prefWidth="660.0" text="..." textFill="WHITE" />
|
||||
<Label fx:id="utitle" alignment="TOP_LEFT" layoutX="59.0" layoutY="269.0" prefHeight="18.0" prefWidth="470.0" text="Обновление..." textFill="WHITE">
|
||||
<font>
|
||||
<Font size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<JFXProgressBar fx:id="progress" layoutY="407.0" prefHeight="18.0" prefWidth="693.0" />
|
||||
<JFXSpinner layoutX="14.0" layoutY="261.0" prefHeight="35.0" prefWidth="32.0" />
|
||||
</children></Pane>
|
||||
</children>
|
||||
<stylesheets>
|
||||
<URL value="@update.css" />
|
||||
<URL value="@../../styles.css" />
|
||||
</stylesheets>
|
||||
</Pane>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
var update = {
|
||||
overlay: null, title: null, description: null, progress: null,
|
||||
|
||||
/* State and overlay functions */
|
||||
initOverlay: function() {
|
||||
update.overlay = loadFXML("dialog/overlay/update/update.fxml");
|
||||
|
||||
// Lookup nodes
|
||||
update.title = update.overlay.lookup("#utitle");
|
||||
update.description = update.overlay.lookup("#description");
|
||||
update.progress = update.overlay.lookup("#progress");
|
||||
|
@ -21,7 +19,6 @@ var update = {
|
|||
setError: function(e) {
|
||||
LogHelper.error(e);
|
||||
|
||||
// Set error description
|
||||
update.description.getStyleClass().add("error");
|
||||
update.description.setText(e.toString());
|
||||
},
|
||||
|
@ -34,17 +31,16 @@ var update = {
|
|||
var estimatedMM = ((estimatedSeconds % 3600) / 60) | 0;
|
||||
var estimatedSS = (estimatedSeconds % 60) | 0;
|
||||
task.updateMessage(java.lang.String.format(
|
||||
"Файл: %s%n" + // File line
|
||||
"Загружено (Всего): %.2f / %.2f MiB.%n" + // Total downloaded line
|
||||
"Файл: %s%n" +
|
||||
"Загружено (Всего): %.2f / %.2f MiB.%n" +
|
||||
"%n" +
|
||||
"Средняя скорость: %.1f Kbps%n" + // Speed line
|
||||
"Примерно осталось: %d:%02d:%02d%n", // Estimated line
|
||||
"Средняя скорость: %.1f Kbps%n" +
|
||||
"Примерно осталось: %d:%02d:%02d%n",
|
||||
|
||||
// Formatting
|
||||
state.filePath, // File path
|
||||
state.getTotalDownloadedMiB() + /* Fuck nashorn */ 0.0, state.getTotalSizeMiB() + 0.0, // Total downloaded
|
||||
bps <= 0.0 ? 0.0 : bps / 1024.0, // Speed
|
||||
estimatedHH, estimatedMM, estimatedSS // Estimated (hh:mm:ss)
|
||||
state.filePath,
|
||||
state.getTotalDownloadedMiB() + 0.0, state.getTotalSizeMiB() + 0.0,
|
||||
bps <= 0.0 ? 0.0 : bps / 1024.0,
|
||||
estimatedHH, estimatedMM, estimatedSS
|
||||
));
|
||||
task.updateProgress(state.totalDownloaded, state.totalSize);
|
||||
},
|
||||
|
@ -77,19 +73,17 @@ function offlineUpdateRequest(dirName, dir, matcher, digest) {
|
|||
return;
|
||||
}
|
||||
|
||||
// Verify dir with matcher using FunctionalBridge`s API
|
||||
return FunctionalBridge.offlineUpdateRequest(dir, hdir, matcher, digest).run();
|
||||
};
|
||||
}
|
||||
|
||||
/* Export functions */
|
||||
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);
|
||||
var task = settings.offline ? newTask(offlineUpdateRequest(dirName, dir, matcher, digest)) :
|
||||
newRequestTask(request);
|
||||
|
||||
// Set task properties and start
|
||||
update.setTaskProperties(task, request, callback);
|
||||
task.updateMessage("Состояние: Хеширование");
|
||||
task.updateProgress(-1, -1);
|
||||
|
|
|
@ -57,6 +57,26 @@ #hide {
|
|||
-fx-pref-width: 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 {
|
||||
-fx-background-position: center;
|
||||
-jfx-button-type: FLAT;
|
||||
|
@ -282,7 +302,7 @@ #serverLabel{
|
|||
|
||||
#serverStatus{
|
||||
-fx-text-fill: #323232;
|
||||
-fx-pref-width: 60px;
|
||||
-fx-pref-width: 120px;
|
||||
-fx-pref-height: 25px;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ var ServerPinger = ServerPingerClass.static;
|
|||
var Request = RequestClass.static;
|
||||
var RequestType = RequestTypeClass.static;
|
||||
var RequestException = RequestExceptionClass.static;
|
||||
var CustomRequest = CustomRequestClass.static;
|
||||
var PingRequest = PingRequestClass.static;
|
||||
var AuthRequest = AuthRequestClass.static;
|
||||
var JoinServerRequest = JoinServerRequestClass.static;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
var app, stage, scene, loginScene, menuScene;
|
||||
var rootPane, loginPane, authPane, menuPane;
|
||||
var app, stage, scene, loginScene, menuScene, consoleScene;
|
||||
var rootPane, loginPane, authPane, menuPane, consolePane;
|
||||
|
||||
var LauncherApp = Java.extend(JSApplication, {
|
||||
init: function() {
|
||||
|
@ -20,6 +20,7 @@ var LauncherApp = Java.extend(JSApplication, {
|
|||
|
||||
loginPane = loadFXML("dialog/login.fxml");
|
||||
menuPane = loadFXML("dialog/mainmenu.fxml");
|
||||
consolePane = loadFXML("dialog/console.fxml");
|
||||
|
||||
loginScene = new javafx.scene.Scene(loginPane);
|
||||
loginScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
|
||||
|
@ -27,6 +28,9 @@ var LauncherApp = Java.extend(JSApplication, {
|
|||
menuScene = new javafx.scene.Scene(menuPane);
|
||||
menuScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
|
||||
|
||||
consoleScene = new javafx.scene.Scene(consolePane);
|
||||
consoleScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
|
||||
|
||||
setCurrentScene(loginScene);
|
||||
initLauncher();
|
||||
|
||||
|
|