mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-03-30 04:31:04 +02:00
implemented some of the new filters to the chatmemberlist, changed list-subtype to make it sortable again
This commit is contained in:
committed by
praktimarc
parent
c369888c37
commit
d13b7785af
@@ -14,6 +14,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.collections.transformation.FilteredList;
|
import javafx.collections.transformation.FilteredList;
|
||||||
|
import javafx.collections.transformation.SortedList;
|
||||||
import kst4contest.ApplicationConstants;
|
import kst4contest.ApplicationConstants;
|
||||||
import kst4contest.model.*;
|
import kst4contest.model.*;
|
||||||
import kst4contest.utils.PlayAudioUtils;
|
import kst4contest.utils.PlayAudioUtils;
|
||||||
@@ -354,11 +355,10 @@ public class ChatController {
|
|||||||
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
|
||||||
// of
|
// of active stn in chat
|
||||||
// active
|
private FilteredList<ChatMember> lst_chatMemberListFiltered = new FilteredList<ChatMember>(chatMemberList);
|
||||||
// stations
|
private SortedList<ChatMember> lst_chatMemberSortedFilteredList = new SortedList<ChatMember>(lst_chatMemberListFiltered);
|
||||||
// in
|
private ObservableList<Predicate<ChatMember>> lst_chatMemberListFilterPredicates = FXCollections.observableArrayList();
|
||||||
// chat
|
|
||||||
private ObservableList<ClusterMessage> lst_clusterMemberList = FXCollections.observableArrayList();
|
private ObservableList<ClusterMessage> lst_clusterMemberList = FXCollections.observableArrayList();
|
||||||
|
|
||||||
private ObservableList<ChatMember> lst_DBBasedWkdCallSignList = FXCollections.observableArrayList();
|
private ObservableList<ChatMember> lst_DBBasedWkdCallSignList = FXCollections.observableArrayList();
|
||||||
@@ -495,6 +495,22 @@ public class ChatController {
|
|||||||
this.lst_chatMemberList = lst_chatMemberList;
|
this.lst_chatMemberList = lst_chatMemberList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FilteredList<ChatMember> getLst_chatMemberListFiltered() {
|
||||||
|
return lst_chatMemberListFiltered;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SortedList<ChatMember> getLst_chatMemberSortedFilteredList() {
|
||||||
|
return lst_chatMemberSortedFilteredList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableList<Predicate<ChatMember>> getLst_chatMemberListFilterPredicates() {
|
||||||
|
return lst_chatMemberListFilterPredicates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLst_chatMemberListFilterPredicates(ObservableList<Predicate<ChatMember>> lst_chatMemberListFilterPredicates) {
|
||||||
|
this.lst_chatMemberListFilterPredicates = lst_chatMemberListFilterPredicates;
|
||||||
|
}
|
||||||
|
|
||||||
public ObservableList<ClusterMessage> getLst_clusterMemberList() {
|
public ObservableList<ClusterMessage> getLst_clusterMemberList() {
|
||||||
return lst_clusterMemberList;
|
return lst_clusterMemberList;
|
||||||
}
|
}
|
||||||
@@ -596,7 +612,7 @@ category = new ChatCategory(2);
|
|||||||
}
|
}
|
||||||
catch (Exception nullPointerExc) {
|
catch (Exception nullPointerExc) {
|
||||||
nullPointerExc.printStackTrace();
|
nullPointerExc.printStackTrace();
|
||||||
System.out.println("ChatController, ERROR: maybe the receiver was null!");
|
System.out.println("ChatController, <<<catched ERROR>>>: maybe the receiver was null, message received b4 user entered chatmessage...!" + nullPointerExc.getMessage());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -632,7 +648,7 @@ category = new ChatCategory(2);
|
|||||||
|
|
||||||
} catch (Exception nullPointerExc) {
|
} catch (Exception nullPointerExc) {
|
||||||
nullPointerExc.printStackTrace();
|
nullPointerExc.printStackTrace();
|
||||||
System.out.println("ChatController, ERROR: maybe the receiver was null!");
|
System.out.println("ChatController, <<<catched ERROR>>>: maybe the receiver was null!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -490,7 +490,16 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
|
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
//user found in the chatmember list
|
//user found in the chatmember list
|
||||||
|
try {
|
||||||
newMessage.setSender(this.client.getLst_chatMemberList().get(index)); // set sender to member of
|
newMessage.setSender(this.client.getLst_chatMemberList().get(index)); // set sender to member of
|
||||||
|
} catch (Exception exc) {
|
||||||
|
ChatMember aSenderDummy = new ChatMember();
|
||||||
|
aSenderDummy.setCallSign(splittedMessageLine[3] + "[n/a]");
|
||||||
|
aSenderDummy.setAirPlaneReflectInfo(new AirPlaneReflectionInfo());
|
||||||
|
newMessage.setSender(aSenderDummy);
|
||||||
|
System.out.println("MsgBusmgtT: Catched Error! " + exc.getMessage() + " // " + splittedMessageLine[3] + " is not in the list! Faking sender!");
|
||||||
|
exc.printStackTrace();
|
||||||
|
}
|
||||||
// b4 init list
|
// b4 init list
|
||||||
} else {
|
} else {
|
||||||
//user not found in chatmember list
|
//user not found in chatmember list
|
||||||
@@ -602,7 +611,7 @@ public class MessageBusManagementThread extends Thread {
|
|||||||
// 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) {
|
||||||
System.out.println("MSGBS bgfx, <<<catched error>>>: referenced user left the chat during messageprocessing: ");
|
System.out.println("MSGBS bgfx, <<<catched error>>>: referenced user left the chat during messageprocessing or message got before user entered chat message: ");
|
||||||
referenceDeletedByUserLeftChatDuringMessageprocessing.printStackTrace();
|
referenceDeletedByUserLeftChatDuringMessageprocessing.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ import java.net.URISyntaxException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
|
import javafx.scene.layout.*;
|
||||||
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;
|
||||||
@@ -37,12 +39,6 @@ import javafx.scene.input.KeyCode;
|
|||||||
import javafx.scene.input.KeyEvent;
|
import javafx.scene.input.KeyEvent;
|
||||||
import javafx.scene.input.MouseButton;
|
import javafx.scene.input.MouseButton;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.AnchorPane;
|
|
||||||
import javafx.scene.layout.BorderPane;
|
|
||||||
import javafx.scene.layout.FlowPane;
|
|
||||||
import javafx.scene.layout.GridPane;
|
|
||||||
import javafx.scene.layout.HBox;
|
|
||||||
import javafx.scene.layout.VBox;
|
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
@@ -76,6 +72,7 @@ public class Kst4ContestApplication extends Application {
|
|||||||
|
|
||||||
SplitPane selectedCallSignSplitPane = new SplitPane();
|
SplitPane selectedCallSignSplitPane = new SplitPane();
|
||||||
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
|
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
|
||||||
|
selectedCallSignSplitPane.setDividerPositions(0.9);
|
||||||
|
|
||||||
TableView<ChatMessage> initFurtherInfoAbtCallsignMSGTable = initFurtherInfoAbtCallsignMSGTable();
|
TableView<ChatMessage> initFurtherInfoAbtCallsignMSGTable = initFurtherInfoAbtCallsignMSGTable();
|
||||||
|
|
||||||
@@ -204,7 +201,6 @@ public class Kst4ContestApplication extends Application {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
selectedCallSignInfoBottomControlsBox.getChildren().add(new Label("Messages of " + selectedCallSignInfoStageChatMember.getCallSign() + " -> Filter: "));
|
selectedCallSignInfoBottomControlsBox.getChildren().add(new Label("Messages of " + selectedCallSignInfoStageChatMember.getCallSign() + " -> Filter: "));
|
||||||
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignNoFilterRB);
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignNoFilterRB);
|
||||||
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterToMeMsgRB);
|
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterToMeMsgRB);
|
||||||
@@ -225,11 +221,16 @@ public class Kst4ContestApplication extends Application {
|
|||||||
@Override
|
@Override
|
||||||
public boolean test(ChatMessage chatMessage) {
|
public boolean test(ChatMessage chatMessage) {
|
||||||
|
|
||||||
|
try {
|
||||||
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
||||||
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
||||||
return true;
|
return true;
|
||||||
|
} else return false;
|
||||||
|
|
||||||
|
} catch (Exception exception) {
|
||||||
|
System.out.println("KST4ContestApplication <<<catched ERROR>>>>: cant get sender infos due to sender is not known yet");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else return false;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -254,6 +255,8 @@ public class Kst4ContestApplication extends Application {
|
|||||||
return callsgn;
|
return callsgn;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
callSignCol.setSortType(TableColumn.SortType.ASCENDING);
|
||||||
|
tbl_chatMemberTable.getSortOrder().add(callSignCol);
|
||||||
|
|
||||||
TableColumn<ChatMember, String> nameCol = new TableColumn<ChatMember, String>("Name");
|
TableColumn<ChatMember, String> nameCol = new TableColumn<ChatMember, String>("Name");
|
||||||
nameCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMember, String>, ObservableValue<String>>() {
|
nameCol.setCellValueFactory(new Callback<CellDataFeatures<ChatMember, String>, ObservableValue<String>>() {
|
||||||
@@ -545,8 +548,10 @@ public class Kst4ContestApplication extends Application {
|
|||||||
|
|
||||||
tbl_chatMemberTable.getColumns().addAll(callSignCol, nameCol, qraCol, qrgCol, airScoutCol, workedCol);
|
tbl_chatMemberTable.getColumns().addAll(callSignCol, nameCol, qraCol, qrgCol, airScoutCol, workedCol);
|
||||||
|
|
||||||
tbl_chatMemberTable.setItems(chatcontroller.getLst_chatMemberList());
|
// tbl_chatMemberTable.setItems(chatcontroller.getLst_chatMemberListFiltered());
|
||||||
|
|
||||||
|
tbl_chatMemberTable.setItems(chatcontroller.getLst_chatMemberSortedFilteredList());
|
||||||
|
chatcontroller.getLst_chatMemberSortedFilteredList().comparatorProperty().bind(tbl_chatMemberTable.comparatorProperty());
|
||||||
// chatcontroller.getLst_chatMemberList().addListener(new ListChangeListener<ChatMember>() {
|
// chatcontroller.getLst_chatMemberList().addListener(new ListChangeListener<ChatMember>() {
|
||||||
//// ObservableStringValue chatState = new SimpleStringProperty();
|
//// ObservableStringValue chatState = new SimpleStringProperty();
|
||||||
//
|
//
|
||||||
@@ -589,6 +594,15 @@ public class Kst4ContestApplication extends Application {
|
|||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("chatMemberTableSortTimer");
|
Thread.currentThread().setName("chatMemberTableSortTimer");
|
||||||
|
|
||||||
|
System.out.println("Predicates size: " + chatcontroller.getLst_chatMemberListFilterPredicates().size());
|
||||||
|
//
|
||||||
|
// for (int i = 0; i < chatcontroller.getLst_chatMemberListFilterPredicates().size(); i++) {
|
||||||
|
//
|
||||||
|
// System.out.println(chatcontroller.getLst_chatMemberListFilterPredicates().get(0).);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -2839,10 +2853,9 @@ public class Kst4ContestApplication extends Application {
|
|||||||
+ " as " + chatcontroller.getChatPreferences().getLoginCallSign() + " ("
|
+ " as " + chatcontroller.getChatPreferences().getLoginCallSign() + " ("
|
||||||
+ chatcontroller.getChatPreferences().getLoginName() + ")" + " in "
|
+ chatcontroller.getChatPreferences().getLoginName() + ")" + " in "
|
||||||
+ chatcontroller.getChatPreferences().getLoginLocator() + " ("
|
+ chatcontroller.getChatPreferences().getLoginLocator() + " ("
|
||||||
+ chatcontroller.getLst_chatMemberList().size() + " users online.),"
|
+ chatcontroller.getLst_chatMemberList().size() + " users online, "
|
||||||
+ (chatcontroller.getLst_toAllMessageList().size()
|
+ chatcontroller.getLst_chatMemberSortedFilteredList().size() + " shown), "
|
||||||
+ chatcontroller.getLst_toOtherMessageList().size()
|
+ (chatcontroller.getLst_globalChatMessageList().size())
|
||||||
+ chatcontroller.getLst_toMeMessageList().size())
|
|
||||||
+ " messages total.";
|
+ " messages total.";
|
||||||
chatcontroller.getChatPreferences().setChatState(chatState);
|
chatcontroller.getChatPreferences().setChatState(chatState);
|
||||||
}
|
}
|
||||||
@@ -3016,35 +3029,18 @@ public class Kst4ContestApplication extends Application {
|
|||||||
selectedChatMemberList.addListener(new ListChangeListener<ChatMember>() {
|
selectedChatMemberList.addListener(new ListChangeListener<ChatMember>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(Change<? extends ChatMember> selectedChatMember) {
|
public void onChanged(Change<? extends ChatMember> selectedChatMember) {
|
||||||
|
try{
|
||||||
|
|
||||||
if (selectionModelChatMember.getSelectedItems().isEmpty()) {
|
if (selectionModelChatMember.getSelectedItems().isEmpty()) {
|
||||||
// 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);
|
selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0);
|
||||||
|
|
||||||
selectedCallSignFurtherInfoPane.getChildren().clear();
|
selectedCallSignFurtherInfoPane.getChildren().clear();
|
||||||
selectedCallSignFurtherInfoPane.getChildren().add(generateFurtherInfoAbtSelectedCallsignBP(selectedCallSignInfoStageChatMember));
|
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() + " ");
|
||||||
@@ -3053,6 +3049,11 @@ public class Kst4ContestApplication extends Application {
|
|||||||
// selectedChatMemberList.clear();
|
// selectedChatMemberList.clear();
|
||||||
// selectionModelChatMember.clearSelection(0);
|
// selectionModelChatMember.clearSelection(0);
|
||||||
}
|
}
|
||||||
|
} catch (Exception exception) {
|
||||||
|
selectedCallSignFurtherInfoPane.getChildren().clear();
|
||||||
|
txt_chatMessageUserInput.clear();
|
||||||
|
System.out.println("KST4ContestApp <<<catched ERROR>>>, selected user left chat!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -3081,7 +3082,326 @@ public class Kst4ContestApplication extends Application {
|
|||||||
|
|
||||||
SplitPane mainWindowRightSplitPane = new SplitPane();
|
SplitPane mainWindowRightSplitPane = new SplitPane();
|
||||||
mainWindowRightSplitPane.setOrientation(Orientation.VERTICAL);
|
mainWindowRightSplitPane.setOrientation(Orientation.VERTICAL);
|
||||||
mainWindowRightSplitPane.getItems().add(tbl_chatMember);
|
mainWindowRightSplitPane.setDividerPositions(0.8);
|
||||||
|
|
||||||
|
BorderPane chatMemberTableBorderPane = new BorderPane();
|
||||||
|
chatMemberTableBorderPane.setCenter(tbl_chatMember);
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterQTFAndQRBHbox = new HBox();
|
||||||
|
chatMemberTableFilterQTFAndQRBHbox.setSpacing(10);
|
||||||
|
|
||||||
|
// chatMemberTableFilterQTFAndQRBHbox.set
|
||||||
|
|
||||||
|
VBox chatMemberTableFilterVBoxForAllFilters= new VBox();
|
||||||
|
chatMemberTableFilterVBoxForAllFilters.setSpacing(1);
|
||||||
|
chatMemberTableFilterVBoxForAllFilters.setStyle("-fx-padding: 1;" +
|
||||||
|
"-fx-border-style: solid inside;" +
|
||||||
|
"-fx-border-width: 1;" +
|
||||||
|
"-fx-border-insets: 1;" +
|
||||||
|
"-fx-border-radius: 1;" +
|
||||||
|
"-fx-border-color: lightgreen;");
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterQRBHBox = new HBox();
|
||||||
|
chatMemberTableFilterQRBHBox.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
|
||||||
|
TextField chatMemberTableFilterMaxQrbTF = new TextField("1000");
|
||||||
|
ToggleButton tglBtnQRBEnable = new ToggleButton("Show only QRB [km] <= ");
|
||||||
|
tglBtnQRBEnable.selectedProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
|
Predicate<ChatMember> maxQrbPredicate = new Predicate<ChatMember>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMember chatMember) {
|
||||||
|
if (chatMember.getQrb() < Double.parseDouble(chatMemberTableFilterMaxQrbTF.getText())) {
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean t1) {
|
||||||
|
if (tglBtnQRBEnable.isSelected()) {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().add(maxQrbPredicate);
|
||||||
|
} else chatcontroller.getLst_chatMemberListFilterPredicates().remove(maxQrbPredicate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
chatMemberTableFilterQRBHBox.getChildren().add(tglBtnQRBEnable);
|
||||||
|
chatMemberTableFilterMaxQrbTF.textProperty().addListener(new ChangeListener<String>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends String> observableValue, String oldValue, String newValue) {
|
||||||
|
if (!newValue.matches("\\d*")) {
|
||||||
|
chatMemberTableFilterMaxQrbTF.setText(newValue.replaceAll("[^\\d]", ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chatMemberTableFilterMaxQrbTF.setPrefSize(50,0);
|
||||||
|
|
||||||
|
chatMemberTableFilterQRBHBox.getChildren().add(chatMemberTableFilterMaxQrbTF);
|
||||||
|
chatMemberTableFilterQRBHBox.setStyle("-fx-padding: 1;" +
|
||||||
|
"-fx-border-style: solid inside;" +
|
||||||
|
"-fx-border-width: 1;" +
|
||||||
|
"-fx-border-insets: 1;" +
|
||||||
|
"-fx-border-radius: 1;" +
|
||||||
|
"-fx-border-color: lightgrey;");
|
||||||
|
|
||||||
|
chatMemberTableFilterQTFAndQRBHbox.setFillHeight(true);
|
||||||
|
chatMemberTableFilterQTFAndQRBHbox.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
chatMemberTableFilterQTFAndQRBHbox.getChildren().add(chatMemberTableFilterQRBHBox);
|
||||||
|
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterQTFHBox = new HBox();
|
||||||
|
chatMemberTableFilterQTFHBox.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
|
||||||
|
CheckBox chatMemberTableFilterQtfEnableChkbx = new CheckBox("Show only QTF +/-25 degrees");
|
||||||
|
TextField chatMemberTableFilterQtfTF = new TextField("0");
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().addListener(new ChangeListener<String>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends String> observableValue, String oldValue, String newValue) {
|
||||||
|
if (!newValue.matches("\\d*")) {
|
||||||
|
chatMemberTableFilterQtfTF.setText(newValue.replaceAll("[^\\d]", ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chatMemberTableFilterQtfEnableChkbx.selectedProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
|
|
||||||
|
Predicate<ChatMember> qtfCheckPredicate = new Predicate<ChatMember>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMember chatMember) {
|
||||||
|
|
||||||
|
System.out.println(chatMemberTableFilterQtfTF.getText() + " stn have " + chatMember.getQTFdirection());
|
||||||
|
|
||||||
|
double myQTF = Double.parseDouble(chatMemberTableFilterQtfTF.getText());
|
||||||
|
|
||||||
|
Double diff360 = 0.;
|
||||||
|
|
||||||
|
if (myQTF-25 < 0) {
|
||||||
|
diff360 = myQTF-25+360;
|
||||||
|
System.out.println("diff- " + diff360);
|
||||||
|
} else if (myQTF+25 >360) {
|
||||||
|
diff360 = myQTF+25-360;
|
||||||
|
System.out.println("diff+ " + diff360);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((chatMember.getQTFdirection() >= myQTF-diff360 ) && (chatMember.getQTFdirection() <= myQTF+diff360)){
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean t1) {
|
||||||
|
if (chatMemberTableFilterQtfEnableChkbx.isSelected()) {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().add(qtfCheckPredicate);
|
||||||
|
} else {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().remove(qtfCheckPredicate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chatMemberTableFilterQTFHBox.getChildren().add(chatMemberTableFilterQtfEnableChkbx);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
chatMemberTableFilterQtfTF.setPrefSize(50,0);
|
||||||
|
// chatMemberTableFilterQTFHBox.getChildren().add(chatMemberTableFilterQtfTF);
|
||||||
|
chatMemberTableFilterQTFHBox.setStyle("-fx-padding: 1;" +
|
||||||
|
"-fx-border-style: solid inside;" +
|
||||||
|
"-fx-border-width: 1;" +
|
||||||
|
"-fx-border-insets: 1;" +
|
||||||
|
"-fx-border-radius: 1;" +
|
||||||
|
"-fx-border-color: lightgrey;");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Button qtfNorth = new Button("N");
|
||||||
|
qtfNorth.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("0");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfNorthEast = new Button("NE");
|
||||||
|
qtfNorthEast.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("45");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfEast = new Button("E");
|
||||||
|
qtfEast.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("90");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfSouthEast = new Button("SE");
|
||||||
|
qtfSouthEast.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("135");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfSouth = new Button("S");
|
||||||
|
qtfSouth.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("180");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfSouthWest = new Button("SW");
|
||||||
|
qtfSouthWest.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("225");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfWest = new Button("W");
|
||||||
|
qtfWest.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("270");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button qtfNorthWest = new Button("NW");
|
||||||
|
qtfNorthWest.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
chatMemberTableFilterQtfTF.textProperty().set("315");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
chatMemberTableFilterQTFHBox.setSpacing(5);
|
||||||
|
chatMemberTableFilterQTFHBox.getChildren().addAll(qtfNorth, qtfNorthEast, qtfEast, qtfSouthEast, chatMemberTableFilterQtfTF, qtfSouth, qtfSouthWest, qtfWest, qtfNorthWest);
|
||||||
|
chatMemberTableFilterQTFAndQRBHbox.getChildren().add(chatMemberTableFilterQTFHBox);
|
||||||
|
|
||||||
|
chatMemberTableFilterVBoxForAllFilters.getChildren().add(chatMemberTableFilterQTFAndQRBHbox);
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterTextFieldBox = new HBox();
|
||||||
|
chatMemberTableFilterTextFieldBox.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
chatMemberTableFilterTextFieldBox.setStyle("-fx-padding: 1;" +
|
||||||
|
"-fx-border-style: solid inside;" +
|
||||||
|
"-fx-border-width: 1;" +
|
||||||
|
"-fx-border-insets: 1;" +
|
||||||
|
"-fx-border-radius: 1;" +
|
||||||
|
"-fx-border-color: lightgrey;");
|
||||||
|
|
||||||
|
|
||||||
|
chatcontroller.getLst_chatMemberListFiltered().predicateProperty().bind(Bindings.createObjectBinding(() -> chatcontroller.getLst_chatMemberListFilterPredicates().stream().reduce(x -> true, Predicate::and), chatcontroller.getLst_chatMemberListFilterPredicates()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TextField chatMemberTableFilterTextField = new TextField("Find...");
|
||||||
|
chatMemberTableFilterTextField.focusedProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean t1) {
|
||||||
|
if (chatMemberTableFilterTextField.focusedProperty().getValue()) {
|
||||||
|
|
||||||
|
chatMemberTableFilterTextField.clear();
|
||||||
|
} else {
|
||||||
|
if (!chatMemberTableFilterTextField.focusedProperty().getValue() && chatMemberTableFilterTextField.textProperty().equals("")) {
|
||||||
|
|
||||||
|
chatMemberTableFilterTextField.setText("Find...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// System.out.println(chatMemberTableFilterTextField.focusedProperty().getValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chatMemberTableFilterTextField.textProperty().addListener(new ChangeListener<String>() {
|
||||||
|
|
||||||
|
Predicate<ChatMember> searchTextPredicate = new Predicate<ChatMember>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMember chatMember) {
|
||||||
|
if (chatMember.getCallSign().toUpperCase().contains(chatMemberTableFilterTextField.getText().toUpperCase()) ||
|
||||||
|
chatMember.getCallSign().toUpperCase().contains(chatMemberTableFilterTextField.getText().toLowerCase())) {
|
||||||
|
return true;
|
||||||
|
} else
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
|
||||||
|
|
||||||
|
if (chatMemberTableFilterTextField.textProperty().getValue().equals("") && !chatMemberTableFilterTextField.focusedProperty().getValue()) {
|
||||||
|
chatMemberTableFilterTextField.setText("Find...");
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().remove(searchTextPredicate);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().add(searchTextPredicate);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(chatMemberTableFilterTextField.textProperty().getValue().equals("") + " / " + !chatMemberTableFilterTextField.focusedProperty().getValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterWorkedBandFiltersHbx = new HBox();
|
||||||
|
|
||||||
|
ToggleButton btnTglwkd = new ToggleButton("wkd");
|
||||||
|
|
||||||
|
Predicate<ChatMember> wkdPredicate = new Predicate<ChatMember>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(ChatMember chatMember) {
|
||||||
|
|
||||||
|
if (chatMember.isWorked()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
btnTglwkd.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(ActionEvent actionEvent) {
|
||||||
|
if (btnTglwkd.isSelected()) {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().add(wkdPredicate);
|
||||||
|
} else {
|
||||||
|
chatcontroller.getLst_chatMemberListFilterPredicates().remove(wkdPredicate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ToggleButton btnTglwkd144 = new ToggleButton("144");
|
||||||
|
ToggleButton btnTglwkd432 = new ToggleButton("432");
|
||||||
|
ToggleButton btnTglwkd23 = new ToggleButton("23");
|
||||||
|
ToggleButton btnTglwkd13 = new ToggleButton("13");
|
||||||
|
ToggleButton btnTglwkd9 = new ToggleButton("9");
|
||||||
|
ToggleButton btnTglwkd6 = new ToggleButton("6");
|
||||||
|
ToggleButton btnTglwkd3 = new ToggleButton("3");
|
||||||
|
ToggleButton btnTglInactive = new ToggleButton("Inactive stations");
|
||||||
|
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(new Label("Hide: "));
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd144);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd432);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd23);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd13);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd9);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd6);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglwkd3);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.getChildren().add(btnTglInactive);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.setSpacing(5);
|
||||||
|
chatMemberTableFilterWorkedBandFiltersHbx.setStyle("-fx-padding: 1;" +
|
||||||
|
"-fx-border-style: solid inside;" +
|
||||||
|
"-fx-border-width: 1;" +
|
||||||
|
"-fx-border-insets: 1;" +
|
||||||
|
"-fx-border-radius: 1;" +
|
||||||
|
"-fx-border-color: lightgrey;");
|
||||||
|
|
||||||
|
// chatMemberTableFilterWorkedBandFilters
|
||||||
|
|
||||||
|
|
||||||
|
chatMemberTableFilterTextFieldBox.getChildren().addAll(chatMemberTableFilterTextField);
|
||||||
|
|
||||||
|
HBox chatMemberTableFilterTextFieldAndWorkedBandsHbx = new HBox();
|
||||||
|
chatMemberTableFilterTextFieldAndWorkedBandsHbx.getChildren().addAll(chatMemberTableFilterTextFieldBox, chatMemberTableFilterWorkedBandFiltersHbx);
|
||||||
|
chatMemberTableFilterTextFieldAndWorkedBandsHbx.setSpacing(5);
|
||||||
|
|
||||||
|
chatMemberTableFilterVBoxForAllFilters.getChildren().add(chatMemberTableFilterTextFieldAndWorkedBandsHbx);
|
||||||
|
|
||||||
|
chatMemberTableBorderPane.setTop(chatMemberTableFilterVBoxForAllFilters);
|
||||||
|
|
||||||
|
|
||||||
|
mainWindowRightSplitPane.getItems().add(chatMemberTableBorderPane);
|
||||||
|
|
||||||
|
|
||||||
mainWindowLeftSplitPane.getItems().addAll(messageSectionSplitpane, mainWindowRightSplitPane);
|
mainWindowLeftSplitPane.getItems().addAll(messageSectionSplitpane, mainWindowRightSplitPane);
|
||||||
|
|||||||
@@ -6,3 +6,4 @@ DM5M;Marc;JO51JL;StringProperty [value: null];true;true;true;false;false;false;f
|
|||||||
DM5M;unknown;unknown;StringProperty [value: null];true;true;false;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;false;false;false;false;false;false
|
||||||
DF0GEB;Marc;JO51IJ;StringProperty [value: 144.174 ];true;true;true;false;false;false;false;false
|
DF0GEB;Marc;JO51IJ;StringProperty [value: 144.174 ];true;true;true;false;false;false;false;false
|
||||||
|
DF9QX;Matthias;JO42HD;StringProperty [value: null];true;false;false;false;false;false;false;false
|
||||||
Reference in New Issue
Block a user