diff --git a/src/main/java/kst4contest/ApplicationConstants.java b/src/main/java/kst4contest/ApplicationConstants.java
index 89a18a4..e8a8749 100644
--- a/src/main/java/kst4contest/ApplicationConstants.java
+++ b/src/main/java/kst4contest/ApplicationConstants.java
@@ -9,7 +9,7 @@ public class ApplicationConstants {
/**
* Name of file to store preferences in.
*/
- public static final double APPLICATION_CURRENTVERSIONNUMBER = 1.0;
+ public static final double APPLICATION_CURRENTVERSIONNUMBER = 1.17;
public static final String VERSIONINFOURLFORUPDATES_KST4CONTEST = "https://do5amf.funkerportal.de/kst4ContestVersionInfo.xml";
public static final String VERSIONINFDOWNLOADEDLOCALFILE = "kst4ContestVersionInfo.xml";
diff --git a/src/main/java/kst4contest/controller/UpdateChecker.java b/src/main/java/kst4contest/controller/UpdateChecker.java
index 570973c..8f6778e 100644
--- a/src/main/java/kst4contest/controller/UpdateChecker.java
+++ b/src/main/java/kst4contest/controller/UpdateChecker.java
@@ -37,13 +37,13 @@ public class UpdateChecker {
System.out.println("[Updatechecker: checking for updates...]");
- double currentVersionNumber = ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER;
+// double currentVersionNumber = ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER;
}
String versionInfoDownloadedFromServerFileName = ApplicationFileUtils.getFilePath(ApplicationConstants.APPLICATION_NAME, ApplicationConstants.VERSIONINFDOWNLOADEDLOCALFILE);
String versionInfoXMLURLAtServer = ApplicationConstants.VERSIONINFOURLFORUPDATES_KST4CONTEST;
- double currentVersion = ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER;
+// double currentVersion = ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER;
//DOWNLOAD from URL, then parse, then do anything with it...
/**
@@ -230,7 +230,7 @@ public class UpdateChecker {
public String toString() {
String toString = "";
- toString += this.currentVersion;
+// toString += this.currentVersion;
return toString;
}
diff --git a/src/main/java/kst4contest/model/ChatPreferences.java b/src/main/java/kst4contest/model/ChatPreferences.java
index 5a816bc..c50a400 100644
--- a/src/main/java/kst4contest/model/ChatPreferences.java
+++ b/src/main/java/kst4contest/model/ChatPreferences.java
@@ -214,15 +214,95 @@ public class ChatPreferences {
String unwkd_unworkedStnRequesterBeaconsText;
String unwkd_beaconUnworkedstationsPrefix;
-// public String getMYQRG() {
-// return MYQRG;
-// }
-//
-// public void setMYQRG(String mYQRG) {
-//
-// MYQRG = mYQRG;
-// }
+ /*********************************************************************************
+ *
+ * GUI SETTING VARIABLES WILL BE BUFFERED HERE, DEFAULTS TOO
+ *
+ *********************************************************************************/
+ private double[] GUIscn_ChatwindowMainSceneSizeHW = new double[] {768, 1234};
+ private double[] GUIclusterAndQSOMonStage_SceneSizeHW = new double[] {700, 500};
+ private double[] GUIstage_updateStage_SceneSizeHW = new double[] {640, 480};
+ private double[] GUIsettingsStageSceneSizeHW = new double[] {720, 768};
+
+ private double[] GUIselectedCallSignSplitPane_dividerposition = {0.55};
+ private double[] GUImainWindowLeftSplitPane_dividerposition = {0.51};
+ private double[] GUImessageSectionSplitpane_dividerposition = {0.62, 0.7, 0.75}; //3 deviders now //TODO: more should be possible?
+ private double[] GUImainWindowRightSplitPane_dividerposition = {0.72};
+ private double[] GUIpnl_directedMSGWin_dividerpositionDefault = {0.8};
+
+
+ public double[] getGUIscn_ChatwindowMainSceneSizeHW() {
+ return GUIscn_ChatwindowMainSceneSizeHW;
+ }
+
+ public void setGUIscn_ChatwindowMainSceneSizeHW(double[] GUIscn_ChatwindowMainSceneSizeHW) {
+ this.GUIscn_ChatwindowMainSceneSizeHW = GUIscn_ChatwindowMainSceneSizeHW;
+ }
+
+ public double[] getGUIclusterAndQSOMonStage_SceneSizeHW() {
+ return GUIclusterAndQSOMonStage_SceneSizeHW;
+ }
+
+ public void setGUIclusterAndQSOMonStage_SceneSizeHW(double[] GUIclusterAndQSOMonStage_SceneSizeHW) {
+ this.GUIclusterAndQSOMonStage_SceneSizeHW = GUIclusterAndQSOMonStage_SceneSizeHW;
+ }
+
+ public double[] getGUIstage_updateStage_SceneSizeHW() {
+ return GUIstage_updateStage_SceneSizeHW;
+ }
+
+ public void setGUIstage_updateStage_SceneSizeHW(double[] GUIstage_updateStage_SceneSizeHW) {
+ this.GUIstage_updateStage_SceneSizeHW = GUIstage_updateStage_SceneSizeHW;
+ }
+
+ public double[] getGUIsettingsStageSceneSizeHW() {
+ return GUIsettingsStageSceneSizeHW;
+ }
+
+ public void setGUIsettingsStageSceneSizeHW(double[] GUIsettingsStageSceneSizeHW) {
+ this.GUIsettingsStageSceneSizeHW = GUIsettingsStageSceneSizeHW;
+ }
+
+ public double[] getGUIselectedCallSignSplitPane_dividerposition() {
+ return GUIselectedCallSignSplitPane_dividerposition;
+ }
+
+ public void setGUIselectedCallSignSplitPane_dividerposition(double[] GUIselectedCallSignSplitPane_dividerposition) {
+ this.GUIselectedCallSignSplitPane_dividerposition = GUIselectedCallSignSplitPane_dividerposition;
+ }
+
+ public double[] getGUImainWindowLeftSplitPane_dividerposition() {
+ return GUImainWindowLeftSplitPane_dividerposition;
+ }
+
+ public void setGUImainWindowLeftSplitPane_dividerposition(double[] GUImainWindowLeftSplitPane_dividerposition) {
+ this.GUImainWindowLeftSplitPane_dividerposition = GUImainWindowLeftSplitPane_dividerposition;
+ }
+
+ public double[] getGUImessageSectionSplitpane_dividerposition() {
+ return GUImessageSectionSplitpane_dividerposition;
+ }
+
+ public void setGUImessageSectionSplitpane_dividerposition(double[] GUImessageSectionSplitpane_dividerposition) {
+ this.GUImessageSectionSplitpane_dividerposition = GUImessageSectionSplitpane_dividerposition;
+ }
+
+ public double[] getGUImainWindowRightSplitPane_dividerposition() {
+ return GUImainWindowRightSplitPane_dividerposition;
+ }
+
+ public void setGUImainWindowRightSplitPane_dividerposition(double[] GUImainWindowRightSplitPane_dividerposition) {
+ this.GUImainWindowRightSplitPane_dividerposition = GUImainWindowRightSplitPane_dividerposition;
+ }
+
+ public double[] getGUIpnl_directedMSGWin_dividerpositionDefault() {
+ return GUIpnl_directedMSGWin_dividerpositionDefault;
+ }
+
+ public void setGUIpnl_directedMSGWin_dividerpositionDefault(double[] GUIpnl_directedMSGWin_dividerpositionDefault) {
+ this.GUIpnl_directedMSGWin_dividerpositionDefault = GUIpnl_directedMSGWin_dividerpositionDefault;
+ }
public double getStn_antennaBeamWidthDeg() {
return stn_antennaBeamWidthDeg;
@@ -802,8 +882,7 @@ public class ChatPreferences {
Element beaconUnworkedstations = doc.createElement("beaconUnworkedstations");
rootElement.appendChild(beaconUnworkedstations);
-
-
+
Element beaconUnworkedstationsText = doc.createElement("beaconUnworkedstationsText");
beaconUnworkedstationsText.setTextContent(this.getUnwkd_unworkedStnRequesterBeaconsText());
beaconUnworkedstations.appendChild(beaconUnworkedstationsText);
@@ -819,10 +898,62 @@ public class ChatPreferences {
Element beaconUnworkedstationsPrefix = doc.createElement("beaconUnworkedstationsPrefix");
beaconUnworkedstationsPrefix.setTextContent(this.getUnwkd_beaconUnworkedstationsPrefix());
beaconUnworkedstations.appendChild(beaconUnworkedstationsPrefix);
-
-
- writeXml(doc, System.out);
+ /****************************
+ * GUI BEHAVIOUR
+ ***************************/
+
+ /**
+ * window sizes
+ */
+ Element guiOptions = doc.createElement("guiOptions");
+ rootElement.appendChild(guiOptions);
+
+ Element GUIscn_ChatwindowMainSceneSizeHW = doc.createElement("GUIscn_ChatwindowMainSceneSizeHW");
+ GUIscn_ChatwindowMainSceneSizeHW.setTextContent(this.getGUIscn_ChatwindowMainSceneSizeHW()[0]+";"+this.getGUIscn_ChatwindowMainSceneSizeHW()[1]);
+ guiOptions.appendChild(GUIscn_ChatwindowMainSceneSizeHW);
+
+ Element GUIclusterAndQSOMonStage_SceneSizeHW = doc.createElement("GUIclusterAndQSOMonStage_SceneSizeHW");
+ GUIclusterAndQSOMonStage_SceneSizeHW.setTextContent(this.getGUIclusterAndQSOMonStage_SceneSizeHW()[0]+";"+this.getGUIclusterAndQSOMonStage_SceneSizeHW()[1]);
+ guiOptions.appendChild(GUIclusterAndQSOMonStage_SceneSizeHW);
+
+ Element GUIstage_updateStage_SceneSizeHW = doc.createElement("GUIstage_updateStage_SceneSizeHW");
+ GUIstage_updateStage_SceneSizeHW.setTextContent(this.getGUIstage_updateStage_SceneSizeHW()[0]+";"+this.getGUIstage_updateStage_SceneSizeHW()[1]);
+ guiOptions.appendChild(GUIstage_updateStage_SceneSizeHW);
+
+ Element GUIsettingsStageSceneSizeHW = doc.createElement("GUIsettingsStageSceneSizeHW");
+ GUIsettingsStageSceneSizeHW.setTextContent(this.getGUIsettingsStageSceneSizeHW()[0]+";"+this.getGUIsettingsStageSceneSizeHW()[1]);
+ guiOptions.appendChild(GUIsettingsStageSceneSizeHW);
+
+ /************************************
+ * save splitpanel divider positions
+ ************************************/
+
+ Element GUIselectedCallSignSplitPane_dividerposition = doc.createElement("GUIselectedCallSignSplitPane_dividerposition");
+ GUIselectedCallSignSplitPane_dividerposition.setTextContent(doubleArrayToCSVString(getGUIselectedCallSignSplitPane_dividerposition()));
+ guiOptions.appendChild(GUIselectedCallSignSplitPane_dividerposition);
+
+ Element GUImainWindowLeftSplitPane_dividerposition = doc.createElement("GUImainWindowLeftSplitPane_dividerposition");
+ GUImainWindowLeftSplitPane_dividerposition.setTextContent(doubleArrayToCSVString(getGUImainWindowLeftSplitPane_dividerposition()));
+ guiOptions.appendChild(GUImainWindowLeftSplitPane_dividerposition);
+
+ Element GUImessageSectionSplitpane_dividerposition = doc.createElement("GUImessageSectionSplitpane_dividerposition");
+ GUImessageSectionSplitpane_dividerposition.setTextContent(doubleArrayToCSVString(getGUImessageSectionSplitpane_dividerposition()));
+ guiOptions.appendChild(GUImessageSectionSplitpane_dividerposition);
+
+ Element GUImainWindowRightSplitPane_dividerposition = doc.createElement("GUImainWindowRightSplitPane_dividerposition");
+ GUImainWindowRightSplitPane_dividerposition.setTextContent(doubleArrayToCSVString(getGUImainWindowRightSplitPane_dividerposition()));
+ guiOptions.appendChild(GUImainWindowRightSplitPane_dividerposition);
+
+ Element GUIpnl_directedMSGWin_dividerpositionDefault = doc.createElement("GUIpnl_directedMSGWin_dividerpositionDefault");
+ GUIpnl_directedMSGWin_dividerpositionDefault.setTextContent(doubleArrayToCSVString(getGUIpnl_directedMSGWin_dividerpositionDefault()));
+ guiOptions.appendChild(GUIpnl_directedMSGWin_dividerpositionDefault);
+
+ /****************************************************************************************
+ ****************************** now write this XML! *************************************
+ ****************************************************************************************/
+
+ writeXml(doc, System.out);
// write dom document to a file
try (FileOutputStream output =
@@ -887,6 +1018,7 @@ public class ChatPreferences {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(xmlConfigFile);
+
/**
* case station settings
*
@@ -1417,6 +1549,105 @@ public class ChatPreferences {
+ unwkd_unworkedStnRequesterBeaconsText);
}
+
+ /***********************************************
+ *
+ * case read GUI options
+ *
+ ***********************************************/
+ list = doc.getElementsByTagName("guiOptions");
+ if (list.getLength() != 0) {
+
+ for (int temp = 0; temp < list.getLength(); temp++) {
+
+ Node node = list.item(temp);
+
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+
+ Element element = (Element) node;
+
+ try{
+
+ String GUIscn_ChatwindowMainSceneSizeHW = element.getElementsByTagName("GUIscn_ChatwindowMainSceneSizeHW").item(0)
+ .getTextContent();
+
+ for (int i = 0; i < (GUIscn_ChatwindowMainSceneSizeHW.split(";").length); i++) {
+ this.getGUIscn_ChatwindowMainSceneSizeHW()[i] =
+ Double.parseDouble(GUIscn_ChatwindowMainSceneSizeHW.split(";")[i]);
+ }
+
+ System.out.println(
+ "[ChatPreferences, info]: Set the GUIscn_ChatwindowMainSceneSizeHW size to " + GUIclusterAndQSOMonStage_SceneSizeHW);
+
+
+ String GUIclusterAndQSOMonStage_SceneSizeHW = element.getElementsByTagName("GUIclusterAndQSOMonStage_SceneSizeHW").item(0)
+ .getTextContent();
+
+ for (int i = 0; i < (GUIclusterAndQSOMonStage_SceneSizeHW.split(";").length); i++) {
+ this.getGUIclusterAndQSOMonStage_SceneSizeHW()[i] =
+ Double.parseDouble(GUIclusterAndQSOMonStage_SceneSizeHW.split(";")[i]);
+ }
+
+ String GUIselectedCallSignSplitPane_dividerposition = element.getElementsByTagName("GUIselectedCallSignSplitPane_dividerposition").item(0)
+ .getTextContent();
+ this.setGUIselectedCallSignSplitPane_dividerposition(csvStringToDoubleArray(GUIselectedCallSignSplitPane_dividerposition));
+
+ String GUImainWindowLeftSplitPane_dividerposition = element.getElementsByTagName("GUImainWindowLeftSplitPane_dividerposition").item(0)
+ .getTextContent();
+ this.setGUImainWindowLeftSplitPane_dividerposition(csvStringToDoubleArray(GUImainWindowLeftSplitPane_dividerposition));
+
+ String GUImessageSectionSplitpane_dividerposition = element.getElementsByTagName("GUImessageSectionSplitpane_dividerposition").item(0)
+ .getTextContent();
+ this.setGUImessageSectionSplitpane_dividerposition(csvStringToDoubleArray(GUImessageSectionSplitpane_dividerposition));
+
+ String GUImainWindowRightSplitPane_dividerposition = element.getElementsByTagName("GUImainWindowRightSplitPane_dividerposition").item(0)
+ .getTextContent();
+ this.setGUImainWindowRightSplitPane_dividerposition(csvStringToDoubleArray(GUImainWindowRightSplitPane_dividerposition));
+
+ String GUIpnl_directedMSGWin_dividerpositionDefault = element.getElementsByTagName("GUIpnl_directedMSGWin_dividerpositionDefault").item(0)
+ .getTextContent();
+ this.setGUIpnl_directedMSGWin_dividerpositionDefault(csvStringToDoubleArray(GUIpnl_directedMSGWin_dividerpositionDefault));
+
+
+
+
+// System.out.println(
+// "[ChatPreferences, info]: Set the GUIclusterAndQSOMonStage_SceneSizeHW size to " + GUIclusterAndQSOMonStage_SceneSizeHW);
+
+ }
+
+
+
+
+
+ catch (NullPointerException tooOldConfigFileOrFormatError) {
+ /**
+ * In program version 1.2 there had not been these settings in the xml and not founding em
+ * would cause an exception and dumb values for the preferences. So we have to initialize
+ * these variables and later write a proper configfile which can be used correctly then.
+ *
+ * So THESE ARE DEFULTS
+ */
+
+ tooOldConfigFileOrFormatError.printStackTrace();
+ GUIscn_ChatwindowMainSceneSizeHW = new double[] {768, 1234};
+ GUIclusterAndQSOMonStage_SceneSizeHW = new double[] {700, 500};
+ GUIstage_updateStage_SceneSizeHW = new double[] {640, 480};
+ GUIsettingsStageSceneSizeHW = new double[] {720, 768};
+
+ GUIselectedCallSignSplitPane_dividerposition = new double[]{0.9};
+ setGUImainWindowLeftSplitPane_dividerposition(new double[]{0.7});
+ GUImessageSectionSplitpane_dividerposition = new double[]{0.5};
+ GUImainWindowRightSplitPane_dividerposition = new double[]{0.8};
+ GUIpnl_directedMSGWin_dividerpositionDefault = new double[]{0.8};
+// GUImainWindowLeftSplitPane_dividerposition
+ }
+ }
+ }
+ }
+
+
+
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
System.out.println(e.getCause());
@@ -1427,6 +1658,41 @@ public class ChatPreferences {
}
+ /**
+ *
+ * @return double array with separated values for each doublevalue, seperated by ";", empty array if none
+ */
+ private double [] csvStringToDoubleArray(String csvStringWithDoubles){
+
+ String separator = ";";
+ double[] result = new double[csvStringWithDoubles.split(separator).length];
+
+ for (int i = 0; i < (csvStringWithDoubles.split(separator).length); i++) {
+ result[i] =
+ Double.parseDouble(csvStringWithDoubles.split(separator)[i]);
+// System.out.println("EXTRACTED " + result[i]);
+ }
+
+ return result;
+ }
+
+ private String doubleArrayToCSVString(double[] doubleArrayToCSVConvert){
+
+ String separator = ";";
+ String result = "";
+
+ for (int i = 0; i < (doubleArrayToCSVConvert.length); i++) {
+ result += doubleArrayToCSVConvert[i];
+
+ if (i+1
+ * - at the userlist
+ * - at the CQ message list (senders callsign)
+ * - at the PM message list (senders callsign)
+ * Method gets its information source out of the original chatmember object of the userlist, not a copy
+ *
+ * @param selectedCallSignInfoStageChatMember
+ * @return
+ */
private BorderPane generateFurtherInfoAbtSelectedCallsignBP(ChatMember selectedCallSignInfoStageChatMember) {
+
selectedCallSignInfoBorderPane = new BorderPane();
SplitPane selectedCallSignSplitPane = new SplitPane();
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
- selectedCallSignSplitPane.setDividerPositions(0.9);
+ selectedCallSignSplitPane.setDividerPositions(chatcontroller.getChatPreferences().getGUIselectedCallSignSplitPane_dividerposition());
+
TableView initFurtherInfoAbtCallsignMSGTable = initFurtherInfoAbtCallsignMSGTable();
@@ -127,14 +138,9 @@ public class Kst4ContestApplication extends Application {
selectedCallSignDownerSiteGridPane.add(new Label("Last activity: " + new Utils4KST().time_convertEpochToReadable(selectedCallSignInfoStageChatMember.getActivityTimeLastInEpoch()+"")), 0,2,1,1);
selectedCallSignDownerSiteGridPane.add(new Label(("(" + Utils4KST.time_getSecondsBetweenEpochAndNow(selectedCallSignInfoStageChatMember.getActivityTimeLastInEpoch()+"") /60%60) +" min ago)"), 0,3,1,1);
-// selectedCallSignDownerSiteGridPane.add(createArrow(selectedCallSignInfoStageChatMember.getQTFdirection()),1,2,2,2); //moved to as button
-
/**
* users qrv info setting will follow here
*/
-// CheckBox chkbx_tagMemberNotQRVFurtherInfoPane = new CheckBox("tag NOT QRV ALL");
-// chkbx_tagMemberNotQRVFurtherInfoPane.setSelected(selectedCallSignInfoStageChatMember.isQrvAny());
-// chkbx_tagMemberNotQRVFurtherInfoPanefurtherInfoPnl_chkbx_notQRV144
CheckBox furtherInfoPnl_chkbx_notQRV144 = new CheckBox("tag not qrv 144");
furtherInfoPnl_chkbx_notQRV144.setSelected(!selectedCallSignInfoStageChatMember.isQrv144());
@@ -149,6 +155,12 @@ public class Kst4ContestApplication extends Application {
try {
chatcontroller.getDbHandler().updateNotQRVInfoOnChatMember(selectedCallSignInfoStageChatMember);
+
+// double[] deviderPos = selectedCallSignSplitPane.getDividerPositions();
+// for (int i = 0; i() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number oldDividerPos, Number newDividerPosition) {
+// System.out.println("<<<<<<<<<<<<<<<<<<< devider " + selectedCallSignSplitPane.getDividers().indexOf(divider) + " position change, new position: " + newDividerPosition + " // size dev: " + selectedCallSignSplitPane.getDividers().size());
+ chatcontroller.getChatPreferences().getGUIselectedCallSignSplitPane_dividerposition()[selectedCallSignSplitPane.getDividers().indexOf(divider)] = newDividerPosition.doubleValue();
+ }
+ });
+
+ }
+
selectedCallSignInfoBorderPane.setCenter(selectedCallSignSplitPane);
@@ -822,7 +850,7 @@ public class Kst4ContestApplication extends Application {
return wkd;
}
});
- wkdAny_subcol.prefWidthProperty().bind(tbl_chatMemberTable.widthProperty().divide(28));
+ wkdAny_subcol.prefWidthProperty().bind(tbl_chatMemberTable.widthProperty().divide(14));
TableColumn vhfCol_subcol = new TableColumn("144");
vhfCol_subcol
@@ -1103,7 +1131,7 @@ public class Kst4ContestApplication extends Application {
Thread.currentThread().setName("chatMemberTableSortTimer");
System.out.println("[KST4CApp, Info:] Chatmemberlist-Filterlist predicates size: " + chatcontroller.getLst_chatMemberListFilterPredicates().size());
-//
+// System.out.println("[KST4CApp, Info:] Deviderpos: " + spl);
// for (int i = 0; i < chatcontroller.getLst_chatMemberListFilterPredicates().size(); i++) {
//
// Predicate test = chatcontroller.getLst_chatMemberListFilterPredicates().get(i);
@@ -1216,8 +1244,7 @@ public class Kst4ContestApplication extends Application {
* clickhandler for the contextmenu out of a string array (each menuitam will be
* created out of exact one array-entry). These are initialized by the
* chatpreferences object out of the config-xml
- *
- * @param menuTexts
+ *
* @return
*/
private ContextMenu initChatMemberTableContextMenu(ObservableList contextMenuEntries) { // new mechanic
@@ -2788,7 +2815,7 @@ public class Kst4ContestApplication extends Application {
FlowPane flwPane_textSnippets;
Stage clusterAndQSOMonStage;
- Stage stage_selectedCallSignInfoStage;
+// Stage stage_selectedCallSignInfoStage;
ChatMember selectedCallSignInfoStageChatMember;
BorderPane selectedCallSignInfoBorderPane;
@@ -2809,7 +2836,7 @@ public class Kst4ContestApplication extends Application {
* For identification of the button in the dom and make it functional, the
* init-value have to be "MYQRG"!
*
- * @param buttonText
+ *
* @return
*/
private Node[] buttonFactory(ObservableList shortcuts) {
@@ -3283,9 +3310,24 @@ public class Kst4ContestApplication extends Application {
BorderPane bPaneChatWindow = new BorderPane();
- Scene scene = new Scene(bPaneChatWindow, 1024, 768);
+ Scene scn_ChatwindowMainScene = new Scene(bPaneChatWindow, chatcontroller.getChatPreferences().getGUIscn_ChatwindowMainSceneSizeHW()[1], chatcontroller.getChatPreferences().getGUIscn_ChatwindowMainSceneSizeHW()[0]);
- scene.setOnKeyPressed(new EventHandler() {
+ //add listeners for size changes to restore after startup
+ scn_ChatwindowMainScene.widthProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number number, Number newWidthValue) {
+ chatcontroller.getChatPreferences().getGUIscn_ChatwindowMainSceneSizeHW()[1] = newWidthValue.doubleValue();
+ }
+ });
+
+ scn_ChatwindowMainScene.heightProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number number, Number newHeightValue) {
+ chatcontroller.getChatPreferences().getGUIscn_ChatwindowMainSceneSizeHW()[0] = newHeightValue.doubleValue();
+ }
+ });
+
+ scn_ChatwindowMainScene.setOnKeyPressed(new EventHandler() {
KeyCombination keyComboSTRGplus1 = new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.CONTROL_DOWN);
KeyCombination keyComboSTRGplus2 = new KeyCodeCombination(KeyCode.DIGIT2, KeyCombination.CONTROL_DOWN);
KeyCombination keyComboSTRGplus3 = new KeyCodeCombination(KeyCode.DIGIT3, KeyCombination.CONTROL_DOWN);
@@ -3721,7 +3763,24 @@ public class Kst4ContestApplication extends Application {
messageSectionSplitpane.getItems().addAll(privateMessageTable, flwPane_textSnippets, textInputFlowPane,
tbl_generalMessageTable);
- messageSectionSplitpane.setDividerPositions(0.9);
+ messageSectionSplitpane.setDividerPositions(chatcontroller.getChatPreferences().getGUImessageSectionSplitpane_dividerposition());
+
+ //first initialize how much divider positions we need...
+// chatcontroller.getChatPreferences().setGUImessageSectionSplitpane_dividerposition(chatcontroller.getChatPreferences().getGUImessageSectionSplitpane_dividerposition());
+ /**
+ * Then add change listeners to the dividers to save their state
+ */
+ for (SplitPane.Divider divider : messageSectionSplitpane.getDividers()) {
+ divider.positionProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number oldDividerPos, Number newDividerPosition) {
+ System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<< devider>>>>>> " + messageSectionSplitpane.getDividers().indexOf(divider) + " position change, new position: " + newDividerPosition + " // size dev: " + messageSectionSplitpane.getDividers().size());
+ chatcontroller.getChatPreferences().getGUImessageSectionSplitpane_dividerposition()[messageSectionSplitpane.getDividers().indexOf(divider)] = newDividerPosition.doubleValue();
+ }
+ });
+
+ }
+
//Changed to add contextmenu to cq message table
// messageSectionSplitpane.getItems().addAll(privateMessageTable, flwPane_textSnippets, textInputFlowPane,
// initChatGeneralMSGTable());
@@ -3798,7 +3857,7 @@ public class Kst4ContestApplication extends Application {
SplitPane mainWindowRightSplitPane = new SplitPane();
mainWindowRightSplitPane.setOrientation(Orientation.VERTICAL);
- mainWindowRightSplitPane.setDividerPositions(0.8);
+ mainWindowRightSplitPane.setDividerPositions(chatcontroller.getChatPreferences().getGUImainWindowRightSplitPane_dividerposition());
BorderPane chatMemberTableBorderPane = new BorderPane();
chatMemberTableBorderPane.setCenter(tbl_chatMember);
@@ -3817,8 +3876,11 @@ public class Kst4ContestApplication extends Application {
"-fx-border-radius: 1;" +
"-fx-border-color: lightgreen;");
- HBox chatMemberTableFilterQRBHBox = new HBox();
+// HBox chatMemberTableFilterQRBHBox = new HBox();
+ FlowPane chatMemberTableFilterQRBHBox = new FlowPane();
chatMemberTableFilterQRBHBox.setAlignment(Pos.CENTER_LEFT);
+ chatMemberTableFilterQRBHBox.setHgap(2);
+ chatMemberTableFilterQRBHBox.setPrefWidth(210);
TextField chatMemberTableFilterMaxQrbTF = new TextField(chatcontroller.getChatPreferences().getStn_maxQRBDefault() + "");
ToggleButton tglBtnQRBEnable = new ToggleButton("Show only QRB [km] <= ");
@@ -3863,8 +3925,11 @@ public class Kst4ContestApplication extends Application {
chatMemberTableFilterQTFAndQRBHbox.getChildren().add(chatMemberTableFilterQRBHBox);
- HBox chatMemberTableFilterQTFHBox = new HBox();
+// HBox chatMemberTableFilterQTFHBox = new HBox();
+ FlowPane chatMemberTableFilterQTFHBox = new FlowPane();
chatMemberTableFilterQTFHBox.setAlignment(Pos.CENTER_LEFT);
+ chatMemberTableFilterQTFHBox.setPrefWidth(490);
+ chatMemberTableFilterQTFHBox.setHgap(2);
CheckBox chatMemberTableFilterQtfEnableChkbx = new CheckBox("Show only QTF:");
TextField chatMemberTableFilterQtfTF = new TextField(chatcontroller.getChatPreferences().getStn_qtfDefault()+"");
@@ -3977,8 +4042,8 @@ public class Kst4ContestApplication extends Application {
}
});
- chatMemberTableFilterQTFHBox.setSpacing(5);
- chatMemberTableFilterQTFHBox.getChildren().addAll(chatMemberTableFilterQtfTF, new Label("deg, " + chatcontroller.getChatPreferences().getStn_antennaBeamWidthDeg() + " beamwidth"), qtfNorth, qtfNorthEast, qtfEast, qtfSouthEast, qtfSouth, qtfSouthWest, qtfWest, qtfNorthWest);
+// chatMemberTableFilterQTFHBox.setSpacing(5);
+ chatMemberTableFilterQTFHBox.getChildren().addAll(chatMemberTableFilterQtfTF, new Label("deg +/- " + chatcontroller.getChatPreferences().getStn_antennaBeamWidthDeg() + ""), qtfNorth, qtfNorthEast, qtfEast, qtfSouthEast, qtfSouth, qtfSouthWest, qtfWest, qtfNorthWest);
chatMemberTableFilterQTFAndQRBHbox.getChildren().add(chatMemberTableFilterQTFHBox);
chatMemberTableFilterVBoxForAllFilters.getChildren().add(chatMemberTableFilterQTFAndQRBHbox);
@@ -4316,9 +4381,11 @@ public class Kst4ContestApplication extends Application {
chatMemberTableFilterTextFieldBox.getChildren().addAll(chatMemberTableFilterTextField);
- HBox chatMemberTableFilterTextFieldAndWorkedBandsHbx = new HBox();
+// HBox chatMemberTableFilterTextFieldAndWorkedBandsHbx = new HBox();
+ FlowPane chatMemberTableFilterTextFieldAndWorkedBandsHbx = new FlowPane();
chatMemberTableFilterTextFieldAndWorkedBandsHbx.getChildren().addAll(chatMemberTableFilterTextFieldBox, chatMemberTableFilterWorkedBandFiltersHbx);
- chatMemberTableFilterTextFieldAndWorkedBandsHbx.setSpacing(5);
+// chatMemberTableFilterTextFieldAndWorkedBandsHbx.setSpacing(5);
+ chatMemberTableFilterTextFieldAndWorkedBandsHbx.setHgap(2);
chatMemberTableFilterVBoxForAllFilters.getChildren().add(chatMemberTableFilterTextFieldAndWorkedBandsHbx);
@@ -4335,7 +4402,24 @@ public class Kst4ContestApplication extends Application {
mainWindowLeftSplitPane.getItems().addAll(messageSectionSplitpane, mainWindowRightSplitPane);
- mainWindowLeftSplitPane.setDividerPositions(0.8);
+ mainWindowLeftSplitPane.setDividerPositions(chatcontroller.getChatPreferences().getGUImainWindowLeftSplitPane_dividerposition());
+
+ //first initialize how much divider positions we need...
+// chatcontroller.getChatPreferences().setGUImainWindowLeftSplitPane_dividerposition(new double[mainWindowLeftSplitPane.getDividers().size()]);
+// chatcontroller.getChatPreferences().getGUImainWindowLeftSplitPane_dividerposition()[0] = 0.2;
+ /**
+ * here will follow the Splitpane divider listener to save the user made UI changes, should been made at the very end of all splitpane operations
+ */
+ for (SplitPane.Divider divider : mainWindowLeftSplitPane.getDividers()) {
+ divider.positionProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number oldDividerPos, Number newDividerPosition) {
+ System.out.println("<<<<<<<<<<<<<<<<<<< mainWindowLeftSplitPanedevider " + mainWindowLeftSplitPane.getDividers().indexOf(divider) + " position change, new position: " + newDividerPosition + " // size dev: " + mainWindowLeftSplitPane.getDividers().size());
+ chatcontroller.getChatPreferences().getGUImainWindowLeftSplitPane_dividerposition()[mainWindowLeftSplitPane.getDividers().indexOf(divider)] = newDividerPosition.doubleValue();
+ }
+ });
+
+ }
/**
* initializing the furter infos of a callsign part of the right splitpane
@@ -4359,7 +4443,25 @@ public class Kst4ContestApplication extends Application {
mainWindowRightSplitPane.getItems().add(selectedCallSignFurtherInfoPane);
- primaryStage.setScene(scene);
+ //first initialize how much divider positions we need...
+// chatcontroller.getChatPreferences().setGUImainWindowRightSplitPane_dividerposition(new double[mainWindowRightSplitPane.getDividers().size()]);
+
+ /**
+ * here will follow the Splitpane divider listener to save the user made UI changes, should been made at the very end of all splitpane operations
+ */
+
+ for (SplitPane.Divider divider : mainWindowRightSplitPane.getDividers()) {
+ divider.positionProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number oldDividerPos, Number newDividerPosition) {
+ System.out.println("<<<<<<<<<<<<<<<<<<<>>>>>> devider mainwindowRIGHTsplitpane " + mainWindowRightSplitPane.getDividers().indexOf(divider) + " position change, new position: " + newDividerPosition + " // size dev: " + mainWindowRightSplitPane.getDividers().size());
+ chatcontroller.getChatPreferences().getGUImainWindowRightSplitPane_dividerposition()[mainWindowRightSplitPane.getDividers().indexOf(divider)] = newDividerPosition.doubleValue();
+ }
+ });
+
+ }
+
+ primaryStage.setScene(scn_ChatwindowMainScene);
primaryStage.show();
@@ -4373,12 +4475,6 @@ public class Kst4ContestApplication extends Application {
*/
- stage_selectedCallSignInfoStage = new Stage();
-// stage_selectedCallSignInfoStage.hide();
-//
-// stage_selectedCallSignInfoStage.setScene(new Scene(new Label("Further info on selected Callsign"), 500, 400));
-// stage_selectedCallSignInfoStage.setAlwaysOnTop(true);
-// stage_selectedCallSignInfoStage.show();
/**
* end Window selected callsign information
@@ -4392,10 +4488,49 @@ public class Kst4ContestApplication extends Application {
clusterAndQSOMonStage.setTitle("Cluster & QSO of the other");
SplitPane pnl_directedMSGWin = new SplitPane();
pnl_directedMSGWin.setOrientation(Orientation.VERTICAL);
-
+ pnl_directedMSGWin.setDividerPositions(chatcontroller.getChatPreferences().getGUIpnl_directedMSGWin_dividerpositionDefault());
pnl_directedMSGWin.getItems().addAll(initDXClusterTable(), initChatToOtherMSGTable());
- clusterAndQSOMonStage.setScene(new Scene(pnl_directedMSGWin, 700, 500));
+
+
+ //first initialize how much divider positions we need...
+// chatcontroller.getChatPreferences().setGUIpnl_directedMSGWin_dividerpositionDefault(new double[pnl_directedMSGWin.getDividers().size()]);
+
+ /**
+ * here will follow the Splitpane divider listener to save the user made UI changes, should been made at the very end of all splitpane operations
+ */
+
+ for (SplitPane.Divider divider : pnl_directedMSGWin.getDividers()) {
+ divider.positionProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number oldDividerPos, Number newDividerPosition) {
+ System.out.println("<<<<<<<<<<<<<<<<<<<|||||||||||||||||||| devider " + pnl_directedMSGWin.getDividers().indexOf(divider) + " position change, new position: " + newDividerPosition + " // size dev: " + pnl_directedMSGWin.getDividers().size());
+ chatcontroller.getChatPreferences().getGUIpnl_directedMSGWin_dividerpositionDefault()[pnl_directedMSGWin.getDividers().indexOf(divider)] = newDividerPosition.doubleValue();
+ }
+ });
+
+ }
+
+
+ Scene clusterAndQSOMonScene = new Scene(pnl_directedMSGWin, chatcontroller.getChatPreferences().getGUIclusterAndQSOMonStage_SceneSizeHW()[0], chatcontroller.getChatPreferences().getGUIclusterAndQSOMonStage_SceneSizeHW()[1]);
+
+ clusterAndQSOMonScene.heightProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number number, Number newHeightValue) {
+ chatcontroller.getChatPreferences().getGUIclusterAndQSOMonStage_SceneSizeHW()[1] = newHeightValue.doubleValue();
+ }
+ });
+
+ clusterAndQSOMonScene.widthProperty().addListener(new ChangeListener() {
+ @Override
+ public void changed(ObservableValue extends Number> observableValue, Number number, Number newWidthValue) {
+ chatcontroller.getChatPreferences().getGUIclusterAndQSOMonStage_SceneSizeHW()[0] = newWidthValue.doubleValue();
+ }
+ });
+
+ clusterAndQSOMonStage.setScene(clusterAndQSOMonScene);
+
+
clusterAndQSOMonStage.show();
/**
@@ -4506,7 +4641,9 @@ public class Kst4ContestApplication extends Application {
treeView.setRoot(rootItem);
treeView.setShowRoot(false);
- stage_updateStage.setScene(new Scene(vbxUpdateWindow, 640, 480));
+ System.out.println("SRVR Version: " + chatcontroller.getUpdateInformation().getLatestVersionNumberOnServer() + " // installed versioasdn " + ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER);
+
+ stage_updateStage.setScene(new Scene(vbxUpdateWindow, chatcontroller.getChatPreferences().getGUIstage_updateStage_SceneSizeHW()[0], chatcontroller.getChatPreferences().getGUIstage_updateStage_SceneSizeHW()[1]));
if (chatcontroller.getUpdateInformation().getLatestVersionNumberOnServer() > ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER) {
stage_updateStage.show();
@@ -4637,7 +4774,7 @@ public class Kst4ContestApplication extends Application {
// labeledSeparator.setAlignment(Pos.CENTER);
TextField txtFldstn_antennaBeamWidthDeg = new TextField(this.chatcontroller.getChatPreferences().getStn_antennaBeamWidthDeg() + "");
-
+ txtFldstn_antennaBeamWidthDeg.setTooltip(new Tooltip("Your antenna beamwidth in DEG\n\nEnter correct values here due it´s used for path suggestions!!!"));
txtFldstn_antennaBeamWidthDeg.textProperty().addListener(new ChangeListener() {
@Override
@@ -5512,8 +5649,6 @@ public class Kst4ContestApplication extends Application {
// a.setContentText(chatcontroller.getChatPreferences().getProgramVersion());
a.show();
}
-
-
// System.out.println("DB reset via DBHandler needs to be implemented");
}
@@ -5722,7 +5857,7 @@ public class Kst4ContestApplication extends Application {
// optionsPanel.setAlignment(vbxButtons, Pos.CENTER);;
// VBox vBox = new VBox(tabPaneOptions);
- settingsStage.setScene(new Scene(optionsPanel, 720, 768));
+ settingsStage.setScene(new Scene(optionsPanel, chatcontroller.getChatPreferences().getGUIsettingsStageSceneSizeHW()[0], chatcontroller.getChatPreferences().getGUIsettingsStageSceneSizeHW()[1]));
// settingsStage.getScene().getWindow().addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, this::closeWindowEvent);