package wow.doge.chatto.model import java.time.Instant import com.sandec.mdfx.MDFXNode import javafx.scene.layout.HBox import scalafx.Includes._ import javafx.scene.layout.Priority import javafx.geometry.Pos import wow.doge.chatto.model.MessageType.Sender import wow.doge.chatto.model.MessageType.Receiver final case class Message( fromUser: String, toUser: String, message: String, messageTime: Instant ) object Message { lazy val markdownStyleSheet = getClass().getResource("/styles/markdown.css").toExternalForm() def empty = Message("", "", "", Instant.MIN) def createMdMessageBox( message: Message, messageType: MessageType ) = { val mdfxNode = new MDFXNode(message.message); mdfxNode .getStylesheets() .add(markdownStyleSheet) mdfxNode.setMaxWidth(500) mdfxNode.vgrow = Priority.ALWAYS mdfxNode.setAlignment(Pos.CENTER) mdfxNode.styleClass = messageType match { case Sender => Seq("chat-message-sender-box") case Receiver => Seq("chat-message-receiver-box") } val box = new HBox() messageType match { case Receiver => box.setAlignment(Pos.CENTER_LEFT) case Sender => box.setAlignment(Pos.CENTER_RIGHT) } // box.maxWidth(500) box.hgrow = Priority.ALWAYS box.vgrow = Priority.ALWAYS box.children ++= Seq(mdfxNode) box.fillHeight = true box } } sealed trait MessageType object MessageType { case object Sender extends MessageType case object Receiver extends MessageType }