--- a/DirectoryDifferenceViewApplication.st Thu Jan 12 14:03:28 2012 +0100
+++ b/DirectoryDifferenceViewApplication.st Fri Jan 13 14:44:15 2012 +0100
@@ -4,13 +4,48 @@
instanceVariableNames:'directory1Holder directory2Holder directory1 directory2
filesOnlyInDirectory1 filesOnlyInDirectory2
filesWhichAreDifferent directoriesOnlyInDirectory1
- directoriesOnlyInDirectory2'
+ directoriesOnlyInDirectory2 namePatternHolder
+ excludedNamePatternHolder'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools-File'
!
+!DirectoryDifferenceViewApplication class methodsFor:'help specs'!
+
+flyByHelpSpec
+ "This resource specification was automatically generated
+ by the UIHelpTool of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIHelpTool may not be able to read the specification."
+
+ "
+ UIHelpTool openOnClass:FindFileApplication
+ "
+
+ <resource: #help>
+
+ ^ super flyByHelpSpec addPairsFrom:#(
+
+#namePattern
+'Filename(s) to search for. Can be matchPatterns, separated by ";"'
+
+#excludedNamePattern
+'Filename(s) to skip. Can be matchPatterns, separated by ";"'
+
+#searchDirectory1
+'The first folder, to be compared against folder2'
+
+#searchDirectory2
+'The second folder, to be compared against folder1'
+
+)
+
+ "Modified: / 13-01-2012 / 14:41:36 / cg"
+! !
+
!DirectoryDifferenceViewApplication class methodsFor:'interface specs'!
windowSpec
@@ -66,14 +101,14 @@
label: 'Directory1:'
name: 'DirectoryLabel'
layout: (LayoutFrame 2 0 7 0 154 0 24 0)
- activeHelpKey: searchDirectory
+ activeHelpKey: searchDirectory1
translateLabel: true
adjust: right
)
(FilenameInputFieldSpec
name: 'DirectoryEntryField'
layout: (LayoutFrame 156 0 4 0 0 1 24 0)
- activeHelpKey: searchDirectory
+ activeHelpKey: searchDirectory1
model: directory1Holder
immediateAccept: true
acceptOnPointerLeave: false
@@ -82,14 +117,14 @@
label: 'Directory2:'
name: 'Label2'
layout: (LayoutFrame 2 0 31 0 154 0 48 0)
- activeHelpKey: searchDirectory
+ activeHelpKey: searchDirectory2
translateLabel: true
adjust: right
)
(FilenameInputFieldSpec
name: 'FilenameEntryField1'
layout: (LayoutFrame 156 0 28 0 0 1 48 0)
- activeHelpKey: searchDirectory
+ activeHelpKey: searchDirectory2
model: directory2Holder
immediateAccept: true
acceptOnPointerLeave: false
@@ -125,14 +160,14 @@
label: 'But Not Named:'
name: 'Label1'
layout: (LayoutFrame 2 0 79 0 154 0 96 0)
- activeHelpKey: namePattern
+ activeHelpKey: excludedNamePattern
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'EntryField1'
layout: (LayoutFrame 156 0 76 0 -315 1 96 0)
- activeHelpKey: namePattern
+ activeHelpKey: excludedNamePattern
tabable: true
model: excludedNamePatternHolder
immediateAccept: true
@@ -184,6 +219,8 @@
)
)
+
+ "Modified: / 13-01-2012 / 14:41:56 / cg"
! !
!DirectoryDifferenceViewApplication class methodsFor:'tableColumns specs'!
@@ -282,10 +319,31 @@
"Created: / 12-01-2012 / 03:21:52 / cg"
! !
+!DirectoryDifferenceViewApplication methodsFor:'aspects'!
+
+excludedNamePatternHolder
+ excludedNamePatternHolder isNil ifTrue:[
+ excludedNamePatternHolder := '' asValue.
+ ].
+ ^ excludedNamePatternHolder.
+
+ "Created: / 13-01-2012 / 14:42:47 / cg"
+!
+
+namePatternHolder
+
+ namePatternHolder isNil ifTrue:[
+ namePatternHolder := '*' asValue.
+ ].
+ ^ namePatternHolder.
+
+ "Created: / 13-01-2012 / 14:37:28 / cg"
+! !
+
!DirectoryDifferenceViewApplication methodsFor:'comparing'!
doSearch
- |dir1 dir2|
+ |dir1 dir2 namePattern excludedNamePattern|
filesOnlyInDirectory1 := OrderedCollection new.
filesOnlyInDirectory2 := OrderedCollection new.
@@ -302,6 +360,9 @@
dir1 := dir1 asFilename.
dir2 := dir2 asFilename.
+ namePattern := self namePatternHolder value.
+ excludedNamePattern := self excludedNamePatternHolder value.
+
self
startSearchTask:[
self changeInformationTo:'Directory Diff - searching ' toTab:true.
@@ -311,41 +372,49 @@
dir1 recursiveDirectoryContentsDo:[:relFn1 |
|fn1 fn2|
- fn1 := dir1 construct:relFn1.
- fn2 := dir2 construct:relFn1.
+ (namePattern isNil or:[namePattern match:relFn1]) ifTrue:[
+ (excludedNamePattern isNil or:[(excludedNamePattern match:relFn1) not]) ifTrue:[
+ fn1 := dir1 construct:relFn1.
+ fn2 := dir2 construct:relFn1.
- fn1 isDirectory ifTrue:[
- self notify:('Comparing %1...' bindWith:relFn1 asString allBold).
- fn2 exists ifFalse:[
- directoriesOnlyInDirectory1 add:fn1.
- self matchedFilesList add:{ relFn1 . 'Directory only in directory1' }.
- ].
- ] ifFalse:[
- fn2 exists ifTrue:[
- (fn1 sameContentsAs:fn2) ifFalse:[
- filesWhichAreDifferent add:fn1.
- self matchedFilesList add:{ relFn1 . 'Different' }.
+ fn1 isDirectory ifTrue:[
+ self notify:('Comparing %1...' bindWith:relFn1 asString allBold).
+ fn2 exists ifFalse:[
+ directoriesOnlyInDirectory1 add:fn1.
+ self matchedFilesList add:{ relFn1 . 'Directory only in directory1' }.
+ ].
+ ] ifFalse:[
+ fn2 exists ifTrue:[
+ (fn1 sameContentsAs:fn2) ifFalse:[
+ filesWhichAreDifferent add:fn1.
+ self matchedFilesList add:{ relFn1 . 'Different' }.
+ ].
+ ] ifFalse:[
+ filesOnlyInDirectory1 add:fn1.
+ self matchedFilesList add:{ relFn1 . 'File only in directory1' }.
+ ].
].
- ] ifFalse:[
- filesOnlyInDirectory1 add:fn1.
- self matchedFilesList add:{ relFn1 . 'File only in directory1' }.
- ].
- ].
+ ]
+ ]
].
dir2 recursiveDirectoryContentsDo:[:relFn2 |
|fn1 fn2|
- fn2 := dir2 construct:relFn2.
- fn1 := dir1 construct:relFn2.
- fn1 exists ifFalse:[
- fn1 isDirectory ifTrue:[
- directoriesOnlyInDirectory1 add:fn1.
- self matchedFilesList add:{ relFn2 . 'Directory only in directory2' }.
- ] ifFalse:[
- filesOnlyInDirectory2 add:fn2.
- self matchedFilesList add:{ relFn2 . 'File only in directory2' }.
- ]
- ].
+ (namePattern isNil or:[namePattern match:relFn2]) ifTrue:[
+ (excludedNamePattern isNil or:[(excludedNamePattern match:relFn2) not]) ifTrue:[
+ fn2 := dir2 construct:relFn2.
+ fn1 := dir1 construct:relFn2.
+ fn1 exists ifFalse:[
+ fn1 isDirectory ifTrue:[
+ directoriesOnlyInDirectory1 add:fn1.
+ self matchedFilesList add:{ relFn2 . 'Directory only in directory2' }.
+ ] ifFalse:[
+ filesOnlyInDirectory2 add:fn2.
+ self matchedFilesList add:{ relFn2 . 'File only in directory2' }.
+ ]
+ ].
+ ].
+ ]
].
filesOnlyInDirectory1 notEmpty ifTrue:[
Transcript showCR:('%1 files only in directory1' bindWith:filesOnlyInDirectory1 size).
@@ -380,9 +449,9 @@
!DirectoryDifferenceViewApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/DirectoryDifferenceViewApplication.st,v 1.2 2012-01-12 02:32:18 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/DirectoryDifferenceViewApplication.st,v 1.3 2012-01-13 13:44:15 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/DirectoryDifferenceViewApplication.st,v 1.2 2012-01-12 02:32:18 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/DirectoryDifferenceViewApplication.st,v 1.3 2012-01-13 13:44:15 cg Exp $'
! !