mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-03-30 04:31:04 +02:00
- 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:
@@ -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 {
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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.
|
||||
|
||||
43
src/main/java/kst4contest/locatorUtils/TestLocatorUtils.java
Normal file
43
src/main/java/kst4contest/locatorUtils/TestLocatorUtils.java
Normal 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user