mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-20 02:59:19 +01:00
59 lines
1.7 KiB
Scala
59 lines
1.7 KiB
Scala
package ocelot.desktop.node.nodes
|
|
|
|
import ocelot.desktop.geometry.Rect2D
|
|
import ocelot.desktop.graphics.Graphics
|
|
import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize}
|
|
import ocelot.desktop.node.{LabeledEntityNode, ShiftClickNode, SyncedInventoryEntityNode}
|
|
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 totoro.ocelot.brain.entity.FloppyDiskDrive
|
|
|
|
class DiskDriveNode(entity: FloppyDiskDrive)
|
|
extends SyncedInventoryEntityNode(entity)
|
|
with LabeledEntityNode
|
|
with DiskDriveAware
|
|
with DiskActivityHandler
|
|
with ShiftClickNode
|
|
{
|
|
override def icon: String = "nodes/disk-drive/Default"
|
|
override protected val canOpen = true
|
|
|
|
override def setupContextMenu(menu: ContextMenu, event: ClickEvent): Unit = {
|
|
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
|
|
),
|
|
"nodes/disk-drive/"
|
|
)
|
|
}
|
|
|
|
// ---------------------------- DiskDriveAware ----------------------------
|
|
|
|
override def floppyDiskDrive: FloppyDiskDrive = entity
|
|
|
|
// ---------------------------- ShiftClickNode ----------------------------
|
|
|
|
override protected def onShiftClick(event: ClickEvent): Unit = {
|
|
if (isFloppyItemPresent)
|
|
eject()
|
|
}
|
|
|
|
override protected def hoveredShiftStatusBarText: String = "Eject floppy"
|
|
}
|