11package view .Menu ;
22
3+ import javafx .application .Platform ;
34import javafx .scene .Node ;
45import javafx .scene .control .Button ;
56import javafx .scene .control .Label ;
67import javafx .scene .control .ScrollPane ;
78import javafx .scene .control .TextArea ;
89import javafx .scene .image .Image ;
910import javafx .scene .layout .*;
11+ import javafx .scene .paint .Color ;
1012import javafx .scene .paint .Paint ;
1113import model .Data .DataForClientFromServer ;
1214import model .Data .DataForServerFromClient ;
@@ -21,16 +23,14 @@ public class ChatMenu extends Menu{
2123 public TextArea textArea = new TextArea ();
2224 public Label responseLabel = new Label ();
2325 public Pane pane = new Pane ();
24-
25-
26+ public ScrollPane scrollPane = new ScrollPane ();
2627
2728 public ArrayList <Message > messages = new ArrayList <>();
2829 public Message selectedMessage ;
2930 private String username ;
3031 private boolean isEditing = false ;
3132
3233
33-
3434 public ChatMenu () {
3535 super ("Chat Menu" );
3636 }
@@ -43,7 +43,37 @@ public void run(String username){
4343
4444 initPane (data );
4545 stage .getScene ().setRoot (pane );
46- }
46+
47+ Thread refreshThread = new Thread (){
48+ @ Override
49+ public void run () {
50+
51+ while (true ){
52+
53+ if (!stage .getScene ().getRoot ().equals (pane )){
54+ interrupt ();
55+ return ;
56+ }
57+
58+ try {
59+ Thread .sleep (1000 );
60+ } catch (InterruptedException e ) {
61+ e .printStackTrace ();
62+ }
63+
64+ Platform .runLater (new Runnable () {
65+ @ Override
66+ public void run () {
67+ refresh (sendDataToServer (new DataForServerFromClient
68+ ("get all messages" , token , menuName )), false );
69+ }
70+ });
71+ }
72+ }
73+ };
74+
75+ refreshThread .start ();
76+ }
4777
4878 public void initPane (DataForClientFromServer data ){
4979 responseLabel .setText ("" );
@@ -72,16 +102,15 @@ public void initPane(DataForClientFromServer data){
72102
73103 pane .getStylesheets ().add ("CSS/Css.css" );
74104 pane .setId ("background1" );
75-
76-
77- refresh (data );
105+ pane .getChildren ().add (scrollPane );
106+ refresh (data , true );
78107
79108 }
80109
81110
82111 public void addMessage (){
83- String messageText = textArea .getText ();
84-
112+ String messageText = textArea .getText (). replace ( '\n' , ' ' ) ;
113+ System . out . println ( messageText );
85114 if (messageText .equals ("" )){
86115 Printer .setSuccessResponseToLabel (responseLabel , "please write something" );
87116 return ;
@@ -90,7 +119,7 @@ public void addMessage(){
90119 DataForClientFromServer data = sendDataToServer (new DataForServerFromClient
91120 ("add message " + messageText .replace ("/n" , "*" ), token , menuName ));
92121
93- refresh (data );
122+ refresh (data , true );
94123 }
95124
96125 public void deleteMessage (){
@@ -100,7 +129,7 @@ public void deleteMessage(){
100129 if (data .getMessageType ().equals (MessageType .ERROR )){
101130 Printer .setSuccessResponseToLabel (responseLabel , data .getMessage ());
102131 } else {
103- refresh (data );
132+ refresh (data , true );
104133 }
105134 }
106135
@@ -112,7 +141,7 @@ public void editMessage(){
112141 if (data .getMessageType ().equals (MessageType .ERROR )){
113142 Printer .setSuccessResponseToLabel (responseLabel , data .getMessage ());
114143 } else {
115- refresh (data );
144+ refresh (data , true );
116145 }
117146 }
118147
@@ -126,7 +155,8 @@ public void readyForEdit(){
126155 textArea .setText (selectedMessage .message );
127156 }
128157
129- public void refresh (DataForClientFromServer data ){
158+
159+ public void refresh (DataForClientFromServer data , boolean clearTextArea ){
130160
131161 responseLabel .setText ("" );
132162
@@ -137,8 +167,6 @@ public void refresh(DataForClientFromServer data){
137167 data .getMessages ().get (i ).split ("~" )[1 ].replace ("*" , "/n" ), i ));
138168 }
139169
140- ScrollPane scrollPane = new ScrollPane ();
141-
142170 VBox messageBox = new VBox (5 );
143171
144172 for (Message message : messages ) {
@@ -147,31 +175,19 @@ public void refresh(DataForClientFromServer data){
147175 selectedMessage = message ;
148176 onMessageClicked ();
149177 });
150- box .minWidth (538 );
151- box .maxWidth (538 );
152-
153178 messageBox .getChildren ().add (box );
154179 }
155180
156- messageBox .minWidth (538 );
157- messageBox .maxWidth (538 );
158-
159-
160181 scrollPane .setContent (messageBox );
161182
162183 scrollPane .setLayoutX (131 );
163184 scrollPane .setLayoutY (38 );
164- scrollPane .minHeight (339 );
165- scrollPane .maxHeight (339 );
166- scrollPane .minWidth (538 );
167- scrollPane .maxWidth (538 );
168-
169- pane .getChildren ().removeIf (child -> child instanceof ScrollPane );
170-
171- pane .getChildren ().add (scrollPane );
172-
185+ scrollPane .setVbarPolicy (ScrollPane .ScrollBarPolicy .ALWAYS );
186+ scrollPane .setMinWidth (500 );
187+ scrollPane .setMaxWidth (500 );
188+ scrollPane .setMaxHeight (200 );
189+ if (clearTextArea )
173190 textArea .clear ();
174-
175191 }
176192
177193 private void onSubmitClicked (){
0 commit comments