refactor UI, split scheduler

This commit is contained in:
sirjonasxx 2020-04-26 23:04:47 +02:00
parent be2c8adecb
commit cee7fe5160
27 changed files with 207 additions and 158 deletions

View File

@ -2,10 +2,6 @@ package extensions.blockreplacepackets;
import extensions.blockreplacepackets.rules.BlockReplaceRule;
import gearth.ui.buttons.DeleteButton;
import gearth.ui.scheduler.ScheduleItem;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;

View File

@ -1,4 +1,6 @@
package gearth.ui.scheduler;
package gearth.services.scheduler;
import gearth.ui.scheduler.SchedulerController;
/**
* Created by Jonas on 11/04/18.
@ -21,7 +23,7 @@ public class Interval {
offset = -1;
return;
}
if (!Scheduler.stringIsNumber(split[0]) || (split.length == 2 && !Scheduler.stringIsNumber(split[1]))) {
if (!SchedulerController.stringIsNumber(split[0]) || (split.length == 2 && !SchedulerController.stringIsNumber(split[1]))) {
delay = -1;
offset = -1;
return;

View File

@ -1,11 +1,10 @@
package gearth.ui.scheduler;
package gearth.services.scheduler;
import gearth.misc.listenerpattern.Observable;
import gearth.ui.scheduler.listeners.OnBeingUpdatedListener;
import gearth.ui.scheduler.listeners.OnDeleteListener;
import gearth.ui.scheduler.listeners.OnEditListener;
import gearth.ui.scheduler.listeners.OnUpdatedListener;
import javafx.beans.InvalidationListener;
import gearth.services.scheduler.listeners.OnBeingUpdatedListener;
import gearth.services.scheduler.listeners.OnDeleteListener;
import gearth.services.scheduler.listeners.OnEditListener;
import gearth.services.scheduler.listeners.OnUpdatedListener;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
@ -13,9 +12,6 @@ import gearth.misc.StringifyAble;
import gearth.protocol.HMessage;
import gearth.protocol.HPacket;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Jonas on 07/04/18.
*/
@ -27,7 +23,7 @@ public class ScheduleItem implements StringifyAble {
private SimpleObjectProperty<HPacket> packetProperty;
private SimpleObjectProperty<HMessage.Direction> destinationProperty;
ScheduleItem (int index, boolean paused, Interval delay, HPacket packet, HMessage.Direction destination) {
public ScheduleItem (int index, boolean paused, Interval delay, HPacket packet, HMessage.Direction destination) {
construct(index, paused, delay, packet, destination);
}
@ -39,7 +35,7 @@ public class ScheduleItem implements StringifyAble {
this.destinationProperty = new SimpleObjectProperty<>(destination);
}
ScheduleItem(String stringifyAbleRepresentation) {
public ScheduleItem(String stringifyAbleRepresentation) {
constructFromString(stringifyAbleRepresentation);
}
@ -63,39 +59,6 @@ public class ScheduleItem implements StringifyAble {
return destinationProperty;
}
private Observable<OnDeleteListener> onDeleteObservable = new Observable<>(OnDeleteListener::onDelete);
public void onDelete(OnDeleteListener listener) {
onDeleteObservable.addListener(listener);
}
public void delete() {
onDeleteObservable.fireEvent();
}
private Observable<OnEditListener> onEditObservable = new Observable<>(OnEditListener::onEdit);
public void onEdit(OnEditListener listener) {
onEditObservable.addListener(listener);
}
public void edit() {
onEditObservable.fireEvent();
}
private Observable<OnUpdatedListener> onUpdatedObservable = new Observable<>(OnUpdatedListener::onUpdated);
public void onIsupdated(OnUpdatedListener listener) {
onUpdatedObservable.addListener(listener);
}
public void isUpdatedTrigger() {
onUpdatedObservable.fireEvent();
}
private Observable<OnBeingUpdatedListener> onBeingUpdatedObservable = new Observable<>(OnBeingUpdatedListener::onBeingUpdated);
public void onIsBeingUpdated(OnBeingUpdatedListener listener) {
onBeingUpdatedObservable.addListener(listener);
}
public void onIsBeingUpdatedTrigger() {
onBeingUpdatedObservable.fireEvent();
}
@Override
public String stringify() {
StringBuilder b = new StringBuilder();

View File

@ -0,0 +1,73 @@
package gearth.services.scheduler;
import gearth.protocol.HConnection;
import gearth.protocol.HMessage;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Scheduler<T extends ScheduleItem> {
private List<T> scheduleItems = new ArrayList<>();
public Scheduler(HConnection connection) {
new Thread(() -> {
long t = System.currentTimeMillis();
long changed = 1;
Set<ScheduleItem> set = new HashSet<>();
while (true) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
set.clear();
for (int i = size() - 1; i >= 0; i--) {
set.add(get(i));
}
for (ScheduleItem item : set) {
if (!item.getPausedProperty().get()) {
Interval cur = item.getDelayProperty().get();
for (int i = 0; i < changed; i++) {
if ((t - i) % cur.getDelay() == cur.getOffset()) {
if (item.getDestinationProperty().get() == HMessage.Direction.TOSERVER) {
connection.sendToServerAsync(item.getPacketProperty().get());
}
else {
connection.sendToClientAsync(item.getPacketProperty().get());
}
}
}
}
}
long newT = System.currentTimeMillis();
changed = newT - t;
t = newT;
}
}).start();
}
public int size() {
return scheduleItems.size();
}
public T get(int i) {
return scheduleItems.get(i);
}
public void add(T item) {
scheduleItems.add(item);
}
public void remove(T item) {
scheduleItems.remove(item);
}
}

View File

@ -1,4 +1,4 @@
package gearth.ui.scheduler.listeners;
package gearth.services.scheduler.listeners;
public interface OnBeingUpdatedListener {
void onBeingUpdated();

View File

@ -1,4 +1,4 @@
package gearth.ui.scheduler.listeners;
package gearth.services.scheduler.listeners;
public interface OnDeleteListener {
void onDelete();

View File

@ -1,4 +1,4 @@
package gearth.ui.scheduler.listeners;
package gearth.services.scheduler.listeners;
public interface OnEditListener {
void onEdit();

View File

@ -1,4 +1,4 @@
package gearth.ui.scheduler.listeners;
package gearth.services.scheduler.listeners;
public interface OnUpdatedListener {
void onUpdated();

View File

@ -6,18 +6,17 @@ import javafx.scene.control.TabPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import gearth.protocol.HConnection;
import gearth.ui.connection.Connection;
import gearth.ui.extensions.Extensions;
import gearth.ui.info.Info;
import gearth.ui.injection.Injection;
import gearth.ui.logger.Logger;
import gearth.ui.scheduler.Scheduler;
import gearth.ui.extra.Extra;
import gearth.ui.tools.Tools;
import gearth.ui.connection.ConnectionController;
import gearth.ui.extensions.ExtensionsController;
import gearth.ui.info.InfoController;
import gearth.ui.injection.InjectionController;
import gearth.ui.logger.LoggerController;
import gearth.ui.scheduler.SchedulerController;
import gearth.ui.extra.ExtraController;
import gearth.ui.tools.ToolsController;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class GEarthController {
@ -27,14 +26,14 @@ public class GEarthController {
private volatile HConnection hConnection;
private volatile int initcount = 0;
public Connection connectionController;
public Injection injectionController;
public Logger loggerController;
public Tools toolsController;
public Scheduler schedulerController;
public Extra extraController;
public Info infoController;
public Extensions extensionsController;
public ConnectionController connectionController;
public InjectionController injectionController;
public LoggerController loggerController;
public ToolsController toolsController;
public SchedulerController schedulerController;
public ExtraController extraController;
public InfoController infoController;
public ExtensionsController extensionsController;
private List<SubForm> tabs = null;

View File

@ -12,7 +12,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Connection extends SubForm {
public class ConnectionController extends SubForm {
public ComboBox<String> inpPort;
public ComboBox<String> inpHost;

View File

@ -21,7 +21,7 @@ import java.io.File;
* Created by Jonas on 06/04/18.
*/
public class Extensions extends SubForm {
public class ExtensionsController extends SubForm {
public Button btn_install;

View File

@ -4,16 +4,14 @@ import gearth.misc.Cacher;
import gearth.protocol.HConnection;
import gearth.protocol.misc.ConnectionInfoOverrider;
import gearth.ui.SubForm;
import gearth.ui.info.Info;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import gearth.ui.info.InfoController;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
/**
* Created by Jonas on 06/04/18.
*/
public class Extra extends SubForm implements ConnectionInfoOverrider {
public class ExtraController extends SubForm implements ConnectionInfoOverrider {
public static final String NOTEPAD_CACHE_KEY = "notepad_text";
@ -40,7 +38,7 @@ public class Extra extends SubForm implements ConnectionInfoOverrider {
HConnection.setConnectionInfoOverrider(this);
url_troubleshooting.setTooltip(new Tooltip("https://github.com/sirjonasxx/G-Earth/wiki/Troubleshooting"));
Info.activateHyperlink(url_troubleshooting);
InfoController.activateHyperlink(url_troubleshooting);
String notepadInitValue = (String)Cacher.get(NOTEPAD_CACHE_KEY);
if (notepadInitValue != null) {

View File

@ -12,7 +12,7 @@ import javafx.scene.image.ImageView;
/**
* Created by Jonas on 06/04/18.
*/
public class Info extends SubForm {
public class InfoController extends SubForm {
public ImageView img_logo;
public Hyperlink link_sng;
public Hyperlink link_darkbox;

View File

@ -13,7 +13,7 @@ import gearth.ui.SubForm;
import java.util.LinkedList;
public class Injection extends SubForm {
public class InjectionController extends SubForm {
public TextArea inputPacket;
public Text lbl_corrruption;
public Text lbl_pcktInfo;

View File

@ -17,7 +17,7 @@ import gearth.ui.logger.loggerdisplays.PacketLoggerFactory;
import java.util.Calendar;
public class Logger extends SubForm {
public class LoggerController extends SubForm {
public TextField txtPacketLimit;

View File

@ -0,0 +1,54 @@
package gearth.ui.scheduler;
import gearth.misc.listenerpattern.Observable;
import gearth.protocol.HMessage;
import gearth.protocol.HPacket;
import gearth.services.scheduler.Interval;
import gearth.services.scheduler.ScheduleItem;
import gearth.services.scheduler.listeners.OnBeingUpdatedListener;
import gearth.services.scheduler.listeners.OnDeleteListener;
import gearth.services.scheduler.listeners.OnEditListener;
import gearth.services.scheduler.listeners.OnUpdatedListener;
public class InteractableScheduleItem extends ScheduleItem {
public InteractableScheduleItem(int index, boolean paused, Interval delay, HPacket packet, HMessage.Direction destination) {
super(index, paused, delay, packet, destination);
}
public InteractableScheduleItem(String stringifyAbleRepresentation) {
super(stringifyAbleRepresentation);
}
private Observable<OnDeleteListener> onDeleteObservable = new Observable<>(OnDeleteListener::onDelete);
public void onDelete(OnDeleteListener listener) {
onDeleteObservable.addListener(listener);
}
public void delete() {
onDeleteObservable.fireEvent();
}
private Observable<OnEditListener> onEditObservable = new Observable<>(OnEditListener::onEdit);
public void onEdit(OnEditListener listener) {
onEditObservable.addListener(listener);
}
public void edit() {
onEditObservable.fireEvent();
}
private Observable<OnUpdatedListener> onUpdatedObservable = new Observable<>(OnUpdatedListener::onUpdated);
public void onIsupdated(OnUpdatedListener listener) {
onUpdatedObservable.addListener(listener);
}
public void isUpdatedTrigger() {
onUpdatedObservable.fireEvent();
}
private Observable<OnBeingUpdatedListener> onBeingUpdatedObservable = new Observable<>(OnBeingUpdatedListener::onBeingUpdated);
public void onIsBeingUpdated(OnBeingUpdatedListener listener) {
onBeingUpdatedObservable.addListener(listener);
}
public void onIsBeingUpdatedTrigger() {
onBeingUpdatedObservable.fireEvent();
}
}

View File

@ -1,7 +1,6 @@
package gearth.ui.scheduler;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import gearth.services.scheduler.ScheduleItem;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
@ -19,7 +18,7 @@ import gearth.ui.buttons.PauseResumeButton;
public class ScheduleItemContainer extends GridPane {
public static final int[] columnWidths = {10, 39, 16, 18, 15};
ScheduleItem item;
InteractableScheduleItem item;
Label indexLabel;
Label packetLabel;
@ -28,7 +27,7 @@ public class ScheduleItemContainer extends GridPane {
VBox parent;
ScheduleItemContainer(ScheduleItem item, VBox parent, ScrollPane scrollPane) {
ScheduleItemContainer(InteractableScheduleItem item, VBox parent, ScrollPane scrollPane) {
super();
setGridLinesVisible(true);
VBox.setMargin(this, new Insets(2, -2, -2, -2));

View File

@ -1,6 +1,9 @@
package gearth.ui.scheduler;
import com.tulskiy.keymaster.common.Provider;
import gearth.services.scheduler.Interval;
import gearth.services.scheduler.ScheduleItem;
import gearth.services.scheduler.Scheduler;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
@ -21,7 +24,7 @@ import java.util.Set;
/**
* Created by Jonas on 06/04/18.
*/
public class Scheduler extends SubForm {
public class SchedulerController extends SubForm {
private static final Interval defaultInterval = new Interval(0, 500);
private static final HPacket defaultPacket = new HPacket(0);
@ -44,9 +47,9 @@ public class Scheduler extends SubForm {
public CheckBox cbx_hotkeys;
private ScheduleItem isBeingEdited = null;
private InteractableScheduleItem isBeingEdited = null;
private List<ScheduleItem> scheduleItemList = new ArrayList<>();
private Scheduler<InteractableScheduleItem> scheduler = null;
public void initialize() {
@ -62,49 +65,6 @@ public class Scheduler extends SubForm {
updateUI();
new Thread(() -> {
long t = System.currentTimeMillis();
long changed = 1;
Set<ScheduleItem> set = new HashSet<>();
while (true) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
set.clear();
for (int i = scheduleItemList.size() - 1; i >= 0; i--) {
set.add(scheduleItemList.get(i));
}
for (ScheduleItem item : set) {
if (!item.getPausedProperty().get()) {
Interval cur = item.getDelayProperty().get();
for (int i = 0; i < changed; i++) {
if ((t - i) % cur.getDelay() == cur.getOffset()) {
if (item.getDestinationProperty().get() == HMessage.Direction.TOSERVER) {
getHConnection().sendToServerAsync(item.getPacketProperty().get());
}
else {
getHConnection().sendToClientAsync(item.getPacketProperty().get());
}
}
}
}
}
long newT = System.currentTimeMillis();
changed = newT - t;
t = newT;
}
}).start();
//register hotkeys
//disable some output things
PrintStream err = System.err;
@ -121,9 +81,14 @@ public class Scheduler extends SubForm {
System.setErr(err);
}
@Override
protected void onParentSet() {
scheduler = new Scheduler<>(getHConnection());
}
private void switchPauseHotkey(int index) {
if (cbx_hotkeys.isSelected() && index < scheduleItemList.size()) {
scheduleItemList.get(index).getPausedProperty().set(!scheduleItemList.get(index).getPausedProperty().get());
if (cbx_hotkeys.isSelected() && index < scheduler.size()) {
scheduler.get(index).getPausedProperty().set(!scheduler.get(index).getPausedProperty().get());
}
}
@ -146,8 +111,8 @@ public class Scheduler extends SubForm {
HPacket packet = new HPacket(txt_packet.getText());
if (packet.isCorrupted()) return;
ScheduleItem newItem = new ScheduleItem(
scheduleItemList.size(),
InteractableScheduleItem newItem = new InteractableScheduleItem(
scheduler.size(),
false,
new Interval(txt_delay.getText()),
new HPacket(txt_packet.getText()),
@ -168,9 +133,9 @@ public class Scheduler extends SubForm {
}
private void addItem(ScheduleItem newItem) {
private void addItem(InteractableScheduleItem newItem) {
new ScheduleItemContainer(newItem, schedulecontainer, scrollpane);
scheduleItemList.add(newItem);
scheduler.add(newItem);
newItem.onDelete(() -> {
@ -178,9 +143,9 @@ public class Scheduler extends SubForm {
setInputDefault();
isBeingEdited = null;
}
scheduleItemList.remove(newItem);
for (int i = 0; i < scheduleItemList.size(); i++) {
scheduleItemList.get(i).getIndexProperty().set(i);
scheduler.remove(newItem);
for (int i = 0; i < scheduler.size(); i++) {
scheduler.get(i).getIndexProperty().set(i);
}
});
newItem.onEdit(() -> {
@ -219,14 +184,14 @@ public class Scheduler extends SubForm {
private void clear() {
for (int i = scheduleItemList.size() - 1; i >= 0; i--) {
scheduleItemList.get(i).delete();
for (int i = scheduler.size() - 1; i >= 0; i--) {
scheduler.get(i).delete();
}
}
private void load(List<ScheduleItem> list) {
private void load(List<InteractableScheduleItem> list) {
clear();
for (ScheduleItem item : list) {
for (InteractableScheduleItem item : list) {
addItem(item);
}
}
@ -254,9 +219,9 @@ public class Scheduler extends SubForm {
FileWriter fileWriter = new FileWriter(file);
BufferedWriter out = new BufferedWriter(fileWriter);
for (int i = 0; i < scheduleItemList.size(); i++) {
out.write(scheduleItemList.get(i).stringify());
if (i != scheduleItemList.size() - 1) out.write("\n");
for (int i = 0; i < scheduler.size(); i++) {
out.write(scheduler.get(i).stringify());
if (i != scheduler.size() - 1) out.write("\n");
}
out.flush();
@ -270,7 +235,7 @@ public class Scheduler extends SubForm {
}
public void loadBtnClicked(ActionEvent actionEvent) {
List<ScheduleItem> list = new ArrayList<>();
List<InteractableScheduleItem> list = new ArrayList<>();
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Load Schedule File");
@ -287,7 +252,7 @@ public class Scheduler extends SubForm {
while ((line = br.readLine()) != null)
{
list.add(new ScheduleItem(line));
list.add(new InteractableScheduleItem(line));
}
fr.close();

View File

@ -11,7 +11,7 @@ import gearth.ui.SubForm;
import java.nio.ByteBuffer;
public class Tools extends SubForm {
public class ToolsController extends SubForm {
public TextField txt_intDecoded;
public TextField txt_intEncoded;
public TextField txt_ushortDecoded;

View File

@ -11,7 +11,7 @@
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>
<GridPane alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0" xmlns="http://javafx.com/javafx/8.0.131" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.connection.Connection">
<GridPane alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0" xmlns="http://javafx.com/javafx/8.0.131" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.connection.ConnectionController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>

View File

@ -12,7 +12,7 @@
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0"
xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="gearth.ui.extensions.Extensions">
fx:controller="gearth.ui.extensions.ExtensionsController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="10.0" prefWidth="277.0"/>
</columnConstraints>

View File

@ -11,7 +11,7 @@
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.extra.Extra">
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.extra.ExtraController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="331.0" minWidth="10.0" prefWidth="318.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="10.0" prefWidth="247.0" />

View File

@ -5,7 +5,7 @@
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="595.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.info.Info">
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="595.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.info.InfoController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="10.0" prefWidth="332.0" />
</columnConstraints>

View File

@ -12,7 +12,7 @@
<?import javafx.scene.text.TextFlow?>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0"
xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="gearth.ui.injection.Injection">
fx:controller="gearth.ui.injection.InjectionController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>

View File

@ -14,7 +14,7 @@
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0"
xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="gearth.ui.logger.Logger">
fx:controller="gearth.ui.logger.LoggerController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="293.0" minWidth="10.0" prefWidth="242.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="10.0" prefWidth="323.0"/>

View File

@ -4,7 +4,7 @@
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="595.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.scheduler.Scheduler">
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="595.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.scheduler.SchedulerController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="10.0" prefWidth="277.0" />
</columnConstraints>

View File

@ -12,7 +12,7 @@
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="262.0" prefWidth="565.0"
xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="gearth.ui.tools.Tools">
fx:controller="gearth.ui.tools.ToolsController">
<rowConstraints>
<RowConstraints maxHeight="158.0" minHeight="10.0" prefHeight="134.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="141.0" minHeight="10.0" prefHeight="128.0" vgrow="SOMETIMES"/>