API: add basic API to show (and hide) message in place of list contents
This can be used to display error or "Updating..." message or alike.
--- a/VDBAbstractListApplication.st Fri Jun 07 19:53:28 2019 +0100
+++ b/VDBAbstractListApplication.st Sat Jun 08 16:34:54 2019 +0100
@@ -11,7 +11,8 @@
"{ NameSpace: Smalltalk }"
VDBAbstractContentsApplication subclass:#VDBAbstractListApplication
- instanceVariableNames:'internalListHolder internalListView internalSelectionHolder'
+ instanceVariableNames:'internalListHolder internalListView internalSelectionHolder
+ internalMessageView'
classVariableNames:''
poolDictionaries:''
category:'VDB-UI-Abstract'
@@ -494,6 +495,30 @@
"Modified: / 20-08-2018 / 10:17:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!VDBAbstractListApplication methodsFor:'initialization'!
+
+initializeMessageView
+ | internalListViewParent internalListViewLayout |
+
+ self assert: internalListView notNil.
+
+ internalListViewLayout := internalListView layout copy.
+ internalListViewParent := internalListView superView.
+ internalListViewParent isScrollWrapper ifTrue:[
+ internalListViewLayout := internalListViewParent layout copy.
+ internalListViewParent := internalListView superView.
+ ].
+ internalMessageView := Label in: internalListViewParent.
+ internalMessageView hiddenOnRealize: true.
+ internalMessageView layout: internalListViewLayout.
+ internalMessageView sizeFixed:true.
+ internalMessageView viewBackground: internalListView background.
+ internalMessageView font: internalListView font.
+ internalMessageView layout: internalListViewLayout.
+
+ "Created: / 08-06-2019 / 09:53:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!VDBAbstractListApplication methodsFor:'menu'!
contextMenu
@@ -680,6 +705,33 @@
"Created: / 07-08-2018 / 13:35:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!VDBAbstractListApplication methodsFor:'utilities'!
+
+hideMessage
+ "Hide any message previously shown by #showMessage:"
+
+ internalMessageView notNil ifTrue:[
+ internalMessageView label: ''.
+ internalMessageView beInvisible.
+ ]
+
+ "Created: / 08-06-2019 / 10:09:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessage: text
+ "Show given message `text` instead of list contents.
+ Message `text` is not localized, the caller is responsible
+ for localization."
+
+ internalMessageView isNil ifTrue:[
+ self initializeMessageView.
+ ].
+ internalMessageView label: text.
+ internalMessageView beVisible.
+
+ "Created: / 08-06-2019 / 10:07:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!VDBAbstractListApplication class methodsFor:'documentation'!
version_HG
--- a/VDBBreakpointListApplication.st Fri Jun 07 19:53:28 2019 +0100
+++ b/VDBBreakpointListApplication.st Sat Jun 08 16:34:54 2019 +0100
@@ -59,7 +59,7 @@
^
#(FullSpec
name: windowSpec
- uuid: '8774fbe0-4fb0-11e9-b432-606720e43e2c'
+ uuid: 'bd3ef320-8c37-11e9-a7d4-606720e43e2c'
window:
(WindowSpec
label: 'VDBAbstractListApplication'
@@ -81,21 +81,32 @@
component:
(SpecCollection
collection: (
- (HierarchicalListViewSpec
- name: 'Breakpoints'
- uuid: '475530e3-4fae-11e9-b432-606720e43e2c'
- model: internalSelectionHolder
- menu: contextMenu
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- listModel: internalListHolder
- useIndex: false
- highlightMode: line
- doubleClickSelector: doDoubleClick
- showLines: false
- useDefaultIcons: false
- showRoot: false
- postBuildCallback: postBuildInternalListView:
+ (TransparentBoxSpec
+ name: 'ListBox'
+ uuid: 'bd3ef321-8c37-11e9-a7d4-606720e43e2c'
+ component:
+ (SpecCollection
+ collection: (
+ (HierarchicalListViewSpec
+ name: 'Breakpoints'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ uuid: '475530e3-4fae-11e9-b432-606720e43e2c'
+ model: internalSelectionHolder
+ menu: contextMenu
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ listModel: internalListHolder
+ useIndex: false
+ highlightMode: line
+ doubleClickSelector: doDoubleClick
+ showLines: false
+ useDefaultIcons: false
+ showRoot: false
+ postBuildCallback: postBuildInternalListView:
+ )
+ )
+
+ )
)
(SubCanvasSpec
name: 'BreakpointCanvas'