feat: improve messages layout
This commit is contained in:
parent
7886d72a39
commit
3ed38442dc
7 changed files with 49 additions and 70 deletions
|
@ -12,7 +12,6 @@ import javafx.fxml.FXML;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.scene.layout.VBox;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
|
@ -18,17 +18,11 @@ public class MessageListItemCell extends ListCell<Message> {
|
||||||
protected void updateItem(Message item, boolean empty) {
|
protected void updateItem(Message item, boolean empty) {
|
||||||
super.updateItem(item, empty);
|
super.updateItem(item, empty);
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
FXMLLoader cellLoader;
|
|
||||||
final User sender = item.getSender();
|
|
||||||
if (sender instanceof CurrentUser) {
|
|
||||||
cellLoader = new FXMLLoader(getClass().getResource("messageListItemSelf.fxml"));
|
|
||||||
} else {
|
|
||||||
cellLoader = new FXMLLoader(getClass().getResource("messageListItemOther.fxml"));
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
|
FXMLLoader cellLoader = new FXMLLoader(getClass().getResource("messageListItem.fxml"));
|
||||||
setGraphic(cellLoader.load());
|
setGraphic(cellLoader.load());
|
||||||
final MessageListItemController userListItemController = cellLoader.getController();
|
final MessageListItemController userListItemController = cellLoader.getController();
|
||||||
userListItemController.setMessage(item.getText());
|
userListItemController.setMessage(item);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,40 @@
|
||||||
package fr.insa.clavardator.ui.chat;
|
package fr.insa.clavardator.ui.chat;
|
||||||
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
|
import fr.insa.clavardator.chat.Message;
|
||||||
|
import fr.insa.clavardator.users.CurrentUser;
|
||||||
|
import fr.insa.clavardator.users.User;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
|
import javafx.geometry.Pos;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.layout.VBox;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
public class MessageListItemController implements Initializable {
|
public class MessageListItemController implements Initializable {
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private VBox container;
|
||||||
@FXML
|
@FXML
|
||||||
private JFXButton button;
|
private JFXButton button;
|
||||||
|
@FXML
|
||||||
|
private Label timestamp;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL url, ResourceBundle rb) {
|
public void initialize(URL url, ResourceBundle rb) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessage(String text) {
|
public void setMessage(Message message) {
|
||||||
button.setText(text);
|
button.setText(message.getText());
|
||||||
|
if (message.getSender() instanceof CurrentUser) {
|
||||||
|
container.setAlignment(Pos.CENTER_RIGHT);
|
||||||
|
button.getStyleClass().add("message-self");
|
||||||
|
} else {
|
||||||
|
container.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
button.getStyleClass().add("message-other");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
<!--suppress JavaFxUnresolvedFxIdReference -->
|
<!--suppress JavaFxUnresolvedFxIdReference -->
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import com.jfoenix.controls.JFXSpinner?>
|
<?import com.jfoenix.controls.JFXSpinner?>
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
<AnchorPane xmlns="http://javafx.com/javafx/11.0.1"
|
<AnchorPane xmlns="http://javafx.com/javafx/11.0.1"
|
||||||
xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.insa.clavardator.ui.chat.ChatController"
|
xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.insa.clavardator.ui.chat.ChatController"
|
||||||
stylesheets="@../styles.css" styleClass="container">
|
stylesheets="@../styles.css" styleClass="container">
|
||||||
|
@ -13,6 +14,9 @@
|
||||||
<VBox fx:id="chatContainer">
|
<VBox fx:id="chatContainer">
|
||||||
<fx:include source="chatHeader.fxml" fx:id="chatHeader"/>
|
<fx:include source="chatHeader.fxml" fx:id="chatHeader"/>
|
||||||
<StackPane VBox.vgrow="ALWAYS">
|
<StackPane VBox.vgrow="ALWAYS">
|
||||||
|
<padding>
|
||||||
|
<Insets left="10" right="10"/>
|
||||||
|
</padding>
|
||||||
<ListView fx:id="messageList"/>
|
<ListView fx:id="messageList"/>
|
||||||
<fx:include source="../loadingScreen.fxml" fx:id="loading"/>
|
<fx:include source="../loadingScreen.fxml" fx:id="loading"/>
|
||||||
</StackPane>
|
</StackPane>
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import com.jfoenix.controls.JFXButton?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<VBox xmlns="http://javafx.com/javafx/11.0.1"
|
||||||
|
xmlns:fx="http://javafx.com/fxml/1"
|
||||||
|
fx:controller="fr.insa.clavardator.ui.chat.MessageListItemController"
|
||||||
|
stylesheets="@../styles.css"
|
||||||
|
styleClass="inner"
|
||||||
|
fx:id="container"
|
||||||
|
spacing="10">
|
||||||
|
<padding>
|
||||||
|
<Insets left="50" right="50" top="10" bottom="10"/>
|
||||||
|
</padding>
|
||||||
|
<JFXButton fx:id="button"
|
||||||
|
mnemonicParsing="false"
|
||||||
|
text="Message"
|
||||||
|
textAlignment="CENTER"/>
|
||||||
|
<Label fx:id="timestamp"
|
||||||
|
text="Timestamp"
|
||||||
|
styleClass="timestamp"/>
|
||||||
|
</VBox>
|
|
@ -1,29 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import com.jfoenix.controls.JFXButton?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.layout.*?>
|
|
||||||
<AnchorPane prefHeight="80.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1"
|
|
||||||
xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.insa.clavardator.ui.chat.MessageListItemController"
|
|
||||||
stylesheets="@../styles.css" styleClass="inner">
|
|
||||||
<VBox prefHeight="200.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
|
|
||||||
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<children>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
|
|
||||||
<children>
|
|
||||||
<JFXButton fx:id="button" alignment="CENTER_LEFT" mnemonicParsing="false"
|
|
||||||
styleClass="message-other" text="Message" textAlignment="CENTER"
|
|
||||||
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="50.0"
|
|
||||||
AnchorPane.topAnchor="10.0"/>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
|
||||||
<children>
|
|
||||||
<Label alignment="CENTER_LEFT" prefHeight="35.0" prefWidth="600.0" text="Timestamp" styleClass="timestamp"
|
|
||||||
AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0"
|
|
||||||
AnchorPane.topAnchor="0.0"/>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
|
||||||
</VBox>
|
|
||||||
</AnchorPane>
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import com.jfoenix.controls.JFXButton?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.layout.*?>
|
|
||||||
<?import javafx.scene.text.Font?>
|
|
||||||
<AnchorPane prefHeight="80.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1"
|
|
||||||
xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.insa.clavardator.ui.chat.MessageListItemController"
|
|
||||||
stylesheets="@../styles.css" styleClass="inner">
|
|
||||||
<VBox prefHeight="200.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
|
|
||||||
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<children>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
|
|
||||||
<children>
|
|
||||||
<JFXButton fx:id="button" alignment="CENTER_RIGHT" mnemonicParsing="false"
|
|
||||||
styleClass="message-self" text="Message" textAlignment="CENTER" textFill="WHITE"
|
|
||||||
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="10.0"
|
|
||||||
AnchorPane.topAnchor="10.0"/>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
|
||||||
<children>
|
|
||||||
<Label alignment="CENTER_RIGHT" prefHeight="35.0" prefWidth="600.0" text="Timestamp" styleClass="timestamp"
|
|
||||||
AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0"
|
|
||||||
AnchorPane.topAnchor="0.0"/>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
|
||||||
</VBox>
|
|
||||||
</AnchorPane>
|
|
Loading…
Reference in a new issue