diff -r 112ce09e7f81 -r 77d6241ffc40 Tools__SmalltalkMergeTool.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Tools__SmalltalkMergeTool.st Fri Jul 01 16:17:32 2011 +0200 @@ -0,0 +1,885 @@ +"{ Package: 'stx:libtool' }" + +"{ NameSpace: Tools }" + +SmalltalkDiffTool subclass:#SmalltalkMergeTool + instanceVariableNames:'resolvedHolder changeSetHolder' + classVariableNames:'' + poolDictionaries:'' + category:'Interface-Diff & Merge tool' +! + +SmalltalkDiffTool::DiffItem subclass:#DiffItem + instanceVariableNames:'versionMerged state' + classVariableNames:'' + poolDictionaries:'' + privateIn:SmalltalkMergeTool +! + +!SmalltalkMergeTool class methodsFor:'documentation'! + +documentation +" + documentation to be added. + + [author:] + Jan Vrany (janfrog@bruxa) + + [instance variables:] + + [class variables:] + + [see also:] + +" +! + +examples +" + Starting the application: + [exBegin] + MergeTool open + + [exEnd] + + more examples to be added: + [exBegin] + ... add code fragment for + ... executable example here ... + [exEnd] +" +! + +history + "Created: / 06-12-2007 / 11:00:54 / janfrog" +! ! + +!SmalltalkMergeTool class methodsFor:'initialization'! + +initialize + + "self initialize" + + |menuItem| + + menuItem := (MenuItem label:'Merge tool') + nameKey:'MergeTool'; + value:[SmalltalkMergeTool open]; + isButton:false. + + + NewLauncher + addMenuItem:menuItem + from:self + in:'menu' + position:#(before startSmaCCParserGenerator) + space:false. + + "Created: / 11-12-2007 / 19:12:08 / janfrog" + "Modified: / 09-08-2009 / 14:15:12 / Jan Vrany " +! ! + +!SmalltalkMergeTool class methodsFor:'interface specs'! + +conflictsListSpec + "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:MergeTool andSelector:#conflictsListSpec + MergeTool new openInterface:#conflictsListSpec + " + + + + ^ + #(FullSpec + name: conflictsListSpec + window: + (WindowSpec + label: 'VersionBothListSpec' + name: 'VersionBothListSpec' + min: (Point 10 10) + bounds: (Rectangle 0 0 306 406) + ) + component: + (SpecCollection + collection: ( + (LabelSpec + label: 'Conflicts (present in both A and B)' + name: 'VersionBothLabel' + layout: (LayoutFrame 0 0 0 0 0 1 30 0) + translateLabel: true + labelChannel: conflictsLabelHolder + ) + (SelectionInListModelViewSpec + name: 'VersionBothList' + layout: (LayoutFrame 0 0 30 0 0 1 0 1) + model: selectionHolder + menu: resolveMenu + hasHorizontalScrollBar: true + hasVerticalScrollBar: true + listModel: conflictsListHolder + multipleSelectOk: true + useIndex: false + highlightMode: line + ) + ) + + ) + ) + + "Modified: / 11-12-2007 / 16:46:23 / janfrog" + "Created: / 19-04-2008 / 12:58:29 / Jan Vrany " +! + +inAOnlyListSpec + "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:MergeTool andSelector:#inAOnlyListSpec + MergeTool new openInterface:#inAOnlyListSpec + " + + + + ^ + #(FullSpec + name: inAOnlyListSpec + window: + (WindowSpec + label: 'VersionAOnlyListSpec' + name: 'VersionAOnlyListSpec' + min: (Point 10 10) + bounds: (Rectangle 0 0 306 406) + ) + component: + (SpecCollection + collection: ( + (LabelSpec + label: 'In A only' + name: 'VersionAOnlyLabel' + layout: (LayoutFrame 0 0 0 0 0 1 30 0) + translateLabel: true + labelChannel: inAOnlyLabelHolder + ) + (SelectionInListModelViewSpec + name: 'VersionAOnlyList' + layout: (LayoutFrame 0 0 30 0 0 1 0 1) + model: selectionHolder + menu: resolveMenu + hasHorizontalScrollBar: true + hasVerticalScrollBar: true + listModel: inAOnlyListHolder + multipleSelectOk: true + useIndex: false + highlightMode: line + postBuildCallback: postBuildVersionAListWidget: + ) + ) + + ) + ) + + "Modified: / 11-12-2007 / 16:46:29 / janfrog" + "Created: / 19-04-2008 / 12:58:29 / Jan Vrany " +! + +inBOnlyListSpec + "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:MergeTool andSelector:#inBOnlyListSpec + MergeTool new openInterface:#inBOnlyListSpec + " + + + + ^ + #(FullSpec + name: inBOnlyListSpec + window: + (WindowSpec + label: 'VersionBOnlyListSpec' + name: 'VersionBOnlyListSpec' + min: (Point 10 10) + bounds: (Rectangle 0 0 306 406) + ) + component: + (SpecCollection + collection: ( + (LabelSpec + label: 'In B only' + name: 'VersionBOnlyLabel' + layout: (LayoutFrame 0 0 0 0 0 1 30 0) + translateLabel: true + labelChannel: inBOnlyLabelHolder + ) + (SelectionInListModelViewSpec + name: 'VersionBOnlyList' + layout: (LayoutFrame 0 0 30 0 0 1 0 1) + model: selectionHolder + menu: resolveMenu + hasHorizontalScrollBar: true + hasVerticalScrollBar: true + listModel: inBOnlyListHolder + multipleSelectOk: true + postBuildCallback: postBuildVersionBListWidget: + useIndex: false + highlightMode: line + ) + ) + + ) + ) + + "Modified: / 11-12-2007 / 16:46:33 / janfrog" + "Created: / 19-04-2008 / 12:58:29 / Jan Vrany " +! ! + +!SmalltalkMergeTool class methodsFor:'menu specs'! + +mainMenu + "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:Tools::MergeTool andSelector:#mainMenu + (Menu new fromLiteralArrayEncoding:(Tools::MergeTool mainMenu)) startUp + " + + + + ^ + #(Menu + ( + (MenuItem + label: 'File' + translateLabel: true + submenu: + (Menu + ( + (MenuItem + label: 'Open file' + itemValue: fileMenuMergeFileIntoImage + translateLabel: true + ) + (MenuItem + label: '-' + ) + (MenuItem + label: 'Apply resolved' + itemValue: fileMenuApplyResolved + translateLabel: true + ) + (MenuItem + label: '-' + ) + (MenuItem + label: 'Exit' + itemValue: closeRequest + translateLabel: true + ) + ) + nil + nil + ) + ) + (MenuItem + label: 'Resolve' + translateLabel: true + submenuChannel: resolveMenu + ) + (MenuItem + label: 'Help' + translateLabel: true + startGroup: right + submenu: + (Menu + ( + (MenuItem + label: 'About this Application...' + itemValue: openAboutThisApplication + translateLabel: true + ) + ) + nil + nil + ) + ) + ) + nil + nil + ) + + "Modified: / 08-11-2008 / 11:09:41 / Jan Vrany " +! + +resolveMenu + "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:Tools::MergeTool andSelector:#resolveMenu + (Menu new fromLiteralArrayEncoding:(Tools::MergeTool resolveMenu)) startUp + " + + + + ^ + #(Menu + ( + (MenuItem + enabled: selectionIsNonEmptyAndAllHasVersionA + label: 'Resolve using version A <-' + itemValue: resolveMenuResolveUsingA + translateLabel: true + ) + (MenuItem + enabled: selectionIsNonEmptyAndAllHasVersionB + label: 'Resolve using version B ->' + itemValue: resolveMenuResolveUsingB + translateLabel: true + ) + (MenuItem + enabled: selectionIsNonEmpty + label: 'Delete' + itemValue: resolveMenuDelete + translateLabel: true + ) + (MenuItem + enabled: selectionIsNonEmpty + label: 'Unresolve' + itemValue: resolveMenuUnresolve + translateLabel: true + ) + (MenuItem + label: '-' + ) + (MenuItem + enabled: false + label: 'Show changeset' + translateLabel: true + indication: showMergingChangeSetHolder + ) + ) + nil + nil + ) + + "Modified: / 08-11-2008 / 11:06:43 / Jan Vrany " +! ! + +!SmalltalkMergeTool class methodsFor:'plugIn spec'! + +aspectSelectors + + ^super aspectSelectors, + #( + + #resolvedHolder + #changeSetHolder + ). + + "Created: / 02-04-2009 / 22:04:50 / Jan Vrany " + "Modified: / 09-04-2009 / 09:21:32 / Jan Vrany " +! ! + +!SmalltalkMergeTool methodsFor:'accessing'! + +diffItemClass + + ^SmalltalkMergeTool::DiffItem + + "Created: / 21-05-2008 / 14:39:38 / Jan Vrany " + "Modified: / 09-08-2009 / 14:57:46 / Jan Vrany " +! ! + +!SmalltalkMergeTool methodsFor:'aspects'! + +changeSetHolder + "return/create the 'changeSetHolder' value holder (automatically generated)" + + changeSetHolder isNil ifTrue:[ + changeSetHolder := ValueHolder new. + ]. + ^ changeSetHolder +! + +changeSetHolder:aValueHolder + "set the 'changeSetHolder' value holder (automatically generated)" + + changeSetHolder := aValueHolder. +! + +resolvedHolder + + resolvedHolder ifNil: + [resolvedHolder := false asValue]. + ^resolvedHolder + + "Created: / 02-04-2009 / 21:53:19 / Jan Vrany " +! + +selectionHolder + + selectionHolder ifNil: + [selectionHolder := List new asValue. + selectionHolder + onChangeSend:#selectionChanged to: self]. + ^selectionHolder + + "Created: / 21-05-2008 / 19:30:59 / Jan Vrany " +! ! + +!SmalltalkMergeTool methodsFor:'change & update'! + +resolutionChanged + + super resolutionChanged. + self resolvedHolder value: self resolved. + self changeSetHolder value: self changeSet. + + "Created: / 22-10-2008 / 10:50:35 / Jan Vrany " + "Modified: / 02-04-2009 / 22:04:06 / Jan Vrany " +! ! + +!SmalltalkMergeTool methodsFor:'menu actions'! + +fileMenuApplyResolved + (Dialog confirm:'Really apply resolved?') ifFalse:[ + ^ self + ]. + self inAOnlyListHolder + value:(self inAOnlyListHolder value reject:[:e | e isResolved ]). + self conflictsListHolder + value:(self conflictsListHolder value reject:[:e | e isResolved ]). + self inBOnlyListHolder + value:(self inBOnlyListHolder value reject:[:e | e isResolved ]). + self fileMenuApplyResolved:self changeSetToApply + + "Modified: / 12-12-2007 / 08:37:21 / janfrog" + "Created: / 08-11-2008 / 11:08:34 / Jan Vrany " +! + +fileMenuApplyResolved:aChangeSet + (Class updateChangeFileQuerySignal , Class updateChangeListQuerySignal) + answer:false + do:[ aChangeSet apply ] + + "Modified: / 12-12-2007 / 08:36:04 / janfrog" + "Created: / 08-11-2008 / 11:08:44 / Jan Vrany " +! + +fileMenuMergeFileIntoImage + + |filename| + + filename := Dialog requestFileName:'Enter fileout or change file' pattern:'*.st;*.cha'. + filename isNilOrEmptyCollection ifTrue:[^self]. + filename := filename asFilename. + filename isRegularFile ifFalse:[^Dialog warn:'Selected file is not a regular file']. + filename isReadable ifFalse:[^Dialog warn:'Selected file is not readable']. + + [ + self + diffSet: (ChangeSet fromFile: filename) diffSetsAgainstImage labelA: filename components last + labelB: 'image' + ] on: Error do:[:ex| + Dialog warn: 'Error when reading changeset: ', ex description. + ex pass + ] + + "Created: / 11-12-2007 / 16:59:04 / janfrog" + "Modified: / 12-12-2007 / 15:12:01 / janfrog" +! + +resolveMenuDelete + + self selection do: + [:mergeItem|mergeItem delete]. + self resolutionChanged + + "Modified: / 11-12-2007 / 16:54:51 / janfrog" +! + +resolveMenuResolveUsingA + + self selection do: + [:mergeItem|mergeItem resolveUsingA]. + self resolutionChanged + + "Modified: / 11-12-2007 / 16:54:56 / janfrog" +! + +resolveMenuResolveUsingB + + self selection do: + [:mergeItem|mergeItem resolveUsingB]. + self resolutionChanged + + "Modified: / 11-12-2007 / 16:55:01 / janfrog" +! + +resolveMenuUnresolve + + self selection do: + [:mergeItem|mergeItem unresolve]. + self resolutionChanged + + "Modified: / 11-12-2007 / 16:55:05 / janfrog" +! ! + +!SmalltalkMergeTool methodsFor:'private'! + +changeSet + + ^ChangeSet withAll: + ((self inAOnlyListHolder value , self conflictsListHolder value, self inBOnlyListHolder value) + select:[:e|e isResolved] thenCollect:[:e|e versionMerged]) + + "Created: / 02-04-2009 / 22:03:25 / Jan Vrany " +! + +resolved + ^ (self inAOnlyListHolder value allSatisfy:[:e | e isResolved ]) + and:[ + (self conflictsListHolder value allSatisfy:[:e | e isResolved ]) + and:[ (self inBOnlyListHolder value allSatisfy:[:e | e isResolved ]) ] + ] + + "Created: / 21-10-2008 / 09:51:03 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem class methodsFor:'documentation'! + +version + ^'$Id: Tools__SmalltalkMergeTool.st,v 1.1 2011-07-01 14:17:32 cg Exp $' +! ! + +!SmalltalkMergeTool::DiffItem class methodsFor:'image specs'! + +resolvedAsRemoveIcon + "This resource specification was automatically generated + by the ImageEditor of ST/X." + + "Do not manually edit this!! If it is corrupted, + the ImageEditor may not be able to read the specification." + + " + self resolvedAsRemoveIcon inspect + ImageEditor openOnClass:self andSelector:#resolvedAsRemoveIcon + Icon flushCachedIcons + " + + + + ^Icon + constantNamed:'Tools::MergeTool::DiffItem class resolvedAsRemoveIcon' + ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@T@AP@EPAT@@UAT@@AUT@@@ET@@@AU@@@AUT@@ATEP@AT@U@@T@AP@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 170 170 170 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' +?????<@C6A/\N<931>OC0ON\=0;6A/@@?????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself] + + "Created: / 08-11-2008 / 10:58:51 / Jan Vrany " +! + +resolvedAsVersionAIcon + + "This resource specification was automatically generated + by the ImageEditor of ST/X." + "Do not manually edit this!! If it is corrupted, + the ImageEditor may not be able to read the specification." + " + self resolvedUsingVersionAIcon inspect + ImageEditor openOnClass:self andSelector:#resolvedUsingVersionAIcon + Icon flushCachedIcons" + + ^ Icon + constantNamed:'Tools::MergeTool::DiffItem class resolvedUsingVersionAIcon' + ifAbsentPut:[ + (Depth2Image new) + width:16; + height:16; + photometric:(#palette); + bitsPerSample:(#[ 2 ]); + samplesPerPixel:((1)); + bits:(ByteArray + fromPackedString:'@@@@@@@@@@@EUUUPAUPUT@UTEU@ET@UPAU@ET@UAPU@EPTEPAPUPT@T@@E@D@@@PAAUTD@UUUU@@@@@@@@@@@@@a'); + colorMapFromArray:#[ 0 0 0 191 255 191 30 255 30 255 255 255 ]; + mask:((Depth1Image new) + width:16; + height:16; + photometric:(#blackIs0); + bitsPerSample:(#[ 1 ]); + samplesPerPixel:((1)); + bits:(ByteArray + fromPackedString:' +??????????????????????????????????????????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a'); + yourself); + yourself + ] + + "Created: / 08-11-2008 / 10:59:10 / Jan Vrany " +! + +resolvedAsVersionBIcon + + "This resource specification was automatically generated + by the ImageEditor of ST/X." + "Do not manually edit this!! If it is corrupted, + the ImageEditor may not be able to read the specification." + " + self resolvedUsingVersionBIcon inspect + ImageEditor openOnClass:self andSelector:#resolvedUsingVersionBIcon + Icon flushCachedIcons" + + ^ Icon + constantNamed:'Tools::MergeTool::DiffItem class resolvedUsingVersionBIcon' + ifAbsentPut:[ + (Depth2Image new) + width:16; + height:16; + photometric:(#palette); + bitsPerSample:(#[ 2 ]); + samplesPerPixel:((1)); + bits:(ByteArray + fromPackedString:'@@@@@@@@@@@EUUUPAT@ET@UAPU@EPTEPATEAT@U@AU@EP@UPATEAT@UAPU@EPTEPAT@ET@UUUU@@@@@@@@@@@@@a'); + colorMapFromArray:#[ 0 0 0 255 191 191 30 255 30 255 255 255 ]; + mask:((Depth1Image new) + width:16; + height:16; + photometric:(#blackIs0); + bitsPerSample:(#[ 1 ]); + samplesPerPixel:((1)); + bits:(ByteArray + fromPackedString:' +??????????????????????????????????????????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a'); + yourself); + yourself + ] + + "Created: / 08-11-2008 / 10:59:01 / Jan Vrany " +! + +unresolvedIcon + "This resource specification was automatically generated + by the ImageEditor of ST/X." + + "Do not manually edit this!! If it is corrupted, + the ImageEditor may not be able to read the specification." + + " + self unresolvedIcon inspect + ImageEditor openOnClass:self andSelector:#unresolvedIcon + Icon flushCachedIcons + " + + + + ^Icon + constantNamed:'Tools::MergeTool::DiffItem class unresolvedIcon' + ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 84 84 84 170 170 170 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' +?????<@C0@O@@<@C0@O@@<@C0@O@@<@C0@O@@?????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself] + + "Created: / 08-11-2008 / 10:41:16 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem class methodsFor:'instance creation'! + +versionA: changeA + + ^self new + versionA: changeA; + versionMerged: changeA; + state: #merged + + "Created: / 21-05-2008 / 14:14:31 / Jan Vrany " +! + +versionB: changeB + + ^self new + versionB: changeB; + versionMerged: changeB; + state: #merged + + "Created: / 21-05-2008 / 14:14:47 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem methodsFor:'accessing'! + +icon + + state = #unresolved ifTrue:[^self class unresolvedIcon]. + state = #deleted ifTrue:[^self class resolvedAsRemoveIcon]. + + versionMerged = versionA ifTrue:[^self class resolvedAsVersionAIcon]. + versionMerged = versionB ifTrue:[^self class resolvedAsVersionBIcon]. + + ^self class unresolvedIcon + + "Created: / 08-11-2008 / 10:59:37 / Jan Vrany " +! + +state + ^ state ? #unresolved + + "Modified: / 06-12-2007 / 20:55:20 / janfrog" + "Created: / 21-05-2008 / 11:52:59 / Jan Vrany " +! + +state:aSymbol + + self + assert:(#(unresolved deleted merged) includes: aSymbol). + state := aSymbol. + + "Created: / 21-05-2008 / 11:52:59 / Jan Vrany " +! + +version + ^ versionMerged ? versionA ? versionB + + "Created: / 21-05-2008 / 11:52:50 / Jan Vrany " +! + +versionMerged + ^ versionMerged + + "Created: / 21-05-2008 / 11:52:55 / Jan Vrany " +! + +versionMerged:aChange + versionMerged := aChange. + + "Created: / 21-05-2008 / 11:52:55 / Jan Vrany " + "Modified: / 21-05-2008 / 13:42:09 / Jan Vrany " +! + +versionMergedSource + ^ versionMerged + ifNil:[nil] + ifNotNil:[versionMerged source] + + "Created: / 21-05-2008 / 11:52:55 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem methodsFor:'displaying'! + +displayIconOn:aGC x:x y:y + + self icon + displayOn:aGC + x:x + y:y - 14 + + "Created: / 21-05-2008 / 11:54:47 / Jan Vrany " + "Modified: / 08-11-2008 / 11:03:00 / Jan Vrany " +! + +displayOn: aGC x:x y:y + + self displayIconOn: aGC x:x y:y. + self displayChangeOn: aGC x:x + 18 y:y. + + "Created: / 21-05-2008 / 11:55:01 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem methodsFor:'resolution'! + +apply + + ^self versionMerged apply + + "Modified: / 11-12-2007 / 18:58:37 / janfrog" + "Created: / 21-05-2008 / 11:53:12 / Jan Vrany " +! + +delete + + self state: #deleted. + self isMethodChange ifTrue: + [versionMerged := MethodRemoveChange + class: self version changeClass + selector: self version changeSelector] + + "Modified: / 11-12-2007 / 18:41:49 / janfrog" + "Created: / 21-05-2008 / 11:53:12 / Jan Vrany " +! + +resolveUsingA + + self state: #merged. + versionMerged := versionA + + "Created: / 21-05-2008 / 11:53:12 / Jan Vrany " +! + +resolveUsingB + + self state: #merged. + versionMerged := versionB + + "Created: / 21-05-2008 / 11:53:12 / Jan Vrany " +! + +unresolve + + self state: #unresolved + + "Created: / 21-05-2008 / 11:53:12 / Jan Vrany " +! ! + +!SmalltalkMergeTool::DiffItem methodsFor:'testing'! + +isMergedVersionDifferent + + ^versionMerged notNil + and:[versionMerged ~= versionA + and:[versionMerged ~= versionB]] + + "Created: / 21-05-2008 / 11:53:19 / Jan Vrany " +! + +isResolved + + ^self state ~= #unresolved + + "Created: / 21-05-2008 / 11:53:22 / Jan Vrany " +! ! + +!SmalltalkMergeTool class methodsFor:'documentation'! + +version_CVS + ^ '$Header: /cvs/stx/stx/libtool/Tools__SmalltalkMergeTool.st,v 1.1 2011-07-01 14:17:32 cg Exp $' +! + +version_SVN + ^ '§Id: Tools__SmalltalkMergeTool.st 7486 2009-10-26 22:06:24Z vranyj1 §' +! ! + +SmalltalkMergeTool initialize!