<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"]