Squeak Class Documentation category index | class index  
 
ChangeList
  category: Tools-Changes
  superclass: CodeHolder
  subclasses: ChangeListForProjects VersionsBrowser

A ChangeList represents a list of changed methods that reside on a file in fileOut format. The classes and methods in my list are not necessarily in this image! Used as the model for both Version Lists and Changed Methods (in Screen Menu, Changes...). Note that the two kinds of window have different controller classes!!

It holds three lists:
changeList - a list of ChangeRecords
list - a list of one-line printable headers
listSelections - a list of Booleans (true = selected, false = not selected) multiple OK.
listIndex
Items that are removed (removeDoits, remove an item) are removed from all three lists.
Most recently clicked item is the one showing in the bottom pane.

instance methods
  accessing
  changeList
currentChange
file
listHasSingleEntry
listSelections
setLostMethodPointer:
showsVersions

  initialization-release
  addItem:text:
changeListButtonSpecs
initialize
openAsMorphName:multiSelect:
optionalButtonHeight
optionalButtonsView

  menu actions
  acceptFrom:
browseCurrentVersionsOfSelections
buildMorphicCodePaneWith:
changeListKey:from:
changeListMenu:
compareToCurrentVersion
deselectAll
destroyCurrentCodeOfSelections
fileInSelections
fileOutSelections
invertSelections
optionalButtonRow
perform:orSendTo:
removeDoIts
removeExistingMethodVersions
removeNonSelections
removeOlderMethodVersions
removeSelections
selectAll
selectAllConflicts
selectConflicts
selectConflicts:
selectConflictsWith
selectMethodsForThisClass
selectSuchThat
selectSuchThat:
selectUnchangedMethods

  scanning
  scanCategory
scanCategory:class:meta:stamp:
scanFile:from:to:

  viewing access
  annotation
contents
contents:
contentsDiffedFromCurrent
contentsSymbolQuints
diffedVersionContents
list
listIndex
listSelectionAt:
listSelectionAt:put:
restoreDeletedMethod
selectedClassOrMetaClass
selectedMessageName
toggleListIndex:
undiffedContents

class methods
  instance creation
  open:name:multiSelect:
openAsMorph:name:multiSelect:

  public access
  browseFile:
browseRecent:
browseRecentLog
browseStream:
getRecentLocatorWithPrompt:

instance methods
  accessing top  
 

changeList


 

currentChange

return the current change being viewed, or nil if none


 

file


 

listHasSingleEntry

does the list of changes have only a single item?


 

listSelections


 

setLostMethodPointer:


 

showsVersions


  initialization-release top  
 

addItem:text:


 

changeListButtonSpecs


 

initialize

Initialize a blank ChangeList. Set the contentsSymbol to reflect whether diffs will initally be shown or not


 

openAsMorphName:multiSelect:

Open a morphic view for the messageSet, whose label is labelString.
The listView may be either single or multiple selection type


 

optionalButtonHeight


 

optionalButtonsView

Answer the a View containing the optional buttons


  menu actions top  
 

acceptFrom:


 

browseCurrentVersionsOfSelections

Opens a message-list browser on the current in-memory versions of all methods that are currently seleted


 

buildMorphicCodePaneWith:


 

changeListKey:from:

Respond to a Command key in the list pane.


 

changeListMenu:

Fill aMenu up so that it comprises the primary changelist-browser menu


 

compareToCurrentVersion

If the current selection corresponds to a method in the system, then spawn a window showing the diffs as text


 

deselectAll

Deselect all items in the list pane, and clear the code pane


 

destroyCurrentCodeOfSelections

Actually remove from the system any in-memory methods with class and selector identical to items current selected. This may seem rather arcane but believe me it has its great uses, when trying to split out code. To use effectively, first file out a change set that you wish to split off. Then open a ChangeList browser on that fileout. Now look through the methods, and select any of them which you want to remove completely from the system, then issue this command. For those methods where you have made changes to pre-existing versions, of course, you won't want to remove them from the system, so use this mechanism with care!


 

fileInSelections


 

fileOutSelections


 

invertSelections

Invert the selectedness of each item in the changelist


 

optionalButtonRow

Answer a row of buttons to occur in a tool pane


 

perform:orSendTo:

Selector was just chosen from a menu by a user. If I can respond, then perform it on myself. If not, send it to otherTarget, presumably the editPane from which the menu was invoked.


 

removeDoIts

Remove doits from the receiver, other than initializes. 1/26/96 sw


 

removeExistingMethodVersions

Remove all up to date version of entries from the receiver


 

removeNonSelections

Remove the unselected items from the receiver.


 

removeOlderMethodVersions

Remove older versions of entries from the receiver.


 

removeSelections

Remove the selected items from the receiver. 9/18/96 sw


 

selectAll


 

selectAllConflicts

Selects all method definitions in the receiver which are also in any existing change set in the system. This makes no statement about whether the content of the methods differ, only whether there is a change represented.


 

selectConflicts

Selects all method definitions for which there is ALSO an entry in changes


 

selectConflicts:

Selects all method definitions for which there is ALSO an entry in the specified changeSet or changList


 

selectConflictsWith

Selects all method definitions for which there is ALSO an entry in the specified changeSet or changList chosen by the user. 4/11/96 tk


 

selectMethodsForThisClass


 

selectSuchThat

query the user for a selection criterio. By Lex Spoon. NB: the UI for invoking this from a changelist browser is currently commented out; to reenfranchise it, you'll need to mild editing to ChangeList method #changeListMenu:


 

selectSuchThat:

select all changes for which block returns true


 

selectUnchangedMethods

Selects all method definitions for which there is already a method in the current image, whose source is exactly the same. 9/18/96 sw


  scanning top  
 

scanCategory

Scan anything that involves more than one chunk; method name is historical only


 

scanCategory:class:meta:stamp:


 

scanFile:from:to:


  viewing access top  
 

annotation

Answer the string to be shown in an annotation pane. Make plain that the annotation is associated with the current in-image version of the code, not of the selected disk-based version, and if the corresponding method is missing from the in-image version, mention that fact.


 

contents

Answer the contents string, obeying diffing directives if needed


 

contents:

Set textOrString to be the contents of the receiver.


 

contentsDiffedFromCurrent

Answer the contents diffed forward from current (in-memory) method version


 

contentsSymbolQuints

Answer a list of quintuplets representing information on the alternative views available in the code pane


 

diffedVersionContents

Answer diffed version contents, maybe pretty maybe not


 

list


 

listIndex


 

listSelectionAt:


 

listSelectionAt:put:


 

restoreDeletedMethod

If lostMethodPointer is not nil, then this is a version browser for a method that has been removed. In this case we want to establish a sourceCode link to prior versions. We do this by installing a dummy method with the correct source code pointer prior to installing this version.


 

selectedClassOrMetaClass


 

selectedMessageName


 

toggleListIndex:


 

undiffedContents


class methods
  instance creation top  
 

open:name:multiSelect:

Create a standard system view for the messageSet, whose label is aString.
The listView may be either single or multiple selection type


 

openAsMorph:name:multiSelect:

Open a morphic view for the messageSet, whose label is labelString.
The listView may be either single or multiple selection type


  public access top  
 

browseFile:

ChangeList browseFile: 'AutoDeclareFix.st'


 

browseRecent:

ChangeList browseRecent: 5000


 

browseRecentLog

ChangeList browseRecentLog


 

browseStream:

Opens a changeList on a fileStream


 

getRecentLocatorWithPrompt:

Prompt with a menu of how far back to go. Return nil if user backs out. Otherwise return the number of characters back from the end of the .changes file the user wishes to include