Don't change things if editing is disabled

This commit is contained in:
Fingercomp 2025-08-18 15:50:44 +03:00
parent 604d7f156d
commit 745aac646f
No known key found for this signature in database
GPG Key ID: BBC71CEE45D86E37
3 changed files with 27 additions and 7 deletions

View File

@ -35,7 +35,7 @@ trait DiskItem
override def createWindow(): DiskEditWindow = new DiskEditWindow(this)
def isEditingAllowed: Boolean = {
def editingAllowed: Boolean = {
slot.fold(false)(_.inventory match {
case _: RaidNode => false
case _ => true
@ -43,7 +43,7 @@ trait DiskItem
}
override def fillRmbMenu(menu: ContextMenu): Unit = {
if (isEditingAllowed) {
if (editingAllowed) {
// Real path
entity match {
case diskManaged: DiskManaged =>

View File

@ -142,4 +142,6 @@ class RaidNode(val raid: Raid)
override def diskLabel_=(label: Option[String]): Unit = raid.label.setLabel(label.orNull)
override def isLabelWriteable: Boolean = true
override def editingAllowed: Boolean = raid.filesystem.isDefined
}

View File

@ -63,7 +63,7 @@ class DiskEditWindow(disk: EditableDisk) extends PanelWindow {
disk.diskLabel = Some(text).filter(_.nonEmpty)
}
override def enabled: Boolean = disk.isLabelWriteable
override def enabled: Boolean = disk.editingAllowed && disk.isLabelWriteable
}
},
Padding2D(bottom = 12),
@ -106,7 +106,7 @@ class DiskEditWindow(disk: EditableDisk) extends PanelWindow {
override def borderColor: Color = borderAnimation.color
override def onPressed(): Unit = {
if (!isColorSelected) {
if (disk.editingAllowed && !isColorSelected) {
disk.color = dyeColor
}
}
@ -135,7 +135,11 @@ class DiskEditWindow(disk: EditableDisk) extends PanelWindow {
children :+= new Button {
override def text: String = "Make read-only"
override def onClick(): Unit = disk.lock()
override def onClick(): Unit = {
if (disk.editingAllowed) {
disk.lock()
}
}
override def enabled: Boolean = isWriteable
}
@ -148,7 +152,11 @@ class DiskEditWindow(disk: EditableDisk) extends PanelWindow {
children :+= new Button {
override def text: String = s"Make ${if (isManaged) "unmanaged" else "managed"}"
override def onClick(): Unit = disk.setManaged(!isManaged)
override def onClick(): Unit = {
if (disk.editingAllowed) {
disk.setManaged(!isManaged)
}
}
override def maximumSize: Size2D = super.maximumSize.copy(width = Float.PositiveInfinity)
}
@ -161,12 +169,20 @@ class DiskEditWindow(disk: EditableDisk) extends PanelWindow {
children :+= BottomRow
}
})
override def update(): Unit = {
super.update()
if (!disk.editingAllowed) {
close()
}
}
}
object DiskEditWindow {
trait EditableDisk {
def disk: Option[Environment]
def diskAddress: Option[String] = for (
disk <- disk;
node <- Option(disk.node);
@ -182,6 +198,8 @@ object DiskEditWindow {
def diskLabel_=(label: Option[String]): Unit
def isLabelWriteable: Boolean
def editingAllowed: Boolean
}
trait HasColor {