mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-08-04 09:25:20 +02:00
added pstrotator options and fixed some ui stuff
This commit is contained in:
@@ -164,11 +164,13 @@ public class ChatController implements ThreadStatusCallback, PstRotatorEventList
|
|||||||
|
|
||||||
|
|
||||||
public void initRotor() {
|
public void initRotor() {
|
||||||
// Beispiel: PSTRotator läuft lokal auf Port 12060
|
rotatorClient = new PstRotatorClient(
|
||||||
// Der Client wird automatisch auf 12061 hören.
|
chatPreferences.getStn_pstRotatorHost(),
|
||||||
rotatorClient = new PstRotatorClient("127.0.0.1", 12000, this, this); //TODO: IP anpassen, Port auch aus den prefs holen, default 12000
|
chatPreferences.getStn_pstRotatorPort(),
|
||||||
|
this,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
// Startet den Thread und das Polling
|
|
||||||
rotatorClient.start();
|
rotatorClient.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2193,7 +2195,11 @@ public class ChatController implements ThreadStatusCallback, PstRotatorEventList
|
|||||||
messageTXBus = new LinkedBlockingQueue<ChatMessage>();
|
messageTXBus = new LinkedBlockingQueue<ChatMessage>();
|
||||||
|
|
||||||
// socket = new Socket(hostname, port);//socket for the on4kst chat server
|
// socket = new Socket(hostname, port);//socket for the on4kst chat server
|
||||||
socket = new Socket(chatController.chatPreferences.getStn_on4kstServersDns(), port);//socket for the on4kst chat server
|
socket = new Socket(
|
||||||
|
chatPreferences.getStn_on4kstServersDns(),
|
||||||
|
chatPreferences.getStn_on4kstServersPort()
|
||||||
|
);//socket for the on4kst chat server
|
||||||
|
|
||||||
System.out.println("Connected to the chat server: " + socket.isConnected());
|
System.out.println("Connected to the chat server: " + socket.isConnected());
|
||||||
|
|
||||||
ByteBuffer buffer = ByteBuffer.allocate(1024);
|
ByteBuffer buffer = ByteBuffer.allocate(1024);
|
||||||
|
|||||||
@@ -159,6 +159,8 @@ public class ChatPreferences {
|
|||||||
int stn_on4kstServersPort = 23001;
|
int stn_on4kstServersPort = 23001;
|
||||||
|
|
||||||
boolean stn_pstRotatorEnabled = false;
|
boolean stn_pstRotatorEnabled = false;
|
||||||
|
String stn_pstRotatorHost = "127.0.0.1";
|
||||||
|
int stn_pstRotatorPort = 12000;
|
||||||
|
|
||||||
boolean stn_loginAFKState = false; //always start as here
|
boolean stn_loginAFKState = false; //always start as here
|
||||||
String stn_loginCallSign = "do5amf";
|
String stn_loginCallSign = "do5amf";
|
||||||
@@ -761,6 +763,30 @@ public class ChatPreferences {
|
|||||||
this.stn_pstRotatorEnabled = stn_pstRotatorEnabled;
|
this.stn_pstRotatorEnabled = stn_pstRotatorEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStn_pstRotatorHost() {
|
||||||
|
return stn_pstRotatorHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStn_pstRotatorHost(String stn_pstRotatorHost) {
|
||||||
|
if (stn_pstRotatorHost == null || stn_pstRotatorHost.isBlank()) {
|
||||||
|
this.stn_pstRotatorHost = "127.0.0.1";
|
||||||
|
} else {
|
||||||
|
this.stn_pstRotatorHost = stn_pstRotatorHost.trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStn_pstRotatorPort() {
|
||||||
|
return stn_pstRotatorPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStn_pstRotatorPort(int stn_pstRotatorPort) {
|
||||||
|
if (stn_pstRotatorPort < 1 || stn_pstRotatorPort > 65535) {
|
||||||
|
this.stn_pstRotatorPort = 12000;
|
||||||
|
} else {
|
||||||
|
this.stn_pstRotatorPort = stn_pstRotatorPort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public SimpleStringProperty getNotify_optionalFrequencyPrefix() {
|
public SimpleStringProperty getNotify_optionalFrequencyPrefix() {
|
||||||
return notify_optionalFrequencyPrefix;
|
return notify_optionalFrequencyPrefix;
|
||||||
}
|
}
|
||||||
@@ -1418,6 +1444,13 @@ public class ChatPreferences {
|
|||||||
stn_pstRotatorEnabled.setTextContent(this.stn_pstRotatorEnabled + "");
|
stn_pstRotatorEnabled.setTextContent(this.stn_pstRotatorEnabled + "");
|
||||||
station.appendChild(stn_pstRotatorEnabled);
|
station.appendChild(stn_pstRotatorEnabled);
|
||||||
|
|
||||||
|
Element stn_pstRotatorHost = doc.createElement("stn_pstRotatorHost");
|
||||||
|
stn_pstRotatorHost.setTextContent(this.stn_pstRotatorHost);
|
||||||
|
station.appendChild(stn_pstRotatorHost);
|
||||||
|
|
||||||
|
Element stn_pstRotatorPort = doc.createElement("stn_pstRotatorPort");
|
||||||
|
stn_pstRotatorPort.setTextContent(Integer.toString(this.stn_pstRotatorPort));
|
||||||
|
station.appendChild(stn_pstRotatorPort);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2092,6 +2125,22 @@ public class ChatPreferences {
|
|||||||
|
|
||||||
stn_pstRotatorEnabled = getBoolean(stationEl, stn_pstRotatorEnabled, "stn_pstRotatorEnabled");
|
stn_pstRotatorEnabled = getBoolean(stationEl, stn_pstRotatorEnabled, "stn_pstRotatorEnabled");
|
||||||
|
|
||||||
|
setStn_pstRotatorHost(
|
||||||
|
getText(
|
||||||
|
stationEl,
|
||||||
|
stn_pstRotatorHost,
|
||||||
|
"stn_pstRotatorHost"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
setStn_pstRotatorPort(
|
||||||
|
getInt(
|
||||||
|
stationEl,
|
||||||
|
stn_pstRotatorPort,
|
||||||
|
"stn_pstRotatorPort"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8658,27 +8658,114 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
|
|
||||||
HBox hbxDemDirectoryActions = new HBox(8.0, btnUseDefaultDemDirectory, btnImportDemTiles);
|
HBox hbxDemDirectoryActions = new HBox(8.0, btnUseDefaultDemDirectory, btnImportDemTiles);
|
||||||
|
|
||||||
Label lbl_station_pstRotatorEnabled = new Label("Enable PSTRotator interface (auto QTF):");
|
Label lbl_station_pstRotatorEnabled =
|
||||||
|
new Label("Enable PSTRotator interface (automatic QTF):");
|
||||||
|
|
||||||
|
TextField txtFld_station_pstRotatorHost = new TextField(
|
||||||
|
chatcontroller.getChatPreferences().getStn_pstRotatorHost()
|
||||||
|
);
|
||||||
|
txtFld_station_pstRotatorHost.setFocusTraversable(false);
|
||||||
|
|
||||||
|
TextField txtFld_station_pstRotatorPort = new TextField(
|
||||||
|
Integer.toString(
|
||||||
|
chatcontroller.getChatPreferences().getStn_pstRotatorPort()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
txtFld_station_pstRotatorPort.setFocusTraversable(false);
|
||||||
|
|
||||||
CheckBox chkBx_station_pstRotatorEnabled = new CheckBox();
|
CheckBox chkBx_station_pstRotatorEnabled = new CheckBox();
|
||||||
chkBx_station_pstRotatorEnabled.setSelected(chatcontroller.getChatPreferences().isStn_pstRotatorEnabled());
|
chkBx_station_pstRotatorEnabled.setSelected(
|
||||||
|
chatcontroller.getChatPreferences().isStn_pstRotatorEnabled()
|
||||||
|
);
|
||||||
chkBx_station_pstRotatorEnabled.setTooltip(new Tooltip(
|
chkBx_station_pstRotatorEnabled.setTooltip(new Tooltip(
|
||||||
"If disabled: no PSTRotator connection is started and antenna direction is ignored in priority scoring."
|
"When enabled, KST4Contest reads the antenna direction from PSTRotator.\n"
|
||||||
|
+ "The connection settings take effect on the next chat connection."
|
||||||
));
|
));
|
||||||
chkBx_station_pstRotatorEnabled.selectedProperty().addListener((obs, oldV, newV) -> {
|
|
||||||
chatcontroller.getChatPreferences().setStn_pstRotatorEnabled(newV);
|
Runnable updatePstRotatorFields = () -> {
|
||||||
if (newV) {
|
boolean disabled = !chkBx_station_pstRotatorEnabled.isSelected();
|
||||||
|
txtFld_station_pstRotatorHost.setDisable(disabled);
|
||||||
|
txtFld_station_pstRotatorPort.setDisable(disabled);
|
||||||
|
};
|
||||||
|
|
||||||
|
updatePstRotatorFields.run();
|
||||||
|
|
||||||
|
chkBx_station_pstRotatorEnabled.selectedProperty().addListener(
|
||||||
|
(observable, oldValue, newValue) -> {
|
||||||
|
chatcontroller.getChatPreferences().setStn_pstRotatorEnabled(newValue);
|
||||||
|
updatePstRotatorFields.run();
|
||||||
|
|
||||||
|
if (newValue) {
|
||||||
txt_myQTF.textProperty().bind(Bindings.createStringBinding(
|
txt_myQTF.textProperty().bind(Bindings.createStringBinding(
|
||||||
() -> Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()),
|
() -> Double.toString(
|
||||||
chatcontroller.getChatPreferences().getActualQTF()));
|
chatcontroller.getChatPreferences().getActualQTF().get()
|
||||||
txt_myQTF.setTooltip(new Tooltip("This is your current QTF, read out at PSTRotator"));
|
),
|
||||||
|
chatcontroller.getChatPreferences().getActualQTF()
|
||||||
|
));
|
||||||
|
txt_myQTF.setTooltip(
|
||||||
|
new Tooltip("Current QTF reported by PSTRotator")
|
||||||
|
);
|
||||||
txt_myQTF.setFocusTraversable(false);
|
txt_myQTF.setFocusTraversable(false);
|
||||||
} else {
|
} else {
|
||||||
txt_myQTF.textProperty().unbind();
|
txt_myQTF.textProperty().unbind();
|
||||||
txt_myQTF.setText(Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()));
|
txt_myQTF.setText(
|
||||||
txt_myQTF.setTooltip(new Tooltip("Enter your antenna heading (QTF) by hand - no rotator sync active"));
|
Double.toString(
|
||||||
|
chatcontroller.getChatPreferences().getActualQTF().get()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
txt_myQTF.setTooltip(
|
||||||
|
new Tooltip("Enter the current antenna direction manually")
|
||||||
|
);
|
||||||
txt_myQTF.setFocusTraversable(true);
|
txt_myQTF.setFocusTraversable(true);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
txtFld_station_pstRotatorHost.focusedProperty().addListener(
|
||||||
|
(observable, oldValue, newValue) -> {
|
||||||
|
if (!newValue) {
|
||||||
|
chatcontroller.getChatPreferences().setStn_pstRotatorHost(
|
||||||
|
txtFld_station_pstRotatorHost.getText()
|
||||||
|
);
|
||||||
|
txtFld_station_pstRotatorHost.setText(
|
||||||
|
chatcontroller.getChatPreferences().getStn_pstRotatorHost()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
txtFld_station_pstRotatorPort.focusedProperty().addListener(
|
||||||
|
(observable, oldValue, newValue) -> {
|
||||||
|
if (newValue) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int configuredPort = Integer.parseInt(
|
||||||
|
txtFld_station_pstRotatorPort.getText().trim()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (configuredPort < 1 || configuredPort > 65535) {
|
||||||
|
throw new NumberFormatException();
|
||||||
|
}
|
||||||
|
|
||||||
|
chatcontroller.getChatPreferences().setStn_pstRotatorPort(
|
||||||
|
configuredPort
|
||||||
|
);
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
showUserInputErrorWindow(
|
||||||
|
"\"" + txtFld_station_pstRotatorPort.getText()
|
||||||
|
+ "\" is not a valid UDP port. Enter a value between 1 and 65535."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
txtFld_station_pstRotatorPort.setText(
|
||||||
|
Integer.toString(
|
||||||
|
chatcontroller.getChatPreferences().getStn_pstRotatorPort()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
grdPnlStation.add(lblCallSign, 0, 0);
|
grdPnlStation.add(lblCallSign, 0, 0);
|
||||||
@@ -8722,6 +8809,11 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
grdPnlStation.add(lbl_station_pstRotatorEnabled, 0, 12);
|
grdPnlStation.add(lbl_station_pstRotatorEnabled, 0, 12);
|
||||||
grdPnlStation.add(chkBx_station_pstRotatorEnabled, 1, 12);
|
grdPnlStation.add(chkBx_station_pstRotatorEnabled, 1, 12);
|
||||||
|
|
||||||
|
grdPnlStation.add(new Label("PSTRotator host:"), 0, 13);
|
||||||
|
grdPnlStation.add(txtFld_station_pstRotatorHost, 1, 13);
|
||||||
|
|
||||||
|
grdPnlStation.add(new Label("PSTRotator UDP port:"), 0, 14);
|
||||||
|
grdPnlStation.add(txtFld_station_pstRotatorPort, 1, 14);
|
||||||
|
|
||||||
|
|
||||||
VBox vbxStation = new VBox();
|
VBox vbxStation = new VBox();
|
||||||
@@ -8729,22 +8821,61 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
|
|
||||||
GridPane grdPanelServerHostName = new GridPane();
|
GridPane grdPanelServerHostName = new GridPane();
|
||||||
|
|
||||||
TextField stn_txtServerDNS = new TextField(this.chatcontroller.getChatPreferences().getStn_on4kstServersDns());
|
|
||||||
stn_txtServerDNS.focusedProperty().addListener(new ChangeListener<Boolean>() {
|
|
||||||
@Override
|
|
||||||
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean t1) {
|
|
||||||
|
|
||||||
System.out.println("[Main.java, Info]: Set the Server DNS property by hand to: "
|
|
||||||
+ stn_txtServerDNS.getText());
|
TextField stn_txtServerDNS = new TextField(
|
||||||
chatcontroller.getChatPreferences().setStn_on4kstServersDns(stn_txtServerDNS.getText());
|
this.chatcontroller.getChatPreferences().getStn_on4kstServersDns()
|
||||||
|
);
|
||||||
|
stn_txtServerDNS.setFocusTraversable(false);
|
||||||
|
stn_txtServerDNS.focusedProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
|
if (!newValue) {
|
||||||
|
chatcontroller.getChatPreferences().setStn_on4kstServersDns(
|
||||||
|
stn_txtServerDNS.getText().trim()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
grdPanelServerHostName.add(
|
||||||
grdPanelServerHostName.add(new Label("ON4KST Server [www.on4kst.org]: "), 0,1);
|
new Label("ON4KST server [www.on4kst.org]:"),
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
);
|
||||||
grdPanelServerHostName.add(stn_txtServerDNS, 1, 1);
|
grdPanelServerHostName.add(stn_txtServerDNS, 1, 1);
|
||||||
|
|
||||||
TextField stn_txtServerPort = new TextField(this.chatcontroller.getChatPreferences().getStn_on4kstServersPort()+"");
|
TextField stn_txtServerPort = new TextField(
|
||||||
|
Integer.toString(
|
||||||
|
this.chatcontroller.getChatPreferences().getStn_on4kstServersPort()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
stn_txtServerPort.setFocusTraversable(false);
|
||||||
|
stn_txtServerPort.focusedProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
|
if (newValue) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int configuredPort = Integer.parseInt(stn_txtServerPort.getText().trim());
|
||||||
|
|
||||||
|
if (configuredPort < 1 || configuredPort > 65535) {
|
||||||
|
throw new NumberFormatException();
|
||||||
|
}
|
||||||
|
|
||||||
|
chatcontroller.getChatPreferences().setStn_on4kstServersPort(
|
||||||
|
configuredPort
|
||||||
|
);
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
showUserInputErrorWindow(
|
||||||
|
"\"" + stn_txtServerPort.getText()
|
||||||
|
+ "\" is not a valid TCP port. Enter a value between 1 and 65535."
|
||||||
|
);
|
||||||
|
|
||||||
|
stn_txtServerPort.setText(
|
||||||
|
Integer.toString(
|
||||||
|
chatcontroller.getChatPreferences().getStn_on4kstServersPort()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
grdPanelServerHostName.add(new Label("Port [23001]:"), 2, 1);
|
grdPanelServerHostName.add(new Label("Port [23001]:"), 2, 1);
|
||||||
grdPanelServerHostName.add(stn_txtServerPort, 3, 1);
|
grdPanelServerHostName.add(stn_txtServerPort, 3, 1);
|
||||||
@@ -8753,8 +8884,8 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
|
|
||||||
vbxStation.getChildren().addAll(
|
vbxStation.getChildren().addAll(
|
||||||
generateLabeledSeparator(100, "Set your Login Credentials and Station Parameters here"), grdPnlStation);
|
generateLabeledSeparator(100, "Set your Login Credentials and Station Parameters here"), grdPnlStation);
|
||||||
vbxStation.getChildren().addAll(generateLabeledSeparator(50,
|
// vbxStation.getChildren().addAll(generateLabeledSeparator(50,
|
||||||
"! ! ! ! Don´t forget to reset the worked stations information before starting a new contest ! ! ! !"));
|
// "! ! ! ! Don´t forget to reset the worked stations information before starting a new contest ! ! ! !"));
|
||||||
|
|
||||||
|
|
||||||
CheckBox settings_chkbx_QRV144 = new CheckBox("My station uses 2m band");
|
CheckBox settings_chkbx_QRV144 = new CheckBox("My station uses 2m band");
|
||||||
|
|||||||
Reference in New Issue
Block a user