VDBSourceApplication.st
changeset 17 c5ee4ea44165
parent 16 fc1898815ab6
child 20 f323725d7b18
equal deleted inserted replaced
16:fc1898815ab6 17:c5ee4ea44165
     1 "{ Package: 'jv:vdb' }"
     1 "{ Package: 'jv:vdb' }"
     2 
     2 
     3 VDBAbstractApplication subclass:#VDBSourceApplication
     3 VDBAbstractApplication subclass:#VDBSourceApplication
     4 	instanceVariableNames:'sourceFilenameHolder sourceStringHolder'
     4 	instanceVariableNames:'frameHolder sourceFileHolder sourceStringHolder sourceView'
     5 	classVariableNames:''
     5 	classVariableNames:''
     6 	poolDictionaries:''
     6 	poolDictionaries:''
     7 	category:'VDB-UI-Others'
     7 	category:'VDB-UI-Source'
     8 !
     8 !
     9 
     9 
    10 !VDBSourceApplication class methodsFor:'interface specs'!
    10 !VDBSourceApplication class methodsFor:'interface specs'!
    11 
    11 
    12 windowSpec
    12 windowSpec
    66      these can be connected to aspects of an embedding application
    66      these can be connected to aspects of an embedding application
    67      (if this app is embedded in a subCanvas)."
    67      (if this app is embedded in a subCanvas)."
    68 
    68 
    69     ^ #(
    69     ^ #(
    70         #debuggerHolder
    70         #debuggerHolder
       
    71         #frameHolder
    71       ).
    72       ).
    72 
    73 
       
    74     "Modified: / 20-09-2014 / 22:50:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    73 ! !
    75 ! !
    74 
    76 
    75 !VDBSourceApplication methodsFor:'aspects'!
    77 !VDBSourceApplication methodsFor:'aspects'!
    76 
    78 
    77 sourceFilenameHolder
    79 frameHolder
    78     "return/create the 'sourceFilenameHolder' value holder (automatically generated)"
    80     "return/create the 'frameHolder' value holder (automatically generated)"
    79 
    81 
    80     sourceFilenameHolder isNil ifTrue:[
    82     frameHolder isNil ifTrue:[
    81         sourceFilenameHolder := ValueHolder new.
    83         frameHolder := ValueHolder new.
    82     ].
    84         frameHolder addDependent:self.
    83     ^ sourceFilenameHolder
    85     ].
    84 !
    86     ^ frameHolder
    85 
    87 !
    86 sourceFilenameHolder:aValueModel
    88 
    87     "set the 'sourceFilenameHolder' value holder (automatically generated)"
    89 frameHolder:something
    88 
    90     "set the 'frameHolder' value holder (automatically generated)"
    89     sourceFilenameHolder := aValueModel.
    91 
       
    92     |oldValue newValue|
       
    93 
       
    94     frameHolder notNil ifTrue:[
       
    95         oldValue := frameHolder value.
       
    96         frameHolder removeDependent:self.
       
    97     ].
       
    98     frameHolder := something.
       
    99     frameHolder notNil ifTrue:[
       
   100         frameHolder addDependent:self.
       
   101     ].
       
   102     newValue := frameHolder value.
       
   103     oldValue ~~ newValue ifTrue:[
       
   104         self update:#value with:newValue from:frameHolder.
       
   105     ].
       
   106 !
       
   107 
       
   108 sourceFileHolder
       
   109     "return/create the 'sourceFileHolder' value holder (automatically generated)"
       
   110 
       
   111     sourceFileHolder isNil ifTrue:[
       
   112         sourceFileHolder := ValueHolder new.
       
   113         sourceFileHolder addDependent:self.
       
   114     ].
       
   115     ^ sourceFileHolder
       
   116 !
       
   117 
       
   118 sourceFileHolder:something
       
   119     "set the 'sourceFileHolder' value holder (automatically generated)"
       
   120 
       
   121     |oldValue newValue|
       
   122 
       
   123     sourceFileHolder notNil ifTrue:[
       
   124         oldValue := sourceFileHolder value.
       
   125         sourceFileHolder removeDependent:self.
       
   126     ].
       
   127     sourceFileHolder := something.
       
   128     sourceFileHolder notNil ifTrue:[
       
   129         sourceFileHolder addDependent:self.
       
   130     ].
       
   131     newValue := sourceFileHolder value.
       
   132     oldValue ~~ newValue ifTrue:[
       
   133         self update:#value with:newValue from:sourceFileHolder.
       
   134     ].
    90 !
   135 !
    91 
   136 
    92 sourceStringHolder
   137 sourceStringHolder
    93     "return/create the 'sourceFilenameHolder' value holder (automatically generated)"
   138     "return/create the 'sourceStringHolder' value holder (automatically generated)"
    94 
   139 
    95     sourceStringHolder isNil ifTrue:[
   140     sourceStringHolder isNil ifTrue:[
    96         sourceStringHolder := 
   141         sourceStringHolder := ValueHolder new.
    97             PluggableAdaptor 
   142         sourceStringHolder addDependent:self.
    98                 on: self sourceFilenameHolder 
       
    99                 getter: [ :model | model value isNil ifTrue:['No source'] ifFalse:[model value asFilename contents asString ] ]  
       
   100     ].
   143     ].
   101     ^ sourceStringHolder
   144     ^ sourceStringHolder
   102 
   145 !
   103     "Created: / 19-09-2014 / 00:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   146 
       
   147 sourceStringHolder:something
       
   148     "set the 'sourceStringHolder' value holder (automatically generated)"
       
   149 
       
   150     |oldValue newValue|
       
   151 
       
   152     sourceStringHolder notNil ifTrue:[
       
   153         oldValue := sourceStringHolder value.
       
   154         sourceStringHolder removeDependent:self.
       
   155     ].
       
   156     sourceStringHolder := something.
       
   157     sourceStringHolder notNil ifTrue:[
       
   158         sourceStringHolder addDependent:self.
       
   159     ].
       
   160     newValue := sourceStringHolder value.
       
   161     oldValue ~~ newValue ifTrue:[
       
   162         self update:#value with:newValue from:sourceStringHolder.
       
   163     ].
       
   164 ! !
       
   165 
       
   166 !VDBSourceApplication methodsFor:'change & update'!
       
   167 
       
   168 update:aspect with:param from:sender
       
   169     "Invoked when an object that I depend upon sends a change notification."
       
   170 
       
   171     sender == frameHolder ifTrue:[ 
       
   172         | frame |
       
   173 
       
   174         frame := frameHolder value.
       
   175         frame notNil ifTrue:[ 
       
   176             | line |
       
   177 
       
   178             self sourceFileHolder value: frame fullname.
       
   179             line := frame line.
       
   180             line notNil ifTrue:[  
       
   181                 sourceView selectLine: line.
       
   182                 sourceView makeSelectionVisible.
       
   183             ]
       
   184         ].
       
   185         ^ self.
       
   186     ].
       
   187 
       
   188     sender == sourceFileHolder ifTrue:[
       
   189         | file source |
       
   190 
       
   191         source := nil.
       
   192         file := sourceFileHolder value.
       
   193         file notNil ifTrue:[ 
       
   194             file := file asFilename.
       
   195             file exists ifTrue:[ 
       
   196                 source := file contents asString.
       
   197             ]
       
   198         ].
       
   199         self sourceStringHolder value: source.  
       
   200         ^ self.
       
   201     ].
       
   202     super update:aspect with:param from:sender
       
   203 
       
   204     "Modified: / 21-09-2014 / 00:15:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   104 ! !
   205 ! !
   105 
   206 
   106 !VDBSourceApplication methodsFor:'hooks'!
   207 !VDBSourceApplication methodsFor:'hooks'!
   107 
   208 
   108 postBuildSourceView: aCodeView2
   209 postBuildSourceView: aCodeView2
   109     aCodeView2 
   210     sourceView := aCodeView2. 
       
   211     sourceView
   110         readOnly: true;
   212         readOnly: true;
   111         services: #()
   213         services: #()
   112 
   214 
   113     "Modified: / 19-09-2014 / 00:18:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   215     "Modified: / 21-09-2014 / 00:12:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   114 ! !
   216 ! !
   115 
   217