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" }