DirectoryContentsBrowser.st
changeset 4335 b56935032115
parent 4298 af4b4457e45f
child 4342 0eba48d22da3
--- a/DirectoryContentsBrowser.st	Fri Nov 29 10:44:48 2002 +0100
+++ b/DirectoryContentsBrowser.st	Fri Nov 29 10:45:43 2002 +0100
@@ -795,20 +795,28 @@
 !DirectoryContentsBrowser methodsFor:'actions'!
 
 allItems:allItems browserItemListAdd:addItemCol remove:remItemCol
-    | browserList|
-
-    self updateColumnsTaskStop. 
+    | browserList selection|
+
+    self updateColumnsTaskStop.
+    (addItemCol isEmpty and:[remItemCol isEmpty]) ifTrue:[ ^ self].
     self allItemsList:allItems.
-    browserList := self browserItemList copy.
+    selection := self selectedItems.
     remItemCol notEmpty ifTrue:[
-        browserList removeAll:remItemCol        
+        self browserItemList removeAll:remItemCol        
     ].
     addItemCol notEmpty ifTrue:[
-        browserList addAll:addItemCol        
+        browserList := self browserItemList copy.
+        addItemCol do:[: aNewItem |
+            (browserList includes:aNewItem) not ifTrue:[
+                browserList add:aNewItem.
+                browserList sort:self sortBlockHolder value.
+                self browserItemList add:aNewItem beforeIndex:(browserList indexOf:aNewItem).
+            ]
+        ].
     ].
-    browserList sort:self sortBlockHolder value.
-    self browserItemList contents:browserList asList.
-    self selectCurrentFiles.
+"/    browserList sort:self sortBlockHolder value.
+"/    self browserItemList contents:browserList asList.
+    self selectItems:selection.
     self updateColumnsTaskStart. 
 !
 
@@ -1485,6 +1493,26 @@
     ].
 !
 
+selectItems:aColOfItems
+    | curSel newSel|
+
+    curSel := self selectedItems.
+    aColOfItems size = curSel size ifTrue:[
+        | index |
+        index := curSel findFirst:[:item| (aColOfItems includes:item) not].
+        index == 0 ifTrue:[ ^ self].
+    ].
+    newSel := OrderedCollection new.
+    browserItemList do:[: item|
+        (aColOfItems includes:item) ifTrue:[
+            newSel add:item.
+        ].
+    ].
+    self updateToExternFileHolderLock doLocked:[
+        self selectionInFileList value:newSel withoutNotifying:self.
+    ].
+!
+
 selectedFileItems
 
     | sel |
@@ -2650,7 +2678,7 @@
         "/ MERGE WITH CURRENT CONTENTS
         oldItems reverseDo:[:anOldItem|
             "/ remove no longer valid files
-            (newItems detectLast:[:aNewItem| aNewItem = anOldItem] ifNone:false) ifFalse:[
+            (newItems detectLast:[:aNewItem| aNewItem = anOldItem] ifNone:nil) isNil ifTrue:[
                 remItems add:anOldItem.
                 oldItems removeIdentical:anOldItem
             ]
@@ -2658,7 +2686,7 @@
     ].
     "/ add new files
     newItems do:[:aNewItem|
-        (oldItems detect:[:anOldItem| anOldItem = aNewItem] ifNone:false) ifFalse:[
+        (oldItems detect:[:anOldItem| anOldItem = aNewItem] ifNone:nil) isNil ifTrue:[
             addItems add:aNewItem.
         ]
     ].
@@ -2764,5 +2792,5 @@
 !DirectoryContentsBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.58 2002-11-19 17:49:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.59 2002-11-29 09:45:43 penk Exp $'
 ! !