mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-03-29 20:20:56 +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.ObservableList;
|
||||
import javafx.collections.transformation.FilteredList;
|
||||
import javafx.collections.transformation.SortedList;
|
||||
import kst4contest.ApplicationConstants;
|
||||
import kst4contest.model.*;
|
||||
import kst4contest.utils.PlayAudioUtils;
|
||||
@@ -354,11 +355,10 @@ public class ChatController {
|
||||
private ObservableList<ChatMember> chatMemberList = FXCollections.observableArrayList(); // List of active stations
|
||||
// in chat
|
||||
private ObservableList<ChatMember> lst_chatMemberList = FXCollections.synchronizedObservableList(chatMemberList); // List
|
||||
// of
|
||||
// active
|
||||
// stations
|
||||
// in
|
||||
// chat
|
||||
// of active stn in chat
|
||||
private FilteredList<ChatMember> lst_chatMemberListFiltered = new FilteredList<ChatMember>(chatMemberList);
|
||||
private SortedList<ChatMember> lst_chatMemberSortedFilteredList = new SortedList<ChatMember>(lst_chatMemberListFiltered);
|
||||
private ObservableList<Predicate<ChatMember>> lst_chatMemberListFilterPredicates = FXCollections.observableArrayList();
|
||||
private ObservableList<ClusterMessage> lst_clusterMemberList = FXCollections.observableArrayList();
|
||||
|
||||
private ObservableList<ChatMember> lst_DBBasedWkdCallSignList = FXCollections.observableArrayList();
|
||||
@@ -495,6 +495,22 @@ public class ChatController {
|
||||
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() {
|
||||
return lst_clusterMemberList;
|
||||
}
|
||||
@@ -596,7 +612,7 @@ category = new ChatCategory(2);
|
||||
}
|
||||
catch (Exception nullPointerExc) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -632,7 +648,7 @@ category = new ChatCategory(2);
|
||||
|
||||
} catch (Exception nullPointerExc) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,7 +490,16 @@ public class MessageBusManagementThread extends Thread {
|
||||
|
||||
if (index != -1) {
|
||||
//user found in the chatmember list
|
||||
newMessage.setSender(this.client.getLst_chatMemberList().get(index)); // set sender to member of
|
||||
try {
|
||||
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
|
||||
} else {
|
||||
//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());
|
||||
}
|
||||
} 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();
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,9 @@ import java.net.URISyntaxException;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.media.Media;
|
||||
import javafx.scene.media.MediaPlayer;
|
||||
import kst4contest.ApplicationConstants;
|
||||
@@ -37,12 +39,6 @@ import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.input.KeyEvent;
|
||||
import javafx.scene.input.MouseButton;
|
||||
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.stage.FileChooser;
|
||||
import javafx.stage.Stage;
|
||||
@@ -76,6 +72,7 @@ public class Kst4ContestApplication extends Application {
|
||||
|
||||
SplitPane selectedCallSignSplitPane = new SplitPane();
|
||||
selectedCallSignSplitPane.setOrientation(Orientation.VERTICAL);
|
||||
selectedCallSignSplitPane.setDividerPositions(0.9);
|
||||
|
||||
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(selectedCallSignNoFilterRB);
|
||||
selectedCallSignInfoBottomControlsBox.getChildren().add(selectedCallSignFilterToMeMsgRB);
|
||||
@@ -225,11 +221,16 @@ public class Kst4ContestApplication extends Application {
|
||||
@Override
|
||||
public boolean test(ChatMessage chatMessage) {
|
||||
|
||||
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
||||
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
||||
return true;
|
||||
try {
|
||||
if ((chatMessage.getSender().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) ||
|
||||
chatMessage.getReceiver().getCallSign().equals(selectedCallSignInfoStageChatMember.getCallSign())) {
|
||||
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;
|
||||
}
|
||||
});
|
||||
callSignCol.setSortType(TableColumn.SortType.ASCENDING);
|
||||
tbl_chatMemberTable.getSortOrder().add(callSignCol);
|
||||
|
||||
TableColumn<ChatMember, String> nameCol = new TableColumn<ChatMember, String>("Name");
|
||||
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.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>() {
|
||||
//// ObservableStringValue chatState = new SimpleStringProperty();
|
||||
//
|
||||
@@ -589,6 +594,15 @@ public class Kst4ContestApplication extends Application {
|
||||
public void run() {
|
||||
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(() -> {
|
||||
|
||||
try {
|
||||
@@ -2839,10 +2853,9 @@ public class Kst4ContestApplication extends Application {
|
||||
+ " as " + chatcontroller.getChatPreferences().getLoginCallSign() + " ("
|
||||
+ chatcontroller.getChatPreferences().getLoginName() + ")" + " in "
|
||||
+ chatcontroller.getChatPreferences().getLoginLocator() + " ("
|
||||
+ chatcontroller.getLst_chatMemberList().size() + " users online.),"
|
||||
+ (chatcontroller.getLst_toAllMessageList().size()
|
||||
+ chatcontroller.getLst_toOtherMessageList().size()
|
||||
+ chatcontroller.getLst_toMeMessageList().size())
|
||||
+ chatcontroller.getLst_chatMemberList().size() + " users online, "
|
||||
+ chatcontroller.getLst_chatMemberSortedFilteredList().size() + " shown), "
|
||||
+ (chatcontroller.getLst_globalChatMessageList().size())
|
||||
+ " messages total.";
|
||||
chatcontroller.getChatPreferences().setChatState(chatState);
|
||||
}
|
||||
@@ -3016,42 +3029,30 @@ public class Kst4ContestApplication extends Application {
|
||||
selectedChatMemberList.addListener(new ListChangeListener<ChatMember>() {
|
||||
@Override
|
||||
public void onChanged(Change<? extends ChatMember> selectedChatMember) {
|
||||
if (selectionModelChatMember.getSelectedItems().isEmpty()) {
|
||||
// do nothing, that was a deselection-event!
|
||||
} else {
|
||||
try{
|
||||
|
||||
// selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0); //initialize Chatmember for showing detals at another stage
|
||||
if (selectionModelChatMember.getSelectedItems().isEmpty()) {
|
||||
// do nothing, that was a deselection-event!
|
||||
} else {
|
||||
|
||||
|
||||
// try {
|
||||
//// stage_selectedCallSignInfoStage.close();
|
||||
// } catch (NullPointerException ne) {
|
||||
// //no stage was opened
|
||||
// System.out.println("Kst4ContestApplication, Info: no infowindow was open: " + ne.getMessage());
|
||||
// }
|
||||
selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0);
|
||||
|
||||
// stage_selectedCallSignInfoStage = initializeFurtherInfoOnSelectedChatMemberStage(selectedChatMember.getList().get(0));
|
||||
selectedCallSignInfoStageChatMember = selectedChatMember.getList().get(0);
|
||||
selectedCallSignFurtherInfoPane.getChildren().clear();
|
||||
selectedCallSignFurtherInfoPane.getChildren().add(generateFurtherInfoAbtSelectedCallsignBP(selectedCallSignInfoStageChatMember));
|
||||
|
||||
txt_chatMessageUserInput.clear();
|
||||
txt_chatMessageUserInput
|
||||
.setText("/cq " + selectedChatMember.getList().get(0).getCallSign() + " ");
|
||||
System.out.println(
|
||||
"##################selected ChatMember: " + selectedChatMember.getList().get(0));
|
||||
// selectedChatMemberList.clear();
|
||||
// selectionModelChatMember.clearSelection(0);
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
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
|
||||
.setText("/cq " + selectedChatMember.getList().get(0).getCallSign() + " ");
|
||||
System.out.println(
|
||||
"##################selected ChatMember: " + selectedChatMember.getList().get(0));
|
||||
// selectedChatMemberList.clear();
|
||||
// selectionModelChatMember.clearSelection(0);
|
||||
System.out.println("KST4ContestApp <<<catched ERROR>>>, selected user left chat!");
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -3081,7 +3082,326 @@ public class Kst4ContestApplication extends Application {
|
||||
|
||||
SplitPane mainWindowRightSplitPane = new SplitPane();
|
||||
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);
|
||||
|
||||
@@ -5,4 +5,5 @@ DM5M;Marc;JO51JL;StringProperty [value: null];true;true;false;false;false;false;
|
||||
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
|
||||
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