-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feat/package-chooser-ux' into develop
- Loading branch information
Showing
35 changed files
with
265 additions
and
81 deletions.
There are no files selected for viewing
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/acceptColor.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
toolbuilder | ||
acceptColor | ||
^ self userInterfaceTheme acceptColor | ||
ifNil: [self userInterfaceTheme get: #okColor for: #DialogWindow] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 6 additions & 2 deletions
8
src/Squit.package/SquitPackageChooser.class/instance/buildTrackedList..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,16 @@ | ||
toolbuilder | ||
buildTrackedList: builder | ||
|
||
^ builder pluggableListSpec new | ||
^ builder pluggableMultiSelectionListSpec new | ||
model: self; | ||
filterableList: true; | ||
clearFilterAutomatically: false; | ||
autoDeselect: true; | ||
list: #trackedPackagesWithTitle; | ||
menu: #trackedPackagesMenu:; | ||
getIndex: #selectionTracked; | ||
setIndex: #selectionTracked:; | ||
frame: (LayoutFrame fractions: (0.5 @ 0 corner: 1 @ 1) offsets: (self buttonWidth / 2 @ 0 corner: 0 @ 0)) | ||
getSelectionList: #selectionsTrackedAt:; | ||
setSelectionList: #selectionsTrackedAt:put:; | ||
frame: (LayoutFrame fractions: (0.5 @ 0 corner: 1 @ 1) offsets: (self buttonWidth / 2 @ 0 corner: 0 @ 0)); | ||
yourself |
8 changes: 6 additions & 2 deletions
8
src/Squit.package/SquitPackageChooser.class/instance/buildUntrackedList..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,16 @@ | ||
toolbuilder | ||
buildUntrackedList: builder | ||
|
||
^ builder pluggableListSpec new | ||
^ builder pluggableMultiSelectionListSpec new | ||
model: self; | ||
filterableList: true; | ||
clearFilterAutomatically: false; | ||
autoDeselect: true; | ||
list: #untrackedPackagesWithTitle; | ||
menu: #untrackedPackagesMenu:; | ||
getIndex: #selectionUntracked; | ||
setIndex: #selectionUntracked:; | ||
frame: (LayoutFrame fractions: (0 @ 0 corner: 0.5 @ 1) offsets: (0 @ 0 corner: self buttonWidth / -2 @ 0)) | ||
getSelectionList: #selectionsUntrackedAt:; | ||
setSelectionList: #selectionsUntrackedAt:put:; | ||
frame: (LayoutFrame fractions: (0 @ 0 corner: 0.5 @ 1) offsets: (0 @ 0 corner: self buttonWidth / -2 @ 0)); | ||
yourself |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/cancel.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
actions | ||
cancel | ||
|
||
acceptChanges := false. | ||
self changed: #close |
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/cancelColor.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
toolbuilder | ||
cancelColor | ||
^ self userInterfaceTheme cancelColor | ||
ifNil: [self userInterfaceTheme get: #cancelColor for: #DialogWindow] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 0 additions & 4 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/hasTrackedSelection.st
This file was deleted.
Oops, something went wrong.
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/hasTrackedSelections.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
accessing | ||
hasTrackedSelections | ||
|
||
^ selectedTrackedPackages notEmpty |
4 changes: 0 additions & 4 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/hasUntrackedSelection.st
This file was deleted.
Oops, something went wrong.
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/hasUntrackedSelections.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
accessing | ||
hasUntrackedSelections | ||
|
||
^ selectedUntrackedPackages notEmpty |
10 changes: 3 additions & 7 deletions
10
src/Squit.package/SquitPackageChooser.class/instance/packagesIn..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,5 @@ | ||
choosing packages | ||
packagesIn: aWorkingCopy | ||
^ OrderedCollection streamContents: | ||
[:packageNames | | ||
aWorkingCopy artifacts | ||
select: [:each | each storeInfo objectClassName = PackageInfo name] | ||
thenDo: | ||
[:each | | ||
packageNames nextPut: each packageName]] | ||
^ aWorkingCopy artifacts | ||
select: [:each | each storeInfo objectClassName = PackageInfo name] | ||
thenCollect: [:each | each packageName] |
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/selectAllTrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
actions | ||
selectAllTrackedPackages | ||
|
||
self selectedTrackedPackages addAll: self trackedPackages. | ||
self changed: #selectionsTrackedAt:. |
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/selectAllUntrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
actions | ||
selectAllUntrackedPackages | ||
|
||
self selectedUntrackedPackages addAll: self untrackedPackages. | ||
self changed: #selectionsUntrackedAt:. |
9 changes: 9 additions & 0 deletions
9
src/Squit.package/SquitPackageChooser.class/instance/selectInverseTrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
actions | ||
selectInverseTrackedPackages | ||
|
||
| nonSelected | | ||
nonSelected := self trackedPackages difference: self selectedTrackedPackages. | ||
self selectedTrackedPackages | ||
removeAll; | ||
addAll: nonSelected. | ||
self changed: #selectionsTrackedAt:. |
9 changes: 9 additions & 0 deletions
9
src/Squit.package/SquitPackageChooser.class/instance/selectInverseUntrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
actions | ||
selectInverseUntrackedPackages | ||
|
||
| nonSelected | | ||
nonSelected := self untrackedPackages difference: self selectedUntrackedPackages. | ||
self selectedUntrackedPackages | ||
removeAll; | ||
addAll: nonSelected. | ||
self changed: #selectionsUntrackedAt:. |
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/selectNoTrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
actions | ||
selectNoTrackedPackages | ||
|
||
self selectedTrackedPackages removeAll. | ||
self changed: #selectionsTrackedAt:. |
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/selectNoUntrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
actions | ||
selectNoUntrackedPackages | ||
|
||
self selectedUntrackedPackages removeAll. | ||
self changed: #selectionsUntrackedAt:. |
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/selectedTrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
accessing | ||
selectedTrackedPackages | ||
|
||
^ selectedTrackedPackages |
4 changes: 4 additions & 0 deletions
4
src/Squit.package/SquitPackageChooser.class/instance/selectedUntrackedPackages.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
accessing | ||
selectedUntrackedPackages | ||
|
||
^ selectedUntrackedPackages |
8 changes: 4 additions & 4 deletions
8
src/Squit.package/SquitPackageChooser.class/instance/selectionTracked..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
accessing | ||
selectionTracked: aNumber | ||
|
||
aNumber ~= 1 ifTrue: [ | ||
selectionTracked := aNumber. | ||
self changed: #selectionTracked. | ||
self changed: #hasTrackedSelection] | ||
aNumber = 1 ifTrue: ["title" ^ self]. | ||
|
||
selectionTracked := aNumber. | ||
self changed: #selectionTracked |
8 changes: 4 additions & 4 deletions
8
src/Squit.package/SquitPackageChooser.class/instance/selectionUntracked..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
accessing | ||
selectionUntracked: aNumber | ||
|
||
aNumber ~= 1 ifTrue: [ | ||
selectionUntracked := aNumber. | ||
self changed: #selectionUntracked. | ||
self changed: #hasUntrackedSelection] | ||
aNumber = 1 ifTrue: ["title" ^ self]. | ||
|
||
selectionUntracked := aNumber. | ||
self changed: #selectionUntracked |
6 changes: 6 additions & 0 deletions
6
src/Squit.package/SquitPackageChooser.class/instance/selectionsTrackedAt..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
accessing | ||
selectionsTrackedAt: aNumber | ||
|
||
aNumber = 1 ifTrue: ["title" ^ false]. | ||
|
||
^ selectedTrackedPackages includes: (self trackedPackages at: aNumber - 1) |
13 changes: 13 additions & 0 deletions
13
src/Squit.package/SquitPackageChooser.class/instance/selectionsTrackedAt.put..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
accessing | ||
selectionsTrackedAt: aNumber put: aBoolean | ||
|
||
| package | | ||
aNumber = 1 ifTrue: ["title" ^ self]. | ||
|
||
package := self trackedPackages at: aNumber - 1. | ||
aBoolean | ||
ifTrue: [selectedTrackedPackages add: package] | ||
ifFalse: [selectedTrackedPackages remove: package ifAbsent: []]. | ||
|
||
self changed: #selectionsTrackedAt:. | ||
self changed: #hasTrackedSelections |
5 changes: 5 additions & 0 deletions
5
src/Squit.package/SquitPackageChooser.class/instance/selectionsUntrackedAt..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
accessing | ||
selectionsUntrackedAt: aNumber | ||
|
||
aNumber = 1 ifTrue: ["title" ^ false]. | ||
^ selectedUntrackedPackages includes: (self untrackedPackages at: aNumber - 1) |
13 changes: 13 additions & 0 deletions
13
src/Squit.package/SquitPackageChooser.class/instance/selectionsUntrackedAt.put..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
accessing | ||
selectionsUntrackedAt: aNumber put: aBoolean | ||
|
||
| package | | ||
aNumber = 1 ifTrue: ["title" ^ self]. | ||
|
||
package := self untrackedPackages at: aNumber - 1. | ||
aBoolean | ||
ifTrue: [selectedUntrackedPackages add: package] | ||
ifFalse: [selectedUntrackedPackages remove: package ifAbsent: []]. | ||
|
||
self changed: #selectionsUntrackedAt:. | ||
self changed: #hasUntrackedSelections |
33 changes: 33 additions & 0 deletions
33
src/Squit.package/SquitPackageChooser.class/instance/track..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
actions | ||
track: aPackage | ||
|
||
| conflictingPackages packageInfo | | ||
packageInfo := PackageInfo new packageName: aPackage; yourself. | ||
conflictingPackages := self trackedPackages select: | ||
[:p | packageInfo includesSystemCategory: p]. | ||
|
||
conflictingPackages ifNotEmpty: [ | ||
self selectionUntracked: (self trackedPackagesWithTitle indexOf: aPackage). | ||
(self confirm: 'To add this package, we will first remove ', | ||
(conflictingPackages joinSeparatedBy: ', '), | ||
', because the new package is a prefix/super package for these.', String cr, | ||
'(Otherwise the package contents will be duplicated)') ifFalse: [^ self]]. | ||
|
||
self trackedPackages | ||
removeAll: conflictingPackages; | ||
add: aPackage. | ||
|
||
self updateUntrackedPackages. | ||
self changed: #trackedPackagesWithTitle. | ||
self changed: #untrackedPackagesWithTitle. | ||
selectionUntracked ifNotNil: | ||
[self selectionUntracked: (selectionUntracked min: trackedPackages size + 1 "title")]. | ||
selectedUntrackedPackages remove: aPackage ifAbsent: []. | ||
selectedTrackedPackages add: aPackage. | ||
selectedTrackedPackages removeAll: conflictingPackages. | ||
self changed: #selectionsTrackedAt:. | ||
self changed: #selectionsUntrackedAt:. | ||
self changed: #hasTrackedSelections. | ||
self changed: #hasUntrackedSelections. | ||
"Scroll updates into view" | ||
self selectionTracked: (trackedPackages indexOf: aPackage) + 1 "title". |
33 changes: 14 additions & 19 deletions
33
src/Squit.package/SquitPackageChooser.class/instance/trackSelected.st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,20 @@ | ||
actions | ||
trackSelected | ||
|
||
| package conflictingPackages | | ||
package := (self untrackedPackagesWithTitle at: self selectionUntracked). | ||
| newPackages | | ||
newPackages := self selectedUntrackedPackages asOrderedCollection. | ||
|
||
conflictingPackages := self trackedPackages select: | ||
[:p | (PackageInfo new packageName: package; yourself) includesSystemCategory: p]. | ||
"Remove all conflicts from the selection by selecting all roots from the tree only." | ||
"Naive O(n**2) implementation. Yeah, there are fancy O(n log n) algos for this, but for N < 1000 this really seems not worth the effort." | ||
newPackages := newPackages select: [:root | | ||
newPackages noneSatisfy: [:child | | ||
child ~= root and: [ | ||
(PackageInfo new packageName: child; includesSystemCategory: root)]]]. | ||
|
||
conflictingPackages ifNotEmpty: [ | ||
(self confirm: 'To add this package, we will first remove ', | ||
(conflictingPackages joinSeparatedBy: ', '), | ||
', because the new package is a prefix/super package for these.', String cr, | ||
'(Otherwise the package contents will be duplicated)') ifFalse: [^ self]]. | ||
"Unselect children to be tracked (roots will be unselected by #track: below)" | ||
selectedUntrackedPackages removeAllSuchThat: [:each | | ||
(newPackages includes: each) not]. | ||
self changed: #selectedUntrackedPackages. | ||
|
||
self trackedPackages | ||
removeAll: conflictingPackages; | ||
add: package. | ||
|
||
self updateUntrackedPackages. | ||
|
||
self changed: #trackedPackagesWithTitle. | ||
self changed: #untrackedPackagesWithTitle. | ||
self changed: #hasUntrackedSelection. | ||
self changed: #hasTrackedSelection | ||
newPackages do: [:package | | ||
self track: package]. |
8 changes: 8 additions & 0 deletions
8
src/Squit.package/SquitPackageChooser.class/instance/trackedPackagesMenu..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
toolbuilder | ||
trackedPackagesMenu: menu | ||
|
||
^ menu | ||
add: 'Select all' action: #selectAllTrackedPackages; | ||
add: 'Select inversion' action: #selectInverseTrackedPackages; | ||
add: 'Select none' action: #selectNoTrackedPackages; | ||
yourself |
20 changes: 20 additions & 0 deletions
20
src/Squit.package/SquitPackageChooser.class/instance/untrack..st
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
actions | ||
untrack: aPackage | ||
|
||
self trackedPackages remove: aPackage. | ||
|
||
self updateUntrackedPackages. | ||
|
||
self updateUntrackedPackages. | ||
self changed: #trackedPackagesWithTitle. | ||
self changed: #untrackedPackagesWithTitle. | ||
selectionTracked ifNotNil: | ||
[self selectionTracked: (selectionTracked min: trackedPackages size + 1 "title")]. | ||
selectedUntrackedPackages add: aPackage. | ||
selectedTrackedPackages remove: aPackage ifAbsent: []. | ||
self changed: #selectionsTrackedAt:. | ||
self changed: #selectionsUntrackedAt:. | ||
self changed: #hasTrackedSelections. | ||
self changed: #hasUntrackedSelections. | ||
"Scroll updates into view" | ||
self selectionUntracked: (untrackedPackages indexOf: aPackage) + 1 "title". |
Oops, something went wrong.