mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-03-30 04:31:04 +02:00
Changed lists mechanic: not 3 messagelists any more but one oversable messagelist for all messages. The 3 categories of messages are now filteredlists, derived from this global messagelist.
Added a new panel down of the userlist which will be dynamically generated and shows filtered messages to a selected callsign
This commit is contained in:
committed by
praktimarc
parent
7fe2930ee2
commit
c369888c37
@@ -11,15 +11,15 @@ import java.util.Timer;
|
|||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
|
||||||
import javafx.beans.value.ObservableStringValue;
|
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.collections.transformation.FilteredList;
|
||||||
import kst4contest.ApplicationConstants;
|
import kst4contest.ApplicationConstants;
|
||||||
import kst4contest.model.*;
|
import kst4contest.model.*;
|
||||||
import kst4contest.utils.PlayAudioUtils;
|
import kst4contest.utils.PlayAudioUtils;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -334,17 +334,23 @@ public class ChatController {
|
|||||||
|
|
||||||
// ******All abstract types below here are used by the messageprocessor!
|
// ******All abstract types below here are used by the messageprocessor!
|
||||||
// ***************
|
// ***************
|
||||||
// private Hashtable<String, ChatMember> chatMemberTable = new Hashtable<String, ChatMember>();
|
|
||||||
// private HashMap<String, ChatMember> chatMemberTable = new HashMap<String, ChatMember>();
|
|
||||||
// private Hashtable<String, ChatMember> dXClusterMemberTable = new Hashtable<String, ChatMember>();
|
|
||||||
|
|
||||||
private ObservableList<ChatMessage> lst_toAllMessageList = FXCollections.observableArrayList(); // directed to all
|
private ObservableList<ChatMessage> lst_globalChatMessageList = FXCollections.observableArrayList(); //All chatmessages will be put in there, later create filtered message lists
|
||||||
|
// private ObservableList<ChatMessage> lst_toAllMessageList = FXCollections.observableArrayList(); // directed to all
|
||||||
// (beacon)
|
// (beacon)
|
||||||
private ObservableList<ChatMessage> lst_toMeMessageList = FXCollections.observableArrayList(); // directed to my
|
private FilteredList<ChatMessage> lst_toAllMessageList = new FilteredList<>(lst_globalChatMessageList); // directed to all
|
||||||
|
|
||||||
|
// private ObservableList<ChatMessage> lst_toMeMessageList = FXCollections.observableArrayList(); // directed to my
|
||||||
// call
|
// call
|
||||||
private ObservableList<ChatMessage> lst_toOtherMessageList = FXCollections.observableArrayList(); // directed to a
|
private FilteredList<ChatMessage> lst_toMeMessageList = new FilteredList<>(lst_globalChatMessageList);
|
||||||
|
|
||||||
|
private FilteredList<ChatMessage> lst_selectedCallSignInfofilteredMessageList = new FilteredList<>(lst_globalChatMessageList); // directed to all
|
||||||
|
|
||||||
|
// private ObservableList<ChatMessage> lst_toOtherMessageList = FXCollections.observableArrayList(); // directed to a
|
||||||
// call but not
|
// call but not
|
||||||
// mine
|
// mine
|
||||||
|
private FilteredList<ChatMessage> lst_toOtherMessageList = new FilteredList<>(lst_globalChatMessageList);
|
||||||
|
|
||||||
private ObservableList<ChatMember> chatMemberList = FXCollections.observableArrayList(); // List of active stations
|
private ObservableList<ChatMember> chatMemberList = FXCollections.observableArrayList(); // List of active stations
|
||||||
// in chat
|
// in chat
|
||||||
private ObservableList<ChatMember> lst_chatMemberList = FXCollections.synchronizedObservableList(chatMemberList); // List
|
private ObservableList<ChatMember> lst_chatMemberList = FXCollections.synchronizedObservableList(chatMemberList); // List
|
||||||
@@ -405,6 +411,22 @@ public class ChatController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FilteredList<ChatMessage> getLst_selectedCallSignInfofilteredMessageList() {
|
||||||
|
return lst_selectedCallSignInfofilteredMessageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLst_selectedCallSignInfofilteredMessageList(FilteredList<ChatMessage> lst_selectedCallSignInfofilteredMessageList) {
|
||||||
|
this.lst_selectedCallSignInfofilteredMessageList = lst_selectedCallSignInfofilteredMessageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableList<ChatMessage> getLst_globalChatMessageList() {
|
||||||
|
return lst_globalChatMessageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLst_globalChatMessageList(ObservableList<ChatMessage> lst_globalChatMessageList) {
|
||||||
|
this.lst_globalChatMessageList = lst_globalChatMessageList;
|
||||||
|
}
|
||||||
|
|
||||||
public String getHostname() {
|
public String getHostname() {
|
||||||
return hostname;
|
return hostname;
|
||||||
}
|
}
|
||||||
@@ -485,7 +507,10 @@ public class ChatController {
|
|||||||
return lst_toAllMessageList;
|
return lst_toAllMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLst_toAllMessageList(ObservableList<ChatMessage> lst_toAllMessageList) {
|
// public void setLst_toAllMessageList(ObservableList<ChatMessage> lst_toAllMessageList) {
|
||||||
|
// this.lst_toAllMessageList = lst_toAllMessageList;
|
||||||
|
// }
|
||||||
|
public void setLst_toAllMessageList(FilteredList<ChatMessage> lst_toAllMessageList) {
|
||||||
this.lst_toAllMessageList = lst_toAllMessageList;
|
this.lst_toAllMessageList = lst_toAllMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -493,7 +518,10 @@ public class ChatController {
|
|||||||
return lst_toMeMessageList;
|
return lst_toMeMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLst_toMeMessageList(ObservableList<ChatMessage> lst_toMeMessageList) {
|
// public void setLst_toMeMessageList(ObservableList<ChatMessage> lst_toMeMessageList) {
|
||||||
|
// this.lst_toMeMessageList = lst_toMeMessageList;
|
||||||
|
// }
|
||||||
|
public void setLst_toMeMessageList(FilteredList<ChatMessage> lst_toMeMessageList) {
|
||||||
this.lst_toMeMessageList = lst_toMeMessageList;
|
this.lst_toMeMessageList = lst_toMeMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,7 +529,11 @@ public class ChatController {
|
|||||||
return lst_toOtherMessageList;
|
return lst_toOtherMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLst_toOtherMessageList(ObservableList<ChatMessage> lst_toOtherMessageList) {
|
// public void setLst_toOtherMessageList(ObservableList<ChatMessage> lst_toOtherMessageList) {
|
||||||
|
// this.lst_toOtherMessageList = lst_toOtherMessageList;
|
||||||
|
// }
|
||||||
|
|
||||||
|
public void setLst_toOtherMessageList(FilteredList<ChatMessage> lst_toOtherMessageList) {
|
||||||
this.lst_toOtherMessageList = lst_toOtherMessageList;
|
this.lst_toOtherMessageList = lst_toOtherMessageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -539,6 +571,73 @@ category = new ChatCategory(2);
|
|||||||
updateInformation = checkForUpdates.parseUpdateXMLFile();
|
updateInformation = checkForUpdates.parseUpdateXMLFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lst_toMeMessageList.setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
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!
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception nullPointerExc) {
|
||||||
|
nullPointerExc.printStackTrace();
|
||||||
|
System.out.println("ChatController, ERROR: maybe the receiver was null!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lst_toAllMessageList.setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (chatMessage.getReceiver().getCallSign().equals("ALL")) { //TODO: ALL have to be an application-constant
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception nullPointerExc) {
|
||||||
|
nullPointerExc.printStackTrace();
|
||||||
|
System.out.println("ChatController, ERROR: maybe the receiver was null, mostly like a cq message!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lst_toOtherMessageList.setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
try {
|
||||||
|
if ((!chatMessage.getSender().getCallSign().equals(getChatPreferences().getLoginCallSign())) &&
|
||||||
|
(!chatMessage.getReceiver().getCallSign().equals(getChatPreferences().getLoginCallSign()))) {
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
|
||||||
|
} catch (Exception nullPointerExc) {
|
||||||
|
nullPointerExc.printStackTrace();
|
||||||
|
System.out.println("ChatController, ERROR: maybe the receiver was null!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
dbHandler = new DBController();
|
dbHandler = new DBController();
|
||||||
|
|
||||||
chatPreferences = new ChatPreferences();
|
chatPreferences = new ChatPreferences();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import java.util.regex.Pattern;
|
|||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import kst4contest.ApplicationConstants;
|
import kst4contest.ApplicationConstants;
|
||||||
|
import kst4contest.locatorUtils.Location;
|
||||||
import kst4contest.model.AirPlaneReflectionInfo;
|
import kst4contest.model.AirPlaneReflectionInfo;
|
||||||
import kst4contest.model.ChatMember;
|
import kst4contest.model.ChatMember;
|
||||||
import kst4contest.model.ChatMessage;
|
import kst4contest.model.ChatMessage;
|
||||||
@@ -362,6 +363,9 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
newMember.setName(splittedMessageLine[3]);
|
newMember.setName(splittedMessageLine[3]);
|
||||||
newMember.setQra(splittedMessageLine[4]);
|
newMember.setQra(splittedMessageLine[4]);
|
||||||
newMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
newMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
||||||
|
// newMember.setQTFdirection(LocatorUtils);
|
||||||
|
newMember.setQrb(new Location().getDistanceKmByTwoLocatorStrings(client.getChatPreferences().getLoginLocator(), newMember.getQra()));
|
||||||
|
newMember.setQTFdirection(new Location(client.getChatPreferences().getLoginLocator()).getBearing(new Location(newMember.getQra())));
|
||||||
newMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
newMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
||||||
|
|
||||||
// this.client.getChatMemberTable().put(splittedMessageLine[2], newMember); //TODO: map -> List
|
// this.client.getChatMemberTable().put(splittedMessageLine[2], newMember); //TODO: map -> List
|
||||||
@@ -402,6 +406,8 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
newMember.setQra(splittedMessageLine[4]);
|
newMember.setQra(splittedMessageLine[4]);
|
||||||
newMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
newMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
||||||
newMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
newMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
||||||
|
newMember.setQrb(new Location().getDistanceKmByTwoLocatorStrings(client.getChatPreferences().getLoginLocator(), newMember.getQra()));
|
||||||
|
newMember.setQTFdirection(new Location(client.getChatPreferences().getLoginLocator()).getBearing(new Location(newMember.getQra())));
|
||||||
|
|
||||||
newMember = this.client.getDbHandler().fetchChatMemberWkdDataForOnlyOneCallsignFromDB(newMember);
|
newMember = this.client.getDbHandler().fetchChatMemberWkdDataForOnlyOneCallsignFromDB(newMember);
|
||||||
|
|
||||||
@@ -512,7 +518,8 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
dummy.setCallSign("ALL");
|
dummy.setCallSign("ALL");
|
||||||
newMessage.setReceiver(dummy);
|
newMessage.setReceiver(dummy);
|
||||||
|
|
||||||
this.client.getLst_toAllMessageList().add(0, newMessage); // sdtout to all message-List
|
// this.client.getLst_toAllMessageList().add(0, newMessage); // sdtout to all message-List //TODO: change, moved to globalmessagelist - original
|
||||||
|
this.client.getLst_globalChatMessageList().add(0, newMessage); // sdtout to all message-List //TODO: change, moved to globalmessagelist
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -553,7 +560,8 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
if (newMessage.getReceiver().getCallSign()
|
if (newMessage.getReceiver().getCallSign()
|
||||||
.equals(this.client.getChatPreferences().getLoginCallSign())) {
|
.equals(this.client.getChatPreferences().getLoginCallSign())) {
|
||||||
|
|
||||||
this.client.getLst_toMeMessageList().add(0, newMessage);
|
// this.client.getLst_toMeMessageList().add(0, newMessage); //TODO: change, moved to globalmessagelist, original
|
||||||
|
this.client.getLst_globalChatMessageList().add(0, newMessage); //TODO: change, moved to globalmessagelist, original
|
||||||
|
|
||||||
if (this.client.getChatPreferences().isNotify_playSimpleSounds()) {
|
if (this.client.getChatPreferences().isNotify_playSimpleSounds()) {
|
||||||
this.client.getPlayAudioUtils().playNoiseLauncher('P');
|
this.client.getPlayAudioUtils().playNoiseLauncher('P');
|
||||||
@@ -582,13 +590,15 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
String originalMessage = newMessage.getMessageText();
|
String originalMessage = newMessage.getMessageText();
|
||||||
newMessage
|
newMessage
|
||||||
.setMessageText("(>" + newMessage.getReceiver().getCallSign() + ")" + originalMessage);
|
.setMessageText("(>" + newMessage.getReceiver().getCallSign() + ")" + originalMessage);
|
||||||
this.client.getLst_toMeMessageList().add(0, newMessage);
|
// this.client.getLst_toMeMessageList().add(0, newMessage); //TODO: change, moved to globalmessagelist, original
|
||||||
|
this.client.getLst_globalChatMessageList().add(0,newMessage);//TODO: change, moved to globalmessagelist
|
||||||
|
|
||||||
// if you sent the message to another station, it will be sorted in to
|
// if you sent the message to another station, it will be sorted in to
|
||||||
// the "to me message list" with modified messagetext, added rxers callsign
|
// the "to me message list" with modified messagetext, added rxers callsign
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.client.getLst_toOtherMessageList().add(0, newMessage);
|
// this.client.getLst_toOtherMessageList().add(0, newMessage); //TODO: change, moved to globalmessagelist, original
|
||||||
|
this.client.getLst_globalChatMessageList().add(0, newMessage);
|
||||||
// System.out.println("MSGBS bgfx: tx call = " + newMessage.getSender().getCallSign() + " / rx call = " + newMessage.getReceiver().getCallSign());
|
// System.out.println("MSGBS bgfx: tx call = " + newMessage.getSender().getCallSign() + " / rx call = " + newMessage.getReceiver().getCallSign());
|
||||||
}
|
}
|
||||||
} catch (NullPointerException referenceDeletedByUserLeftChatDuringMessageprocessing) {
|
} catch (NullPointerException referenceDeletedByUserLeftChatDuringMessageprocessing) {
|
||||||
@@ -681,6 +691,9 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
+ splittedMessageLine[3]));
|
+ splittedMessageLine[3]));
|
||||||
|
|
||||||
this.client.getLst_chatMemberList().get(index).setQra(splittedMessageLine[3]);
|
this.client.getLst_chatMemberList().get(index).setQra(splittedMessageLine[3]);
|
||||||
|
this.client.getLst_chatMemberList().get(index).setQrb(new Location().getDistanceKmByTwoLocatorStrings(client.getChatPreferences().getLoginLocator(), splittedMessageLine[3]));
|
||||||
|
this.client.getLst_chatMemberList().get(index).setQTFdirection(new Location(client.getChatPreferences().getLoginLocator()).getBearing(new Location(splittedMessageLine[3])));
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("[MSGBUSMGT:] ERROR! Locator Change of ["
|
System.out.println("[MSGBUSMGT:] ERROR! Locator Change of ["
|
||||||
@@ -837,6 +850,8 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
stateChangeMember.setQra(splittedMessageLine[4]);
|
stateChangeMember.setQra(splittedMessageLine[4]);
|
||||||
stateChangeMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
stateChangeMember.setState(Integer.parseInt(splittedMessageLine[5]));
|
||||||
stateChangeMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
stateChangeMember.setLastActivity(new Utils4KST().time_generateActualTimeInDateFormat());
|
||||||
|
stateChangeMember.setQrb(new Location().getDistanceKmByTwoLocatorStrings(client.getChatPreferences().getLoginLocator(), stateChangeMember.getQra()));
|
||||||
|
stateChangeMember.setQTFdirection(new Location(client.getChatPreferences().getLoginLocator()).getBearing(new Location(stateChangeMember.getQra())));
|
||||||
|
|
||||||
this.client.getDbHandler().storeChatMember(stateChangeMember); // TODO: not clean, it should be an
|
this.client.getDbHandler().storeChatMember(stateChangeMember); // TODO: not clean, it should be an
|
||||||
// upodate
|
// upodate
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import java.net.URL;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class UpdateChecker {
|
public class UpdateChecker {
|
||||||
|
|
||||||
@@ -115,10 +116,113 @@ public class UpdateChecker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Section changeLog
|
||||||
|
*/
|
||||||
|
|
||||||
|
list = doc.getElementsByTagName("changeLog");
|
||||||
|
ArrayList<String[]> changeLogArrayList = new ArrayList<String[]>();
|
||||||
|
|
||||||
|
if (list.getLength() != 0) {
|
||||||
|
|
||||||
|
for (int temp = 0; temp < list.getLength(); temp++) {
|
||||||
|
|
||||||
|
Node node = list.item(temp);
|
||||||
|
|
||||||
|
Element element = (Element) node;
|
||||||
|
int childNodeCounter = 0; //need an extra counter due to childnodes are counted...no idea, how
|
||||||
|
String[] aChangeLogEntry = new String[7];
|
||||||
|
aChangeLogEntry[0] = "";
|
||||||
|
aChangeLogEntry[1] = "Date: ";
|
||||||
|
aChangeLogEntry[2] = "Desc: ";
|
||||||
|
aChangeLogEntry[3] = "Added: ";
|
||||||
|
aChangeLogEntry[4] = "Changed: ";
|
||||||
|
aChangeLogEntry[5] = "Fixed: ";
|
||||||
|
aChangeLogEntry[6] = "Removed: ";
|
||||||
|
|
||||||
|
for (int i = 0; i < element.getChildNodes().getLength(); i++) {
|
||||||
|
|
||||||
|
if (element.getChildNodes().item(i).getNodeType() == Node.ELEMENT_NODE) {
|
||||||
|
// System.out.println(element.getChildNodes().item(i).getTextContent() + " <<<<<<<<<<<<<<<<<< " + i + " / " + childNodeCounter);
|
||||||
|
// System.out.println(element.getChildNodes().item(i).getNodeName());
|
||||||
|
aChangeLogEntry[childNodeCounter] = aChangeLogEntry[childNodeCounter] + element.getChildNodes().item(i).getTextContent();
|
||||||
|
childNodeCounter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
changeLogArrayList.add(aChangeLogEntry);
|
||||||
|
}
|
||||||
|
updateInfos.setChangeLog(changeLogArrayList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Section Buglist
|
||||||
|
*/
|
||||||
|
|
||||||
|
list = doc.getElementsByTagName("bug");
|
||||||
|
ArrayList<String[]> bugFixArrayList = new ArrayList<String[]>();
|
||||||
|
|
||||||
|
if (list.getLength() != 0) {
|
||||||
|
|
||||||
|
for (int temp = 0; temp < list.getLength(); temp++) {
|
||||||
|
|
||||||
|
Node node = list.item(temp);
|
||||||
|
|
||||||
|
Element element = (Element) node;
|
||||||
|
int childNodeCounter = 0; //need an extra counter due to childnodes are counted...no idea, how
|
||||||
|
String[] aChangeLogEntry = new String[3];
|
||||||
|
aChangeLogEntry[0] = "";
|
||||||
|
aChangeLogEntry[1] = "State: ";
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < element.getChildNodes().getLength(); i++) {
|
||||||
|
|
||||||
|
if (element.getChildNodes().item(i).getNodeType() == Node.ELEMENT_NODE) {
|
||||||
|
System.out.println(element.getChildNodes().item(i).getTextContent() + " <<<<<<<<<<<<<<<<<< " + i + " / " + childNodeCounter);
|
||||||
|
// System.out.println(element.getChildNodes().item(i).getNodeName());
|
||||||
|
aChangeLogEntry[childNodeCounter] = aChangeLogEntry[childNodeCounter] + element.getChildNodes().item(i).getTextContent();
|
||||||
|
childNodeCounter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bugFixArrayList.add(aChangeLogEntry);
|
||||||
|
}
|
||||||
|
updateInfos.setBugList(bugFixArrayList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] testEntry = new String[7];
|
||||||
|
testEntry[0] = "0.99";
|
||||||
|
testEntry[1] = "2022-09";
|
||||||
|
testEntry[2] = "researched the Chatprotocol";
|
||||||
|
testEntry[3] = "addednothing";
|
||||||
|
testEntry[4] = "changedsome";
|
||||||
|
testEntry[5] = "fixedxed";
|
||||||
|
testEntry[6] = "removedYourMom";
|
||||||
|
|
||||||
|
String[] testEntry2 = new String[7];
|
||||||
|
testEntry2[0] = "0.29";
|
||||||
|
testEntry2[1] = "2033-09";
|
||||||
|
testEntry2[2] = "tested";
|
||||||
|
testEntry2[3] = "addednotashing";
|
||||||
|
testEntry2[4] = "changeasdsome";
|
||||||
|
testEntry2[5] = "fixedxeds";
|
||||||
|
testEntry2[6] = "removedYosssurMom";
|
||||||
|
|
||||||
|
// changeLogArrayList.add(testEntry);
|
||||||
|
// changeLogArrayList.add(testEntry2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return updateInfos;
|
return updateInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,6 @@ public class Location {
|
|||||||
|
|
||||||
String format = decimalFormat.format(loc1.getDistanceKm(loc2));
|
String format = decimalFormat.format(loc1.getDistanceKm(loc2));
|
||||||
|
|
||||||
// return df.format(number);
|
|
||||||
return Double.parseDouble(format);
|
return Double.parseDouble(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,6 +339,21 @@ public class Location {
|
|||||||
- Math.sin(loc1.getLatitude().getRadians())
|
- Math.sin(loc1.getLatitude().getRadians())
|
||||||
* Math.cos(loc2.getLatitude().getRadians())
|
* Math.cos(loc2.getLatitude().getRadians())
|
||||||
* Math.cos(dLon);
|
* Math.cos(dLon);
|
||||||
return (Angle.radiansToDegrees(Math.atan2(y, x)) + 360) % 360;
|
|
||||||
|
double bearing = (Angle.radiansToDegrees(Math.atan2(y, x)) + 360) % 360;
|
||||||
|
|
||||||
|
// return bearing;
|
||||||
|
|
||||||
|
|
||||||
|
Locale locale = new Locale("en", "UK");
|
||||||
|
String pattern = "###.##";
|
||||||
|
|
||||||
|
DecimalFormat decimalFormat = (DecimalFormat)
|
||||||
|
NumberFormat.getNumberInstance(locale);
|
||||||
|
decimalFormat.applyPattern(pattern);
|
||||||
|
|
||||||
|
String format = decimalFormat.format(bearing);
|
||||||
|
|
||||||
|
return Double.parseDouble(format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ public class ChatMember {
|
|||||||
long activityCounter; // time of last activity in epochtimesec
|
long activityCounter; // time of last activity in epochtimesec
|
||||||
Date lastActivity; // time of last activity in epochtimesec
|
Date lastActivity; // time of last activity in epochtimesec
|
||||||
Date lastActualizationTimeOfThisMember; // time of last state change if that member
|
Date lastActualizationTimeOfThisMember; // time of last state change if that member
|
||||||
int qrb;
|
Double qrb;
|
||||||
int state;
|
int state;
|
||||||
|
|
||||||
int QTFdirection; // antenna direction in deg
|
Double QTFdirection; // antenna direction in deg
|
||||||
int[] workedCategories; // Chatcategory where the station is in the log, see kst4contest.model.ChatCategory
|
int[] workedCategories; // Chatcategory where the station is in the log, see kst4contest.model.ChatCategory
|
||||||
|
|
||||||
boolean worked; // true if the callsign is logged already - for temporary worked processing
|
boolean worked; // true if the callsign is logged already - for temporary worked processing
|
||||||
@@ -153,19 +153,19 @@ public class ChatMember {
|
|||||||
this.lastActualizationTimeOfThisMember = lastActualizationTimeOfThisMember;
|
this.lastActualizationTimeOfThisMember = lastActualizationTimeOfThisMember;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getQrb() {
|
public Double getQrb() {
|
||||||
return qrb;
|
return qrb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setQrb(int qrb) {
|
public void setQrb(Double qrb) {
|
||||||
this.qrb = qrb;
|
this.qrb = qrb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getQTFdirection() {
|
public Double getQTFdirection() {
|
||||||
return QTFdirection;
|
return QTFdirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setQTFdirection(int qTFdirection) {
|
public void setQTFdirection(Double qTFdirection) {
|
||||||
QTFdirection = qTFdirection;
|
QTFdirection = qTFdirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,31 @@ package kst4contest.model;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class UpdateInformation {
|
public class UpdateInformation {
|
||||||
double latestVersionNumberOnServer;
|
double latestVersionNumberOnServer = 100; //dummy value to prevent nullpointerexc
|
||||||
String adminMessage, majorChanges,latestVersionPathOnWebserver;
|
String adminMessage ="";
|
||||||
ArrayList<String> needUpdateResourcesSinceLastVersion;
|
String majorChanges ="";
|
||||||
ArrayList<String[]> featureRequest;
|
String latestVersionPathOnWebserver="";
|
||||||
ArrayList<String[]> bugRequests;
|
ArrayList<String> needUpdateResourcesSinceLastVersion = new ArrayList<String>();
|
||||||
|
ArrayList<String[]> featureRequest = new ArrayList<String[]>();
|
||||||
|
ArrayList<String[]> bugRequests = new ArrayList<String[]>();
|
||||||
|
ArrayList<String[]> changeLog = new ArrayList<String[]>();
|
||||||
|
ArrayList<String[]> bugList = new ArrayList<String[]>();
|
||||||
|
|
||||||
|
public ArrayList<String[]> getBugList() {
|
||||||
|
return bugList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBugList(ArrayList<String[]> bugList) {
|
||||||
|
this.bugList = bugList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String[]> getChangeLog() {
|
||||||
|
return changeLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChangeLog(ArrayList<String[]> changeLog) {
|
||||||
|
this.changeLog = changeLog;
|
||||||
|
}
|
||||||
|
|
||||||
public double getLatestVersionNumberOnServer() {
|
public double getLatestVersionNumberOnServer() {
|
||||||
return latestVersionNumberOnServer;
|
return latestVersionNumberOnServer;
|
||||||
|
|||||||
@@ -4,14 +4,13 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import javafx.beans.value.ObservableStringValue;
|
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.media.Media;
|
import javafx.scene.media.Media;
|
||||||
import javafx.scene.media.MediaPlayer;
|
import javafx.scene.media.MediaPlayer;
|
||||||
import kst4contest.ApplicationConstants;
|
import kst4contest.ApplicationConstants;
|
||||||
import kst4contest.controller.ChatController;
|
import kst4contest.controller.ChatController;
|
||||||
import kst4contest.controller.DBController;
|
|
||||||
import kst4contest.controller.Utils4KST;
|
import kst4contest.controller.Utils4KST;
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -69,6 +68,173 @@ public class Kst4ContestApplication extends Application {
|
|||||||
Timer timer_buildWindowTitle;
|
Timer timer_buildWindowTitle;
|
||||||
Timer timer_chatMemberTableSortTimer; // need that because javafx bug, it´s the only way to actualize the table...
|
Timer timer_chatMemberTableSortTimer; // need that because javafx bug, it´s the only way to actualize the table...
|
||||||
Timer timer_updatePrivatemessageTable; // same here
|
Timer timer_updatePrivatemessageTable; // same here
|
||||||
|
VBox selectedCallSignFurtherInfoPane = new VBox();
|
||||||
|
|
||||||
|
private BorderPane generateFurtherInfoAbtSelectedCallsignBP(ChatMember selectedCallSignInfoStageChatMember) {
|
||||||
|
|
||||||
|
selectedCallSignInfoBorderPane = new BorderPane();
|
||||||
|
|
||||||
|
SplitPane selectedCallSignSplitPane = new SplitPane();
|
||||||
|
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
|
||||||
|
|
||||||
|
TableView<ChatMessage> initFurtherInfoAbtCallsignMSGTable = initFurtherInfoAbtCallsignMSGTable();
|
||||||
|
|
||||||
|
// ChatMember dummy = new ChatMember();
|
||||||
|
// dummy.setCallSign("DM5M");
|
||||||
|
// dummy.setQra("JO51IJ");
|
||||||
|
// dummy.setQrb(0.0);
|
||||||
|
// dummy.setQTFdirection(0.0);
|
||||||
|
// dummy.setName("me");
|
||||||
|
// dummy.setState(0);
|
||||||
|
//
|
||||||
|
// selectedCallSignInfoStageChatMember = dummy;
|
||||||
|
|
||||||
|
|
||||||
|
Label selectedCallSignInfoLblQTFInfo = new Label("QTF:" + selectedCallSignInfoStageChatMember.getQTFdirection() + " deg");
|
||||||
|
// System.out.println("qtfinfolabel should show: " + selectedCallSignInfoStageChatMember.getQrb());
|
||||||
|
|
||||||
|
Label selectedCallSignInfoLblQRBInfo = new Label("QRB: " + selectedCallSignInfoStageChatMember.getQrb() + " km");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GridPane selectedCallSignDownerSiteGridPane = new GridPane();
|
||||||
|
selectedCallSignDownerSiteGridPane.setHgap(10);
|
||||||
|
selectedCallSignDownerSiteGridPane.setVgap(2);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(selectedCallSignInfoLblQTFInfo, 0,0,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(selectedCallSignInfoLblQRBInfo, 0,1,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("last activity dateTime"), 0,2,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("last activity duration"), 0,3,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Button("show path in AS"), 1,0,1,3);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("publicmsgCount"), 3,0,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("toMeMsgCount"), 3,1,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("fromMeMSGCount"), 3,2,1,1);
|
||||||
|
// HBox selectedCallSignDownerSiteHBox = new HBox();
|
||||||
|
// selectedCallSignDownerSiteHBox.getChildren().add(selectedCallSignInfoLblQRBInfo);
|
||||||
|
// selectedCallSignDownerSiteHBox.getChildren().add(selectedCallSignInfoLblQTFInfo);
|
||||||
|
|
||||||
|
selectedCallSignSplitPane.getItems().add(initFurtherInfoAbtCallsignMSGTable);
|
||||||
|
selectedCallSignSplitPane.getItems().add(selectedCallSignDownerSiteGridPane);
|
||||||
|
|
||||||
|
|
||||||
|
selectedCallSignInfoBorderPane.setCenter(selectedCallSignSplitPane);
|
||||||
|
|
||||||
|
HBox selectedCallSignInfoBottomControlsBox = new HBox();
|
||||||
|
selectedCallSignInfoBottomControlsBox.setSpacing(10);
|
||||||
|
// selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Always on top"));
|
||||||
|
|
||||||
|
ToggleGroup selectedCallSignInfoFilterMessagesRadioGrp = new ToggleGroup();
|
||||||
|
RadioButton selectedCallSignFilterToMeMsgRB = new RadioButton("pm to me ");
|
||||||
|
selectedCallSignFilterToMeMsgRB.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
|
||||||
|
RadioButton selectedCallSignFilterMsgToOtherRB = new RadioButton("pm to other");
|
||||||
|
selectedCallSignFilterMsgToOtherRB.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
|
||||||
|
RadioButton selectedCallSignFilterMsgpublic = new RadioButton("public msgs");
|
||||||
|
selectedCallSignFilterMsgpublic.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
|
||||||
|
RadioButton selectedCallSignNoFilterRB = new RadioButton("nothing");
|
||||||
|
selectedCallSignNoFilterRB.setToggleGroup(selectedCallSignInfoFilterMessagesRadioGrp);
|
||||||
|
selectedCallSignNoFilterRB.setSelected(true); //TODO: that behavior as default selection could be made preferencable
|
||||||
|
|
||||||
|
selectedCallSignInfoFilterMessagesRadioGrp.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Toggle> observableValue, Toggle toggle, Toggle t1) {
|
||||||
|
|
||||||
|
RadioButton radioButton = (RadioButton) selectedCallSignInfoFilterMessagesRadioGrp.getSelectedToggle();
|
||||||
|
if (radioButton.equals(selectedCallSignFilterToMeMsgRB)) {
|
||||||
|
chatcontroller.getLst_selectedCallSignInfofilteredMessageList().setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
if (((chatMessage.getReceiver().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign())) || (chatMessage.getSender().getCallSign().equals(chatcontroller.getChatPreferences().getLoginCallSign()))
|
||||||
|
) && ((chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) || (chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
System.out.println(t1 + " filter to me was selected <<<<<<<<<<<<<<<<<<<");
|
||||||
|
} else if (radioButton.equals(selectedCallSignFilterMsgToOtherRB)) {
|
||||||
|
|
||||||
|
chatcontroller.getLst_selectedCallSignInfofilteredMessageList().setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
System.out.println(t1 + " filter to other was selected <<<<<<<<<<<<<<<<<<<");
|
||||||
|
} else if (radioButton.equals(selectedCallSignFilterMsgpublic)) {
|
||||||
|
|
||||||
|
chatcontroller.getLst_selectedCallSignInfofilteredMessageList().setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) && (chatMessage.getReceiver().getCallSign().equals("ALL"))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(t1 + " filter to public was selected <<<<<<<<<<<<<<<<<<<");
|
||||||
|
} else {
|
||||||
|
System.out.println(t1 + " no filter was selected <<<<<<<<<<<<<<<<<<<");
|
||||||
|
chatcontroller.getLst_selectedCallSignInfofilteredMessageList().setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
||||||
|
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(new Label("Messages of " + selectedCallSignInfoStageChatMember.getCallSign() + " -> Filter: "));
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignNoFilterRB);
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterToMeMsgRB);
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterMsgToOtherRB);
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterMsgpublic);
|
||||||
|
|
||||||
|
// selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Filter messages to me"));
|
||||||
|
// selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Filter messages to Other"));
|
||||||
|
selectedCallSignInfoBorderPane.setTop(selectedCallSignInfoBottomControlsBox);
|
||||||
|
|
||||||
|
chatcontroller.getLst_selectedCallSignInfofilteredMessageList().setPredicate(new Predicate<ChatMessage>() {
|
||||||
|
/**
|
||||||
|
* This is the filter "nothing" option. It will get all communication of a callsign to all directions
|
||||||
|
*
|
||||||
|
* @param chatMessage the input argument
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
||||||
|
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return selectedCallSignInfoBorderPane;
|
||||||
|
}
|
||||||
|
|
||||||
private TableView<ChatMember> initChatMemberTable() {
|
private TableView<ChatMember> initChatMemberTable() {
|
||||||
|
|
||||||
@@ -451,7 +617,7 @@ public class Kst4ContestApplication extends Application {
|
|||||||
* created out of exact one array-entry). These are initialized by the
|
* created out of exact one array-entry). These are initialized by the
|
||||||
* chatpreferences object out of the config-xml
|
* chatpreferences object out of the config-xml
|
||||||
*
|
*
|
||||||
* @param menuTexts
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
// private ContextMenu initChatMemberTableContextMenu(String[] menuTexts) { old mechanic
|
// private ContextMenu initChatMemberTableContextMenu(String[] menuTexts) { old mechanic
|
||||||
@@ -496,6 +662,75 @@ public class Kst4ContestApplication extends Application {
|
|||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
private Stage initializeFurtherInfoOnSelectedChatMemberStage(ChatMember selectedChatMember) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
// stage_selectedCallSignInfoStage = new Stage();
|
||||||
|
// stage_selectedCallSignInfoStage.close();
|
||||||
|
|
||||||
|
stage_selectedCallSignInfoStage.setTitle("Further info on "+ selectedChatMember.getCallSign());
|
||||||
|
Label selectedCallSignInfoLblQTFInfo = new Label("QTF: " + selectedChatMember.getQTFdirection() + " deg");
|
||||||
|
Label selectedCallSignInfoLblQRBInfo = new Label("QRB: " + selectedChatMember.getQrb() + " km");
|
||||||
|
|
||||||
|
|
||||||
|
AnchorPane selectedCallSignInfoPane = new AnchorPane();
|
||||||
|
BorderPane selectedCallSignInfoBorderPane = new BorderPane();
|
||||||
|
selectedCallSignInfoPane.getChildren().add(selectedCallSignInfoBorderPane);
|
||||||
|
|
||||||
|
SplitPane selectedCallSignSplitPane = new SplitPane();
|
||||||
|
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
|
||||||
|
|
||||||
|
TableView<ChatMessage> initFurtherInfoAbtCallsignMSGTable = initFurtherInfoAbtCallsignMSGTable();
|
||||||
|
|
||||||
|
|
||||||
|
GridPane selectedCallSignDownerSiteGridPane = new GridPane();
|
||||||
|
selectedCallSignDownerSiteGridPane.setHgap(10);
|
||||||
|
selectedCallSignDownerSiteGridPane.setVgap(2);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(selectedCallSignInfoLblQTFInfo, 0,0,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(selectedCallSignInfoLblQRBInfo, 0,1,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("last activity dateTime"), 0,2,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("last activity duration"), 0,3,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Button("show path in AS"), 1,0,1,3);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("publicmsgCount"), 3,0,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("toMeMsgCount"), 3,1,1,1);
|
||||||
|
selectedCallSignDownerSiteGridPane.add(new Label("fromMeMSGCount"), 3,2,1,1);
|
||||||
|
// HBox selectedCallSignDownerSiteHBox = new HBox();
|
||||||
|
// selectedCallSignDownerSiteHBox.getChildren().add(selectedCallSignInfoLblQRBInfo);
|
||||||
|
// selectedCallSignDownerSiteHBox.getChildren().add(selectedCallSignInfoLblQTFInfo);
|
||||||
|
|
||||||
|
selectedCallSignSplitPane.getItems().add(initFurtherInfoAbtCallsignMSGTable);
|
||||||
|
selectedCallSignSplitPane.getItems().add(selectedCallSignDownerSiteGridPane);
|
||||||
|
|
||||||
|
|
||||||
|
selectedCallSignInfoBorderPane.setCenter(selectedCallSignSplitPane);
|
||||||
|
|
||||||
|
HBox selectedCallSignInfoBottomControlsBox = new HBox();
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Always on top"));
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Filter messages to me"));
|
||||||
|
selectedCallSignInfoBottomControlsBox.getChildren().add(new CheckBox("Filter messages to Other"));
|
||||||
|
selectedCallSignInfoBorderPane.setBottom(selectedCallSignInfoBottomControlsBox);
|
||||||
|
|
||||||
|
|
||||||
|
stage_selectedCallSignInfoStage.setScene(new Scene(selectedCallSignInfoPane, 500, 400));
|
||||||
|
stage_selectedCallSignInfoStage.setAlwaysOnTop(false);
|
||||||
|
|
||||||
|
if (!stage_selectedCallSignInfoStage.isShowing()) {
|
||||||
|
|
||||||
|
stage_selectedCallSignInfoStage.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
stage_selectedCallSignInfoStage.show();
|
||||||
|
return stage_selectedCallSignInfoStage;
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
System.out.println("There occured an error due to the selected callsign had been deleted!");
|
||||||
|
return stage_selectedCallSignInfoStage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the right click contextmenu for the chatmember-table, sets the
|
* Initializes the right click contextmenu for the chatmember-table, sets the
|
||||||
* clickhandler for the contextmenu out of a string array (each menuitam will be
|
* clickhandler for the contextmenu out of a string array (each menuitam will be
|
||||||
@@ -549,6 +784,185 @@ public class Kst4ContestApplication extends Application {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TableView<ChatMessage> initFurtherInfoAbtCallsignMSGTable() {
|
||||||
|
|
||||||
|
TableView<ChatMessage> tbl_furtherInfoAbtCallsignMSGTable = new TableView<ChatMessage>();
|
||||||
|
tbl_furtherInfoAbtCallsignMSGTable.setTooltip(new Tooltip("Messages of selected station are shown here"));
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> timeCol = new TableColumn<ChatMessage, String>("Time");
|
||||||
|
timeCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty time = new SimpleStringProperty();
|
||||||
|
|
||||||
|
time.setValue(new Utils4KST()
|
||||||
|
.time_convertEpochToReadable(cellDataFeatures.getValue().getMessageGeneratedTime()));
|
||||||
|
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> callSignTRCVCol = new TableColumn<ChatMessage, String>("Call TX");
|
||||||
|
callSignTRCVCol
|
||||||
|
.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty callSign = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getSender() != null) {
|
||||||
|
|
||||||
|
callSign.setValue(cellDataFeatures.getValue().getSender().getCallSign());
|
||||||
|
} else {
|
||||||
|
|
||||||
|
callSign.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
}
|
||||||
|
return callSign;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> callSignRCVRCol = new TableColumn<ChatMessage, String>("Call RX");
|
||||||
|
callSignRCVRCol
|
||||||
|
.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty callTX = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getReceiver().getCallSign() != null) {
|
||||||
|
|
||||||
|
callTX.setValue(cellDataFeatures.getValue().getReceiver().getCallSign());
|
||||||
|
} else {
|
||||||
|
|
||||||
|
callTX.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
}
|
||||||
|
return callTX;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// TableColumn<ChatMessage, String> nameCol = new TableColumn<ChatMessage, String>("Name");
|
||||||
|
// nameCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
// SimpleStringProperty name = new SimpleStringProperty();
|
||||||
|
//
|
||||||
|
// if (cellDataFeatures.getValue().getSender() != null) {
|
||||||
|
//
|
||||||
|
// name.setValue(cellDataFeatures.getValue().getSender().getName());
|
||||||
|
// } else {
|
||||||
|
//
|
||||||
|
// name.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
// }
|
||||||
|
// return name;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> qrgTXerCol = new TableColumn<ChatMessage, String>("Last QRG TX");
|
||||||
|
qrgTXerCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
StringProperty qrg = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getSender() != null) {
|
||||||
|
|
||||||
|
// qrg.setValue(cellDataFeatures.getValue().getSender().getFrequency());
|
||||||
|
qrg = cellDataFeatures.getValue().getSender().getFrequency();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
qrg.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
}
|
||||||
|
return qrg;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> qrgRXerCol = new TableColumn<ChatMessage, String>("Last QRG RX");
|
||||||
|
qrgRXerCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
StringProperty qrg = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getReceiver() != null) {
|
||||||
|
|
||||||
|
// qrg.setValue(cellDataFeatures.getValue().getReceiver().getFrequency());
|
||||||
|
qrg = cellDataFeatures.getValue().getReceiver().getFrequency();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
qrg.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
}
|
||||||
|
return qrg;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> msgCol = new TableColumn<ChatMessage, String>("Message");
|
||||||
|
msgCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty msg = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getMessageText() != null) {
|
||||||
|
|
||||||
|
msg.setValue(cellDataFeatures.getValue().getMessageText());
|
||||||
|
} else {
|
||||||
|
|
||||||
|
msg.setValue("");// TODO: Prevents a bug of not setting all values as a default
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
msgCol.prefWidthProperty().bind(tbl_furtherInfoAbtCallsignMSGTable.widthProperty().divide(2));
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> workedRXCol = new TableColumn<ChatMessage, String>("wkd RX?");
|
||||||
|
workedRXCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty wkd = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getReceiver().isWorked()) {
|
||||||
|
wkd.setValue("X");
|
||||||
|
} else {
|
||||||
|
wkd.setValue("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return wkd;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TableColumn<ChatMessage, String> workedTXCol = new TableColumn<ChatMessage, String>("wkd TX?");
|
||||||
|
workedRXCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMessage, String>, ObservableValue<String>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValue<String> call(CellDataFeatures<ChatMessage, String> cellDataFeatures) {
|
||||||
|
SimpleStringProperty wkd = new SimpleStringProperty();
|
||||||
|
|
||||||
|
if (cellDataFeatures.getValue().getSender().isWorked()) {
|
||||||
|
wkd.setValue("X");
|
||||||
|
} else {
|
||||||
|
wkd.setValue("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return wkd;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
tbl_furtherInfoAbtCallsignMSGTable.getColumns().addAll(timeCol, callSignTRCVCol, callSignRCVRCol,
|
||||||
|
msgCol);
|
||||||
|
|
||||||
|
ObservableList<ChatMessage> toOtherMSGList = chatcontroller.getLst_toOtherMessageList();
|
||||||
|
tbl_furtherInfoAbtCallsignMSGTable.setItems(chatcontroller.getLst_selectedCallSignInfofilteredMessageList());
|
||||||
|
|
||||||
|
return tbl_furtherInfoAbtCallsignMSGTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initializes the tableview in which the cq- and beacon-texts are shown
|
* initializes the tableview in which the cq- and beacon-texts are shown
|
||||||
*
|
*
|
||||||
@@ -1811,6 +2225,10 @@ public class Kst4ContestApplication extends Application {
|
|||||||
FlowPane flwPane_textSnippets;
|
FlowPane flwPane_textSnippets;
|
||||||
|
|
||||||
Stage clusterAndQSOMonStage;
|
Stage clusterAndQSOMonStage;
|
||||||
|
Stage stage_selectedCallSignInfoStage;
|
||||||
|
ChatMember selectedCallSignInfoStageChatMember = new ChatMember();
|
||||||
|
BorderPane selectedCallSignInfoBorderPane;
|
||||||
|
|
||||||
|
|
||||||
Stage stage_updateStage;
|
Stage stage_updateStage;
|
||||||
|
|
||||||
@@ -2602,6 +3020,31 @@ public class Kst4ContestApplication extends Application {
|
|||||||
// do nothing, that was a deselection-event!
|
// do nothing, that was a deselection-event!
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0); //initialize Chatmember for showing detals at another stage
|
||||||
|
|
||||||
|
|
||||||
|
// try {
|
||||||
|
//// stage_selectedCallSignInfoStage.close();
|
||||||
|
// } catch (NullPointerException ne) {
|
||||||
|
// //no stage was opened
|
||||||
|
// System.out.println("Kst4ContestApplication, Info: no infowindow was open: " + ne.getMessage());
|
||||||
|
// }
|
||||||
|
|
||||||
|
// stage_selectedCallSignInfoStage = initializeFurtherInfoOnSelectedChatMemberStage(selectedChatMember.getList().get(0));
|
||||||
|
selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0);
|
||||||
|
|
||||||
|
selectedCallSignFurtherInfoPane.getChildren().clear();
|
||||||
|
selectedCallSignFurtherInfoPane.getChildren().add(generateFurtherInfoAbtSelectedCallsignBP(selectedCallSignInfoStageChatMember));
|
||||||
|
|
||||||
|
// selectedCallSignInfoBorderPane.
|
||||||
|
// selectedCallSignInfoBorderPane.setVisible(false);
|
||||||
|
// selectedCallSignInfoBorderPane.setVisible(true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// stage_selectedCallSignInfoStage.setTitle("Further info on " + selectedCallSignInfoStageChatMember.getCallSign());
|
||||||
|
// stage_selectedCallSignInfoStage.show();
|
||||||
|
|
||||||
txt_chatMessageUserInput.clear();
|
txt_chatMessageUserInput.clear();
|
||||||
txt_chatMessageUserInput
|
txt_chatMessageUserInput
|
||||||
.setText("/cq " + selectedChatMember.getList().get(0).getCallSign() + " ");
|
.setText("/cq " + selectedChatMember.getList().get(0).getCallSign() + " ");
|
||||||
@@ -2636,7 +3079,34 @@ public class Kst4ContestApplication extends Application {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindowLeftSplitPane.getItems().addAll(messageSectionSplitpane, tbl_chatMember);
|
SplitPane mainWindowRightSplitPane = new SplitPane();
|
||||||
|
mainWindowRightSplitPane.setOrientation(Orientation.VERTICAL);
|
||||||
|
mainWindowRightSplitPane.getItems().add(tbl_chatMember);
|
||||||
|
|
||||||
|
|
||||||
|
mainWindowLeftSplitPane.getItems().addAll(messageSectionSplitpane, mainWindowRightSplitPane);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initializing the furter infos of a callsign part of the right splitpane
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// selectedCallSignFurtherInfoPane.getChildren().add(generateFurtherInfoAbtSelectedCallsignBP(selectedCallSignInfoStageChatMember));
|
||||||
|
|
||||||
|
|
||||||
|
// selectedCallSignInfoPane.getChildren().add(selectedCallSignInfoBorderPane);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* end of initializing the furter infos of a callsign part of the right splitpane
|
||||||
|
*/
|
||||||
|
|
||||||
|
mainWindowRightSplitPane.getItems().add(selectedCallSignFurtherInfoPane);
|
||||||
|
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
|
|
||||||
@@ -2646,6 +3116,23 @@ public class Kst4ContestApplication extends Application {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Window selected callsign information
|
||||||
|
* Works with a ChatMember variable, initialized by a selected-listener of the Chatmemberlist
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Window Cluster & qso of the other
|
* Window Cluster & qso of the other
|
||||||
*/
|
*/
|
||||||
@@ -2664,6 +3151,7 @@ public class Kst4ContestApplication extends Application {
|
|||||||
* end Window Cluster & qso of the other
|
* end Window Cluster & qso of the other
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Window updates
|
* Window updates
|
||||||
*/
|
*/
|
||||||
@@ -2675,6 +3163,9 @@ public class Kst4ContestApplication extends Application {
|
|||||||
|
|
||||||
// pnl_directedMSGWin.getItems().addAll(initDXClusterTable(), initChatToOtherMSGTable());
|
// pnl_directedMSGWin.getItems().addAll(initDXClusterTable(), initChatToOtherMSGTable());
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
stage_updateStage.setAlwaysOnTop(true);
|
stage_updateStage.setAlwaysOnTop(true);
|
||||||
|
|
||||||
Label lblUpdateInfo = new Label("Update aviable!");
|
Label lblUpdateInfo = new Label("Update aviable!");
|
||||||
@@ -2727,19 +3218,42 @@ public class Kst4ContestApplication extends Application {
|
|||||||
vbxUpdateWindow.getChildren().add(treeView);
|
vbxUpdateWindow.getChildren().add(treeView);
|
||||||
|
|
||||||
TreeItem rootItem = new TreeItem(ApplicationConstants.APPLICATION_NAME);
|
TreeItem rootItem = new TreeItem(ApplicationConstants.APPLICATION_NAME);
|
||||||
TreeItem latestVersionNumber = new TreeItem<>(chatcontroller.getUpdateInformation().getLatestVersionNumberOnServer());
|
TreeItem changeLog = new TreeItem<>("ChangeLog");
|
||||||
TreeItem adminMessage = new TreeItem<>(chatcontroller.getUpdateInformation().getAdminMessage());
|
|
||||||
TreeItem majorChanges = new TreeItem<>(chatcontroller.getUpdateInformation().getMajorChanges());
|
ArrayList<String[]> changeLogArrayWith7Fiels = chatcontroller.getUpdateInformation().getChangeLog();
|
||||||
TreeItem latestVersionPathOnWebserver = new TreeItem<>(chatcontroller.getUpdateInformation().getLatestVersionPathOnWebserver());
|
|
||||||
|
for (String[] aSubversionArray : changeLogArrayWith7Fiels) {
|
||||||
|
TreeItem aSubversionEntry = new TreeItem(aSubversionArray[0]);
|
||||||
|
|
||||||
|
for (int i = 1; i < aSubversionArray.length; i++) {
|
||||||
|
aSubversionEntry.getChildren().add(new TreeItem<>(aSubversionArray[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
changeLog.getChildren().add(aSubversionEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
rootItem.getChildren().add(changeLog);
|
||||||
|
|
||||||
|
TreeItem knownBugs = new TreeItem<>("Known bugs");
|
||||||
|
|
||||||
|
ArrayList<String[]> BugArrayWith2Fiels = chatcontroller.getUpdateInformation().getBugList();
|
||||||
|
|
||||||
|
for (String[] aBugArray : BugArrayWith2Fiels) {
|
||||||
|
TreeItem aBugEntry = new TreeItem(aBugArray[0]);
|
||||||
|
|
||||||
|
for (int i = 1; i < aBugArray.length; i++) {
|
||||||
|
aBugEntry.getChildren().add(new TreeItem<>(aBugArray[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
knownBugs.getChildren().add(aBugEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
rootItem.getChildren().add(knownBugs);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rootItem.getChildren().add(latestVersionNumber);
|
|
||||||
rootItem.getChildren().add(adminMessage);
|
|
||||||
rootItem.getChildren().add(majorChanges);
|
|
||||||
rootItem.getChildren().add(latestVersionPathOnWebserver);
|
|
||||||
|
|
||||||
treeView.setRoot(rootItem);
|
treeView.setRoot(rootItem);
|
||||||
|
treeView.setShowRoot(false);
|
||||||
|
|
||||||
stage_updateStage.setScene(new Scene(vbxUpdateWindow, 640, 480));
|
stage_updateStage.setScene(new Scene(vbxUpdateWindow, 640, 480));
|
||||||
|
|
||||||
@@ -2748,7 +3262,10 @@ public class Kst4ContestApplication extends Application {
|
|||||||
} else {
|
} else {
|
||||||
//nothing to do
|
//nothing to do
|
||||||
}
|
}
|
||||||
|
} catch (Exception excOnUpdateFileProcessing) {
|
||||||
|
System.out.println("[KST4ContestApp, ERROR]: Problem on Updateservice! " + excOnUpdateFileProcessing.getMessage());
|
||||||
|
excOnUpdateFileProcessing.printStackTrace();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* end Window Update
|
* end Window Update
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,7 +17,10 @@ public class TestLocatorUtils {
|
|||||||
// System.out.println(Location.getBearing(location, location2));
|
// System.out.println(Location.getBearing(location, location2));
|
||||||
|
|
||||||
|
|
||||||
System.out.println(new Location().getDistanceKmByTwoLocatorStrings("JN49FL", "Jo51ij") + "");
|
System.out.println((new Location().getDistanceKmByTwoLocatorStrings("JN49FL", "kn02fx") + ""));
|
||||||
|
// System.out.println((new Location().getBearing());
|
||||||
|
// int test = 888.08;
|
||||||
|
// System.out.println(test);
|
||||||
|
|
||||||
// String test = new Location().getDistanceKmByTwoLocatorStrings("JN49FL", "Jo51ij") + "";
|
// String test = new Location().getDistanceKmByTwoLocatorStrings("JN49FL", "Jo51ij") + "";
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user