Skip to content

Commit cbe2db4

Browse files
سلامی به باد دارم
همان که بوی گند را از این مکان دور می دارد
1 parent e32b783 commit cbe2db4

4 files changed

Lines changed: 73 additions & 45 deletions

File tree

Client/src/main/java/model/Message.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package model;
22

3-
import javafx.scene.layout.HBox;
3+
import javafx.geometry.Insets;
4+
import javafx.scene.layout.*;
45
import javafx.scene.control.Label;
5-
import javafx.scene.layout.VBox;
6+
import javafx.scene.paint.Color;
7+
import javafx.scene.text.Font;
68

79

810
public class Message {
@@ -18,10 +20,18 @@ public Message(String author, String message, int Id){
1820

1921

2022
public VBox getMessageForDisplay(){
21-
VBox toReturn = new VBox();
22-
Label authorLabel = new Label(author);
23-
Label messageLabel = new Label(message);
24-
toReturn.getChildren().addAll(authorLabel, messageLabel);
25-
return toReturn;
23+
VBox vBox = new VBox();
24+
Label label1 = new Label(author);
25+
label1.setFont(Font.font(15));
26+
label1.setTextFill(Color.BLUE);
27+
vBox.getChildren().add(label1);
28+
Label label2 = new Label(message);
29+
label2.setWrapText(true);
30+
vBox.getChildren().add(label2);
31+
vBox.setMinWidth(300);
32+
vBox.setMaxWidth(300);
33+
vBox.setBackground(new Background(new BackgroundFill(Color.GREENYELLOW, new CornerRadii(0),
34+
new Insets(0,0,0,0))));
35+
return vBox;
2636
}
2737
}

Client/src/main/java/view/Menu/ChatMenu.java

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package view.Menu;
22

3+
import javafx.application.Platform;
34
import javafx.scene.Node;
45
import javafx.scene.control.Button;
56
import javafx.scene.control.Label;
67
import javafx.scene.control.ScrollPane;
78
import javafx.scene.control.TextArea;
89
import javafx.scene.image.Image;
910
import javafx.scene.layout.*;
11+
import javafx.scene.paint.Color;
1012
import javafx.scene.paint.Paint;
1113
import model.Data.DataForClientFromServer;
1214
import 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(){

Client/src/main/java/view/Menu/Menu.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ protected void sendCommandToServer1(Matcher matcher) {
5252
matcher.reset();
5353
matcher.find();
5454

55-
5655
DataForClientFromServer data = sendDataToServer
5756
(new DataForServerFromClient(matcher.group(0), username, menuName));
5857

Client/src/main/java/view/graphic/GameGraphicController.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import javafx.scene.shape.Rectangle;
1212
import javafx.util.Duration;
1313
import model.User;
14+
import view.Menu.MainMenu;
1415
import view.Menu.Menu;
1516

1617
import java.util.ArrayList;
@@ -242,9 +243,10 @@ public double handleRivalActionsGraphic(DataFromGameRun event) {
242243
getSacrificesIndex(response.substring(24), false));
243244

244245

245-
} else if (response.startsWith("game finished ")) {
246-
String name = response.split(" ")[2];
247-
//todo hi hi va ha ha
246+
}else if (response.startsWith("game finished ")) {
247+
showPopupMessage(Utils.getFirstGroupInMatcher(Utils.getMatcher
248+
(response, "game finished (.*)")) + " can say hoho");
249+
MainMenu.getInstance(username).run();
248250
} else {
249251
time = responseIsForPhaseChange(response);
250252
}
@@ -378,6 +380,9 @@ private double handleSelfActionGraphic(DataFromGameRun event) {
378380
getSacrificesIndex(response.substring(24), true));
379381

380382
} else if (response.startsWith("game finished ")) {
383+
showPopupMessage(Utils.getFirstGroupInMatcher(Utils.getMatcher
384+
(response, "game finished (.*)")) + " can say hoho");
385+
MainMenu.getInstance(username).run();
381386
} else {
382387
time = responseIsForPhaseChange(response);
383388
}
@@ -436,8 +441,6 @@ public MyThread(GameGraphicController controller){
436441
public void run() {
437442

438443
while(true){
439-
// System.out.println("هی هی و هوهو");
440-
441444
if(controller.canRunAnimation){
442445
Platform.runLater(new Runnable() {
443446
@Override

0 commit comments

Comments
 (0)