mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-20 11:09:20 +01:00
Add status bar
This commit is contained in:
parent
8f66344593
commit
a6eea1de3f
BIN
sprites/icons/DragLMB.png
Normal file
BIN
sprites/icons/DragLMB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 B |
BIN
sprites/icons/DragRMB.png
Normal file
BIN
sprites/icons/DragRMB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 376 B |
BIN
sprites/icons/LMB.png
Normal file
BIN
sprites/icons/LMB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 B |
BIN
sprites/icons/RMB.png
Normal file
BIN
sprites/icons/RMB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 346 B |
@ -32,3 +32,8 @@ ContextMenuSeparator = #444444
|
|||||||
ComputerAddress = #333333
|
ComputerAddress = #333333
|
||||||
|
|
||||||
ScreenOff = #000000
|
ScreenOff = #000000
|
||||||
|
|
||||||
|
StatusBar = #181818
|
||||||
|
StatusBarBorder = #222222
|
||||||
|
StatusBarForeground = #777777
|
||||||
|
StatusBarIcon = #bbbbbb
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 59 KiB |
@ -1,98 +1,102 @@
|
|||||||
BackgroundPattern 0 0 304 304
|
BackgroundPattern 0 0 304 304
|
||||||
ComputerMotherboard 305 0 79 70
|
ComputerMotherboard 305 0 79 70
|
||||||
Empty 337 277 1 1
|
Empty 417 0 1 1
|
||||||
EmptySlot 441 96 18 18
|
EmptySlot 441 96 18 18
|
||||||
ShadowBorder 305 277 1 24
|
ShadowBorder 385 0 1 24
|
||||||
ShadowCorner 424 71 24 24
|
ShadowCorner 424 71 24 24
|
||||||
buttons/PowerOff 460 96 18 18
|
buttons/PowerOff 460 96 18 18
|
||||||
buttons/PowerOn 479 96 18 18
|
buttons/PowerOn 479 96 18 18
|
||||||
icons/CPU 424 129 16 16
|
icons/CPU 424 144 16 16
|
||||||
icons/Card 441 129 16 16
|
icons/Card 441 144 16 16
|
||||||
icons/ComponentBus 458 129 16 16
|
icons/ComponentBus 458 144 16 16
|
||||||
icons/EEPROM 475 129 16 16
|
icons/DragLMB 424 129 21 14
|
||||||
icons/Floppy 492 129 16 16
|
icons/DragRMB 446 129 21 14
|
||||||
icons/HDD 424 146 16 16
|
icons/EEPROM 475 144 16 16
|
||||||
icons/Memory 441 146 16 16
|
icons/Floppy 492 144 16 16
|
||||||
icons/NA 458 146 16 16
|
icons/HDD 449 71 16 16
|
||||||
icons/RackMountable 475 146 16 16
|
icons/LMB 373 268 11 14
|
||||||
icons/Tier0 492 146 16 16
|
icons/Memory 466 71 16 16
|
||||||
icons/Tier1 449 71 16 16
|
icons/NA 483 71 16 16
|
||||||
icons/Tier2 466 71 16 16
|
icons/RMB 385 268 11 14
|
||||||
|
icons/RackMountable 356 168 16 16
|
||||||
|
icons/Tier0 373 168 16 16
|
||||||
|
icons/Tier1 390 168 16 16
|
||||||
|
icons/Tier2 407 168 16 16
|
||||||
items/APU0 356 71 16 96
|
items/APU0 356 71 16 96
|
||||||
items/APU1 373 71 16 96
|
items/APU1 373 71 16 96
|
||||||
items/APU2 390 71 16 96
|
items/APU2 390 71 16 96
|
||||||
items/CPU0 483 71 16 16
|
items/CPU0 424 168 16 16
|
||||||
items/CPU1 356 168 16 16
|
items/CPU1 441 168 16 16
|
||||||
items/CPU2 373 168 16 16
|
items/CPU2 458 168 16 16
|
||||||
items/CardBase 390 168 16 16
|
items/CardBase 475 168 16 16
|
||||||
items/CircuitBoard 407 168 16 16
|
items/CircuitBoard 492 168 16 16
|
||||||
items/ComponentBus0 424 168 16 16
|
items/ComponentBus0 305 200 16 16
|
||||||
items/ComponentBus1 441 168 16 16
|
items/ComponentBus1 322 200 16 16
|
||||||
items/ComponentBus2 458 168 16 16
|
items/ComponentBus2 339 200 16 16
|
||||||
items/ComponentBus3 475 168 16 16
|
items/ComponentBus3 356 200 16 16
|
||||||
items/DataCard0 305 71 16 128
|
items/DataCard0 305 71 16 128
|
||||||
items/DataCard1 322 71 16 128
|
items/DataCard1 322 71 16 128
|
||||||
items/DataCard2 339 71 16 128
|
items/DataCard2 339 71 16 128
|
||||||
items/DebugCard 492 168 16 16
|
items/DebugCard 373 200 16 16
|
||||||
items/DiskDriveMountable 305 200 16 16
|
items/DiskDriveMountable 390 200 16 16
|
||||||
items/EEPROM 322 200 16 16
|
items/EEPROM 407 200 16 16
|
||||||
items/FloppyDisk_dyeBlack 339 200 16 16
|
items/FloppyDisk_dyeBlack 424 200 16 16
|
||||||
items/FloppyDisk_dyeBlue 356 200 16 16
|
items/FloppyDisk_dyeBlue 441 200 16 16
|
||||||
items/FloppyDisk_dyeBrown 373 200 16 16
|
items/FloppyDisk_dyeBrown 458 200 16 16
|
||||||
items/FloppyDisk_dyeCyan 390 200 16 16
|
items/FloppyDisk_dyeCyan 475 200 16 16
|
||||||
items/FloppyDisk_dyeGray 407 200 16 16
|
items/FloppyDisk_dyeGray 492 200 16 16
|
||||||
items/FloppyDisk_dyeGreen 424 200 16 16
|
items/FloppyDisk_dyeGreen 305 217 16 16
|
||||||
items/FloppyDisk_dyeLightBlue 441 200 16 16
|
items/FloppyDisk_dyeLightBlue 322 217 16 16
|
||||||
items/FloppyDisk_dyeLightGray 458 200 16 16
|
items/FloppyDisk_dyeLightGray 339 217 16 16
|
||||||
items/FloppyDisk_dyeLime 475 200 16 16
|
items/FloppyDisk_dyeLime 356 217 16 16
|
||||||
items/FloppyDisk_dyeMagenta 492 200 16 16
|
items/FloppyDisk_dyeMagenta 373 217 16 16
|
||||||
items/FloppyDisk_dyeOrange 305 217 16 16
|
items/FloppyDisk_dyeOrange 390 217 16 16
|
||||||
items/FloppyDisk_dyePink 322 217 16 16
|
items/FloppyDisk_dyePink 407 217 16 16
|
||||||
items/FloppyDisk_dyePurple 339 217 16 16
|
items/FloppyDisk_dyePurple 424 217 16 16
|
||||||
items/FloppyDisk_dyeRed 356 217 16 16
|
items/FloppyDisk_dyeRed 441 217 16 16
|
||||||
items/FloppyDisk_dyeWhite 373 217 16 16
|
items/FloppyDisk_dyeWhite 458 217 16 16
|
||||||
items/FloppyDisk_dyeYellow 390 217 16 16
|
items/FloppyDisk_dyeYellow 475 217 16 16
|
||||||
items/GraphicsCard0 407 217 16 16
|
items/GraphicsCard0 492 217 16 16
|
||||||
items/GraphicsCard1 424 217 16 16
|
items/GraphicsCard1 305 234 16 16
|
||||||
items/GraphicsCard2 441 217 16 16
|
items/GraphicsCard2 322 234 16 16
|
||||||
items/HardDiskDrive0 458 217 16 16
|
items/HardDiskDrive0 339 234 16 16
|
||||||
items/HardDiskDrive1 475 217 16 16
|
items/HardDiskDrive1 356 234 16 16
|
||||||
items/HardDiskDrive2 492 217 16 16
|
items/HardDiskDrive2 373 234 16 16
|
||||||
items/InternetCard 424 96 16 32
|
items/InternetCard 424 96 16 32
|
||||||
items/LinkedCard 407 71 16 96
|
items/LinkedCard 407 71 16 96
|
||||||
items/Memory0 305 234 16 16
|
items/Memory0 390 234 16 16
|
||||||
items/Memory1 322 234 16 16
|
items/Memory1 407 234 16 16
|
||||||
items/Memory2 339 234 16 16
|
items/Memory2 424 234 16 16
|
||||||
items/Memory3 356 234 16 16
|
items/Memory3 441 234 16 16
|
||||||
items/Memory4 373 234 16 16
|
items/Memory4 458 234 16 16
|
||||||
items/Memory5 390 234 16 16
|
items/Memory5 475 234 16 16
|
||||||
items/NetworkCard 407 234 16 16
|
items/NetworkCard 492 234 16 16
|
||||||
items/RedstoneCard0 424 234 16 16
|
items/RedstoneCard0 305 251 16 16
|
||||||
items/RedstoneCard1 441 234 16 16
|
items/RedstoneCard1 322 251 16 16
|
||||||
items/Server0 458 234 16 16
|
items/Server0 339 251 16 16
|
||||||
items/Server1 475 234 16 16
|
items/Server1 356 251 16 16
|
||||||
items/Server2 492 234 16 16
|
items/Server2 373 251 16 16
|
||||||
items/Server3 305 251 16 16
|
items/Server3 390 251 16 16
|
||||||
items/WirelessNetworkCard0 322 251 16 16
|
items/WirelessNetworkCard0 407 251 16 16
|
||||||
items/WirelessNetworkCard1 339 251 16 16
|
items/WirelessNetworkCard1 424 251 16 16
|
||||||
nodes/Computer 356 251 16 16
|
nodes/Computer 441 251 16 16
|
||||||
nodes/ComputerActivityOverlay 373 251 16 16
|
nodes/ComputerActivityOverlay 458 251 16 16
|
||||||
nodes/ComputerErrorOverlay 390 251 16 16
|
nodes/ComputerErrorOverlay 475 251 16 16
|
||||||
nodes/ComputerOnOverlay 407 251 16 16
|
nodes/ComputerOnOverlay 492 251 16 16
|
||||||
nodes/NewNode 424 251 16 16
|
nodes/NewNode 305 268 16 16
|
||||||
nodes/Relay 441 251 16 16
|
nodes/Relay 322 268 16 16
|
||||||
nodes/Screen 458 251 16 16
|
nodes/Screen 339 268 16 16
|
||||||
nodes/ScreenOnOverlay 475 251 16 16
|
nodes/ScreenOnOverlay 356 268 16 16
|
||||||
screen/BorderB 310 277 2 8
|
screen/BorderB 390 0 2 8
|
||||||
screen/BorderT 307 277 2 10
|
screen/BorderT 387 0 2 10
|
||||||
screen/CornerBL 305 268 8 8
|
screen/CornerBL 415 268 8 8
|
||||||
screen/CornerBR 314 268 8 8
|
screen/CornerBR 424 268 8 8
|
||||||
screen/CornerTL 492 251 8 10
|
screen/CornerTL 397 268 8 10
|
||||||
screen/CornerTR 501 251 8 10
|
screen/CornerTR 406 268 8 10
|
||||||
window/BorderDark 333 277 1 4
|
window/BorderDark 413 0 1 4
|
||||||
window/BorderLight 335 277 1 4
|
window/BorderLight 415 0 1 4
|
||||||
window/CloseButton 323 268 7 6
|
window/CloseButton 433 268 7 6
|
||||||
window/CornerBL 313 277 4 4
|
window/CornerBL 393 0 4 4
|
||||||
window/CornerBR 318 277 4 4
|
window/CornerBR 398 0 4 4
|
||||||
window/CornerTL 323 277 4 4
|
window/CornerTL 403 0 4 4
|
||||||
window/CornerTR 328 277 4 4
|
window/CornerTR 408 0 4 4
|
||||||
|
|||||||
@ -41,7 +41,7 @@ trait Node extends Widget with DragHandler with ClickHandler with HoverHandler {
|
|||||||
case ClickEvent(MouseEvent.Button.Right, _) =>
|
case ClickEvent(MouseEvent.Button.Right, _) =>
|
||||||
val menu = new ContextMenu
|
val menu = new ContextMenu
|
||||||
setupContextMenu(menu)
|
setupContextMenu(menu)
|
||||||
workspaceView.rootWidget.contextMenus.open(menu)
|
root.get.contextMenus.open(menu)
|
||||||
|
|
||||||
case DragEvent(DragEvent.State.Start, MouseEvent.Button.Left, pos) =>
|
case DragEvent(DragEvent.State.Start, MouseEvent.Button.Left, pos) =>
|
||||||
startMoving(pos)
|
startMoving(pos)
|
||||||
@ -88,6 +88,16 @@ trait Node extends Widget with DragHandler with ClickHandler with HoverHandler {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override def update(): Unit = {
|
||||||
|
super.update()
|
||||||
|
if (isHovered || isMoving) {
|
||||||
|
root.get.statusBar.addMouseEntry("icons/LMB", "Open")
|
||||||
|
root.get.statusBar.addMouseEntry("icons/RMB", "Menu")
|
||||||
|
root.get.statusBar.addMouseEntry("icons/DragLMB", "Move node")
|
||||||
|
root.get.statusBar.addMouseEntry("icons/DragRMB", "Connect/Disconnect")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def environment: Environment
|
def environment: Environment
|
||||||
|
|
||||||
def icon: String = "icons/NA"
|
def icon: String = "icons/NA"
|
||||||
|
|||||||
@ -2,12 +2,12 @@ package ocelot.desktop.node
|
|||||||
|
|
||||||
import ocelot.desktop.geometry.Size2D
|
import ocelot.desktop.geometry.Size2D
|
||||||
import ocelot.desktop.graphics.Graphics
|
import ocelot.desktop.graphics.Graphics
|
||||||
import ocelot.desktop.ui.event.handlers.ClickHandler
|
import ocelot.desktop.ui.event.handlers.{ClickHandler, HoverHandler}
|
||||||
import ocelot.desktop.ui.event.{ClickEvent, MouseEvent}
|
import ocelot.desktop.ui.event.{ClickEvent, MouseEvent}
|
||||||
import ocelot.desktop.ui.widget.Widget
|
import ocelot.desktop.ui.widget.Widget
|
||||||
import ocelot.desktop.util.TierColor
|
import ocelot.desktop.util.TierColor
|
||||||
|
|
||||||
class NodeTypeWidget(val nodeType: NodeType) extends Widget with ClickHandler {
|
class NodeTypeWidget(val nodeType: NodeType) extends Widget with ClickHandler with HoverHandler {
|
||||||
override def minimumSize: Size2D = Size2D(68, 68)
|
override def minimumSize: Size2D = Size2D(68, 68)
|
||||||
override def maximumSize: Size2D = minimumSize
|
override def maximumSize: Size2D = minimumSize
|
||||||
|
|
||||||
@ -24,4 +24,11 @@ class NodeTypeWidget(val nodeType: NodeType) extends Widget with ClickHandler {
|
|||||||
override def draw(g: Graphics): Unit = {
|
override def draw(g: Graphics): Unit = {
|
||||||
g.sprite(nodeType.icon, position.x + 2, position.y + 2, size.width - 4, size.height - 4, TierColor.get(nodeType.tier))
|
g.sprite(nodeType.icon, position.x + 2, position.y + 2, size.width - 4, size.height - 4, TierColor.get(nodeType.tier))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override def update(): Unit = {
|
||||||
|
super.update()
|
||||||
|
if (isHovered) {
|
||||||
|
root.get.statusBar.addMouseEntry("icons/LMB", "Add node")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,19 +5,31 @@ import ocelot.desktop.graphics.Graphics
|
|||||||
import ocelot.desktop.ui.UiHandler
|
import ocelot.desktop.ui.UiHandler
|
||||||
import ocelot.desktop.ui.UiHandler.graphics
|
import ocelot.desktop.ui.UiHandler.graphics
|
||||||
import ocelot.desktop.ui.event.KeyEvent
|
import ocelot.desktop.ui.event.KeyEvent
|
||||||
import ocelot.desktop.ui.layout.CopyLayout
|
import ocelot.desktop.ui.layout.{CopyLayout, LinearLayout}
|
||||||
import ocelot.desktop.ui.widget.contextmenu.ContextMenus
|
import ocelot.desktop.ui.widget.contextmenu.ContextMenus
|
||||||
import ocelot.desktop.util.DrawUtils
|
import ocelot.desktop.ui.widget.statusbar.StatusBar
|
||||||
|
import ocelot.desktop.util.{DrawUtils, Orientation}
|
||||||
import org.lwjgl.input.Keyboard
|
import org.lwjgl.input.Keyboard
|
||||||
|
|
||||||
class RootWidget extends Widget {
|
class RootWidget extends Widget {
|
||||||
|
override protected val layout = new LinearLayout(this, orientation = Orientation.Vertical)
|
||||||
|
root = Some(this)
|
||||||
|
|
||||||
|
val workspaceView = new WorkspaceView
|
||||||
|
workspaceView.root = root
|
||||||
|
workspaceView.createDefaultWorkspace()
|
||||||
|
|
||||||
|
val contextMenus = new ContextMenus
|
||||||
|
val statusBar = new StatusBar
|
||||||
|
|
||||||
|
children :+= new Widget {
|
||||||
override protected val layout = new CopyLayout(this)
|
override protected val layout = new CopyLayout(this)
|
||||||
|
|
||||||
val workspaceView: WorkspaceView = new WorkspaceView
|
|
||||||
val contextMenus: ContextMenus = new ContextMenus
|
|
||||||
|
|
||||||
children :+= workspaceView
|
children :+= workspaceView
|
||||||
children :+= contextMenus
|
children :+= contextMenus
|
||||||
|
}
|
||||||
|
|
||||||
|
children :+= statusBar
|
||||||
|
|
||||||
|
|
||||||
private var isDebugViewVisible = false
|
private var isDebugViewVisible = false
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@ class Widget {
|
|||||||
|
|
||||||
protected var _children: Array[Widget] = Array[Widget]()
|
protected var _children: Array[Widget] = Array[Widget]()
|
||||||
protected var _parent: Option[Widget] = None
|
protected var _parent: Option[Widget] = None
|
||||||
|
protected var _root: Option[RootWidget] = None
|
||||||
|
|
||||||
protected var _position: Vector2D = Vector2D(0, 0)
|
protected var _position: Vector2D = Vector2D(0, 0)
|
||||||
protected var _size: Size2D = Size2D(0, 0)
|
protected var _size: Size2D = Size2D(0, 0)
|
||||||
@ -35,8 +36,10 @@ class Widget {
|
|||||||
final def children_=(value: Array[Widget]): Unit = {
|
final def children_=(value: Array[Widget]): Unit = {
|
||||||
_children = value
|
_children = value
|
||||||
|
|
||||||
for (child <- _children)
|
for (child <- _children) {
|
||||||
child._parent = Some(this)
|
child._parent = Some(this)
|
||||||
|
child.root = _root
|
||||||
|
}
|
||||||
|
|
||||||
recalculateBounds()
|
recalculateBounds()
|
||||||
size = _size
|
size = _size
|
||||||
@ -46,6 +49,13 @@ class Widget {
|
|||||||
|
|
||||||
final def parent: Option[Widget] = _parent
|
final def parent: Option[Widget] = _parent
|
||||||
|
|
||||||
|
final def root_=(v: Option[RootWidget]): Unit = {
|
||||||
|
_root = v
|
||||||
|
children.foreach(_.root = v)
|
||||||
|
}
|
||||||
|
|
||||||
|
final def root: Option[RootWidget] = _root
|
||||||
|
|
||||||
def minimumSize: Size2D = layout.minimumSize
|
def minimumSize: Size2D = layout.minimumSize
|
||||||
|
|
||||||
def maximumSize: Size2D = layout.maximumSize.max(minimumSize)
|
def maximumSize: Size2D = layout.maximumSize.max(minimumSize)
|
||||||
|
|||||||
@ -38,14 +38,11 @@ class WorkspaceView extends Widget with DragHandler with ClickHandler with Hover
|
|||||||
override def hierarchy: Array[Widget] = nodes.toArray
|
override def hierarchy: Array[Widget] = nodes.toArray
|
||||||
}
|
}
|
||||||
|
|
||||||
createDefaultWorkspace()
|
|
||||||
|
|
||||||
def rootWidget: RootWidget = parent.get.asInstanceOf[RootWidget]
|
|
||||||
|
|
||||||
def addNode(node: Node, pos: Vector2D = newNodePos): Unit = {
|
def addNode(node: Node, pos: Vector2D = newNodePos): Unit = {
|
||||||
node.position = pos + cameraOffset
|
node.position = pos + cameraOffset
|
||||||
resolveCollision(node)
|
resolveCollision(node)
|
||||||
node.workspaceView = this
|
node.workspaceView = this
|
||||||
|
node.root = _root
|
||||||
nodes += node
|
nodes += node
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,5 +387,13 @@ class WorkspaceView extends Widget with DragHandler with ClickHandler with Hover
|
|||||||
override def update(): Unit = {
|
override def update(): Unit = {
|
||||||
super.update()
|
super.update()
|
||||||
nodes.foreach(_.update())
|
nodes.foreach(_.update())
|
||||||
|
|
||||||
|
if (isHovered && newConnection.isEmpty) {
|
||||||
|
if (nodeSelector.isShown)
|
||||||
|
root.get.statusBar.addMouseEntry("icons/LMB", "Close selector")
|
||||||
|
else
|
||||||
|
root.get.statusBar.addMouseEntry("icons/LMB", "Add node")
|
||||||
|
root.get.statusBar.addMouseEntry("icons/DragLMB", "Move camera")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
package ocelot.desktop.ui.widget.statusbar
|
||||||
|
|
||||||
|
import ocelot.desktop.ColorScheme
|
||||||
|
import ocelot.desktop.color.Color
|
||||||
|
import ocelot.desktop.geometry.Size2D
|
||||||
|
import ocelot.desktop.graphics.Graphics
|
||||||
|
import ocelot.desktop.ui.widget.Widget
|
||||||
|
import ocelot.desktop.util.Spritesheet
|
||||||
|
|
||||||
|
class MouseEntry(icon: String, text: String) extends Widget {
|
||||||
|
private val iconSize = Spritesheet.spriteSize(icon)
|
||||||
|
override def minimumSize: Size2D = Size2D(iconSize.width + 24 + text.length * 8, 16)
|
||||||
|
override def maximumSize: Size2D = minimumSize
|
||||||
|
|
||||||
|
override def draw(g: Graphics): Unit = {
|
||||||
|
g.sprite(icon, position + Size2D(8, height / 2 - iconSize.height / 2), ColorScheme("StatusBarIcon"))
|
||||||
|
g.background = Color.Transparent
|
||||||
|
g.foreground = ColorScheme("StatusBarForeground")
|
||||||
|
g.text(position.x + iconSize.width + 16, position.y, text)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package ocelot.desktop.ui.widget.statusbar
|
||||||
|
|
||||||
|
import ocelot.desktop.ColorScheme
|
||||||
|
import ocelot.desktop.geometry.Size2D
|
||||||
|
import ocelot.desktop.graphics.Graphics
|
||||||
|
import ocelot.desktop.ui.layout.{AlignItems, LinearLayout}
|
||||||
|
import ocelot.desktop.ui.widget.Widget
|
||||||
|
|
||||||
|
class StatusBar extends Widget {
|
||||||
|
override protected val layout = new LinearLayout(this, alignItems = AlignItems.Center)
|
||||||
|
override def minimumSize: Size2D = Size2D(100, 18)
|
||||||
|
override def maximumSize: Size2D = Size2D(Float.PositiveInfinity, 18)
|
||||||
|
override def receiveMouseEvents = true
|
||||||
|
|
||||||
|
def addMouseEntry(icon: String, text: String): Unit = {
|
||||||
|
children :+= new MouseEntry(icon, text)
|
||||||
|
}
|
||||||
|
|
||||||
|
override def draw(g: Graphics): Unit = {
|
||||||
|
g.rect(bounds, ColorScheme("StatusBar"))
|
||||||
|
g.line(position, position + Size2D(width, 0), 1, ColorScheme("StatusBarBorder"))
|
||||||
|
drawChildren(g)
|
||||||
|
children = Array()
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user