Game Button UI drafts added; refactoring wired moments.

This commit is contained in:
Dmitry Isaenko 2019-10-17 07:20:10 +03:00
parent 11582fd69d
commit 1ef37aa224
13 changed files with 586 additions and 134 deletions

View file

@ -0,0 +1,47 @@
package logiled.Controllers;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ToggleButton;
import java.net.URL;
import java.util.*;
public class GameModeController implements Initializable {
@FXML
private Button resetBtn;
private List<String> keySet;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
keySet = new ArrayList<>();
resetBtn.setOnAction(ActionEvent -> {
for (String keyID : keySet) {
((ToggleButton) resetBtn.getScene().lookup("#"+keyID)).setSelected(false);
}
keySet.clear();
});
}
@FXML
private void toggleBntAction(ActionEvent event) {
ToggleButton btn = (ToggleButton) event.getSource();
if (btn.isSelected())
keySet.add(btn.getId());
else
keySet.remove(btn.getId());
}
public List<Byte> getKeys() {
List<Byte> listCodes = new ArrayList<>();
for (String keyId : keySet)
listCodes.add(LoCodepage.valueOf(keyId).getValue());
return listCodes;
}
}

View file

@ -0,0 +1,118 @@
package logiled.Controllers;
public enum LoCodepage {
l_game ((byte) 0x2),
l_caps ((byte) 0x3),
k_a ((byte) 0x4),
k_b ((byte) 0x5),
k_c ((byte) 0x6),
k_d ((byte) 0x7),
k_e ((byte) 0x8),
k_f ((byte) 0x9),
k_g ((byte) 0xA),
k_h ((byte) 0xB),
k_i ((byte) 0xC),
k_j ((byte) 0xD),
k_k ((byte) 0xE),
k_l ((byte) 0xF),
k_m ((byte) 0x10),
k_n ((byte) 0x11),
k_o ((byte) 0x12),
k_p ((byte) 0x13),
k_q ((byte) 0x14),
k_r ((byte) 0x15),
k_s ((byte) 0x16),
k_t ((byte) 0x17),
k_u ((byte) 0x18),
k_v ((byte) 0x19),
k_w ((byte) 0x1A),
k_x ((byte) 0x1B),
k_y ((byte) 0x1C),
k_z ((byte) 0x1D),
k_1 ((byte) 0x1E),
k_2 ((byte) 0x1F),
k_3 ((byte) 0x20),
k_4 ((byte) 0x21),
k_5 ((byte) 0x22),
k_6 ((byte) 0x23),
k_7 ((byte) 0x24),
k_8 ((byte) 0x25),
k_9 ((byte) 0x26),
k_0 ((byte) 0x27),
k_enter ((byte) 0x28),
k_esc ((byte) 0x29),
k_backspace ((byte) 0x2a),
k_tab ((byte) 0x2b),
k_space ((byte) 0x2c),
k_dash ((byte) 0x2d),
k_equal ((byte) 0x2e),
k_bracket_open ((byte) 0x2f),
k_bracket_close ((byte) 0x30),
k_backslash ((byte) 0x32),
k_semicolon ((byte) 0x33),
k_quotation ((byte) 0x34),
k_tilde ((byte) 0x35),
k_comma ((byte) 0x36),
k_dot ((byte) 0x37),
k_shash ((byte) 0x38),
k_caps ((byte) 0x39),
k_f1 ((byte) 0x3a),
k_f2 ((byte) 0x3b),
k_f3 ((byte) 0x3c),
k_f4 ((byte) 0x3d),
k_f5 ((byte) 0x3e),
k_f6 ((byte) 0x3f),
k_f7 ((byte) 0x40),
k_f8 ((byte) 0x41),
k_f9 ((byte) 0x42),
k_f10 ((byte) 0x43),
k_f11 ((byte) 0x44),
k_f12 ((byte) 0x45),
k_prtscr ((byte) 0x46),
k_scrl ((byte) 0x47),
k_pause ((byte) 0x48),
k_ins ((byte) 0x49),
k_home ((byte) 0x4a),
k_pg_up ((byte) 0x4b),
k_del ((byte) 0x4c),
k_end ((byte) 0x4d),
k_pg_dn ((byte) 0x4e),
k_arr_right ((byte) 0x4f),
k_arr_left ((byte) 0x50),
k_arr_down ((byte) 0x51),
k_arr_up ((byte) 0x52),
k_num ((byte) 0x53),
k_num_slash ((byte) 0x54),
k_num_asterisk ((byte) 0x55),
k_num_minus ((byte) 0x56),
k_num_plus ((byte) 0x57),
k_num_enter ((byte) 0x58),
k_num_1 ((byte) 0x59),
k_num_2 ((byte) 0x5a),
k_num_3 ((byte) 0x5b),
k_num_4 ((byte) 0x5c),
k_num_5 ((byte) 0x5d),
k_num_6 ((byte) 0x5e),
k_num_7 ((byte) 0x5f),
k_num_8 ((byte) 0x60),
k_num_9 ((byte) 0x61),
k_num_0 ((byte) 0x62),
k_num_period ((byte) 0x63),
k_menu ((byte) 0x65),
k_l_ctrl ((byte) 0xe0),
k_l_shift ((byte) 0xe1),
k_l_alt ((byte) 0xe2),
k_win ((byte) 0xe3),
k_r_ctrl ((byte) 0xe4),
k_r_shift ((byte) 0xe5),
k_r_alt ((byte) 0xe6),
k_fn ((byte) 0xe7);
private final byte value;
LoCodepage(byte value){
this.value = value;
}
public byte getValue() { return value; }
}

View file

@ -15,7 +15,7 @@ public enum LoEffects {
private final byte value; private final byte value;
private LoEffects(byte value){ LoEffects(byte value){
this.value = value; this.value = value;
} }

View file

@ -6,6 +6,7 @@ import javafx.scene.control.*;
import logiled.About.AboutWindow; import logiled.About.AboutWindow;
import logiled.MessagesConsumer; import logiled.MessagesConsumer;
import logiled.USB.EffectsThread; import logiled.USB.EffectsThread;
import logiled.USB.GameModeThread;
import logiled.USB.KeyLedThread; import logiled.USB.KeyLedThread;
import java.net.URL; import java.net.URL;
@ -20,6 +21,9 @@ public class MainController implements Initializable {
@FXML @FXML
private EffectsController EffectsController; private EffectsController EffectsController;
@FXML
private GameModeController GameModeController;
@FXML @FXML
private TabPane MainTabPane; private TabPane MainTabPane;
/* /*
@ -59,6 +63,15 @@ public class MainController implements Initializable {
commThread.setDaemon(true); commThread.setDaemon(true);
commThread.start(); commThread.start();
} }
else { // Consider as GameMode; refactor in case more tabs added.
List<Byte> disKeysList = GameModeController.getKeys();
if (disKeysList.isEmpty())
return;
GameModeThread gameModeThread = new GameModeThread(disKeysList);
Thread commThread = new Thread(gameModeThread);
commThread.setDaemon(true);
commThread.start();
}
}); });
} }
} }

View file

@ -11,14 +11,14 @@ import javafx.scene.paint.Color;
import java.util.*; import java.util.*;
public class RuleBox extends HBox { // todo: add class to selected toggle user data; provide interface to add buttons to selected toggle class RuleBox extends HBox { // todo: add class to selected toggle user data; provide interface to add buttons to selected toggle
private final static ToggleGroup radioGroup = new ToggleGroup(); private final static ToggleGroup radioGroup = new ToggleGroup();
/** /**
* Get object (rule) that is currently selected * Get object (rule) that is currently selected
* */ * */
public static RuleBox getSelected(){ static RuleBox getSelected(){
Toggle selectedToggle; Toggle selectedToggle;
if ((selectedToggle = radioGroup.getSelectedToggle()) == null) if ((selectedToggle = radioGroup.getSelectedToggle()) == null)
return null; return null;
@ -28,7 +28,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
* Select rule * Select rule
* @param box : the rule that has to be selected. * @param box : the rule that has to be selected.
* */ * */
public static void select(RuleBox box){ static void select(RuleBox box){
box.radBtn.setSelected(true); box.radBtn.setSelected(true);
} }
@ -36,121 +36,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
private final ColorPicker colorPicker; private final ColorPicker colorPicker;
private final RadioButton radBtn; private final RadioButton radBtn;
private static final Map<String, Byte> LoCodepage; RuleBox(){
static {
Map<String, Byte> stMap = new HashMap<>();
stMap.put("l_game", ((byte) 0x2));
stMap.put("l_caps",((byte) 0x3));
stMap.put("k_a",((byte) 0x4));
stMap.put("k_b",((byte) 0x5));
stMap.put("k_c",((byte) 0x6));
stMap.put("k_d",((byte) 0x7));
stMap.put("k_e",((byte) 0x8));
stMap.put("k_f",((byte) 0x9));
stMap.put("k_g",((byte) 0xA));
stMap.put("k_h",((byte) 0xB));
stMap.put("k_i",((byte) 0xC));
stMap.put("k_j",((byte) 0xD));
stMap.put("k_k",((byte) 0xE));
stMap.put("k_l",((byte) 0xF));
stMap.put("k_m",((byte) 0x10));
stMap.put("k_n",((byte) 0x11));
stMap.put("k_o",((byte) 0x12));
stMap.put("k_p",((byte) 0x13));
stMap.put("k_q",((byte) 0x14));
stMap.put("k_r",((byte) 0x15));
stMap.put("k_s",((byte) 0x16));
stMap.put("k_t",((byte) 0x17));
stMap.put("k_u",((byte) 0x18));
stMap.put("k_v",((byte) 0x19));
stMap.put("k_w",((byte) 0x1A));
stMap.put("k_x",((byte) 0x1B));
stMap.put("k_y",((byte) 0x1C));
stMap.put("k_z",((byte) 0x1D));
stMap.put("k_1",((byte) 0x1E));
stMap.put("k_2",((byte) 0x1F));
stMap.put("k_3",((byte) 0x20));
stMap.put("k_4",((byte) 0x21));
stMap.put("k_5",((byte) 0x22));
stMap.put("k_6",((byte) 0x23));
stMap.put("k_7",((byte) 0x24));
stMap.put("k_8",((byte) 0x25));
stMap.put("k_9",((byte) 0x26));
stMap.put("k_0",((byte) 0x27));
stMap.put("k_enter",((byte) 0x28));
stMap.put("k_esc",((byte) 0x29));
stMap.put("k_backspace",((byte) 0x2a));
stMap.put("k_tab",((byte) 0x2b));
stMap.put("k_space",((byte) 0x2c));
stMap.put("k_dash",((byte) 0x2d));
stMap.put("k_equal",((byte) 0x2e));
stMap.put("k_bracket_open",((byte) 0x2f));
stMap.put("k_bracket_close",((byte) 0x30));
stMap.put("k_backslash",((byte) 0x32));
stMap.put("k_semicolon",((byte) 0x33));
stMap.put("k_quotation",((byte) 0x34));
stMap.put("k_tilde",((byte) 0x35));
stMap.put("k_comma",((byte) 0x36));
stMap.put("k_dot",((byte) 0x37));
stMap.put("k_shash",((byte) 0x38));
stMap.put("k_caps",((byte) 0x39));
stMap.put("k_f1",((byte) 0x3a));
stMap.put("k_f2",((byte) 0x3b));
stMap.put("k_f3",((byte) 0x3c));
stMap.put("k_f4",((byte) 0x3d));
stMap.put("k_f5",((byte) 0x3e));
stMap.put("k_f6",((byte) 0x3f));
stMap.put("k_f7",((byte) 0x40));
stMap.put("k_f8",((byte) 0x41));
stMap.put("k_f9",((byte) 0x42));
stMap.put("k_f10",((byte) 0x43));
stMap.put("k_f11",((byte) 0x44));
stMap.put("k_f12",((byte) 0x45));
stMap.put("k_prtscr",((byte) 0x46));
stMap.put("k_scrl",((byte) 0x47));
stMap.put("k_pause",((byte) 0x48));
stMap.put("k_ins",((byte) 0x49));
stMap.put("k_home",((byte) 0x4a));
stMap.put("k_pg_up",((byte) 0x4b));
stMap.put("k_del",((byte) 0x4c));
stMap.put("k_end",((byte) 0x4d));
stMap.put("k_pg_dn",((byte) 0x4e));
stMap.put("k_arr_right",((byte) 0x4f));
stMap.put("k_arr_left",((byte) 0x50));
stMap.put("k_arr_down",((byte) 0x51));
stMap.put("k_arr_up",((byte) 0x52));
stMap.put("k_num",((byte) 0x53));
stMap.put("k_num_slash",((byte) 0x54));
stMap.put("k_num_asterisk",((byte) 0x55));
stMap.put("k_num_minus",((byte) 0x56));
stMap.put("k_num_plus",((byte) 0x57));
stMap.put("k_num_enter",((byte) 0x58));
stMap.put("k_num_1",((byte) 0x59));
stMap.put("k_num_2",((byte) 0x5a));
stMap.put("k_num_3",((byte) 0x5b));
stMap.put("k_num_4",((byte) 0x5c));
stMap.put("k_num_5",((byte) 0x5d));
stMap.put("k_num_6",((byte) 0x5e));
stMap.put("k_num_7",((byte) 0x5f));
stMap.put("k_num_8",((byte) 0x60));
stMap.put("k_num_9",((byte) 0x61));
stMap.put("k_num_0",((byte) 0x62));
stMap.put("k_num_period",((byte) 0x63));
stMap.put("k_menu",((byte) 0x65));
stMap.put("k_l_ctrl",((byte) 0xe0));
stMap.put("k_l_shift",((byte) 0xe1));
stMap.put("k_l_alt",((byte) 0xe2));
stMap.put("k_win",((byte) 0xe3));
stMap.put("k_r_ctrl",((byte) 0xe4));
stMap.put("k_r_shift",((byte) 0xe5));
stMap.put("k_r_alt",((byte) 0xe6));
stMap.put("k_fn",((byte) 0xe7));
LoCodepage = Collections.unmodifiableMap(stMap);
}
public RuleBox(){
super(); super();
Insets insets = new Insets(3.0, 3.0, 3.0, 3.0); Insets insets = new Insets(3.0, 3.0, 3.0, 3.0);
// Radio button for selecting rule // Radio button for selecting rule
@ -187,7 +73,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
/** /**
* Prepare this object to be deleted: release all buttons used etc. * Prepare this object to be deleted: release all buttons used etc.
* */ * */
public void wipe(){ void wipe(){
for (Node node : flowPaneBox.getChildren()) { for (Node node : flowPaneBox.getChildren()) {
Button key = (Button) ((Object[]) node.getUserData())[0]; Button key = (Button) ((Object[]) node.getUserData())[0];
key.setStyle(""); key.setStyle("");
@ -197,7 +83,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
/** /**
* Add button to UI (appears for current rule) * Add button to UI (appears for current rule)
* */ * */
public void addKey(Button keyBtn){ void addKey(Button keyBtn){
keyBtn.setDisable(true); keyBtn.setDisable(true);
keyBtn.setStyle( keyBtn.setStyle(
@ -222,7 +108,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
/** /**
* Get information about this rule (keys) * Get information about this rule (keys)
* */ * */
public byte[][] getKeyCodes(){ byte[][] getKeyCodes(){
final List<byte[]> keysList = new ArrayList<>(); final List<byte[]> keysList = new ArrayList<>();
final byte red = (byte) (colorPicker.getValue().getRed()*255); final byte red = (byte) (colorPicker.getValue().getRed()*255);
@ -235,7 +121,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
if (id.startsWith("l_")) if (id.startsWith("l_"))
continue; continue;
byte[] keyInfo = new byte[4]; // Where 0 - special key/indicator code; 1 - red; 2 - green; 3 - blue byte[] keyInfo = new byte[4]; // Where 0 - special key/indicator code; 1 - red; 2 - green; 3 - blue
keyInfo[0] = LoCodepage.get(id); keyInfo[0] = LoCodepage.valueOf(id).getValue();
keyInfo[1] = red; keyInfo[1] = red;
keyInfo[2] = green; keyInfo[2] = green;
keyInfo[3] = blue; keyInfo[3] = blue;
@ -250,7 +136,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
/** /**
* Get information about this rule (Leds) * Get information about this rule (Leds)
* */ * */
public byte[][] getLedCodes(){ byte[][] getLedCodes(){
final List<byte[]> ledList = new ArrayList<>(); final List<byte[]> ledList = new ArrayList<>();
final byte red = (byte) (colorPicker.getValue().getRed()*255); final byte red = (byte) (colorPicker.getValue().getRed()*255);
@ -263,7 +149,7 @@ public class RuleBox extends HBox { // todo: add class to selected toggle user
if (id.startsWith("k_")) if (id.startsWith("k_"))
continue; continue;
byte[] keyInfo = new byte[4]; // Where 0 - special key/indicator code; 1 - red; 2 - green; 3 - blue byte[] keyInfo = new byte[4]; // Where 0 - special key/indicator code; 1 - red; 2 - green; 3 - blue
keyInfo[0] = LoCodepage.get(id); keyInfo[0] = LoCodepage.valueOf(id).getValue();
keyInfo[1] = red; keyInfo[1] = red;
keyInfo[2] = green; keyInfo[2] = green;
keyInfo[3] = blue; keyInfo[3] = blue;

View file

@ -1,6 +1,7 @@
package logiled.USB; package logiled.USB;
import logiled.Controllers.LoEffects; import logiled.Controllers.LoEffects;
import logiled.MessagesConsumer;
import java.util.HashMap; import java.util.HashMap;
@ -61,7 +62,8 @@ public class EffectsThread extends LoThread implements Runnable{
handler = usbConnect.getHandlerKbrd(); handler = usbConnect.getHandlerKbrd();
write(command); if (! write(command))
MessagesConsumer.getInstance().inform("Complete!");
usbConnect.close(); usbConnect.close();
} }

View file

@ -1,5 +1,7 @@
package logiled.USB; package logiled.USB;
import logiled.MessagesConsumer;
import java.util.List; import java.util.List;
public class GameModeThread extends LoThread implements Runnable{ public class GameModeThread extends LoThread implements Runnable{
@ -23,6 +25,7 @@ public class GameModeThread extends LoThread implements Runnable{
@Override @Override
public void run() { public void run() {
/*
if (command == null) if (command == null)
return; return;
@ -33,9 +36,11 @@ public class GameModeThread extends LoThread implements Runnable{
handler = usbConnect.getHandlerKbrd(); handler = usbConnect.getHandlerKbrd();
write(command); if (! write(command))
MessagesConsumer.getInstance().inform("Complete!");
usbConnect.close(); usbConnect.close();
*/
} }
} }

View file

@ -1,5 +1,7 @@
package logiled.USB; package logiled.USB;
import logiled.MessagesConsumer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -87,9 +89,16 @@ public class KeyLedThread extends LoThread implements Runnable{
handler = usbConnect.getHandlerKbrd(); handler = usbConnect.getHandlerKbrd();
boolean notFailed = true;
for (byte[] cmd : keyLedCommands) for (byte[] cmd : keyLedCommands)
if (write(cmd)) if (write(cmd)){
notFailed = false;
break; break;
}
if (notFailed)
MessagesConsumer.getInstance().inform("Complete!");
usbConnect.close(); usbConnect.close();
} }

View file

@ -0,0 +1,338 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ToggleButton?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.control.Tooltip?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.SVGPath?>
<?import javafx.scene.text.Font?>
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiled.Controllers.GameModeController">
<children>
<ToolBar>
<items>
<Button fx:id="resetBtn" mnemonicParsing="false">
<tooltip>
<Tooltip text="%btn_reset" />
</tooltip>
<graphic>
<SVGPath content="M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z" />
</graphic></Button>
</items>
</ToolBar>
<HBox spacing="17.0">
<children>
<VBox>
<children>
<HBox spacing="2.0">
<children>
<ToggleButton fx:id="k_esc" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="ESC">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="40.0" HBox.hgrow="NEVER" />
<ToggleButton fx:id="k_f1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F1">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f2" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F2">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f3" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F3">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f4" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F4">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="40.0" />
<ToggleButton fx:id="k_f5" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F5">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f6" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F6">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f7" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F7">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f8" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F8">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="40.0" />
<ToggleButton fx:id="k_f9" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F9">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f10" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F10">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f11" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F11">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_f12" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F12">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="17.0" />
<ToggleButton fx:id="k_prtscr" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="PRTSC">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_scrl" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="SCRLK">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_pause" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="PAUSE">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
</children>
<VBox.margin>
<Insets bottom="17.0" />
</VBox.margin>
</HBox>
<HBox spacing="2.0">
<children>
<ToggleButton fx:id="k_tilde" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="~" />
<ToggleButton fx:id="k_1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="1" />
<ToggleButton fx:id="k_2" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="2" />
<ToggleButton fx:id="k_3" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="3" />
<ToggleButton fx:id="k_4" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="4" />
<ToggleButton fx:id="k_5" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="5" />
<ToggleButton fx:id="k_6" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="6" />
<ToggleButton fx:id="k_7" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="7" />
<ToggleButton fx:id="k_8" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="8" />
<ToggleButton fx:id="k_9" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="9" />
<ToggleButton fx:id="k_0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="0" />
<ToggleButton fx:id="k_dash" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="-" />
<ToggleButton fx:id="k_equal" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="=" />
<ToggleButton fx:id="k_backspace" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="125.0" text="←" />
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="17.0" />
<ToggleButton fx:id="k_ins" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="INS">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_home" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="HOME">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_pg_up" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="PG UP">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
</children>
<VBox.margin>
<Insets bottom="2.0" />
</VBox.margin>
</HBox>
<HBox spacing="2.0">
<children>
<ToggleButton fx:id="k_tab" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="60.0" text="TAB" />
<ToggleButton fx:id="k_q" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="Q" />
<ToggleButton fx:id="k_w" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="W" />
<ToggleButton fx:id="k_e" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="E" />
<ToggleButton fx:id="k_r" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="R" />
<ToggleButton fx:id="k_t" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="T" />
<ToggleButton fx:id="k_y" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="Y" />
<ToggleButton fx:id="k_u" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="U" />
<ToggleButton fx:id="k_i" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="I" />
<ToggleButton fx:id="k_o" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="O" />
<ToggleButton fx:id="k_p" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="P" />
<ToggleButton fx:id="k_bracket_open" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="[" />
<ToggleButton fx:id="k_bracket_close" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="]" />
<ToggleButton fx:id="k_backslash" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="110.0" text="\\" />
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="17.0" />
<ToggleButton fx:id="k_del" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="DEL">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_end" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="END">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_pg_dn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="PG DN">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
</children>
<VBox.margin>
<Insets bottom="2.0" />
</VBox.margin>
</HBox>
<HBox spacing="2.0">
<VBox.margin>
<Insets bottom="2.0" />
</VBox.margin>
<children>
<ToggleButton fx:id="k_caps" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="70.0" text="CAPS" />
<ToggleButton fx:id="k_a" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="A" />
<ToggleButton fx:id="k_s" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="S" />
<ToggleButton fx:id="k_d" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="D" />
<ToggleButton fx:id="k_f" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="F" />
<ToggleButton fx:id="k_g" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="G" />
<ToggleButton fx:id="k_h" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="H" />
<ToggleButton fx:id="k_j" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="J" />
<ToggleButton fx:id="k_k" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="K" />
<ToggleButton fx:id="k_l" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="L" />
<ToggleButton fx:id="k_semicolon" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text=";" />
<ToggleButton fx:id="k_quotation" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="'" />
<ToggleButton fx:id="k_enter" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="147.0" text="ENTER" />
</children>
</HBox>
<HBox spacing="2.0">
<VBox.margin>
<Insets bottom="2.0" />
</VBox.margin>
<children>
<ToggleButton fx:id="k_l_shift" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="85.0" text="L SHIFT" />
<ToggleButton fx:id="k_z" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="Z" />
<ToggleButton fx:id="k_x" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="X" />
<ToggleButton fx:id="k_c" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="C" />
<ToggleButton fx:id="k_v" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="V" />
<ToggleButton fx:id="k_b" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="B" />
<ToggleButton fx:id="k_n" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="N" />
<ToggleButton fx:id="k_m" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="M" />
<ToggleButton fx:id="k_comma" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="," />
<ToggleButton fx:id="k_dot" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="." />
<ToggleButton fx:id="k_shash" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="45.0" text="/" />
<ToggleButton fx:id="k_r_shift" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="179.0" text="R SHIFT" />
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="74.0" />
<ToggleButton fx:id="k_arr_up" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="↑" />
</children>
</HBox>
<HBox spacing="2.0">
<children>
<ToggleButton fx:id="k_l_ctrl" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="L CTRL">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton disable="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="45.0" prefWidth="42.0" selected="true" styleClass="always_off_button" text="WIN">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_l_alt" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="ALT">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_space" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="270.0" text="—" />
<ToggleButton fx:id="k_r_alt" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="72.0" text="ALT GR">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton disable="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="45.0" prefWidth="72.0" selected="true" styleClass="always_off_button" text="FN">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton disable="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="45.0" prefWidth="72.0" selected="true" styleClass="always_off_button" text="MENU">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_r_ctrl" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="84.0" text="R CTRL">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1.0" prefWidth="17.0" />
<ToggleButton fx:id="k_arr_left" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="←" />
<ToggleButton fx:id="k_arr_down" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="↓" />
<ToggleButton fx:id="k_arr_right" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="55.0" text="→" />
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<padding>
<Insets bottom="2.0" />
</padding>
</HBox>
</children>
</VBox>
<GridPane alignment="BOTTOM_LEFT" hgap="2.0" vgap="2.0" HBox.hgrow="NEVER">
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="NEVER" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER" />
<ColumnConstraints halignment="CENTER" hgrow="NEVER" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="51.0" valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
<RowConstraints valignment="CENTER" vgrow="NEVER" />
</rowConstraints>
<children>
<ToggleButton fx:id="k_num" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="NUM" GridPane.rowIndex="1">
<font>
<Font size="10.0" />
</font>
</ToggleButton>
<ToggleButton fx:id="k_num_slash" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="/" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<ToggleButton fx:id="k_num_asterisk" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="*" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<ToggleButton fx:id="k_num_7" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="7" GridPane.rowIndex="2" />
<ToggleButton fx:id="k_num_4" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="4" GridPane.rowIndex="3" />
<ToggleButton fx:id="k_num_0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="102.0" text="0" GridPane.columnSpan="2" GridPane.rowIndex="5" />
<ToggleButton fx:id="k_num_1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="1" GridPane.rowIndex="4" />
<ToggleButton fx:id="k_num_8" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="8" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<ToggleButton fx:id="k_num_9" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="9" GridPane.columnIndex="2" GridPane.rowIndex="2" />
<ToggleButton fx:id="k_num_5" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="5" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<ToggleButton fx:id="k_num_6" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="6" GridPane.columnIndex="2" GridPane.rowIndex="3" />
<ToggleButton fx:id="k_num_2" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="2" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<ToggleButton fx:id="k_num_3" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="3" GridPane.columnIndex="2" GridPane.rowIndex="4" />
<ToggleButton fx:id="k_num_minus" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="-" GridPane.columnIndex="3" GridPane.rowIndex="1" />
<ToggleButton fx:id="k_num_plus" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="93.0" prefWidth="50.0" text="+" GridPane.columnIndex="3" GridPane.rowIndex="2" GridPane.rowSpan="2" />
<ToggleButton fx:id="k_num_enter" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="93.0" prefWidth="50.0" text="↵" GridPane.columnIndex="3" GridPane.rowIndex="4" GridPane.rowSpan="2" />
<ToggleButton fx:id="k_num_period" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#toggleBntAction" prefHeight="45.0" prefWidth="50.0" text="," GridPane.columnIndex="2" GridPane.rowIndex="5" />
</children>
</GridPane>
</children>
</HBox>
</children>
<padding>
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
</padding>
</VBox>

View file

@ -125,6 +125,18 @@
<SVGPath content="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /> <SVGPath content="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" />
</graphic> </graphic>
</Tab> </Tab>
<Tab fx:id="GameModeTab">
<content>
<ScrollPane fitToWidth="true" prefHeight="200.0" prefWidth="200.0">
<content>
<fx:include fx:id="GameMode" source="GameModePane.fxml" VBox.vgrow="ALWAYS" />
</content>
</ScrollPane>
</content>
<graphic>
<SVGPath content="M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" />
</graphic>
</Tab>
</tabs> </tabs>
</TabPane> </TabPane>
</children> </children>

View file

@ -1,8 +1,8 @@
.root{ .root{
-fx-background: #ebebeb; -fx-background: #ebebeb;
} }
/* -======================== Buttons =====================- */
.button { .button, .toggle-button {
-fx-background-color: #fefefe; -fx-background-color: #fefefe;
-fx-border-color: #fefefe; -fx-border-color: #fefefe;
-fx-border-radius: 3; -fx-border-radius: 3;
@ -10,7 +10,7 @@
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
-fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0); -fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0);
} }
.button:hover, .choice-box:hover, .button:focused:hover, .choice-box:focused:hover{ .button:hover, .choice-box:hover, .button:focused:hover, .choice-box:focused:hover, .toggle-button:hover, .toggle-button:focused:hover{
-fx-background-color: #fefefe; -fx-background-color: #fefefe;
-fx-border-color: #00caca; -fx-border-color: #00caca;
-fx-border-radius: 3; -fx-border-radius: 3;
@ -18,7 +18,7 @@
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
-fx-effect: dropshadow(three-pass-box, #00caca, 2, 0, 0, 0); -fx-effect: dropshadow(three-pass-box, #00caca, 2, 0, 0, 0);
} }
.button:focused, .choice-box:focused{ .button:focused, .choice-box:focused, .toggle-button:focused{
-fx-background-color: #cccccc; -fx-background-color: #cccccc;
-fx-border-color: #cccccc; -fx-border-color: #cccccc;
-fx-border-radius: 3; -fx-border-radius: 3;
@ -27,7 +27,7 @@
-fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0); -fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0);
} }
.button:pressed, .button:pressed:hover{ .button:pressed, .button:pressed:hover, .toggle-button:pressed, .toggle-button:pressed:hover{
-fx-background-color: #fefefe; -fx-background-color: #fefefe;
-fx-border-color: #e82382; -fx-border-color: #e82382;
-fx-border-radius: 3; -fx-border-radius: 3;
@ -35,7 +35,27 @@
-fx-text-fill: #2c2c2c; -fx-text-fill: #2c2c2c;
-fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0); -fx-effect: dropshadow(three-pass-box, #e82382, 2, 0, 0, 0);
} }
/* -========================+ TextArea =====================- */
.toggle-button:selected, .toggle-button:selected:hover{
-fx-background-color: #e1feeb;
-fx-border-color: #ccfed1;
-fx-border-radius: 3;
-fx-border-width: 2;
-fx-text-fill: #2c2c2c;
-fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0);
}
.always_off_button:disabled, .always_off_button:disabled:selected {
-fx-opacity: 1.0;
-fx-background-color: #fee9f8;
-fx-border-color: #fed6fe;
-fx-border-radius: 3;
-fx-border-width: 2;
-fx-text-fill: #2c2c2c;
-fx-effect: dropshadow(three-pass-box, #cccccc, 2, 0, 0, 0);
}
/* -======================== TextArea =====================- */
.text-area{ .text-area{
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-control-inner-background: #fefefe; -fx-control-inner-background: #fefefe;

View file

@ -693,3 +693,4 @@ effect_wave_center_to_edge=Wave from center to edges
effect_wave_horizontal_reverse=Wave horizontal (reverse) effect_wave_horizontal_reverse=Wave horizontal (reverse)
effect_wave_vertical_reverse=Wave vertical (reverse) effect_wave_vertical_reverse=Wave vertical (reverse)
effect_wave_edge_to_center=Wave from edges to center effect_wave_edge_to_center=Wave from edges to center
btn_reset=Reset

View file

@ -19,3 +19,4 @@ effect_wave_vertical=Волна вертикальная
effect_wave_vertical_reverse=Волна вертикальная (обратная) effect_wave_vertical_reverse=Волна вертикальная (обратная)
effect_wave_center_to_edge=Волна от центра к краям effect_wave_center_to_edge=Волна от центра к краям
effect_wave_edge_to_center=Волна от краёв к центру effect_wave_edge_to_center=Волна от краёв к центру
btn_reset=Сбросить