<b>=============== Summary ===============</b><br>
<br>
Change Set: changeSetNameInUse<br>
Date: 5 April 2022<br>
Author: Christoph Thiede<br>
<br>
When creating/filing a changeset with a name that is already in use, offer the user to append or overwrite the changeset instead canceling the operation. Also improves multilingual support.<br>
<br>
To test this out, just file in this changeset a second time.<br>
<br>
<b>=============== Diff ===============</b><br>
<br>
<b>ChangeSet class>>basicNewChangeSet: {enumerating} · ct 4/5/2022 20:57 (changed)</b><br>
basicNewChangeSet: newName<br>
| newSet |<br>
newName ifNil: [^ nil].<br>
<s><font color="#0000FF">- (self named: newName) ifNotNil:<br>
- [self inform: 'Sorry that name is already used'.<br>
- ^ nil].<br>
</font></s><font color="#FF0000">+ (self named: newName) ifNotNil: [:existing |<br>
+ ((Project uiManager<br>
+ chooseFromLabeledValues: (OrderedDictionary new<br>
+ at: 'Append' translated put: [^ existing];<br>
+ at: 'Overwrite' translated put: [self removeChangeSet: existing];<br>
+ at: 'Cancel' translated put: nil;<br>
+ yourself)<br>
+ title: ('A changeset with the name <b>"{1}"</b> already exists.' translated asTextFromHtml format: {newName})) ifNil: [^ nil]) value].<br>
</font> newSet := self basicNewNamed: newName.<br>
AllChangeSets add: newSet.<br>
^ newSet<br>
<br>
<b>ChangeSet class>>newChangesFromStream:named: {services} · ct 4/5/2022 20:54 (changed)</b><br>
newChangesFromStream: aStream named: aName<br>
"File in the code from the stream into a new change set whose<br>
name is derived from aName. Leave the 'current change set'<br>
unchanged. Return the new change set or nil on failure."<br>
<br>
| oldChanges newName newSet |<br>
oldChanges := ChangeSet current.<br>
PreviousSet := oldChanges name. "so a Bumper update can find it"<br>
newName := aName sansPeriodSuffix.<br>
newSet := self basicNewChangeSet: newName.<br>
[ | newStream |newSet ifNotNil:[<br>
(aStream respondsTo: #converter:) ifFalse: [<br>
newStream := MultiByteBinaryOrTextStream with: (aStream contentsOfEntireFile).<br>
newStream reset.<br>
] ifTrue: [<br>
newStream := aStream.<br>
].<br>
<br>
self newChanges: newSet.<br>
newStream setConverterForCode.<br>
<s><font color="#0000FF">- newStream fileInAnnouncing: 'Loading ', newName, '...'.<br>
- Transcript cr; show: 'File ', aName, ' successfully filed in to change set ', newName].<br>
</font></s><font color="#FF0000">+ newStream fileInAnnouncing: ('Loading {1}...' translated format: {newName}).<br>
+ Transcript cr; show: ('File {1} successfully filed in to change set {2}' translated format: {aName. newName})].<br>
</font> aStream close] ensure: [self newChanges: oldChanges].<br>
PreviousSet := nil.<br>
^ newSet<br>
<br>
<font color="#808080">---<br>
</font><font color="#808080"><i>Sent from </i></font><font color="#808080"><i><a href="https://github.com/hpi-swa-lab/squeak-inbox-talk"><u><font color="#808080">Squeak Inbox Talk</font></u></a></i></font><br>
["changeSetNameInUse.4.cs"]<br>
["changeSetNameInUse.png"]