From d44f0613c0cfc3eba352e5f7e62e80718b485704 Mon Sep 17 00:00:00 2001 From: Dmitriy Shabunevich Date: Sat, 8 Aug 2020 13:14:38 +0300 Subject: [PATCH 01/27] ec-7759 --- src/main/java/org/javaFX/EncryWindow.java | 1 - .../impl/handler/ChatsWindowHandler.java | 65 ++++++++----------- .../CreateNewLocalCommunityHandler.java | 9 +-- .../LocalCommunitiesWindowHandler.java | 11 +++- .../javaFX/model/nodes/VBoxCommunityCell.java | 3 +- .../nodes/VBoxDialogTextMessageCell.java | 16 +++++ .../java/org/javaFX/view/chatsWindow.fxml | 2 +- 7 files changed, 60 insertions(+), 47 deletions(-) diff --git a/src/main/java/org/javaFX/EncryWindow.java b/src/main/java/org/javaFX/EncryWindow.java index a6a4c8f..87fa276 100644 --- a/src/main/java/org/javaFX/EncryWindow.java +++ b/src/main/java/org/javaFX/EncryWindow.java @@ -45,7 +45,6 @@ public class EncryWindow extends Application { public final static String pathToStartWindowFXML = "view/startWindow.fxml"; - private String currentWindowStr ; private static String userPhoneNumber; diff --git a/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java b/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java index 6d17fd3..e920406 100644 --- a/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java +++ b/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java @@ -70,13 +70,13 @@ public class ChatsWindowHandler extends MainWindowBasicHandler { @FXML private ImageView searchImg; - //todo: remove after updating chat by front msg private int chatsLimit = 20; private long activeChatId; - public ChatsWindowHandler(){ - } + private ObservableList chatHistoryBackup; + + public ChatsWindowHandler(){} @FXML private void onMouseEntered(){ @@ -96,19 +96,25 @@ public void updateEncryWindow(EncryWindow encryWindow) { initializeDialogArea(); } enableMenuBar(); - FrontMsg a = getUserStateRef().get().inQueue.poll(); - if (a != null) { - if (a.code() == FrontMsg.Codes$.MODULE$.newMsgsInChat()) { - FrontMsg.NewMsgsInChat msg = (FrontMsg.NewMsgsInChat) a; + updateDialogArea(); + } + + private void updateDialogArea(){ + FrontMsg frontMsg = getUserStateRef().get().inQueue.poll(); + if (frontMsg != null ) { + if (frontMsg.code() == FrontMsg.Codes$.MODULE$.newMsgsInChat()) { + FrontMsg.NewMsgsInChat msg = (FrontMsg.NewMsgsInChat) frontMsg; ObservableList observableChatList = FXCollections.observableArrayList(); msg.msgs().forEach(msgCell -> observableChatList.add(msgCell)); + msg.msgs().forEach(msgCell -> chatHistoryBackup.add(msgCell)); messagesListView.scrollTo(1); messagesListView.setItems(observableChatList); - } else if (a.code() == FrontMsg.Codes$.MODULE$.historyMsgs()) { - FrontMsg.HistoryMsgs msg = (FrontMsg.HistoryMsgs) a; - if (msg.chatId() == activeChatId) { + } else if (frontMsg.code() == FrontMsg.Codes$.MODULE$.historyMsgs()) { + FrontMsg.HistoryMsgs msg = (FrontMsg.HistoryMsgs) frontMsg; + if (msg.chatId() == activeChatId && messagesListView.getItems().size() > 0) { ObservableList observableChatList = FXCollections.observableArrayList(); msg.msgs().forEach(msgCell -> observableChatList.add(msgCell)); + msg.msgs().forEach(msgCell -> chatHistoryBackup.add(msgCell)); VBoxMessageCell prevLastCell = messagesListView.getItems().get(0); messagesListView.getItems().forEach(cell -> observableChatList.add(cell)); messagesListView.setItems(observableChatList); @@ -117,7 +123,6 @@ public void updateEncryWindow(EncryWindow encryWindow) { } else { System.out.println("Unknown msg"); } - } } @@ -196,18 +201,13 @@ protected void initializeTable() { @FXML private ObservableList getObservableJMessageList(){ ObservableList observableMessageList = FXCollections.observableArrayList(); - getUserStateRef().get().messagesListView.getItems().forEach ( - message -> - observableMessageList.add(message) - ); - forceListRefreshOn(); + getUserStateRef().get().messagesListView.getItems() + .forEach ( + message -> + observableMessageList.add(message) + ); + messagesListView.setItems(observableMessageList); return observableMessageList; - - /* - new way of initialization - final String searchingStr = searchMessageTextField.getText().trim(); - ObservableList observableMessageList = findMessagesByStr(searchingStr); - return observableMessageList;*/ } @FXML @@ -233,6 +233,7 @@ public void hideLeftPane(){ @FXML protected void clickItem() { + chatHistoryBackup = FXCollections.observableArrayList(); getUserStateRef().get().setActiveDialog(messagesListView); if( messagesListView.getItems().size() == 0 ){ showStartMessagingArea(); @@ -242,8 +243,6 @@ protected void clickItem() { activeChatId = activeChat.chatIdProperty().get(); BackMsg msg = new BackMsg.SetActiveChat(activeChatId); initializeDialogArea(); - ObservableList observableMessageList = FXCollections.observableArrayList(); - messagesListView.setItems(observableMessageList); try { getUserStateRef().get().outQueue.put(msg); } catch (InterruptedException e) { @@ -259,12 +258,6 @@ private void refreshColors(VBoxChatCell activeChat){ activeChat.updatePaneColor(); } - private void forceListRefreshOn() { - ObservableList items = messagesListView.getItems(); - messagesListView.getItems().clear(); - messagesListView.setItems(items); - } - @FXML private void searchContactByKeyboard(){ AtomicBoolean keysPressed = KeyboardHandler.handleEnterPressed(searchThroughChatsTextField); @@ -278,7 +271,6 @@ public void handle(long now) { }.start(); } - private void findContact(){ final String searchingStr = searchThroughChatsTextField.getText().trim(); chatsListView.setItems(initTableBySubstr(searchingStr)); @@ -305,18 +297,17 @@ private ObservableList initTableBySubstr(String searchingStr){ @FXML public void findContentInDialog(){ final String searchingStr = searchMessageTextField.getText().trim(); - // findMessagesByStr(searchingStr); + messagesListView.setItems( getMessagesByStr(searchingStr) ); } - private ObservableList findMessagesByStr(String searchingStr){ - ObservableList observableMessageList = FXCollections.observableArrayList(); - getUserStateRef().get().messagesListView.getItems() - .filtered(message->message.getContentText().contains(searchingStr)) + private ObservableList getMessagesByStr(String searchingStr){ + ObservableList observableMessageList = FXCollections.observableArrayList(); + chatHistoryBackup.filtered(message->message.getContentText().toLowerCase().contains(searchingStr.toLowerCase())) .forEach ( message -> observableMessageList.add(message) ); - forceListRefreshOn(); + messagesListView.setItems(observableMessageList); return observableMessageList; } diff --git a/src/main/java/org/javaFX/controller/impl/handler/CreateNewLocalCommunityHandler.java b/src/main/java/org/javaFX/controller/impl/handler/CreateNewLocalCommunityHandler.java index e2cb04c..880466f 100644 --- a/src/main/java/org/javaFX/controller/impl/handler/CreateNewLocalCommunityHandler.java +++ b/src/main/java/org/javaFX/controller/impl/handler/CreateNewLocalCommunityHandler.java @@ -16,7 +16,6 @@ import org.javaFX.EncryWindow; import org.javaFX.model.JLocalCommunity; import org.javaFX.model.JSingleContact; -import org.javaFX.model.nodes.VBoxChatCell; import org.javaFX.model.nodes.VBoxContactCell; import org.javaFX.util.InfoContainer; import org.javaFX.util.KeyboardHandler; @@ -61,6 +60,7 @@ public CreateNewLocalCommunityHandler() { @Override public void updateEncryWindow(EncryWindow encryWindow) { + initChatsTable(); for(VBoxContactCell cell : contactsListView.getItems()){ cell.setSeparatorLineSize(blueSeparator.getWidth()- 40); } @@ -69,14 +69,15 @@ public void updateEncryWindow(EncryWindow encryWindow) { private ObservableList getObservableUserList(){ final String searchingStr = searchContactTextField.getText().trim(); - ObservableList observableList = initTableBySubstr(searchingStr); + ObservableList observableList = getFilteredList(initTableBySubstr(searchingStr), searchingStr); + contactsListView.setItems(observableList); return observableList; } @Override protected void initChatsTable(){ - ObservableList t = getObservableUserList(); - contactsListView.setItems(t); + ObservableList observableUserList = getObservableUserList(); + contactsListView.setItems(observableUserList); shutDownScheduledService(); } diff --git a/src/main/java/org/javaFX/controller/impl/handler/LocalCommunitiesWindowHandler.java b/src/main/java/org/javaFX/controller/impl/handler/LocalCommunitiesWindowHandler.java index 8784e8a..1005e6a 100644 --- a/src/main/java/org/javaFX/controller/impl/handler/LocalCommunitiesWindowHandler.java +++ b/src/main/java/org/javaFX/controller/impl/handler/LocalCommunitiesWindowHandler.java @@ -19,6 +19,7 @@ import org.javaFX.util.KeyboardHandler; import java.io.IOException; +import java.util.Comparator; import java.util.concurrent.atomic.AtomicBoolean; public class LocalCommunitiesWindowHandler extends CommunitiesWindowHandler { @@ -50,6 +51,7 @@ public LocalCommunitiesWindowHandler() { @Override public void updateEncryWindow(EncryWindow encryWindow) { + initChatsTable(); for(VBoxCommunityCell cell : communitiesListView.getItems()){ cell.setSeparatorLineSize(blueSeparator.getWidth()- 40); } @@ -58,13 +60,19 @@ public void updateEncryWindow(EncryWindow encryWindow) { private ObservableList getObservableCommunityList(){ final String searchingStr = searchCommunityTextField.getText().trim(); - ObservableList observableList = initTableBySubstr(searchingStr); + ObservableList observableList = getFilteredList(initTableBySubstr(searchingStr), searchingStr); if(observableList.size() == 0 ){ notFoundInfoLabel.setVisible(true); } return observableList; } + private ObservableList getFilteredList(ObservableList rawList, final String searchString ){ + rawList.sort( Comparator.comparing(contactCell -> ((VBoxCommunityCell)contactCell) + .getCurrentCommunity().getCommunityName().indexOf(searchString.toLowerCase()))); + return rawList; + } + @Override protected void initChatsTable(){ communitiesListView.setItems(getObservableCommunityList()); @@ -119,7 +127,6 @@ private ObservableList initTableBySubstr(String searchingStr) notFoundInfoLabel.setVisible(true); } else { - System.out.println("notFoundInfoLabel.setVisible(false);"); notFoundInfoLabel.setVisible(false); } return observableList; diff --git a/src/main/java/org/javaFX/model/nodes/VBoxCommunityCell.java b/src/main/java/org/javaFX/model/nodes/VBoxCommunityCell.java index 290fe43..da3fc21 100644 --- a/src/main/java/org/javaFX/model/nodes/VBoxCommunityCell.java +++ b/src/main/java/org/javaFX/model/nodes/VBoxCommunityCell.java @@ -2,8 +2,6 @@ import javafx.scene.control.Label; import javafx.scene.control.Separator; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.paint.Paint; import javafx.scene.text.Font; @@ -78,6 +76,7 @@ protected void setNodesToRootPane(JLocalCommunity jLocalCommunity) { protected void initRootPane(JLocalCommunity sourceElement){ setRootPane(new AnchorPane() ); getRootPane().setPrefHeight(60); + getRootPane().setStyle(backGroundStyle); } public void resetPaneColor(){ diff --git a/src/main/java/org/javaFX/model/nodes/VBoxDialogTextMessageCell.java b/src/main/java/org/javaFX/model/nodes/VBoxDialogTextMessageCell.java index 781a84e..7907cd3 100644 --- a/src/main/java/org/javaFX/model/nodes/VBoxDialogTextMessageCell.java +++ b/src/main/java/org/javaFX/model/nodes/VBoxDialogTextMessageCell.java @@ -6,6 +6,8 @@ import javafx.scene.shape.Shape; import org.javaFX.model.JMessage; +import java.util.Objects; + public class VBoxDialogTextMessageCell extends VBoxMessageCell{ private Label contentLabel; @@ -110,4 +112,18 @@ public void setContentLabel(Label contentLabel) { this.contentLabel = contentLabel; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + VBoxDialogTextMessageCell that = (VBoxDialogTextMessageCell) o; + return contentLabel.getText().equals(that.contentLabel.getText()) + && that.getTimeText().getText().equals(getTimeText().getText()); + } + + @Override + public int hashCode() { + return Objects.hash(contentLabel); + } } \ No newline at end of file diff --git a/src/main/java/org/javaFX/view/chatsWindow.fxml b/src/main/java/org/javaFX/view/chatsWindow.fxml index a38eac3..beede27 100644 --- a/src/main/java/org/javaFX/view/chatsWindow.fxml +++ b/src/main/java/org/javaFX/view/chatsWindow.fxml @@ -72,7 +72,7 @@ - + From 3f126934e53185a913ec07334924049eff0cd80b Mon Sep 17 00:00:00 2001 From: Dmitriy Shabunevich Date: Sat, 8 Aug 2020 13:25:37 +0300 Subject: [PATCH 02/27] ec-7758 --- .../java/org/javaFX/controller/MainWindowBasicHandler.java | 6 +----- .../javaFX/controller/impl/handler/ChatsWindowHandler.java | 1 + .../controller/impl/handler/CommunitiesWindowHandler.java | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/javaFX/controller/MainWindowBasicHandler.java b/src/main/java/org/javaFX/controller/MainWindowBasicHandler.java index 564fb6a..eef126d 100644 --- a/src/main/java/org/javaFX/controller/MainWindowBasicHandler.java +++ b/src/main/java/org/javaFX/controller/MainWindowBasicHandler.java @@ -2,7 +2,6 @@ import javafx.animation.AnimationTimer; import javafx.fxml.FXML; -import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.util.Duration; import org.encryfoundation.tg.javaIntegration.BackMsg; @@ -12,15 +11,12 @@ import org.javaFX.util.observers.JWindowObserver; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; + public abstract class MainWindowBasicHandler extends DataHandler{ private final Duration duration = Duration.millis(5) ; - @FXML - protected TextArea searchMessageTextArea; - @FXML protected TextArea sendMessageTextArea; diff --git a/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java b/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java index e920406..9c02d68 100644 --- a/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java +++ b/src/main/java/org/javaFX/controller/impl/handler/ChatsWindowHandler.java @@ -222,6 +222,7 @@ private void showLeftPane(){ rightBottomAnchorPane.setVisible(true); selectChatLabel.setVisible(false); chatNameLabel.setText(chatsListView.getSelectionModel().getSelectedItem().getChatTitle()); + searchMessageTextField.setText(""); } public void hideLeftPane(){ diff --git a/src/main/java/org/javaFX/controller/impl/handler/CommunitiesWindowHandler.java b/src/main/java/org/javaFX/controller/impl/handler/CommunitiesWindowHandler.java index 5e729e3..af82458 100644 --- a/src/main/java/org/javaFX/controller/impl/handler/CommunitiesWindowHandler.java +++ b/src/main/java/org/javaFX/controller/impl/handler/CommunitiesWindowHandler.java @@ -13,7 +13,7 @@ public abstract class CommunitiesWindowHandler extends DataHandler { private ScheduledExecutorService service; - private Duration period = Duration.millis(10); + private final Duration period = Duration.millis(10); public CommunitiesWindowHandler() { runDelayedInitialization(); From 28e05f3790a9c8860b07a849854d074ad18ceefb Mon Sep 17 00:00:00 2001 From: Dmitriy Shabunevich Date: Sat, 8 Aug 2020 13:27:47 +0300 Subject: [PATCH 03/27] ec-7757 --- src/main/java/org/javaFX/view/chatsWindow.fxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/javaFX/view/chatsWindow.fxml b/src/main/java/org/javaFX/view/chatsWindow.fxml index beede27..37534f3 100644 --- a/src/main/java/org/javaFX/view/chatsWindow.fxml +++ b/src/main/java/org/javaFX/view/chatsWindow.fxml @@ -72,7 +72,7 @@ - + From c6d38f44d14d3ec9d157ec5a343f02de6c21f4ab Mon Sep 17 00:00:00 2001 From: Dmitriy Shabunevich Date: Sat, 8 Aug 2020 13:46:50 +0300 Subject: [PATCH 04/27] ec-7756 --- src/main/java/org/javaFX/styles/chatsBackStyle.css | 5 +---- .../org/javaFX/styles/headerChatsBackStyle.css | 6 ++++++ src/main/java/org/javaFX/view/chatsWindow.fxml | 14 ++++++++++---- 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/javaFX/styles/headerChatsBackStyle.css diff --git a/src/main/java/org/javaFX/styles/chatsBackStyle.css b/src/main/java/org/javaFX/styles/chatsBackStyle.css index 29fa9f5..0f747df 100644 --- a/src/main/java/org/javaFX/styles/chatsBackStyle.css +++ b/src/main/java/org/javaFX/styles/chatsBackStyle.css @@ -10,7 +10,6 @@ -fx-padding:0; } - .list-cell { -fx-padding: 2px ; -fx-background-color: transparent, -fx-background ; @@ -21,6 +20,4 @@ -fx-padding: 2px ; -fx-background-color: transparent ; -fx-background-insets: 0 ; -} - - +} \ No newline at end of file diff --git a/src/main/java/org/javaFX/styles/headerChatsBackStyle.css b/src/main/java/org/javaFX/styles/headerChatsBackStyle.css new file mode 100644 index 0000000..7856af8 --- /dev/null +++ b/src/main/java/org/javaFX/styles/headerChatsBackStyle.css @@ -0,0 +1,6 @@ +.label{ + -fx-font-size: 14px; + -fx-font-weight: Regular; + -fx-font-family: "SF Pro Text"; +} + diff --git a/src/main/java/org/javaFX/view/chatsWindow.fxml b/src/main/java/org/javaFX/view/chatsWindow.fxml index 37534f3..ab69cdf 100644 --- a/src/main/java/org/javaFX/view/chatsWindow.fxml +++ b/src/main/java/org/javaFX/view/chatsWindow.fxml @@ -1,5 +1,6 @@ + @@ -32,7 +33,7 @@ - + @@ -49,8 +50,13 @@ - + + + + + + @@ -60,7 +66,7 @@ - @@ -91,7 +97,7 @@ - +