You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
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
|
|
}
|