--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBFrameApplication.st Fri Feb 27 16:50:43 2015 +0100
@@ -0,0 +1,199 @@
+"{ Package: 'jv:vdb' }"
+
+"{ NameSpace: Smalltalk }"
+
+VDBAbstractTreeApplication subclass:#VDBFrameApplication
+ instanceVariableNames:'frameHolder selectedVariableHolder'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'VDB-UI-Others'
+!
+
+!VDBFrameApplication class methodsFor:'plugIn spec'!
+
+aspectSelectors
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this. If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "Return a description of exported aspects;
+ these can be connected to aspects of an embedding application
+ (if this app is embedded in a subCanvas)."
+
+ ^ #(
+ #debuggerHolder
+ #frameHolder
+ #selectedVariableHolder
+ ).
+
+ "Modified: / 27-02-2015 / 16:04:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBFrameApplication class methodsFor:'startup-web applications'!
+
+initialPageSpec
+ "this is only required for web-applications"
+
+ ^ self shouldImplement
+!
+
+pageSpecs
+ "this is only required for web-applications"
+
+ ^ self shouldImplement
+! !
+
+!VDBFrameApplication class methodsFor:'tableColumns specs'!
+
+variableListColumns
+ "This resource specification was automatically generated
+ by the DataSetBuilder of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the DataSetBuilder may not be able to read the specification."
+
+ "
+ DataSetBuilder new openOnClass:VDBFrameApplication andSelector:#variableListColumns
+ "
+
+ <resource: #tableColumns>
+
+ ^#(
+ (DataSetColumnSpec
+ label: 'Name'
+ labelAlignment: left
+ labelButtonType: Button
+ height: heightOfFirstRow
+ menuFromApplication: false
+ printSelector: name
+ showRowSeparator: false
+ showColSeparator: false
+ )
+ )
+
+! !
+
+!VDBFrameApplication methodsFor:'aspects'!
+
+frameHolder
+ "return/create the 'frameHolder' value holder (automatically generated)"
+
+ frameHolder isNil ifTrue:[
+ frameHolder := ValueHolder new.
+ frameHolder addDependent:self.
+ ].
+ ^ frameHolder
+!
+
+frameHolder:something
+ "set the 'frameHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ frameHolder notNil ifTrue:[
+ oldValue := frameHolder value.
+ frameHolder removeDependent:self.
+ ].
+ frameHolder := something.
+ frameHolder notNil ifTrue:[
+ frameHolder addDependent:self.
+ ].
+ newValue := frameHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:frameHolder.
+ ].
+!
+
+selectedVariableHolder
+ "return/create the 'selectedVariableHolder' value holder (automatically generated)"
+
+ selectedVariableHolder isNil ifTrue:[
+ selectedVariableHolder := ValueHolder new.
+ selectedVariableHolder addDependent:self.
+ ].
+ ^ selectedVariableHolder
+!
+
+selectedVariableHolder:something
+ "set the 'selectedVariableHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ selectedVariableHolder notNil ifTrue:[
+ oldValue := selectedVariableHolder value.
+ selectedVariableHolder removeDependent:self.
+ ].
+ selectedVariableHolder := something.
+ selectedVariableHolder notNil ifTrue:[
+ selectedVariableHolder addDependent:self.
+ ].
+ newValue := selectedVariableHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:selectedVariableHolder.
+ ].
+! !
+
+!VDBFrameApplication methodsFor:'change & update'!
+
+update:aspect with:param from:sender
+ "Invoked when an object that I depend upon sends a change notification."
+
+ sender == frameHolder ifTrue:[
+ self enqueueDelayedUpdateInternalList.
+ ^ self.
+ ].
+ super update:aspect with:param from:sender
+
+ "Modified: / 27-02-2015 / 15:45:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBFrameApplication methodsFor:'change & update-delayed'!
+
+delayedUpdateInternalList
+ | frame root |
+
+ debugger isNil ifTrue:[
+ self internalListHolder root children:#().
+ ^ self.
+ ].
+ frame := frameHolder value.
+ frame isNil ifTrue:[
+ self internalListHolder root children:#().
+ ^ self.
+ ].
+ root := self internalListHolder root.
+ root children:
+ (frame variables collect:[:v | VDBVariablePresenter new setVariable: v; parent: root; yourself]).
+ root expand.
+ internalListView notNil ifTrue:[
+ internalListView invalidate.
+ ]
+
+ "Created: / 27-02-2015 / 15:47:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+delayedUpdateSelection
+ | internalSelection |
+
+ internalSelection := self internalSelectionHolder value.
+ internalSelection notNil ifTrue:[
+ self selectedVariableHolder value: internalSelection variable
+ ] ifFalse:[
+ self selectedVariableHolder value: nil
+ ].
+
+ "Modified: / 27-02-2015 / 16:05:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBFrameApplication methodsFor:'drag & drop'!
+
+dropObjects:aCollectionOfDropObjects
+ "drop manager wants to drop.
+ This is ony sent, if #canDrop: returned true.
+ Must be redefined in order for drop to work."
+
+ ^ self shouldImplement
+! !
+