MultipleItemSelectionWidget.st
changeset 1838 833893f82202
parent 1837 67fd7ad3d699
child 1840 87591034ff12
--- a/MultipleItemSelectionWidget.st	Thu Sep 14 14:31:11 2000 +0200
+++ b/MultipleItemSelectionWidget.st	Thu Sep 14 17:48:28 2000 +0200
@@ -4,8 +4,9 @@
 	instanceVariableNames:'possibleItemsLabelHolder possibleItemListSelection
 		listOfPossibleItems selectedItemListSelection
 		removeButtonLabelHolder addButtonLabelHolder
-		canAddItemToSelection selectedItemsLabelHolder
-		listOfSelectedItems canRemoveItemFromSelection'
+		selectedItemsLabelHolder listOfSelectedItems
+		canAddItemToSelection canRemoveItemFromSelection
+		canAddAllItemsToSelection canRemoveAllItemsFromSelection'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Views-Lists'
@@ -89,15 +90,37 @@
        #(#SpecCollection
           #collection: #(
            #(#LabelSpec
-              #label: 'Possible Items'
-              #name: 'Label1'
-              #layout: #(#LayoutFrame 0 0 0 0 0 0.5 30 0)
+              #label: 'Selected'
+              #name: 'SelectedLabel'
+              #layout: #(#LayoutFrame 0 0 0 0 0 0.5 25 0)
+              #translateLabel: true
+              #labelChannel: #selectedItemsLabelHolder
+            )
+           #(#SequenceViewSpec
+              #name: 'SelectedList'
+              #layout: #(#LayoutFrame 0 0 25 0 -20 0.5 0 1)
+              #tabable: true
+              #model: #selectedItemListSelection
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #miniScrollerVertical: true
+              #isMultiSelect: true
+              #doubleClickSelector: #removeItemsFromSelection
+              #valueChangeSelector: #showInfoForItem:
+              #useIndex: false
+              #sequenceList: #listOfSelectedItems
+            )
+           #(#LabelSpec
+              #label: 'Not Selected'
+              #name: 'NotSelectedLabel'
+              #layout: #(#LayoutFrame 0 0.5 0 0 0 1 25 0)
               #translateLabel: true
               #labelChannel: #possibleItemsLabelHolder
             )
            #(#SequenceViewSpec
-              #name: 'List1'
-              #layout: #(#LayoutFrame 0 0 30 0 0 0.5 -30 1)
+              #name: 'NotSelectedList'
+              #layout: #(#LayoutFrame 20 0.5 25 0 0 1 0 1)
               #tabable: true
               #model: #possibleItemListSelection
               #hasHorizontalScrollBar: true
@@ -110,31 +133,9 @@
               #useIndex: false
               #sequenceList: #listOfPossibleItems
             )
-           #(#LabelSpec
-              #label: 'Selected Items'
-              #name: 'Label2'
-              #layout: #(#LayoutFrame 0 0.5 0 0 0 1 30 0)
-              #translateLabel: true
-              #labelChannel: #selectedItemsLabelHolder
-            )
-           #(#SequenceViewSpec
-              #name: 'List2'
-              #layout: #(#LayoutFrame 0 0.5 30 0 0 1 -30 1)
-              #tabable: true
-              #model: #selectedItemListSelection
-              #hasHorizontalScrollBar: true
-              #hasVerticalScrollBar: true
-              #miniScrollerHorizontal: true
-              #miniScrollerVertical: true
-              #isMultiSelect: true
-              #doubleClickSelector: #removeItemsFromSelection
-              #valueChangeSelector: #showInfoForItem:
-              #useIndex: false
-              #sequenceList: #listOfSelectedItems
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel2'
-              #layout: #(#LayoutFrame 0 0 -30 1 0 1 0 1)
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame -20 0.5 25 0 20 0.5 5 0.5)
               #horizontalLayout: #fitSpace
               #verticalLayout: #center
               #horizontalSpace: 3
@@ -143,8 +144,8 @@
              #(#SpecCollection
                 #collection: #(
                  #(#ActionButtonSpec
-                    #label: 'Add >>'
-                    #name: 'addButton'
+                    #label: '<<<'
+                    #name: 'AddButton'
                     #translateLabel: true
                     #labelChannel: #addButtonLabelHolder
                     #resizeForLabel: false
@@ -155,14 +156,50 @@
                     #useDefaultExtent: true
                   )
                  #(#ActionButtonSpec
-                    #label: '<< Remove'
-                    #name: 'removeButton'
+                    #label: '>>>'
+                    #name: 'RemoveButton'
                     #translateLabel: true
                     #labelChannel: #removeButtonLabelHolder
                     #resizeForLabel: false
                     #tabable: true
                     #model: #removeItemsFromSelection
                     #enableChannel: #canRemoveItemFromSelection
+                    #useDefaultExtent: true
+                  )
+                 )
+               
+              )
+            )
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel2'
+              #layout: #(#LayoutFrame -20 0.5 5 0.5 20 0.5 -10 1)
+              #horizontalLayout: #fitSpace
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ActionButtonSpec
+                    #label: 'All'
+                    #name: 'AddAllButton'
+                    #translateLabel: true
+                    #labelChannel: #addButtonLabelHolder
+                    #resizeForLabel: false
+                    #tabable: true
+                    #model: #addAllItemsToSelection
+                    #enableChannel: #canAddAllItemsToSelection
+                    #useDefaultExtent: true
+                  )
+                 #(#ActionButtonSpec
+                    #label: 'None'
+                    #name: 'RemoveAllButton'
+                    #translateLabel: true
+                    #labelChannel: #removeButtonLabelHolder
+                    #resizeForLabel: false
+                    #tabable: true
+                    #model: #removeAllItemsFromSelection
+                    #enableChannel: #canRemoveAllItemsFromSelection
                     #actionValue: ''
                     #useDefaultExtent: true
                   )
@@ -190,22 +227,27 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
+        #addButtonLabelHolder
         #listOfPossibleItems
         #listOfSelectedItems
-
-        #addButtonLabelHolder
         #possibleItemsLabelHolder
         #removeButtonLabelHolder
         #selectedItemsLabelHolder
-
       ).
 
-    "Modified: / 18.8.2000 / 18:49:08 / cg"
-
 ! !
 
 !MultipleItemSelectionWidget methodsFor:'actions'!
 
+addAllItemsToSelection
+    "add all items from unselected to the selected list"
+
+    self listOfSelectedItems value:(self listOfSelectedItems value copy addAll:self listOfPossibleItems value; yourself).
+    self listOfPossibleItems value:(self listOfPossibleItems value copy removeAll; yourself).
+
+
+!
+
 addItemsToSelection
     "add selected items from left list to the right list"
 
@@ -222,6 +264,14 @@
 
 !
 
+removeAllItemsFromSelection
+    "remove all items from selected to the unselected list"
+
+    self listOfPossibleItems value:(self listOfSelectedItems value copy addAll:self listOfPossibleItems value; yourself).
+    self listOfSelectedItems value:(self listOfSelectedItems value copy removeAll; yourself).
+
+!
+
 removeItemsFromSelection
     "remove selected items from right list to the left list"
 
@@ -241,6 +291,14 @@
 
 !MultipleItemSelectionWidget methodsFor:'aspects'!
 
+canAddAllItemsToSelection
+    canAddAllItemsToSelection isNil ifTrue:[
+       canAddAllItemsToSelection := BlockValue with:[:m | m value size > 0]
+                                    argument:self listOfPossibleItems 
+    ].
+    ^ canAddAllItemsToSelection.
+!
+
 canAddItemToSelection
     "automatically generated by UIPainter ..."
 
@@ -255,6 +313,14 @@
     ^ canAddItemToSelection.
 !
 
+canRemoveAllItemsFromSelection
+    canRemoveAllItemsFromSelection isNil ifTrue:[
+       canRemoveAllItemsFromSelection := BlockValue with:[:m | m value size > 0]
+                                    argument:self listOfSelectedItems 
+    ].
+    ^ canRemoveAllItemsFromSelection.
+!
+
 canRemoveItemFromSelection
     "automatically generated by UIPainter ..."
 
@@ -405,5 +471,5 @@
 !MultipleItemSelectionWidget class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/MultipleItemSelectionWidget.st,v 1.1 2000-09-14 12:31:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/MultipleItemSelectionWidget.st,v 1.2 2000-09-14 15:48:28 cg Exp $'
 ! !