WIP desktop client for Chatto reimplemented in ScalaFX and Sapphire Framework
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

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
}