From 75e551ca3bf97c5d20cb6a3d32c65e7e0371c59c Mon Sep 17 00:00:00 2001 From: IgorTimofeev Date: Tue, 17 Oct 2023 16:21:25 +0300 Subject: [PATCH] Added correct visualization of filesystem address for DiskDriveNode & RaidNode --- .../desktop/node/LabeledEntityNode.scala | 22 ++++++++++++------- .../desktop/node/nodes/DiskDriveNode.scala | 4 ++++ .../ocelot/desktop/node/nodes/RaidNode.scala | 7 +++++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/scala/ocelot/desktop/node/LabeledEntityNode.scala b/src/main/scala/ocelot/desktop/node/LabeledEntityNode.scala index 614ab4a..5eae1d9 100644 --- a/src/main/scala/ocelot/desktop/node/LabeledEntityNode.scala +++ b/src/main/scala/ocelot/desktop/node/LabeledEntityNode.scala @@ -1,12 +1,18 @@ package ocelot.desktop.node trait LabeledEntityNode extends EntityNode with LabeledNode { - override def label: Option[String] = - super.label - .orElse( - Option(entity.node) - .flatMap(node => Option(node.address)) - .orElse(Some("unknown")) - .filter(_ => exposeAddress) - ) + protected def fallbackLabelAddress: Option[String] = Some(entity.node.address) + + override def label: Option[String] = { + // How the fuck node/address can be unknown? +// super.label +// .orElse( +// Option(entity.node) +// .flatMap(node => Option(node.address)) +// .orElse(Some("unknown")) +// .filter(_ => exposeAddress) +// ) + + super.label.orElse(if (exposeAddress) fallbackLabelAddress else None) + } } diff --git a/src/main/scala/ocelot/desktop/node/nodes/DiskDriveNode.scala b/src/main/scala/ocelot/desktop/node/nodes/DiskDriveNode.scala index 25c94ab..fd118f1 100644 --- a/src/main/scala/ocelot/desktop/node/nodes/DiskDriveNode.scala +++ b/src/main/scala/ocelot/desktop/node/nodes/DiskDriveNode.scala @@ -48,6 +48,10 @@ class DiskDriveNode(entity: FloppyDiskDrive) ) } + // -------------------------------- LabeledEntityNode -------------------------------- + + override def fallbackLabelAddress: Option[String] = entity.filesystemNode.map(_.address) + // ---------------------------- DiskDriveAware ---------------------------- override def floppyDiskDrive: FloppyDiskDrive = entity diff --git a/src/main/scala/ocelot/desktop/node/nodes/RaidNode.scala b/src/main/scala/ocelot/desktop/node/nodes/RaidNode.scala index b731390..e5c6c4e 100644 --- a/src/main/scala/ocelot/desktop/node/nodes/RaidNode.scala +++ b/src/main/scala/ocelot/desktop/node/nodes/RaidNode.scala @@ -5,7 +5,7 @@ import ocelot.desktop.inventory.item.HddItem import ocelot.desktop.inventory.traits.DiskItem import ocelot.desktop.inventory.{Item, SyncedInventory} import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize} -import ocelot.desktop.node.{EntityNode, WindowedNode} +import ocelot.desktop.node.{EntityNode, LabeledEntityNode, WindowedNode} import ocelot.desktop.ui.event.ClickEvent import ocelot.desktop.ui.event.handlers.DiskActivityHandler import ocelot.desktop.ui.widget.contextmenu.ContextMenu @@ -21,6 +21,7 @@ import scala.util.Random class RaidNode(val raid: Raid) extends EntityNode(raid) with SyncedInventory + with LabeledEntityNode with DiskActivityHandler with DefaultSlotItemsFillable with WindowedNode[RaidWindow] @@ -79,6 +80,10 @@ class RaidNode(val raid: Raid) extends super.setupContextMenu(menu, event) } + // -------------------------------- LabeledEntityNode -------------------------------- + + override def fallbackLabelAddress: Option[String] = raid.filesystem.map(_.node.address) + // -------------------------------- Inventory -------------------------------- override type I = Item with HddItem