mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-19 18:49:19 +01:00
68 lines
2.0 KiB
Scala
68 lines
2.0 KiB
Scala
package ocelot.desktop.node.nodes
|
|
|
|
import ocelot.desktop.geometry.Rect2D
|
|
import ocelot.desktop.graphics.{Graphics, IconSource}
|
|
import ocelot.desktop.inventory.SyncedInventory
|
|
import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize}
|
|
import ocelot.desktop.node.{EntityNode, LabeledEntityNode, ShiftClickNode, WindowedNode}
|
|
import ocelot.desktop.ui.event.ClickEvent
|
|
import ocelot.desktop.ui.event.handlers.DiskActivityHandler
|
|
import ocelot.desktop.ui.widget.contextmenu.ContextMenu
|
|
import ocelot.desktop.util.DiskDriveAware
|
|
import ocelot.desktop.windows.DiskDriveWindow
|
|
import totoro.ocelot.brain.entity.FloppyDiskDrive
|
|
|
|
class DiskDriveNode(entity: FloppyDiskDrive)
|
|
extends EntityNode(entity)
|
|
with SyncedInventory
|
|
with LabeledEntityNode
|
|
with DiskDriveAware
|
|
with DiskActivityHandler
|
|
with ShiftClickNode
|
|
with WindowedNode[DiskDriveWindow] {
|
|
|
|
override def iconSource: IconSource = IconSource.Nodes.DiskDrive.Default
|
|
|
|
override def setupContextMenu(menu: ContextMenu, event: ClickEvent): Unit = {
|
|
if (isFloppyItemPresent) {
|
|
addEjectContextMenuEntry(menu)
|
|
|
|
menu.addSeparator()
|
|
}
|
|
|
|
super.setupContextMenu(menu, event)
|
|
}
|
|
|
|
override def draw(g: Graphics): Unit = {
|
|
super.draw(g)
|
|
|
|
drawActivityAndFloppy(
|
|
g,
|
|
Rect2D(
|
|
position.x + HighlightThickness,
|
|
position.y + HighlightThickness,
|
|
NoHighlightSize,
|
|
NoHighlightSize,
|
|
),
|
|
IconSource.Nodes.DiskDrive,
|
|
)
|
|
}
|
|
|
|
// -------------------------------- LabeledEntityNode --------------------------------
|
|
|
|
override def fallbackLabelAddress: Option[String] = entity.filesystemNode.map(_.address)
|
|
|
|
// ---------------------------- DiskDriveAware ----------------------------
|
|
|
|
override def floppyDiskDrive: FloppyDiskDrive = entity
|
|
|
|
// ---------------------------- ShiftClickNode ----------------------------
|
|
|
|
override protected def onShiftClick(event: ClickEvent): Unit = {
|
|
if (isFloppyItemPresent)
|
|
eject()
|
|
}
|
|
|
|
override protected def hoveredShiftStatusBarText: String = "Eject floppy"
|
|
}
|