Cleanup of (former) `VDBModelPresenter`
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 05 Feb 2018 14:18:03 +0000
changeset 60 bcdb393c956f
parent 59 e7d0453109a1
child 61 a8b0e1d29ef7
Cleanup of (former) `VDBModelPresenter` * renamed `VDBModelPresenter` to `VDBAbstractPresenter` to follow naming conventions * improved support for presenter-defined menu items by using per-menu-item receiver feature recently added to `stx:libview2` / `stx:libwidh2`. * As a demonstration, added "Enable" / "Disable" menu items to breakpoint menu.
Make.proto
Make.spec
VDBAbstractListApplication.st
VDBAbstractPresenter.st
VDBAbstractTreeApplication.st
VDBBreakpointPresenter.st
VDBFramePresenter.st
VDBIconLibrary.st
VDBModelPresenter.st
VDBThreadGroupPresenter.st
VDBThreadPresenter.st
VDBVariableObjectListApplication.st
VDBVariableObjectPresenter.st
abbrev.stc
bc.mak
jv_vdb.st
libInit.cc
--- a/Make.proto	Sat Feb 03 21:18:50 2018 +0000
+++ b/Make.proto	Mon Feb 05 14:18:03 2018 +0000
@@ -130,8 +130,8 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)VDBAbstractApplication.$(O) VDBAbstractApplication.$(C) VDBAbstractApplication.$(H): VDBAbstractApplication.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)VDBAbstractPresenter.$(O) VDBAbstractPresenter.$(C) VDBAbstractPresenter.$(H): VDBAbstractPresenter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBIconLibrary.$(O) VDBIconLibrary.$(C) VDBIconLibrary.$(H): VDBIconLibrary.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)VDBModelPresenter.$(O) VDBModelPresenter.$(C) VDBModelPresenter.$(H): VDBModelPresenter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBVirtualMemoryMap.$(O) VDBVirtualMemoryMap.$(C) VDBVirtualMemoryMap.$(H): VDBVirtualMemoryMap.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VDBVirtualMemoryRegion.$(O) VDBVirtualMemoryRegion.$(C) VDBVirtualMemoryRegion.$(H): VDBVirtualMemoryRegion.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)jv_vdb.$(O) jv_vdb.$(C) jv_vdb.$(H): jv_vdb.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
@@ -139,15 +139,16 @@
 $(OUTDIR)VDBAbstractListApplication.$(O) VDBAbstractListApplication.$(C) VDBAbstractListApplication.$(H): VDBAbstractListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBAbstractUnixConsoleApplication.$(O) VDBAbstractUnixConsoleApplication.$(C) VDBAbstractUnixConsoleApplication.$(H): VDBAbstractUnixConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBBreakpointApplication.$(O) VDBBreakpointApplication.$(C) VDBBreakpointApplication.$(H): VDBBreakpointApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)VDBBreakpointPresenter.$(O) VDBBreakpointPresenter.$(C) VDBBreakpointPresenter.$(H): VDBBreakpointPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBModelPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBBreakpointPresenter.$(O) VDBBreakpointPresenter.$(C) VDBBreakpointPresenter.$(H): VDBBreakpointPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBDebuggerApplication.$(O) VDBDebuggerApplication.$(C) VDBDebuggerApplication.$(H): VDBDebuggerApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBEventLogApplication.$(O) VDBEventLogApplication.$(C) VDBEventLogApplication.$(H): VDBEventLogApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)VDBFramePresenter.$(O) VDBFramePresenter.$(C) VDBFramePresenter.$(H): VDBFramePresenter.st $(INCLUDE_TOP)/jv/vdb/VDBModelPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)VDBFramePresenter.$(O) VDBFramePresenter.$(C) VDBFramePresenter.$(H): VDBFramePresenter.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBMemoryApplication.$(O) VDBMemoryApplication.$(C) VDBMemoryApplication.$(H): VDBMemoryApplication.st $(INCLUDE_TOP)/jv/libgdbs/GDBOutputFormats.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBSourceApplication.$(O) VDBSourceApplication.$(C) VDBSourceApplication.$(H): VDBSourceApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)VDBThreadGroupPresenter.$(O) VDBThreadGroupPresenter.$(C) VDBThreadGroupPresenter.$(H): VDBThreadGroupPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBModelPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)VDBThreadPresenter.$(O) VDBThreadPresenter.$(C) VDBThreadPresenter.$(H): VDBThreadPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBModelPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)VDBVariableObjectPresenter.$(O) VDBVariableObjectPresenter.$(C) VDBVariableObjectPresenter.$(H): VDBVariableObjectPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBModelPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBThreadGroupPresenter.$(O) VDBThreadGroupPresenter.$(C) VDBThreadGroupPresenter.$(H): VDBThreadGroupPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBThreadPresenter.$(O) VDBThreadPresenter.$(C) VDBThreadPresenter.$(H): VDBThreadPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBVariableObjectPresenter.$(O) VDBVariableObjectPresenter.$(C) VDBVariableObjectPresenter.$(H): VDBVariableObjectPresenter.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractPresenter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBWindowsDebuggerConsoleApplication.$(O) VDBWindowsDebuggerConsoleApplication.$(C) VDBWindowsDebuggerConsoleApplication.$(H): VDBWindowsDebuggerConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBAbstractTreeApplication.$(O) VDBAbstractTreeApplication.$(C) VDBAbstractTreeApplication.$(H): VDBAbstractTreeApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
--- a/Make.spec	Sat Feb 03 21:18:50 2018 +0000
+++ b/Make.spec	Mon Feb 05 14:18:03 2018 +0000
@@ -52,8 +52,8 @@
 
 COMMON_CLASSES= \
 	VDBAbstractApplication \
+	VDBAbstractPresenter \
 	VDBIconLibrary \
-	VDBModelPresenter \
 	VDBVirtualMemoryMap \
 	VDBVirtualMemoryRegion \
 	jv_vdb \
@@ -64,6 +64,7 @@
 	VDBBreakpointPresenter \
 	VDBDebuggerApplication \
 	VDBEventLogApplication \
+	VDBFrameApplication \
 	VDBFramePresenter \
 	VDBMemoryApplication \
 	VDBSourceApplication \
@@ -78,15 +79,14 @@
 	VDBUnixInferiorConsoleApplication \
 	VDBStackApplication \
 	VDBVariableObjectListApplication \
-    VDBFrameApplication \
 
 
 
 
 COMMON_OBJS= \
     $(OUTDIR)VDBAbstractApplication.$(O) \
+    $(OUTDIR)VDBAbstractPresenter.$(O) \
     $(OUTDIR)VDBIconLibrary.$(O) \
-    $(OUTDIR)VDBModelPresenter.$(O) \
     $(OUTDIR)VDBVirtualMemoryMap.$(O) \
     $(OUTDIR)VDBVirtualMemoryRegion.$(O) \
     $(OUTDIR)jv_vdb.$(O) \
@@ -97,6 +97,7 @@
     $(OUTDIR)VDBBreakpointPresenter.$(O) \
     $(OUTDIR)VDBDebuggerApplication.$(O) \
     $(OUTDIR)VDBEventLogApplication.$(O) \
+    $(OUTDIR)VDBFrameApplication.$(O) \
     $(OUTDIR)VDBFramePresenter.$(O) \
     $(OUTDIR)VDBMemoryApplication.$(O) \
     $(OUTDIR)VDBSourceApplication.$(O) \
@@ -111,9 +112,7 @@
     $(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) \
     $(OUTDIR)VDBStackApplication.$(O) \
     $(OUTDIR)VDBVariableObjectListApplication.$(O) \
-    $(OUTDIR)VDBFrameApplication.$(O) \
     $(OUTDIR)extensions.$(O) \
 
 
 
-
--- a/VDBAbstractListApplication.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBAbstractListApplication.st	Mon Feb 05 14:18:03 2018 +0000
@@ -340,19 +340,30 @@
 
 !VDBAbstractListApplication methodsFor:'menu actions'!
 
+doDoubleClick
+    "Invoked when user double-clicks to list item."
+
+    | selectedVarObjPresenter |
+    
+    selectedVarObjPresenter := self internalSelectionHolder value. 
+    selectedVarObjPresenter notNil ifTrue:[
+        selectedVarObjPresenter doDoubleClick
+    ].
+
+    "Created: / 13-06-2017 / 17:09:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-01-2018 / 23:33:12 / jv"
+    "Modified: / 05-02-2018 / 13:02:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doInspectModel
     | selection |
 
     selection := self internalSelectionHolder value.
     selection notEmptyOrNil ifTrue:[ 
-        selection isThreadGroupPresenter ifTrue: [ selection threadGroup inspect ].
-        selection isThreadPresenter ifTrue: [ selection thread inspect ].
-        selection isFramePresenter ifTrue: [ selection frame inspect ].    
-        selection isVariablePresenter ifTrue: [ selection varobj inspect ].    
-        selection isBreakpointPresenter ifTrue: [ selection breakpoint inspect ].    
+        selection subject inspect
     ].
 
-    "Modified: / 28-01-2018 / 22:52:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-02-2018 / 13:07:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doInspectPresenter
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBAbstractPresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -0,0 +1,179 @@
+"
+jv:vdb - Visual / VM Debugger
+Copyright (C) 2015-now Jan Vrany
+
+This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
+
+You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
+"
+"{ Package: 'jv:vdb' }"
+
+"{ NameSpace: Smalltalk }"
+
+HierarchicalItem subclass:#VDBAbstractPresenter
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'VDB-Presentation'
+!
+
+!VDBAbstractPresenter class methodsFor:'documentation'!
+
+copyright
+"
+jv:vdb - Visual / VM Debugger
+Copyright (C) 2015-now Jan Vrany
+
+This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
+
+You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
+"
+! !
+
+!VDBAbstractPresenter class methodsFor:'menu specs'!
+
+contextMenu
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:VDBModelPresenter andSelector:#contextMenu
+     (Menu new fromLiteralArrayEncoding:(VDBModelPresenter contextMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        nil nil
+        nil
+      )
+! !
+
+!VDBAbstractPresenter class methodsFor:'queries'!
+
+isAbstract
+    "Return if this class is an abstract class.
+     True is returned here for myself only; false for subclasses.
+     Abstract subclasses must redefine this again."
+
+    ^ self == VDBAbstractPresenter.
+! !
+
+!VDBAbstractPresenter methodsFor:'accessing'!
+
+backgroundColor
+    | app |
+
+    app := self application.
+    app notNil ifTrue:[ 
+        ^ app perform: #backgroundColorFor: with: self ifNotUnderstood: [ nil ].
+    ].
+    ^ nil
+
+    "Created: / 06-06-2017 / 23:38:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ self subclassResponsibility
+
+    "Created: / 05-02-2018 / 13:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter methodsFor:'change & update'!
+
+updateChildren
+    children notNil ifTrue:[ 
+        self children:self fetchChildren  
+    ].
+
+    "Created: / 21-09-2014 / 23:43:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter methodsFor:'displaying'!
+
+displayString
+    ^ self label
+
+    "Created: / 10-06-2017 / 12:24:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter methodsFor:'menu'!
+
+contextMenu
+    | menu |
+
+    menu := Menu decodeFromLiteralArray: self class contextMenu.
+    menu hasItems ifFalse:[ ^ menu ].
+    menu findGuiResourcesIn:self.
+    menu itemsDo:[:item| item receiver: self ].
+    menu addSeparator.
+    ^ menu
+
+    "Created: / 16-01-2018 / 22:03:53 / jv"
+    "Modified: / 05-02-2018 / 12:12:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter methodsFor:'menu actions'!
+
+doCopy: aString
+    <resource: #uiCallback>
+
+    self application window setClipboardText: aString
+
+    "Created: / 16-01-2018 / 22:36:30 / jv"
+!
+
+doDoubleClick
+    "Invoked when user double-clicks to list item. "
+
+    self subject inspect
+
+    "Created: / 05-02-2018 / 13:03:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter methodsFor:'testing'!
+
+isBreakpointPresenter
+    ^ false
+
+    "Created: / 11-07-2017 / 11:50:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isFramePresenter
+    ^ false
+
+    "Created: / 21-09-2014 / 23:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isThreadGroupPresenter
+    ^ false
+
+    "Created: / 21-09-2014 / 23:54:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isThreadPresenter
+    ^ false
+
+    "Created: / 21-09-2014 / 23:54:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isVariablePresenter
+    ^ false
+
+    "Created: / 02-06-2017 / 00:05:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractPresenter class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/VDBAbstractTreeApplication.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBAbstractTreeApplication.st	Mon Feb 05 14:18:03 2018 +0000
@@ -111,14 +111,6 @@
     ^ self == VDBAbstractTreeApplication.
 ! !
 
-!VDBAbstractTreeApplication methodsFor:'actions'!
-
-doDoubleClick
-    "Invoked when user double-clicks to list item.
-     Nothing by default, subclasses may override."
-    "Modified: / 13-06-2017 / 17:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !VDBAbstractTreeApplication methodsFor:'aspects-private'!
 
 internalListHolder
--- a/VDBBreakpointPresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBBreakpointPresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -10,7 +10,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-VDBModelPresenter subclass:#VDBBreakpointPresenter
+VDBAbstractPresenter subclass:#VDBBreakpointPresenter
 	instanceVariableNames:'breakpoint'
 	classVariableNames:''
 	poolDictionaries:''
@@ -30,6 +30,42 @@
 "
 ! !
 
+!VDBBreakpointPresenter class methodsFor:'menu specs'!
+
+contextMenu
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:VDBBreakpointPresenter andSelector:#contextMenu
+     (Menu new fromLiteralArrayEncoding:(VDBBreakpointPresenter contextMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Enable'
+            itemValue: doEnable
+            isVisible: canEnable
+          )
+         (MenuItem
+            label: 'Disable'
+            itemValue: doDisable
+            isVisible: canDisable
+          )
+         )
+        nil
+        nil
+      )
+! !
+
 !VDBBreakpointPresenter methodsFor:'accessing'!
 
 breakpoint
@@ -58,6 +94,14 @@
 
     "Created: / 10-07-2017 / 13:30:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 11-07-2017 / 12:13:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ breakpoint
+
+    "Modified: / 05-02-2018 / 13:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !VDBBreakpointPresenter methodsFor:'initialization'!
@@ -68,6 +112,34 @@
     "Created: / 10-07-2017 / 13:29:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!VDBBreakpointPresenter methodsFor:'menu-actions'!
+
+doDisable
+    breakpoint enabled: false
+
+    "Created: / 05-02-2018 / 12:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doEnable
+    breakpoint enabled: true
+
+    "Created: / 05-02-2018 / 12:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBBreakpointPresenter methodsFor:'menu-queries'!
+
+canDisable
+    ^ breakpoint enabled
+
+    "Created: / 05-02-2018 / 12:27:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canEnable
+    ^ breakpoint enabled not
+
+    "Created: / 05-02-2018 / 12:26:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !VDBBreakpointPresenter methodsFor:'testing'!
 
 isBreakpointPresenter
--- a/VDBFramePresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBFramePresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -10,7 +10,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-VDBModelPresenter subclass:#VDBFramePresenter
+VDBAbstractPresenter subclass:#VDBFramePresenter
 	instanceVariableNames:'frame'
 	classVariableNames:''
 	poolDictionaries:''
@@ -79,6 +79,14 @@
     ^ frame displayString
 
     "Created: / 22-09-2014 / 00:14:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ frame
+
+    "Modified: / 05-02-2018 / 13:08:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !VDBFramePresenter methodsFor:'initialization'!
@@ -89,13 +97,7 @@
     "Created: / 21-09-2014 / 23:38:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!VDBFramePresenter methodsFor:'menu actions'!
-
-canCopyFunctionName
-   ^ frame func notNil
-
-    "Modified: / 16-01-2018 / 22:19:59 / jv"
-!
+!VDBFramePresenter methodsFor:'menu-actions'!
 
 doCopyFunctionName
     <resource: #uiCallback>
@@ -105,6 +107,15 @@
     "Modified: / 16-01-2018 / 22:36:37 / jv"
 ! !
 
+!VDBFramePresenter methodsFor:'menu-queries'!
+
+canCopyFunctionName
+   ^ frame func notNil
+
+    "Modified: / 16-01-2018 / 22:19:59 / jv"
+    "Modified: / 05-02-2018 / 12:13:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !VDBFramePresenter methodsFor:'protocol-accessing'!
 
 fetchChildren
--- a/VDBIconLibrary.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBIconLibrary.st	Mon Feb 05 14:18:03 2018 +0000
@@ -3046,6 +3046,11 @@
 
 !VDBIconLibrary class methodsFor:'documentation'!
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '$Id$'
 ! !
--- a/VDBModelPresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-"
-jv:vdb - Visual / VM Debugger
-Copyright (C) 2015-now Jan Vrany
-
-This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
-
-You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
-"
-"{ Package: 'jv:vdb' }"
-
-"{ NameSpace: Smalltalk }"
-
-HierarchicalItem subclass:#VDBModelPresenter
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'VDB-Presentation'
-!
-
-!VDBModelPresenter class methodsFor:'documentation'!
-
-copyright
-"
-jv:vdb - Visual / VM Debugger
-Copyright (C) 2015-now Jan Vrany
-
-This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
-
-You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
-"
-! !
-
-!VDBModelPresenter class methodsFor:'menu specs'!
-
-contextMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-
-    "
-     MenuEditor new openOnClass:VDBModelPresenter andSelector:#contextMenu
-     (Menu new fromLiteralArrayEncoding:(VDBModelPresenter contextMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        nil nil
-        nil
-      )
-! !
-
-!VDBModelPresenter methodsFor:'accessing'!
-
-backgroundColor
-    | app |
-
-    app := self application.
-    app notNil ifTrue:[ 
-        ^ app perform: #backgroundColorFor: with: self ifNotUnderstood: [ nil ].
-    ].
-    ^ nil
-
-    "Created: / 06-06-2017 / 23:38:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!VDBModelPresenter methodsFor:'change & update'!
-
-updateChildren
-    children notNil ifTrue:[ 
-        self children:self fetchChildren  
-    ].
-
-    "Created: / 21-09-2014 / 23:43:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!VDBModelPresenter methodsFor:'displaying'!
-
-displayString
-    ^ self label
-
-    "Created: / 10-06-2017 / 12:24:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!VDBModelPresenter methodsFor:'menu'!
-
-contextMenu
-    | menu |
-
-    menu := Menu decodeFromLiteralArray: self class contextMenu.
-    menu hasItems ifFalse:[ ^ menu ].
-    menu findGuiResourcesIn:self.
-    menu itemsDo:[:item|
-        | itemSelector |
-
-        (itemSelector := item itemValue) isSymbol ifTrue:[ 
-            item itemValue: [ self perform: itemSelector ]
-        ].
-    ].
-    menu addSeparator.
-    ^ menu
-
-    "Created: / 16-01-2018 / 22:03:53 / jv"
-! !
-
-!VDBModelPresenter methodsFor:'menu actions'!
-
-doCopy: aString
-    <resource: #uiCallback>
-
-    self application window setClipboardText: aString
-
-    "Created: / 16-01-2018 / 22:36:30 / jv"
-! !
-
-!VDBModelPresenter methodsFor:'testing'!
-
-isBreakpointPresenter
-    ^ false
-
-    "Created: / 11-07-2017 / 11:50:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isFramePresenter
-    ^ false
-
-    "Created: / 21-09-2014 / 23:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isThreadGroupPresenter
-    ^ false
-
-    "Created: / 21-09-2014 / 23:54:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isThreadPresenter
-    ^ false
-
-    "Created: / 21-09-2014 / 23:54:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isVariablePresenter
-    ^ false
-
-    "Created: / 02-06-2017 / 00:05:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!VDBModelPresenter class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-! !
-
--- a/VDBThreadGroupPresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBThreadGroupPresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -10,7 +10,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-VDBModelPresenter subclass:#VDBThreadGroupPresenter
+VDBAbstractPresenter subclass:#VDBThreadGroupPresenter
 	instanceVariableNames:'threadGroup'
 	classVariableNames:''
 	poolDictionaries:''
@@ -77,6 +77,14 @@
     "Modified: / 07-06-2017 / 07:47:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ threadGroup
+
+    "Modified: / 05-02-2018 / 13:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 threadGroup
     ^ threadGroup
 ! !
--- a/VDBThreadPresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBThreadPresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -10,7 +10,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-VDBModelPresenter subclass:#VDBThreadPresenter
+VDBAbstractPresenter subclass:#VDBThreadPresenter
 	instanceVariableNames:'thread name'
 	classVariableNames:''
 	poolDictionaries:''
@@ -54,6 +54,14 @@
     "Modified: / 12-07-2017 / 14:23:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ thread
+
+    "Modified: / 05-02-2018 / 13:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 thread
     ^ thread
 ! !
--- a/VDBVariableObjectListApplication.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBVariableObjectListApplication.st	Mon Feb 05 14:18:03 2018 +0000
@@ -114,23 +114,6 @@
     "Created: / 03-02-2018 / 08:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!VDBVariableObjectListApplication methodsFor:'actions'!
-
-doDoubleClick
-    "Invoked when user double-clicks to list item."
-
-    | selectedVarObjPresenter |
-    
-    selectedVarObjPresenter := self internalSelectionHolder value. 
-    selectedVarObjPresenter notNil ifTrue:[
-        selectedVarObjPresenter varobj inspect
-    ].
-
-    "Created: / 13-06-2017 / 17:09:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-01-2018 / 23:33:12 / jv"
-    "Modified: / 03-02-2018 / 08:03:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !VDBVariableObjectListApplication methodsFor:'aspects'!
 
 backgroundColorFor: aVDBVariableOjectPresenter
--- a/VDBVariableObjectPresenter.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/VDBVariableObjectPresenter.st	Mon Feb 05 14:18:03 2018 +0000
@@ -10,7 +10,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-VDBModelPresenter subclass:#VDBVariableObjectPresenter
+VDBAbstractPresenter subclass:#VDBVariableObjectPresenter
 	instanceVariableNames:'varobj'
 	classVariableNames:''
 	poolDictionaries:''
@@ -69,6 +69,14 @@
     "Modified: / 28-01-2018 / 22:44:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+subject
+    "Return an instance of GDB object that this presenter displays."
+
+    ^ varobj
+
+    "Modified: / 05-02-2018 / 13:08:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 value
     ^ varobj value
 
--- a/abbrev.stc	Sat Feb 03 21:18:50 2018 +0000
+++ b/abbrev.stc	Mon Feb 05 14:18:03 2018 +0000
@@ -2,8 +2,8 @@
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
 VDBAbstractApplication VDBAbstractApplication jv:vdb 'VDB-UI-Abstract' 2
+VDBAbstractPresenter VDBAbstractPresenter jv:vdb 'VDB-Presentation' 0
 VDBIconLibrary VDBIconLibrary jv:vdb 'VDB-UI-Support' 0
-VDBModelPresenter VDBModelPresenter jv:vdb 'VDB-Presentation' 0
 VDBVirtualMemoryMap VDBVirtualMemoryMap jv:vdb 'VDB-Tools' 0
 VDBVirtualMemoryRegion VDBVirtualMemoryRegion jv:vdb 'VDB-Tools' 0
 jv_vdb jv_vdb jv:vdb '* Projects & Packages *' 3
@@ -14,6 +14,7 @@
 VDBBreakpointPresenter VDBBreakpointPresenter jv:vdb 'VDB-Presentation' 0
 VDBDebuggerApplication VDBDebuggerApplication jv:vdb 'VDB-UI' 2
 VDBEventLogApplication VDBEventLogApplication jv:vdb 'VDB-UI-Events' 2
+VDBFrameApplication VDBFrameApplication jv:vdb 'VDB-UI-Others' 2
 VDBFramePresenter VDBFramePresenter jv:vdb 'VDB-Presentation' 0
 VDBMemoryApplication VDBMemoryApplication jv:vdb 'VDB-UI-Others' 2
 VDBSourceApplication VDBSourceApplication jv:vdb 'VDB-UI-Source' 2
--- a/bc.mak	Sat Feb 03 21:18:50 2018 +0000
+++ b/bc.mak	Mon Feb 05 14:18:03 2018 +0000
@@ -77,8 +77,8 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)VDBAbstractApplication.$(O) VDBAbstractApplication.$(C) VDBAbstractApplication.$(H): VDBAbstractApplication.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)VDBAbstractPresenter.$(O) VDBAbstractPresenter.$(C) VDBAbstractPresenter.$(H): VDBAbstractPresenter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBIconLibrary.$(O) VDBIconLibrary.$(C) VDBIconLibrary.$(H): VDBIconLibrary.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)VDBModelPresenter.$(O) VDBModelPresenter.$(C) VDBModelPresenter.$(H): VDBModelPresenter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBVirtualMemoryMap.$(O) VDBVirtualMemoryMap.$(C) VDBVirtualMemoryMap.$(H): VDBVirtualMemoryMap.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VDBVirtualMemoryRegion.$(O) VDBVirtualMemoryRegion.$(C) VDBVirtualMemoryRegion.$(H): VDBVirtualMemoryRegion.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)jv_vdb.$(O) jv_vdb.$(C) jv_vdb.$(H): jv_vdb.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
@@ -86,15 +86,16 @@
 $(OUTDIR)VDBAbstractListApplication.$(O) VDBAbstractListApplication.$(C) VDBAbstractListApplication.$(H): VDBAbstractListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBAbstractUnixConsoleApplication.$(O) VDBAbstractUnixConsoleApplication.$(C) VDBAbstractUnixConsoleApplication.$(H): VDBAbstractUnixConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBBreakpointApplication.$(O) VDBBreakpointApplication.$(C) VDBBreakpointApplication.$(H): VDBBreakpointApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)VDBBreakpointPresenter.$(O) VDBBreakpointPresenter.$(C) VDBBreakpointPresenter.$(H): VDBBreakpointPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBModelPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBBreakpointPresenter.$(O) VDBBreakpointPresenter.$(C) VDBBreakpointPresenter.$(H): VDBBreakpointPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBDebuggerApplication.$(O) VDBDebuggerApplication.$(C) VDBDebuggerApplication.$(H): VDBDebuggerApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBEventLogApplication.$(O) VDBEventLogApplication.$(C) VDBEventLogApplication.$(H): VDBEventLogApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)VDBFramePresenter.$(O) VDBFramePresenter.$(C) VDBFramePresenter.$(H): VDBFramePresenter.st $(INCLUDE_TOP)\jv\vdb\VDBModelPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)VDBFramePresenter.$(O) VDBFramePresenter.$(C) VDBFramePresenter.$(H): VDBFramePresenter.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBMemoryApplication.$(O) VDBMemoryApplication.$(C) VDBMemoryApplication.$(H): VDBMemoryApplication.st $(INCLUDE_TOP)\jv\libgdbs\GDBOutputFormats.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBSourceApplication.$(O) VDBSourceApplication.$(C) VDBSourceApplication.$(H): VDBSourceApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)VDBThreadGroupPresenter.$(O) VDBThreadGroupPresenter.$(C) VDBThreadGroupPresenter.$(H): VDBThreadGroupPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBModelPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)VDBThreadPresenter.$(O) VDBThreadPresenter.$(C) VDBThreadPresenter.$(H): VDBThreadPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBModelPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)VDBVariableObjectPresenter.$(O) VDBVariableObjectPresenter.$(C) VDBVariableObjectPresenter.$(H): VDBVariableObjectPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBModelPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBThreadGroupPresenter.$(O) VDBThreadGroupPresenter.$(C) VDBThreadGroupPresenter.$(H): VDBThreadGroupPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBThreadPresenter.$(O) VDBThreadPresenter.$(C) VDBThreadPresenter.$(H): VDBThreadPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)VDBVariableObjectPresenter.$(O) VDBVariableObjectPresenter.$(C) VDBVariableObjectPresenter.$(H): VDBVariableObjectPresenter.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractPresenter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)VDBWindowsDebuggerConsoleApplication.$(O) VDBWindowsDebuggerConsoleApplication.$(C) VDBWindowsDebuggerConsoleApplication.$(H): VDBWindowsDebuggerConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBAbstractTreeApplication.$(O) VDBAbstractTreeApplication.$(C) VDBAbstractTreeApplication.$(H): VDBAbstractTreeApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
--- a/jv_vdb.st	Sat Feb 03 21:18:50 2018 +0000
+++ b/jv_vdb.st	Mon Feb 05 14:18:03 2018 +0000
@@ -54,7 +54,7 @@
         #'jv:libgdbs'    "GDBDebuggerObject - extended"
         #'stx:libbasic'    "LibraryDefinition - superclass of jv_vdb"
         #'stx:libview2'    "ApplicationModel - superclass of VDBAbstractApplication"
-        #'stx:libwidg2'    "AbstractHierarchicalItem - superclass of VDBBreakpointPresenter"
+        #'stx:libwidg2'    "AbstractHierarchicalItem - superclass of VDBAbstractPresenter"
     )
 !
 
@@ -100,8 +100,8 @@
     ^ #(
         "<className> or (<className> attributes...) in load order"
         VDBAbstractApplication
+        VDBAbstractPresenter
         VDBIconLibrary
-        VDBModelPresenter
         VDBVirtualMemoryMap
         VDBVirtualMemoryRegion
         #'jv_vdb'
@@ -112,6 +112,7 @@
         VDBBreakpointPresenter
         VDBDebuggerApplication
         VDBEventLogApplication
+        VDBFrameApplication
         VDBFramePresenter
         VDBMemoryApplication
         VDBSourceApplication
@@ -126,7 +127,6 @@
         VDBUnixInferiorConsoleApplication
         VDBStackApplication
         VDBVariableObjectListApplication
-        VDBFrameApplication
     )
 !
 
--- a/libInit.cc	Sat Feb 03 21:18:50 2018 +0000
+++ b/libInit.cc	Mon Feb 05 14:18:03 2018 +0000
@@ -17,8 +17,8 @@
 #endif
 
 extern void _VDBAbstractApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _VDBAbstractPresenter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBIconLibrary_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-extern void _VDBModelPresenter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBVirtualMemoryMap_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBVirtualMemoryRegion_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _jv_137vdb_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -29,6 +29,7 @@
 extern void _VDBBreakpointPresenter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBDebuggerApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBEventLogApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _VDBFrameApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBFramePresenter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBMemoryApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBSourceApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -43,7 +44,6 @@
 extern void _VDBUnixInferiorConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBStackApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _VDBVariableObjectListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-extern void _VDBFrameApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 
 extern void _jv_137vdb_extensions_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 
@@ -59,8 +59,8 @@
 {
   __BEGIN_PACKAGE2__("libjv_vdb", _libjv_vdb_Init, "jv:vdb");
     _VDBAbstractApplication_Init(pass,__pRT__,snd);
+    _VDBAbstractPresenter_Init(pass,__pRT__,snd);
     _VDBIconLibrary_Init(pass,__pRT__,snd);
-    _VDBModelPresenter_Init(pass,__pRT__,snd);
     _VDBVirtualMemoryMap_Init(pass,__pRT__,snd);
     _VDBVirtualMemoryRegion_Init(pass,__pRT__,snd);
     _jv_137vdb_Init(pass,__pRT__,snd);
@@ -71,6 +71,7 @@
     _VDBBreakpointPresenter_Init(pass,__pRT__,snd);
     _VDBDebuggerApplication_Init(pass,__pRT__,snd);
     _VDBEventLogApplication_Init(pass,__pRT__,snd);
+    _VDBFrameApplication_Init(pass,__pRT__,snd);
     _VDBFramePresenter_Init(pass,__pRT__,snd);
     _VDBMemoryApplication_Init(pass,__pRT__,snd);
     _VDBSourceApplication_Init(pass,__pRT__,snd);
@@ -85,7 +86,6 @@
     _VDBUnixInferiorConsoleApplication_Init(pass,__pRT__,snd);
     _VDBStackApplication_Init(pass,__pRT__,snd);
     _VDBVariableObjectListApplication_Init(pass,__pRT__,snd);
-    _VDBFrameApplication_Init(pass,__pRT__,snd);
 
     _jv_137vdb_extensions_Init(pass,__pRT__,snd);
   __END_PACKAGE__();