Added ChangeEditor, a class for viewing/editong
authorvrany
Tue, 29 Nov 2011 11:30:07 +0100
changeset 10914 55d89ff6791b
parent 10913 f91715a29502
child 10915 dddb17fac591
Added ChangeEditor, a class for viewing/editong single change. Not yet used.
Tools__ChangeSetBrowser2.st
--- a/Tools__ChangeSetBrowser2.st	Tue Nov 29 11:27:19 2011 +0100
+++ b/Tools__ChangeSetBrowser2.st	Tue Nov 29 11:30:07 2011 +0100
@@ -40,6 +40,14 @@
 	category:'Interface-Browsers-ChangeSet'
 !
 
+ApplicationModel subclass:#ChangeEditor
+	instanceVariableNames:'changeHolder readonlyHolder showdiffHolder sourceChangeHolder
+		sourceImageHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ChangeSetBrowser2
+!
+
 !ChangeSetBrowser2 class methodsFor:'documentation'!
 
 copyright
@@ -2227,14 +2235,286 @@
     "Created: / 04-08-2011 / 18:25:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ChangeSetBrowser2::ChangeEditor class methodsFor:'documentation'!
+
+documentation
+"
+    A simple, embeddable window to show a single change.
+    If readonlyHolder's value is false, then user is
+    allowed to edit the change (i.e., modify the source code)
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+  Starting the application:
+                                                                [exBegin]
+    Tools::ChangeEditor open
+
+                                                                [exEnd]
+
+  more examples to be added:
+                                                                [exBegin]
+    ... add code fragment for 
+    ... executable example here ...
+                                                                [exEnd]
+"
+! !
+
+!ChangeSetBrowser2::ChangeEditor class methodsFor:'interface specs'!
+
+windowSpec
+    "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."
+
+    "
+     UIPainter new openOnClass:Tools::ChangeSetBrowser2::ChangeEditor andSelector:#windowSpec
+     Tools::ChangeSetBrowser2::ChangeEditor new openInterface:#windowSpec
+     Tools::ChangeSetBrowser2::ChangeEditor open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Change Editor'
+          name: 'Change Editor'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 579 341)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SubCanvasSpec
+              name: 'TextDiffTool'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              majorKey: #'Tools::TextDiffTool'
+              minorKey: windowSpecForEmbedding
+              subAspectHolders: 
+             (Array
+                
+               (SubChannelInfoSpec
+                  subAspect: classHolder
+                  aspect: classAspect
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: codeAspectHolder
+                  aspect: codeAspect
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: labelAHolder
+                  aspect: labelAHolder
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: labelBHolder
+                  aspect: labelBHolder
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: showDiffHolder
+                  aspect: showdiffHolder
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: textAHolder
+                  aspect: sourceChangeHolder
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: textBHolder
+                  aspect: sourceImageHolder
+                )
+              )
+              createNewApplication: true
+              createNewBuilder: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!ChangeSetBrowser2::ChangeEditor methodsFor:'accessing'!
+
+sourceChangeHolder
+    ^ sourceChangeHolder
+!
+
+sourceChangeHolder:something
+    sourceChangeHolder := something.
+!
+
+sourceImageHolder
+    ^ sourceImageHolder
+!
+
+sourceImageHolder:something
+    sourceImageHolder := something.
+! !
+
+!ChangeSetBrowser2::ChangeEditor methodsFor:'aspects'!
+
+changeHolder
+    "return/create the 'changeHolder' value holder (automatically generated)"
+
+    changeHolder isNil ifTrue:[
+        changeHolder := ValueHolder new.
+        changeHolder addDependent:self.
+    ].
+    ^ changeHolder
+!
+
+changeHolder:something
+    "set the 'changeHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    changeHolder notNil ifTrue:[
+        oldValue := changeHolder value.
+        changeHolder removeDependent:self.
+    ].
+    changeHolder := something.
+    changeHolder notNil ifTrue:[
+        changeHolder addDependent:self.
+    ].
+    newValue := changeHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:changeHolder.
+    ].
+!
+
+classAspect
+
+    ^(AspectAdaptor forAspect: #changeClass) 
+        subjectChannel: self changeHolder
+
+    "Created: / 29-11-2011 / 11:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+codeAspect
+
+    ^BlockValue
+        with: [:change|
+            change isMethodCodeChange
+                ifTrue:[#method]
+                ifFalse:[#expression]
+        ] argument: self changeHolder
+
+    "Created: / 29-11-2011 / 11:21:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labelAText
+
+    ^'Change'
+
+    "Created: / 27-11-2011 / 14:59:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labelBText
+
+    ^'Current (in image)'
+
+    "Created: / 27-11-2011 / 14:59:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+readonlyHolder
+    "return/create the 'readonlyHolder' value holder (automatically generated)"
+
+    readonlyHolder isNil ifTrue:[
+        readonlyHolder := ValueHolder new.
+        readonlyHolder addDependent:self.
+    ].
+    ^ readonlyHolder
+!
+
+readonlyHolder:something
+    "set the 'readonlyHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    readonlyHolder notNil ifTrue:[
+        oldValue := readonlyHolder value.
+        readonlyHolder removeDependent:self.
+    ].
+    readonlyHolder := something.
+    readonlyHolder notNil ifTrue:[
+        readonlyHolder addDependent:self.
+    ].
+    newValue := readonlyHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:readonlyHolder.
+    ].
+!
+
+showdiffHolder
+    "return/create the 'showdiffHolder' value holder (automatically generated)"
+
+    showdiffHolder isNil ifTrue:[
+        showdiffHolder := ValueHolder new.
+    ].
+    ^ showdiffHolder
+!
+
+showdiffHolder:something
+    "set the 'showdiffHolder' value holder (automatically generated)"
+
+    showdiffHolder := something.
+! !
+
+!ChangeSetBrowser2::ChangeEditor methodsFor:'change & update'!
+
+changeChanged
+
+    "changeHolder has changed, update sources etc..."
+
+    | change |
+    change := changeHolder value.
+
+    sourceChangeHolder value: change changeSource.
+    sourceImageHolder value: change imageSource.
+
+    "Created: / 29-11-2011 / 11:15:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+
+    changedObject == changeHolder ifTrue:[
+         self changeChanged.
+         ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 29-11-2011 / 11:15:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ChangeSetBrowser2 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.22 2011-11-25 15:43:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.23 2011-11-29 10:30:07 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.22 2011-11-25 15:43:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.23 2011-11-29 10:30:07 vrany Exp $'
 !
 
 version_SVN