- reachable function: If a message-sender writes another to ask a sked, I assume that his antenna is directed to this receiver-chatter.

If this causes that the sender-antenna is directed most likely in my direction (with a difference of ~25deg), the callsign will appear fat and green in the userlist. As the sender often propagates his frequency at the chat (that means, we have saved this already), there is a high probability to work him at this short term opportunity
- mark new connected stations
- made some UI improvements (Behaviour of messagefilter-radiobutton corrected)
- removed UI bug, caused if you send a message to your onwn station....
This commit is contained in:
Marc Froehlich
2024-03-17 23:35:13 +01:00
parent eb04ad3f33
commit 136cf08f08
9 changed files with 1017 additions and 43 deletions

View File

@@ -644,14 +644,15 @@ category = new ChatCategory(2);
if (chatMessage.getReceiver().getCallSign().equals(getChatPreferences().getLoginCallSign())) {
return true; //messages addressed to you
}
if (chatMessage.getSender().getCallSign().equals(getChatPreferences().getLoginCallSign())) {
return true; //your own echo
if ((chatMessage.getSender().getCallSign().equals(getChatPreferences().getLoginCallSign())) && (!chatMessage.getReceiver().getCallSign().equals("ALL"))){
return true; //your own echo except texts to all (CQ)
}
String ignoreCaseString = chatMessage.getMessageText();
if (chatMessage.getMessageText().contains(chatPreferences.getLoginCallSign().toLowerCase()) || (chatMessage.getMessageText().contains(chatPreferences.getLoginCallSign().toUpperCase()))) {
return true; //if someone writes about you, you will get the mail, too!
if ((chatMessage.getMessageText().contains(chatPreferences.getLoginCallSign().toLowerCase()) || (chatMessage.getMessageText().contains(chatPreferences.getLoginCallSign().toUpperCase())))
&& (!chatMessage.getSender().getCallSign().equals(getChatPreferences().getLoginCallSign()))) {
return true; //if someone writes about you, you will get the mail, too, except you are the sender...!
}
else {

View File

@@ -12,6 +12,7 @@ import java.util.regex.Pattern;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.ObservableList;
import kst4contest.ApplicationConstants;
import kst4contest.locatorUtils.DirectionUtils;
import kst4contest.locatorUtils.Location;
import kst4contest.model.AirPlaneReflectionInfo;
import kst4contest.model.ChatMember;
@@ -475,7 +476,7 @@ public class MessageBusManagementThread extends Thread {
ChatMessage newMessage = new ChatMessage();
newMessage.setChatCategory(this.client.getCategory());
newMessage.setMessageGeneratedTime(splittedMessageLine[2]); // TODO: insert readable time?
newMessage.setMessageGeneratedTime(splittedMessageLine[2]);
if (splittedMessageLine[3].equals("SERVER")) {
ChatMember dummy = new ChatMember();
@@ -512,6 +513,11 @@ public class MessageBusManagementThread extends Thread {
// if someone sent a message without being in the userlist (cause
// on4kst missed implementing....), callsign will be marked
} else {
//that means, message was by own station, broadcasted to all other
ChatMember dummy = new ChatMember();
dummy.setCallSign("ALL");
newMessage.setReceiver(dummy);
AirPlaneReflectionInfo preventNullpointerExc = new AirPlaneReflectionInfo();
preventNullpointerExc.setAirPlanesReachableCntr(0);
sender.setAirPlaneReflectInfo(preventNullpointerExc);
@@ -526,7 +532,7 @@ public class MessageBusManagementThread extends Thread {
newMessage.setMessageText(splittedMessageLine[6]);
if (splittedMessageLine[7].equals("0")) {
// message is not directed to anyone, move it to the cq messages
// message is not directed to anyone, move it to the cq messages!
ChatMember dummy = new ChatMember();
dummy.setCallSign("ALL");
newMessage.setReceiver(dummy);
@@ -535,6 +541,7 @@ public class MessageBusManagementThread extends Thread {
this.client.getLst_globalChatMessageList().add(0, newMessage); // sdtout to all message-List //TODO: change, moved to globalmessagelist
} else {
//message is directed to another chatmember, process as such!
ChatMember receiver = new ChatMember();
receiver.setCallSign(splittedMessageLine[7]);
@@ -544,7 +551,7 @@ public class MessageBusManagementThread extends Thread {
if (index != -1) {
newMessage.setReceiver(this.client.getLst_chatMemberList().get(index));// -1: Member left Chat
// before...
} else {
} else { //found in active member list
if (receiver.getCallSign().equals(client.getChatPreferences().getLoginCallSign())) {
@@ -596,10 +603,11 @@ public class MessageBusManagementThread extends Thread {
System.out.println("message directed to me: " + newMessage.getReceiver().getCallSign() + ".");
} else if (newMessage.getSender().getCallSign().toUpperCase()
.equals(this.client.getChatPreferences().getLoginCallSign().toUpperCase())) {
/**
* message sent by me!
* message from me will appear in the PM window, too, with (>CALLSIGN) before
*/
.equals(this.client.getChatPreferences().getLoginCallSign().toUpperCase())) {
String originalMessage = newMessage.getMessageText();
newMessage
.setMessageText("(>" + newMessage.getReceiver().getCallSign() + ")" + originalMessage);
@@ -610,13 +618,24 @@ public class MessageBusManagementThread extends Thread {
// the "to me message list" with modified messagetext, added rxers callsign
} else {
//message sent to other user
// this.client.getLst_toOtherMessageList().add(0, newMessage); //TODO: change, moved to globalmessagelist, original
if (DirectionUtils.isInAngleAndRange(client.getChatPreferences().getLoginLocator(),
newMessage.getSender().getQra(),
newMessage.getReceiver().getQra(),
client.getChatPreferences().getStn_maxQRBDefault(),
client.getChatPreferences().getStn_antennaBeamWidthDeg())) {
newMessage.getSender().setInAngleAndRange(true);
} else {
newMessage.getSender().setInAngleAndRange(false);
}
this.client.getLst_globalChatMessageList().add(0, newMessage);
// System.out.println("MSGBS bgfx: tx call = " + newMessage.getSender().getCallSign() + " / rx call = " + newMessage.getReceiver().getCallSign());
}
} catch (NullPointerException referenceDeletedByUserLeftChatDuringMessageprocessing) {
System.out.println("MSGBS bgfx, <<<catched error>>>: referenced user left the chat during messageprocessing or message got before user entered chat message: ");
referenceDeletedByUserLeftChatDuringMessageprocessing.printStackTrace();
System.out.println("MSGBS bgfx, <<<catched error>>>: referenced user left the chat during messageprocessing or message got before user entered chat message: " + referenceDeletedByUserLeftChatDuringMessageprocessing.getStackTrace());
// referenceDeletedByUserLeftChatDuringMessageprocessing.printStackTrace();
}
// sdtout to me message-List
@@ -658,9 +677,10 @@ public class MessageBusManagementThread extends Thread {
/**
* CH|2|1664663240|IK7LMX|Gilberto QRO|0|pse ant to jn80|YT5W| Caused this line
*/
System.out.println("[MSGBUSMGT:] ERROR, Frequency for " + splittedMessageLine[3]
System.out.println("[MSGBUSMGT <<<catched ERROR>>>]:, Frequency for " + splittedMessageLine[3]
+ " is not settable, Callsign is not in the Member-list!");
//create dummy user to display the message but it wont be hit the user object
ChatMember newMember = new ChatMember();
newMember.setCallSign(splittedMessageLine[3]);
newMember.setName(splittedMessageLine[4]);

View File

@@ -2,6 +2,49 @@ package kst4contest.locatorUtils;
public class DirectionUtils {
/**
* Checks wheter a sked-sender writes to a sked-receiver and is in my direction due he beams to this receiver
*
* @param myLocator
* @param locatorOfSkedSender
* @param locatorOfSekdReceiver
* @param maxRangeKm
* @param hisAntennaBeamWidth
* @return
*/
public static boolean isInAngleAndRange(String myLocator, String locatorOfSkedSender, String locatorOfSekdReceiver, double maxRangeKm, double hisAntennaBeamWidth) {
Location myLocation = new Location(myLocator);
Location skedSenderLocation = new Location(locatorOfSkedSender);
Location skedReceiverLocation = new Location(locatorOfSekdReceiver);
double distanceFromMeToLocSender = new Location(myLocator).getDistanceKm(new Location(locatorOfSkedSender));
// Check if distance exceeds my setted maximum range
if (distanceFromMeToLocSender > maxRangeKm) {
System.out.println("too far, " + distanceFromMeToLocSender + " km");
return false;
}
//check bearing of sender to receiver
double bearingOfSekdSenderToSkedReceiver = skedSenderLocation.getBearing(skedReceiverLocation);
System.out.println("skedTX -> skedTX deg: " + bearingOfSekdSenderToSkedReceiver);
double bearingOfSekdSenderToMe = skedSenderLocation.getBearing(myLocation);
System.out.println("skedTX -> me deg: " + bearingOfSekdSenderToMe);
if (DirectionUtils.isAngleInRange(bearingOfSekdSenderToMe,bearingOfSekdSenderToSkedReceiver, hisAntennaBeamWidth)) {
//I may should get "/2" because of 50% of the 3dB opening angle if txer is directed to sender exactly
System.out.println("isinangleandrange!");
return true;
} else {
System.out.println("not in angle and reach");
return false;
}
}
/**
* Tests, if the angle (from me to) other station is in the range of the
* angle (qtf) in degrees where my antenna points to.

View File

@@ -0,0 +1,43 @@
package kst4contest.locatorUtils;
public class TestLocatorUtils {
public static void main(String[] args) {
// isInAngle(myLocation, location1, location2);
System.out.println(isInAngleAndRange("JN49FL", "jo43xm", "jo30sa", 900, 50));
System.out.println(isInAngleAndRange("JN49FL", "jo51ij", "jn39oc", 900, 50));
System.out.println(isInAngleAndRange("JN49FL", "jn39oc", "jo51ij", 1100, 50));
}
public static boolean isInAngleAndRange(String myLocator, String locatorOfSkedSender, String locatorOfSekdReceiver, double maxRangeKm, double hisAntennaBeamWidth) {
Location myLocation = new Location(myLocator);
Location skedSenderLocation = new Location(locatorOfSkedSender);
Location skedReceiverLocation = new Location(locatorOfSekdReceiver);
double distanceFromMeToLocSender = new Location(myLocator).getDistanceKm(new Location(locatorOfSkedSender));
// Check if distance exceeds my setted maximum range
if (distanceFromMeToLocSender > maxRangeKm) {
System.out.println("too far, " + distanceFromMeToLocSender + " km");
return false;
}
//check bearing of sender to receiver
double bearingOfSekdSenderToSkedReceiver = skedSenderLocation.getBearing(skedReceiverLocation);
System.out.println("skedTX -> skedRX deg: " + bearingOfSekdSenderToSkedReceiver);
double bearingOfSekdSenderToMe = skedSenderLocation.getBearing(myLocation);
System.out.println("skedTX -> me deg: " + bearingOfSekdSenderToMe);
if (DirectionUtils.isAngleInRange(bearingOfSekdSenderToSkedReceiver, bearingOfSekdSenderToMe, hisAntennaBeamWidth)) {
//may I should get "/2" because of 50% of the 3dB opening angle if txer is directed to sender exactly
return true;
} else return false;
}
}

View File

@@ -3,6 +3,25 @@ package kst4contest.model;
public class AirPlane {
String apCallSign, apSizeCategory;
String potencialDescriptionAsWord;
public String getPotencialDescriptionAsWord() {
if (this.getPotential() <=50) {
return "small AP";
} else if (this.getPotential() <=75 && this.getPotential() > 50) {
return "big AP";
} else if (this.getPotential() > 75) {
return "very big AP";
}
return potencialDescriptionAsWord;
}
public void setPotencialDescriptionAsWord(String potencialDescriptionAsWord) {
this.potencialDescriptionAsWord = potencialDescriptionAsWord;
}
int distanceKm, potential, arrivingDurationMinutes;
public String getApCallSign() {
return apCallSign;

View File

@@ -11,6 +11,9 @@ public class ChatMember {
String callSign;
String qra;
String name;
boolean isInAngleAndRange; //if he tries a sked in my dir, he is in range, will process that in the messages
// String frequency; // last known qrg of the station
StringProperty frequency = new SimpleStringProperty();
@@ -37,6 +40,14 @@ public class ChatMember {
boolean worked5600;
boolean worked10G;
public boolean isInAngleAndRange() {
return isInAngleAndRange;
}
public void setInAngleAndRange(boolean inAngleAndRange) {
isInAngleAndRange = inAngleAndRange;
}
public AirPlaneReflectionInfo getAirPlaneReflectInfo() {
return airPlaneReflectInfo;
}

View File

@@ -42,10 +42,7 @@ import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javafx.util.Callback;
import kst4contest.locatorUtils.DirectionUtils;
import kst4contest.model.ChatCategory;
import kst4contest.model.ChatMember;
import kst4contest.model.ChatMessage;
import kst4contest.model.ClusterMessage;
import kst4contest.model.*;
public class Kst4ContestApplication extends Application {
@@ -131,7 +128,7 @@ public class Kst4ContestApplication extends Application {
ToggleGroup selectedCallSignInfoFilterMessagesRadioGrp = new ToggleGroup();
RadioButton selectedCallSignFilterToMeMsgRB = new RadioButton("pm to me ");
selectedCallSignFilterToMeMsgRB.setSelected(true); //TODO: that behavior as default selection could be made preferencable
// selectedCallSignFilterToMeMsgRB.setSelected(true);
selectedCallSignFilterToMeMsgRB.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
RadioButton selectedCallSignFilterMsgToOtherRB = new RadioButton("pm to other");
selectedCallSignFilterMsgToOtherRB.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
@@ -175,13 +172,19 @@ public class Kst4ContestApplication extends Application {
@Override
public boolean test(ChatMessage chatMessage) {
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (!chatMessage.getReceiver().getCallSign().equals("ALL")) && (!chatMessage.getReceiver().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()))) {
return true;
} else if ((chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (!chatMessage.getReceiver().getCallSign().equals("ALL")) && (!chatMessage.getReceiver().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()))) {
return true;
try {
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (!chatMessage.getReceiver().getCallSign().equals("ALL")) && (!chatMessage.getReceiver().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()))) {
return true;
} else if ((chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (!chatMessage.getReceiver().getCallSign().equals("ALL")) && (!chatMessage.getReceiver().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()))) {
return true;
} else return false;
} catch (NullPointerException SenderNull) {
System.out.println("KST4ContestApp, <<<catched error>>>: Sender/receiver of the message is unknown, categorizing is impossible: " + SenderNull.getMessage());
return false;
}
else return false;
}
});
@@ -192,11 +195,19 @@ public class Kst4ContestApplication extends Application {
@Override
public boolean test(ChatMessage chatMessage) {
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (chatMessage.getReceiver().getCallSign().equals("ALL"))) {
return true;
try {
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (chatMessage.getReceiver().getCallSign().equals("ALL"))) {
return true;
}
else return false;
} catch (NullPointerException SenderNull) {
System.out.println("KST4ContestApp, <<<catched error>>>: Sender of the message is unknown, categorizing is impossible");
return false;
}
else return false;
}
});
@@ -208,12 +219,19 @@ public class Kst4ContestApplication extends Application {
@Override
public boolean test(ChatMessage chatMessage) {
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
return true;
}
try {
else return false;
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
return true;
}
else return false;
} catch (NullPointerException SenderNull) {
System.out.println("KST4ContestApp, <<<catched error>>>: Sender/receiver of the message is unknown, categorizing is impossible");
return false;
}
}
});
}
@@ -253,7 +271,9 @@ public class Kst4ContestApplication extends Application {
}
});
selectedCallSignNoFilterRB.setSelected(true); //TODO: that behavior as default selection could be made preferencable
return selectedCallSignInfoBorderPane;
}
private TableView<ChatMember> initChatMemberTable() {
@@ -283,11 +303,90 @@ public class Kst4ContestApplication extends Application {
public ObservableValue<String> call(CellDataFeatures<ChatMember, String> cellDataFeatures) {
SimpleStringProperty callsgn = new SimpleStringProperty();
callsgn.setValue(cellDataFeatures.getValue().getCallSign());
if (cellDataFeatures.getValue().getState() == 1) {
callsgn.setValue("(" + cellDataFeatures.getValue().getCallSign() + ")"); //away user
} else {
callsgn.setValue(cellDataFeatures.getValue().getCallSign());
}
// System.out.println(cellDataFeatures.getValue().getCallSign() + " / " + cellDataFeatures.getValue().getState()+ " <<<<<<<<<<<<<<<<<< state ");
return callsgn;
}
});
// asd hier weiter machen, für bold state
callSignCol.setCellFactory(new Callback<TableColumn<ChatMember, String>, TableCell<ChatMember, String>>() {
public TableCell call(TableColumn param) {
// param.getProperties().
return new TableCell<ChatMember, String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
int currentIndex = indexProperty().getValue() < 0 ? 0 : indexProperty().getValue();
// System.out.println(">>>>>>>>>>>>>>>> INDEXPROPERTY = " + indexProperty().getValue() + " " + getIndex() + " / " + item);
if (item != null) {
ChatMember chatMember = (ChatMember) param.getTableView().getItems().get(currentIndex);
// System.out.println(chatMember.getCallSign() + " / " + chatMember.getState() + " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<state ");
if (chatMember.getState() == 3 ) { //login in last 5 min
this.setStyle("-fx-font-weight: bold");
// System.out.println("FAAAAAAAAAAAAAAAAAAAAAAAT: " + chatMember.getCallSign());
} else if (chatMember.getState() == 0 ) { //here
this.setStyle("-fx-font-weight: normal");
} else if (chatMember.getState() == 2 ) { //here and relogin
this.setStyle("-fx-font-weight: normal");
} else if (chatMember.getState() == 1 ) { //away
// this.setStyle("-fx-font-weight: thin");
}
//TODO: Experimental, isinangleandrange function
if (chatMember.isInAngleAndRange()) {
this.setTextFill(Color.GREEN);
this.setStyle("-fx-font-weight: bold");
}
// else if (chatMember.getState() != 3){ //TODO: this double handling should be improved as may there can be new markers. Neccessarry to reset the colour to black
// this.setTextFill(Color.BLACK);
// this.setStyle("-fx-font-weight: normal");
// } else {
// this.setTextFill(Color.BLACK);
// }
// if ((Utils4KST.time_getSecondsBetweenEpochAndNow(chatMember.getActivityTimeLastInEpoch()+"") /60%60) < 2) {
// this.setTextFill(Color.ORANGE);
// }
}
// if (!isEmpty()) {
// this.setTextFill(Color.BLACK);
// // Get fancy and change color based on data
//
// if (item.contains("5")) {
// this.setTextFill(Color.BLUEVIOLET);
// } else if (item.contains("7") ) {
// this.setTextFill(Color.RED);
// } else if (item.contains("0") ) {
// this.setTextFill(Color.ORANGE);
// }
////
setText(item);
// }
}
};
}
});
callSignCol.setSortType(TableColumn.SortType.ASCENDING);
tbl_chatMemberTable.getSortOrder().add(callSignCol);
@@ -659,12 +758,12 @@ public class Kst4ContestApplication extends Application {
public void run() {
Thread.currentThread().setName("chatMemberTableSortTimer");
System.out.println("Predicates size: " + chatcontroller.getLst_chatMemberListFilterPredicates().size());
System.out.println("[KST4CApp, Info:] Chatmemberlist-Filterlist predicates size: " + chatcontroller.getLst_chatMemberListFilterPredicates().size());
//
// for (int i = 0; i < chatcontroller.getLst_chatMemberListFilterPredicates().size(); i++) {
//
// System.out.println(chatcontroller.getLst_chatMemberListFilterPredicates().get(0).);
//
// Predicate test = chatcontroller.getLst_chatMemberListFilterPredicates().get(i);
// test.so
// }
@@ -1127,6 +1226,20 @@ public class Kst4ContestApplication extends Application {
ObservableList<ChatMessage> generalMSGList = chatcontroller.getLst_toAllMessageList();
tbl_generalMSGTable.setItems(generalMSGList);
tbl_generalMSGTable.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
//we need to overdrive the Enter pressed as it should (in the whole scene) send the text!
if (event.getCode() == KeyCode.ENTER) {
event.consume();
sendButton.fire();
}
}
});
return tbl_generalMSGTable;
}
@@ -1265,8 +1378,6 @@ public class Kst4ContestApplication extends Application {
TableColumn<ChatMessage, String> airScoutCol = new TableColumn<ChatMessage, String>("AP [minutes / pot%]");
airScoutCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
boolean isnull =false;
@Override
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
@@ -1344,12 +1455,57 @@ public class Kst4ContestApplication extends Application {
* END HIGH EXPERIMENTAL::::::::
*/
TableColumn<ChatMessage, String> qrbCol = new TableColumn<ChatMessage, String>("QRB");
qrbCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
tbl_privateMSGTable.getColumns().addAll(timeCol, callSignCol, nameCol, qraCol, msgCol, qrgCol, airScoutCol);
@Override
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
SimpleStringProperty qrb = new SimpleStringProperty();
if (cellDataFeatures.getValue().getSender() != null && !cellDataFeatures.getValue().getSender().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign())) {
//do not calc for your own callsign as this will be NaN
if (!cellDataFeatures.getValue().getSender().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign())) {
try {
// System.out.println(cellDataFeatures.getValue().getSender().getQrb()+" QRB");
qrb.setValue(cellDataFeatures.getValue().getSender().getQrb().intValue() +" km (" + cellDataFeatures.getValue().getSender().getQTFdirection().intValue() + ""); //make int for less space
} catch (Exception nullOrFormatExc) {
System.out.println("KST4ContestApp: <<<catched error>>>: qrb was faulty" + nullOrFormatExc.getMessage() + " / " + nullOrFormatExc.getStackTrace());
}
}
// qrb.setValue("");
} else {
qrb.setValue("");//Prevents a bug of not setting all values as a default
}
return qrb;
}
});
tbl_privateMSGTable.getColumns().addAll(timeCol, callSignCol, nameCol, qraCol, qrbCol, msgCol, qrgCol, airScoutCol);
ObservableList<ChatMessage> privateMSGList = chatcontroller.getLst_toMeMessageList();
tbl_privateMSGTable.setItems(privateMSGList);
tbl_privateMSGTable.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
//we need to overdrive the Enter pressed as it should (in the whole scene) send the text!
if (event.getCode() == KeyCode.ENTER) {
event.consume();
sendButton.fire();
}
}
});
return tbl_privateMSGTable;
}
@@ -2722,7 +2878,7 @@ public class Kst4ContestApplication extends Application {
chatcontroller = new ChatController(ownChatMemberObject); // instantiate the Chatcontroller with the user object
this.chatcontroller.getPlayAudioUtils().playNoiseLauncher('!');
// this.chatcontroller.getPlayAudioUtils().playNoiseLauncher('!');
// chatcontroller.execute(); //TODO:THAT IS THE MAIN POINT WHERE THE CHAT WILL BE STARTED --- MOVED TO CONNECT BUTTON EVENTHANDLER
@@ -2945,7 +3101,74 @@ public class Kst4ContestApplication extends Application {
txt_chatMessageUserInput.setText(txt_chatMessageUserInput.getText().replaceAll("MYLOCATOR",
chatcontroller.getChatPreferences().getLoginLocator()));
}
;
boolean noAirplaneHere = false;
if (txt_chatMessageUserInput.getText().contains("FIRSTAP")) {
if (selectedCallSignInfoStageChatMember != null) {
if (selectedCallSignInfoStageChatMember.getCallSign() != chatcontroller.getChatPreferences().getLoginCallSign()) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo() != null) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes() != null) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes().size() != 0) {
noAirplaneHere = false;
AirPlane airPlane = selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes().get(0);
txt_chatMessageUserInput.setText(txt_chatMessageUserInput.getText().replaceAll("FIRSTAP", "a " + airPlane.getPotencialDescriptionAsWord() +
" in " + airPlane.getArrivingDurationMinutes() + " min"));
} else noAirplaneHere = true;
} else noAirplaneHere = true;
}
else noAirplaneHere = true;
}
}
if (noAirplaneHere) {
txt_chatMessageUserInput.setText(txt_chatMessageUserInput.getText().replaceAll("FIRSTAP",
"no ap available"));
}
}
if (txt_chatMessageUserInput.getText().contains("SECONDAP")) {
if (selectedCallSignInfoStageChatMember != null) {
if (selectedCallSignInfoStageChatMember.getCallSign() != chatcontroller.getChatPreferences().getLoginCallSign()) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo() != null) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes() != null) {
if (selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes().size() >= 2) {
System.out.println("RISINGAP : " + selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes().size());
AirPlane airPlane = selectedCallSignInfoStageChatMember.getAirPlaneReflectInfo().getRisingAirplanes().get(1);
if (!airPlane.getPotencialDescriptionAsWord().isEmpty()) {
noAirplaneHere = false;
txt_chatMessageUserInput.setText(txt_chatMessageUserInput.getText().replaceAll("SECONDAP", "Next " + airPlane.getPotencialDescriptionAsWord() +
" in " + airPlane.getArrivingDurationMinutes() + " min"));
} else noAirplaneHere = true;
} else noAirplaneHere = true;
} else noAirplaneHere = true;
}
else noAirplaneHere = true;
}
}
if (noAirplaneHere) {
txt_chatMessageUserInput.setText(txt_chatMessageUserInput.getText().replaceAll("SECONDAP",
""));
}
}
if (txt_chatMessageUserInput.getText().startsWith("/cq " + chatcontroller.getChatPreferences().getLoginCallSign())) {
txt_chatMessageUserInput.setText(" "); //prevent user sends a message to himself, that will cause errors
}
}
});
@@ -3058,7 +3281,8 @@ public class Kst4ContestApplication extends Application {
*/
if (selectedChatMemberPrivateChat.getList().get(0).getSender().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()) ) {
System.out.println("privChat selected ChatMember: was own object..." + "rx was: " + selectedChatMemberPrivateChat.getList().get(0).getMessageText().substring(2,(selectedChatMemberPrivateChat.getList().get(0).getMessageText().indexOf(")"))));
System.out.println("////////////////////////////// rx in orginal message: " + selectedChatMemberPrivateChat.getList().get(0).getReceiver().getCallSign());
System.out.println("privChat selected ChatMember: was own object...!" + "rx was: " + selectedChatMemberPrivateChat.getList().get(0).getMessageText().substring(2,(selectedChatMemberPrivateChat.getList().get(0).getMessageText().indexOf(")"))));
txt_chatMessageUserInput.clear();
txt_chatMessageUserInput.setText("/cq "
@@ -3314,7 +3538,7 @@ public class Kst4ContestApplication extends Application {
@Override
public boolean test(ChatMember chatMember) {
System.out.println(chatMemberTableFilterQtfTF.getText() + " stn have " + chatMember.getQTFdirection());
// System.out.println(chatMemberTableFilterQtfTF.getText() + " stn have " + chatMember.getQTFdirection());
// double myQTF = );
@@ -4248,7 +4472,7 @@ public class Kst4ContestApplication extends Application {
grdPnlLog.add(lblWkdInterpreterPathToFileTitle, 0, 2);
grdPnlLog.add(lblWkdInterpreterPathToFile, 1, 2);
grdPnlLog.add(btn_changeFilePathAndName, 2, 2);
grdPnlLog.add(generateLabeledSeparator(100, "N1MM/UCXLog/DXLog.net Network-Listener"), 0, 3, 2, 1);
grdPnlLog.add(generateLabeledSeparator(100, "N1MM/QARTEST/UCXLog/DXLog.net Network-Listener"), 0, 3, 2, 1);
grdPnlLog.add(lblEnableUDPbyUCX, 0, 4);
grdPnlLog.add(chkBxEnableUCXLogUDPReceiver, 1, 4);
grdPnlLog.add(lblUDPByUCX, 0, 5);