diff --git a/SimpleLogFile.txt b/SimpleLogFile.txt index 1f82eed..1614346 100644 --- a/SimpleLogFile.txt +++ b/SimpleLogFile.txt @@ -1 +1,2 @@ -do5sa \ No newline at end of file +do5sa +##12390780900ß9'++++2e0NEY##### \ No newline at end of file diff --git a/src/main/java/kst4contest/controller/ChatController.java b/src/main/java/kst4contest/controller/ChatController.java index d47961a..cdada79 100644 --- a/src/main/java/kst4contest/controller/ChatController.java +++ b/src/main/java/kst4contest/controller/ChatController.java @@ -11,6 +11,8 @@ import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.LinkedBlockingQueue; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableStringValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import kst4contest.ApplicationConstants; @@ -514,7 +516,6 @@ public class ChatController { // this.category = ChatCategory.VUHF; this.userName = ownChatMemberObject.getName(); -// this.password = "uxskezcj"; this.hostname = "www.on4kst.info"; this.port = port; } @@ -522,11 +523,12 @@ public class ChatController { /** * This constructor is used by the Main()-Class of the praktiKST javaFX-gui. * - * @param setCategory + * * @param setOwnChatMemberObject */ public ChatController(ChatMember setOwnChatMemberObject) { super(); + dbHandler = new DBController(); chatPreferences = new ChatPreferences(); chatPreferences.readPreferencesFromXmlFile(); // set the praktikst Prefs by file or default if file is corrupted @@ -610,6 +612,12 @@ public class ChatController { public void execute() throws InterruptedException, IOException { +// messageBus = new SimpleStringProperty("_____est connection"); + +// ObservableStringValue test = new SimpleStringProperty("test"); + +// eventBus = test; + chatController = this; // This block constructs a sample message @@ -625,7 +633,7 @@ public class ChatController { try { setDisconnectionPerformedByUser(false); - dbHandler = new DBController(); +// dbHandler = new DBController(); //TODO: old place to instantiuate the dbcontroller messageRXBus = new LinkedBlockingQueue(); messageTXBus = new LinkedBlockingQueue(); @@ -942,10 +950,10 @@ public class ChatController { } /** - * + * * This creates the list of the worked stations which had to be displayed in the * settings menu. TODO: May make this List editable - * + * */ getWorkedDataFromDb.forEach((key, value) -> { @@ -963,7 +971,7 @@ public class ChatController { /* Try the not exceptional way to iterate */ // for (ChatMember chatMemberAvl : new ArrayList(getLst_chatMemberList())) { // if (getWorkedDataFromDb.containsKey(chatMemberAvl.getCallSign())) { -// +// // } // } diff --git a/src/main/java/kst4contest/controller/DBController.java b/src/main/java/kst4contest/controller/DBController.java index ee29d95..2e895dd 100644 --- a/src/main/java/kst4contest/controller/DBController.java +++ b/src/main/java/kst4contest/controller/DBController.java @@ -29,8 +29,6 @@ public class DBController { // private static final String DB_PATH = System.getProperty("praktiKST.db"); private static String DB_PATH = ApplicationFileUtils.getFilePath(ApplicationConstants.APPLICATION_NAME, DATABASE_FILE); - - /* static { try { diff --git a/src/main/java/kst4contest/controller/MessageBusManagementThread.java b/src/main/java/kst4contest/controller/MessageBusManagementThread.java index c2ae0fc..3d1bb0d 100644 --- a/src/main/java/kst4contest/controller/MessageBusManagementThread.java +++ b/src/main/java/kst4contest/controller/MessageBusManagementThread.java @@ -11,11 +11,13 @@ import java.util.regex.Pattern; import javafx.beans.property.SimpleStringProperty; import javafx.collections.ObservableList; +import kst4contest.ApplicationConstants; import kst4contest.model.AirPlaneReflectionInfo; import kst4contest.model.ChatMember; import kst4contest.model.ChatMessage; import kst4contest.model.ClusterMessage; import kst4contest.utils.PlayAudioUtils; +import kst4contest.view.Kst4ContestApplication; /** * @@ -900,6 +902,10 @@ public class MessageBusManagementThread extends Thread { client.getLst_toMeMessageList().add(pwErrorMsg); client.getLst_toAllMessageList().add(pwErrorMsg); } + +// Kst4ContestApplication.alertWindowEvent("Password was wrong. Pse check!"); + + client.disconnect(ApplicationConstants.DISCSTRING_DISCONNECTONLY); // this.client.disconnect(); } diff --git a/src/main/java/kst4contest/controller/ReadUDPbyAirScoutMessageThread.java b/src/main/java/kst4contest/controller/ReadUDPbyAirScoutMessageThread.java index c5a02b6..99fd567 100644 --- a/src/main/java/kst4contest/controller/ReadUDPbyAirScoutMessageThread.java +++ b/src/main/java/kst4contest/controller/ReadUDPbyAirScoutMessageThread.java @@ -116,6 +116,11 @@ public class ReadUDPbyAirScoutMessageThread extends Thread { if (received.contains(ApplicationConstants.DISCONNECT_RDR_POISONPILL)) { System.out.println("ReadUdpByASMsgTh, Info: got poison, now dieing...."); + try { + terminateConnection(); + } catch (Exception e) { + System.out.println("ASUDPRDR: catched error " + e.getMessage()); + } break; } @@ -277,9 +282,13 @@ public class ReadUDPbyAirScoutMessageThread extends Thread { return apInfo; } - public boolean terminateConnection() throws IOException { + public boolean terminateConnection() { - this.socket.close(); + try { + this.socket.close(); + } catch (Exception e) { + System.out.println("udpbyas: catched " + e.getMessage()); + } return true; } diff --git a/src/main/java/kst4contest/controller/ReadUDPbyUCXMessageThread.java b/src/main/java/kst4contest/controller/ReadUDPbyUCXMessageThread.java index 304ebad..3171c6f 100644 --- a/src/main/java/kst4contest/controller/ReadUDPbyUCXMessageThread.java +++ b/src/main/java/kst4contest/controller/ReadUDPbyUCXMessageThread.java @@ -45,11 +45,11 @@ public class ReadUDPbyUCXMessageThread extends Thread { try { if (this.socket != null) { System.out.println(">>>>>>>>>>>>>>ReadUdpbyUCS: closing socket"); - this.socket.close(); + terminateConnection(); } } catch (Exception e) { // TODO Auto-generated catch block - e.printStackTrace(); + System.out.println("UCXUDPRDR: catched error " + e.getMessage()); } } @@ -97,11 +97,26 @@ public class ReadUDPbyUCXMessageThread extends Thread { nE.printStackTrace(); System.out.println("ReadUdpByUCXTH: Socket not ready"); + + try { - socket = new DatagramSocket(12060); + socket = new DatagramSocket(client.getChatPreferences().getLogsynch_ucxUDPWkdCallListenerPort()); socket.setSoTimeout(2000); } catch (SocketException e) { - throw new RuntimeException(e); + System.out.println("[ReadUDPByUCSMsgTH, Error]: socket in use or something:"); + e.printStackTrace(); + + try { + socket = new DatagramSocket(null); + socket.setReuseAddress(true); + socket.bind(new InetSocketAddress(client.getChatPreferences().getLogsynch_ucxUDPWkdCallListenerPort())); + socket.receive(packet); + socket.setSoTimeout(3000); + } catch (Exception ex) { + System.out.println("ReadUDPByUCXMsgTh: Could not solve that. Program Restart needed."); + throw new RuntimeException(ex); + } + } } @@ -112,16 +127,20 @@ public class ReadUDPbyUCXMessageThread extends Thread { String received = new String(packet.getData(), packet.getOffset(), packet.getLength()); received = received.trim(); - if (this.client.isDisconnectionPerformedByUser()) { - break;//TODO: what if it´s not the finally closage but a band channel change? - } + +// System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<() { + public void handle(ActionEvent event) { + + ChatMessage sendMe = new ChatMessage(); + sendMe.setMessageDirectedToServer(false); + sendMe.setMessageText("/SETNAME " + chatcontroller.getChatPreferences().getMYQRG().getValue()); + + chatcontroller.getMessageTXBus().add(sendMe); + + } + }); + + + menuItemOptionsAwayBack = new MenuItem("Show me as away in chat"); + + MenuItem options10 = new MenuItem("Show options"); + + menuItemOptionsAwayBack.setOnAction(new EventHandler() { + public void handle(ActionEvent event) { + + ChatMessage sendMe = new ChatMessage(); + sendMe.setMessageDirectedToServer(false); + + if (chatcontroller.getChatPreferences().isLoginAFKState()) { + + menuItemOptionsAwayBack.setText("Show me as AWAY FROM chat!"); + chatcontroller.getChatPreferences().setLoginAFKState(false); + sendMe.setMessageText("/BACK"); + + } else { + + menuItemOptionsAwayBack.setText("Show me as ACTIVE in chat!"); + chatcontroller.getChatPreferences().setLoginAFKState(true); + sendMe.setMessageText("/AWAY"); + } + + chatcontroller.getMessageTXBus().add(sendMe); + + } + }); options10.setOnAction(new EventHandler() { public void handle(ActionEvent event) { if (settingsStage.isShowing()) { @@ -1644,7 +1690,7 @@ public class Kst4ContestApplication extends Application { } }); - optionsMenu.getItems().addAll(options1, options10); + optionsMenu.getItems().addAll(menuItemOptionsSetFrequencyAsName, menuItemOptionsAwayBack, options10); Menu macroMenu = new Menu("Macros"); @@ -1782,7 +1828,11 @@ public class Kst4ContestApplication extends Application { } +// SimpleStringProperty messageBusOfChatCtrl = messageBus; MenuItem menuItemFileDisconnect; + MenuItem menuItemOptionsAwayBack; + + MenuItem menuItemOptionsSetFrequencyAsName; TextField txt_chatMessageUserInput = new TextField(); TextField txt_ownqrg = new TextField(); TextField txt_myQTF = new TextField(); @@ -1795,6 +1845,8 @@ public class Kst4ContestApplication extends Application { Stage settingsStage; + + /** * Generates buttons out of pre made Strings, one button per given string in the * buttontext-array. Buttonclick will add the buttontext + " " to the @@ -2217,10 +2269,6 @@ public class Kst4ContestApplication extends Application { // ChatCategory category = new ChatCategory(0); //TODO: get the Category out of the preferences-object ChatMember ownChatMemberObject = new ChatMember(); -// ownChatMemberObject.setCallSign("DM5M"); -// ownChatMemberObject.setPassword("antennen"); -// ownChatMemberObject.setName("QRO 15dBd"); -// ownChatMemberObject.setQra("JO51IJ"); chatcontroller = new ChatController(ownChatMemberObject); // instantiate the Chatcontroller with the user object @@ -2411,7 +2459,12 @@ public class Kst4ContestApplication extends Application { } else { - chatState = "DISCONNECTED, CHECK YOUR INTERNET-CONNECTION!"; + chatState = "DISCONNECTED!"; + chatcontroller.getChatPreferences().setChatState(chatState); + } + if (chatcontroller.isDisconnected()) { + chatState = "DISCONNECTED!"; + chatcontroller.getChatPreferences().setChatState(chatState); } primaryStage.setTitle(chatcontroller.getChatPreferences().getChatState()); @@ -3499,20 +3552,24 @@ public class Kst4ContestApplication extends Application { Button btnOptionspnlDisconnectOnly = new Button("Disconnect"); btnOptionspnlDisconnectOnly.setDisable(true); menuItemFileDisconnect.setDisable(true); + menuItemOptionsAwayBack.setDisable(true); if (chatcontroller.isDisconnected()) { btnOptionspnlDisconnectOnly.setDisable(true); menuItemFileDisconnect.setDisable(true); + menuItemOptionsAwayBack.setDisable(true); } else if (chatcontroller.isConnectedAndNOTLoggedIn()) { btnOptionspnlDisconnectOnly.setDisable(true); menuItemFileDisconnect.setDisable(true); + menuItemOptionsAwayBack.setDisable(true); } else if (chatcontroller.isConnectedAndLoggedIn()) { btnOptionspnlDisconnectOnly.setDisable(false); menuItemFileDisconnect.setDisable(false); + menuItemOptionsAwayBack.setDisable(false); } btnOptionspnlDisconnectOnly.setOnAction(new EventHandler() { @@ -3530,7 +3587,8 @@ public class Kst4ContestApplication extends Application { btnOptionspnlConnect.setDisable(false); btnOptionspnlDisconnect.setDisable(false); btnOptionspnlDisconnectOnly.setDisable(true); - + menuItemOptionsSetFrequencyAsName.setDisable(true); + menuItemOptionsAwayBack.setDisable(true); } }); @@ -3563,11 +3621,16 @@ public class Kst4ContestApplication extends Application { + choiceBxChatChategory.getSelectionModel().getSelectedItem()); try { + + + chatcontroller.execute(); // TODO:THAT IS THE MAIN POINT WHERE THE CHAT WILL BE STARTED...MUST CATCH // Passwordfailedexc in future btnOptionspnlDisconnectOnly.setDisable(false); menuItemFileDisconnect.setDisable(false); + menuItemOptionsAwayBack.setDisable(false); + menuItemOptionsSetFrequencyAsName.setDisable(false); } catch (InterruptedException e) { // TODO Auto-generated catch block @@ -3585,7 +3648,8 @@ public class Kst4ContestApplication extends Application { choiceBxChatChategory.setDisable(true); btnOptionspnlConnect.setDisable(true); btnOptionspnlDisconnect.setDisable(false); - + chatcontroller.setConnectedAndLoggedIn(true); + chatcontroller.setDisconnected(false); } }); @@ -3689,6 +3753,24 @@ public class Kst4ContestApplication extends Application { // } } + /** + * Informs a user about a warning, shows given String in simple alertwindow + * + */ + public static void alertWindowEvent(String warning) { + System.out.println("Alert due to ... " + warning); + +// if(storageModel.dataSetChanged()) { // if the dataset has changed, alert the user with a popup + Alert alert = new Alert(Alert.AlertType.WARNING); + alert.getButtonTypes().remove(ButtonType.OK); +// alert.getButtonTypes().add(ButtonType.CANCEL); +// alert.getButtonTypes().add(ButtonType.YES); + alert.setTitle("WARNING"); + alert.setContentText(String.format(warning)); + + } + + public static void main(String[] args) { launch(args); } diff --git a/udpReaderBackup.txt b/udpReaderBackup.txt index 567b475..c643700 100644 --- a/udpReaderBackup.txt +++ b/udpReaderBackup.txt @@ -2,4 +2,7 @@ 9A5R;Zeljko;JN95MM;StringProperty [value: null];true;true;false;false;false;false;false;false DM5M;Marc;JN49FL;StringProperty [value: 144.243 ];true;true;false;false;false;false;false;false DM5M;Marc;JO51JL;StringProperty [value: null];true;true;false;false;false;false;false;false -DM5M;Marc;JO51JL;StringProperty [value: null];true;true;true;false;false;false;false;false \ No newline at end of file +DM5M;Marc;JO51JL;StringProperty [value: null];true;true;true;false;false;false;false;false +DM5M;unknown;unknown;StringProperty [value: null];true;true;false;false;false;false;false;false +DF0GEB;Marc;JO51IJ;StringProperty [value: 144.174 ];true;true;false;false;false;false;false;false +DF0GEB;Marc;JO51IJ;StringProperty [value: 144.174 ];true;true;true;false;false;false;false;false \ No newline at end of file