OmniBrowser

OBAboutToChange
An OBAboutToChange is xxxxxxxxx.
Instance Variables
veto: <Object>
veto
- xxxxx
isVetoed
veto
OBAboutToChangeSilently
An OBAboutToChangeSilently is xxxxxxxxx.
Instance Variables
veto: <Object>
veto
- xxxxx
isVetoed
veto
OBAnnouncement
An OBAnnouncement is xxxxxxxxx.
Instance Variables
browserIcon
OBAnnouncer
An OBAnnouncer is xxxxxxxxx.
Instance Variables
subscriptions: <Object>
subscriptions
- xxxxx
announce:
current
initialize
Subclasses should redefine this method to perform initializations on instance creation
new
observe:do:
observe:send:to:
unsubscribe:
OBAnnouncerRequest
An OBAnnouncerRequest is xxxxxxxxx.
Instance Variables
OBAutoSelection
A auto selection holds a strategy that returns the node to auto select in columns. An auto selection strategy is stored in the metanode representing the respective column.
autoSelection
fan:
metaNode
metaNode:
on:
OBBrowseRequest
This notification is raised whenever a browser needs to be opened. The default action is to open a SystemWindow in Morphic, but it can be caught in situations where that's not appropriate. The OB test suite uses this extensively.
browser
browser:
handleWith:
isBrowseRequest
signal:
Signal the occurrence of an exceptional condition with a specified textual description.
OBBrowser
OBBrowser is the core of OmniBrower. It's the root object for each browser and the model for the SystemWindows which display them. Its main responsibily is managing panels, particularly passing update messages between them.
On the class side, OBBrowser provides some default settings for creating and opening browsers. Subclasses can override these settings to acheive customized behavior.
iVars:
panels - A collection of objects which manage submorphs of the browser's SystemWindow.
cVars:
MetaGraphs - A dictionary matching names to metagraphs
addPanel:
announce:
announcer
buildGroup:on:
buildOn:
close
cmdFactories
commandSelectors
currentNode
currentOrRootNode
defaultBackgroundColor
Answer the color to be used as the base window color for a window whose model is an object of the receiver's class
defaultLabel
defaultMetaNode
defaultRootNode
definitionPanel
dontTranscribe
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeCommands
jumpTo:
jumpToRoot
labelString
maxPanes
metaNode:node:
metaNode:root:selection:
metaNode:root:selection:panels:
minPanes
navigationPanel
new
okToChange
Allows a controller to ask this of any model
open
openRoot:
openRoot:selection:
optionalButtonPanel
optionalButtons
paneCount
panels
relabel:
root
root:
root:selection:
scanNodeCommands:
scanTextCommands:
selection:
selectionPath
setMetaNode:node:
signalRefresh
subscribe
title
titleForRoot:
transcribe
OBBuilder
An OBBuilder is xxxxxxxxx.
Instance Variables
current: <Object>
current
- xxxxx
build:
button:with:
current:
current:do:
fixedButtonBar:with:
horizontalGroupWith:
pane:with:
radioButtonBar:with:
root
scroller:with:
textarea:with:
textfield:with:
verticalGroupWith:
window:with:
OBChildrenChanged
An OBChildrenChanged is xxxxxxxxx.
Instance Variables
node: <Object>
node
- xxxxx
node
node:
OBChoiceRequest
This notification is used to ask the user for to choose from a list of alternatives. Its defaultAction is to open a PopUpMenu. Test cases an intercept the notification and respond programmatically.
prompt - A string describing the choice the user is asked to make.
labels - A list of strings describing the alternatives.
values - When the user chooses an alternative, the corresponding item from this list is returned
handleWith:
labels
labels:
labels:lines:
lines
prompt
prompt:labels:values:
prompt:labels:values:lines:
select:
setPrompt:labels:values:lines:
values
OBCloseRequest
An OBCloseRequest is xxxxxxxxx.
Instance Variables
browser: <Object>
browser
- xxxxx
browser
browser:
handleWith:
signal:
Signal the occurrence of an exceptional condition with a specified textual description.
OBCollectionNode
OBCollectionNode is a trivial wrapper for a collection of nodes. It is typically used as an artificial root node for metagraphs that have no natural root.
addChild:
children
hasOrganization
hasSelector
hasVersions
isAncestorOf:
isCategoryNode
isEnvironmentNode
name
Answer a name for the receiver. This is used generically in the title of certain inspectors, such as the referred-to inspector, and specificially by various subsystems. By default, we let the object just print itself out..
name:
on:
on:named:
removeChild:
setCollection:
OBColumn
An OBColumn manages a list of nodes, which it displays in a PluggableListMorph in the pane scroller at the top of the browser. All instances of OBColumn belong to an OBColumnPanel. It's main responsibility is keeping its list - and those of its neighbours - up to date. Each column has a MetaNode, which provides the list contents. It uses a filter to meditate between its self and the MetaNode.
iVars:
panel - the panel which owns the column
filter - the filter which manages the column's MetaNode.
parent - the node selected in the column to the left of this column
children - the nodes which make up this column's list
selection - the index of the node selected by the user
acceptDroppingMorph:event:inMorph:
addCommandsToMenu:
announce:
announcer
backgroundColorAt:
basicNext
basicParent:
browser
buildOn:
canDrop:on:
children
childrenChanged:
clear
clearSelection
clickIconAt:
createNext
descriptor
doubleClick
dragEnabled
dragPassengerFor:inMorph:
dragTransferType
dragTransferTypeForMorph:
drop:on:
dropEnabled
fan:selection:
hasSelection
iconAt:
inPanel:
inPanel:metaNode:node:
includesNode:
isEmpty
isSelected:
jumpTo:
keystroke:from:
list
listAt:
listChanged
listHolder
listSize
menu:
metaNode
next
nextColumnForDefaultNavigationWithFan:selection:
nextColumnWithFan:selection:
nextMetaNode
nodeChanged:
nodeDeleted:
This gets called if an action causes the currently selected node to be deleted.
nodeForDropEvent:inMorph:
nodeForItem:
okToChange
Allows a controller to ask this of any model
parent
parent:
previous
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
refresh
refresh:
refreshAndSignal:
select:
selectSilently:
selectedNode
selection
selection:
selectionChanged:
setPanel:
setPanel:metaNode:node:
shouldBeLast
signalSelectionChanged
subscribe
switch
switchFilter:
We should only be sending #changed: if the filter is actually different
from the one the switch already has, but that causes some visually odd
behavior because of the way OBRadioButtonBar resizes its self when updating,
so for now we always just recreate the button bar.
wantsButton
wantsDroppedMorph:event:inMorph:
OBColumnPanel
OBColumnPanel handles navigation around the nodes of the object graph. It maintains a list of columns, which track the user's path through the node tree. As nodes are selected, additional columns are added to the list, which appear as panes on the right of the panel.
iVars:
columns - A collection of OBColumns, each of which manages a single pane in the scroller.
minPanes - The minimum number of panes that should ever be visible.
maxPanes - The maximum number of panes that should ever be visible.
buildOn:
clearAfter:
columnAfter:
columnBefore:
columnBefore:ifAbsent:
columnClass
columns
columns:
currentColumn
currentNode
currentOrRootNode
defaultBackgroundColor
Answer the color to be used as the base window color for a window whose model is an object of the receiver's class
emptyColumn
hasSelection
hopTo:
isNavigation
isVariableHeight
jumpTo:
jumpToRoot
labelString
maxPanes
minPanes
minPanes:maxPanes:
new
nodeDeleted:
okToReclaimPane
popColumn
pushColumn:
reclaimPanes
root
selectAncestorsOf:
selectNode:
selectSubtree:
selected:
selectedNode
selectionChanged:
selectionChangedIn:
selectionPath
setMetaNode:node:
setMinPanes:maxPanes:
sizing
subscribe
vResizing
OBCommand
An OBCommand is xxxxxxxxx.
Instance Variables
requestor: <Object>
target: <Object>
requestor
- xxxxx
target
- xxxxx
addItemToMenu:
buttonLabel
cluster
createCluster
execute
group
icon
isActive
isEnabled
keystroke
label
labelWithKeystroke
longDescription
Override this and return a string or a text for the fly-by-help (tooltip)
on:for:
order
perform:orSendTo:
If I wish to intercept and handle selector myself, do it; else send it to otherTarget
select:with:
setTarget:requestor:
takesNodes
takesText
wantsButton
Put this here for compatibility. Eventually this will be obsolete
OBCommandCluster
An OBCommandCluster is xxxxxxxxx.
Instance Variables
commands: <Object>
label: <Object>
commands
- xxxxx
label
- xxxxx
addCommand:
addItemToMenu:
group
groupedCommands
initialize
Subclasses should redefine this method to perform initializations on instance creation
isEnabled
label
label:
populateMenu:
setLabel:
OBCommandScan
An OBCommandScan is xxxxxxxxx.
Instance Variables
factories: <Object>
factories
- xxxxx
addCommandsOn:for:to:
addFactory:
clusterCommands:
commandsOn:for:
groupCommands:
initialize
Subclasses should redefine this method to perform initializations on instance creation
populateMenu:withNodes:forRequestor:
processKeystroke:withNode:for:
OBConfirmationRequest
This notification is used to ask the user to confirm some kind potentially dangerous operation. Its default action is to open a PopUpMenu.
iVars:
prompt - a string describing the situation the user is asked to confirm
confirm - a string describing the action that will be taken if the user confirms
cancel - a string describing the action that will be taken if the user does not confirm
cancel
cancelChoice
handleWith:
newPrompt:confirm:cancel:
ok
okChoice
prompt
prompt:
prompt:confirm:
prompt:confirm:cancel:
setPrompt:confirm:cancel:
OBDefaultEdgeNavigation
An OBDefaultEdgeNavigation is xxxxxxxxx.
Instance Variables
=
Answer whether the receiver and the argument represent the same
object. If = is redefined in any subclass, consider also redefining the
message hash.
columnAfter:withFan:selection:
isDefaultNavigation
isTreeNavigation
OBDefinition
The responsibility of a definition is to express a node's composition textually and respond to changes in the text by updating the node it represents. For example,a file browser might use a file definition to allow editing of a files contents.
accept:notifying:
allowsEditing
asAnnouncement
doItContext
doItReceiver
isEditable
selectedClass
selection
signalChange
text
text:
textSelection
OBDefinitionChanged
An OBDefinitionChanged is xxxxxxxxx.
Instance Variables
definition: <Object>
node: <Object>
definition
- xxxxx
node
- xxxxx
definition
definition:
node
node:
node:definition:
OBDefinitionPanel
OBDefinition serves as the model for the text pane of a typical browser. It's main responsibility is to act as a relay between a PluggableTextMorph and a Definition supplied by the currently selected node.
iVars:
browser - The browser of which this panel is a part.
aboutToChange:
aboutToChangeSilently:
accept:notifying:
addItem:
Used by the system when the user clicks on a link in a class comment. For example see class comment of SystemProgressMorph and click on displayProgressAt:from:to:during:.
buildOn:
completionController
createCompletionController
definition:
definitionChanged:
definitionPanel
doItContext
doItReceiver
environment
getDefinition
isDefinition
isEditable
there's no reason why a def panel shouldn't always be readable
node:
nodeChanged:
refresh:
selectedClass
selectedClassOrMetaClass
selection
selection:
selectionChanged:
shoutAboutToStyle:
subscribe
text
vResizing
withDefinitionDo:ifNil:
OBFan
An OBFan is xxxxxxxxx.
Instance Variables
children: <Object>
parent: <Object>
children
- xxxxx
parent
- xxxxx
allChildren
ancestorOf:from:in:
ancestorOf:in:
anyNavigation
autoSelection
backgroundColorAt:
childAt:
children
childrenAt:
columnAfter:selection:
displayStringForChild:
displayStringForChildAt:
iconAt:
includesNode:
indexOf:
isEmpty
list
listSize
nodeAt:
nodeForItem:
noteChild:
parent
parent:
parent:children:
parentAt:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
refresh
restrictToNavigation:
setDefaultParent:
setParent:
setParent:children:
switchFilter
OBFilter
A browser's metagraph defines the way in which the user may traverse the graph of objects which make up the browser's domain. But it's not always desirable to have all the nodes made available by the metagraph to be visible in the browser. An filter provides a strategy for filtering out some of the nodes from the display.
OBFilter provides a "null" filter - one that does no filtering at all - and serves as a superclass for other filters.
buildOn:
clickIconColumn:forNode:
displayString:forNode:
displayString:forParent:child:
edgesFrom:forNode:
icon:forNode:
longDescriptionsForNode:
metaNode
nodesFrom:forNode:
noteParent:child:
setMetaNode:
wantsButton
wantsSwitch
OBFixedButtonPanel
OBFixedButtonPanel displays a horizontal row of buttons. In contrast to OBVarButtonPanel, the buttons do not change as nodes are selected in the navigation panel; instead they are enabled and disabled according to whether the actions they represent are applicable to the selected node.
buildOn:
color
commands
currentNode
isSelected:
isVariableHeight
new
selectionChanged:
subscribe
vResizing
OBInformRequest
An OBInformRequest is xxxxxxxxx.
Instance Variables
message: <Object>
message
- xxxxx
handleWith:
message
message:
OBInteractionRequest
OBInteractionRequest is an abstract superclass for notifications that request some interaction with the user. It's useful for catching such notifications in an exception handler, while allowing other notifications to operate normally.
defaultAction
No action is taken. The value nil is returned as the value of the message that signaled the exception.
handleWith:
isBrowseRequest
OBList
An OBList is xxxxxxxxx.
Instance Variables
column: <Object>
fan: <Object>
position: <Object>
column
- xxxxx
fan
- xxxxx
position
- xxxxx
autoSelection
backgroundColorAt:
children
clearAll
clearFan
clearSelection
clickIconAt:
column:
defaultPosition
displayStringForChild:
displayStringForChildAt:
doubleClick
fan
fan:
fan:selection:
hasSelection
iconAt:
includes:
includesNode:
indexOf:
isEmpty
list
listSize
nodeForItem:
noteChild:
parent
parent:
position
position:
refresh
select:
selectSilently:
selectedNode
selection
selection:
switchFilter
OBMetaEdge
An OBMetaEdge is an edge in the browser's metagraph. It represents a message sent to a node to obtain further nodes. It is refered to by the "parent" metanode, and refers to the "child" metanode.
iVars:
label - a string describing the metaNode, for filters which allow the user
to choose which edges to follow
selector - when a node is selected by the user, this message will be
sent to it to obtain its children
metaNode - a MetaNode corresponding to the nodes answered by the above message
->
Answer an Association between self and anObject
/
isDefaultNavigation
isTreeEdge
label
label:selector:metaNode:
metaNode
navigation
navigation:
nodesForParent:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
selector
selector:
selector:metaNode:
setLabel:selector:metaNode:
OBMetaNode
A MetaNode represents a hypothetical node in the browser's domain graph.
iVars:
filterClass - the class used to filter this hypothetical node's children
columnClass - the class of column used to display this node's children
edges - messages that could be sent to the node to obtain children
actors - providers of functionality for manipulating the node
displaySelector - the message used to retreive a nodes display name
-
addFilter:
allChildrenForNode:
ancestrySelector
ancestrySelector:
anyNavigation
autoSelect
autoSelect:
childAt:labeled:put:
childAt:put:
childOf:ancestorOf:indexIn:
children
childrenForNode:
childsPerEdgeFor:
collects all childs and returns an array with one list of childs per edge.
all filters are applied to the child lists.
clickIconColumn:forNode:
defaultChildrenForNode:
defaultEdges
defaultEdgesForNode:
displaySelector
displaySelector:
displayStringForNode:
displayStringForParent:child:
doubleClickSelector
doubleClickSelector:
edges
edgesForNode:
do not filter tree edges for the moment
filters
hasChildren
hasDefaultNavigationEdge
iconForNode:
initialize
Subclasses should redefine this method to perform initializations on instance creation
metaNode
name
Answer a name for the receiver. This is used generically in the title of certain inspectors, such as the referred-to inspector, and specificially by various subsystems. By default, we let the object just print itself out..
name:
named:
new
nodesForParent:
noteParent:child:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
shortPrintOn:
switchFilter
withAllChildrenDo:
withAllChildrenDo:seen:
OBModalFilter
OBModalFilter is used to implement the 'instance/?/class' buttons in a standard class browser. In functional terms it filters the nodes of a column according to the edge of the metagraph that they correspond to. OBModalFilter displays an OBRadioButtonBar in its column's pane, with one button per edge. Only nodes from the currently selected edge are allowed in the column.
iVars:
selection - the currently selected edge
activate
edgesFrom:forNode:
list
listForNode:
noteParent:child:
selection
selection:
wantsButton
wantsSwitch
OBMultiLineTextRequest
An OBMultiLineTextRequest is xxxxxxxxx.
Instance Variables
prompt: <Object>
template: <Object>
prompt
- xxxxx
template
- xxxxx
handleWith:
prompt
prompt:
prompt:template:
template
template:
OBMultipleChoiceRequest
An OBMultipleChoiceRequest is xxxxxxxxx.
Instance Variables
selection: <Object>
selection
- xxxxx
handleWith:
label:
selection
setPrompt:labels:values:lines:
toggle:
toggleMorphic:
This seems to be somehow required to properly refersh the checkbox.
OBNode
A node is a wrapper for an object in the browser's domain graph. OBNode is an abstract superclass for concrete nodes which might appear in the browser.
iVars:
metaNode - the MetaNode which produced this node
=
Answer whether the receiver and the argument represent the same
object. If = is redefined in any subclass, consider also redefining the
message hash.
accept:notifying:
acceptDroppedNode:
ancestrySelector
announce:
announceChangedWith:
announceChildrenChangedWith:
announceCreationWith:
announceDeletionWith:
announceSelectionWith:
anyNavigation
asDraggableMorph
asFan
backgroundColor
childAncestorOf:indexIn:
childNodes
columnAfter:withFan:selection:
defaultChildNodes
definition
demandSelection
displayString
displayStringForChild:
dropSelector
Override in subclasses
hasTestSuite
hash
Answer a SmallInteger whose value is related to the receiver's identity.
May be overridden, and should be overridden in any classes that define =
icon
icons
isAncestorOf:
isAncestorOf:using:
isDescendantOf:
metaNode
metaNode:
name
Answer a name for the receiver. This is used generically in the title of certain inspectors, such as the referred-to inspector, and specificially by various subsystems. By default, we let the object just print itself out..
navigation
navigation:
noteChild:
referenceForMethod:ofClass:
shouldBeStyledBy:
signalChanged
signalChildrenChanged
signalDeletion
signalSelection
testSuite
text
text:
textSelection
title
wantsDroppedNode:
OBNodeChanged
An OBNodeChanged is xxxxxxxxx.
Instance Variables
node: <Object>
node
- xxxxx
node
node:
OBNodeCommandScan
An OBNodeCommandScan is xxxxxxxxx.
Instance Variables
OBNodeCreated
An OBNodeCreated is xxxxxxxxx.
Instance Variables
node: <Object>
node
- xxxxx
node
node:
OBNodeDeleted
An OBNodeDeleted is xxxxxxxxx.
Instance Variables
node: <Object>
node
- xxxxx
node
node:
OBNullNode
An OBNullNode is xxxxxxxxx.
Instance Variables
columnAfter:withFan:selection:
OBPanel
A panel is an object that manages part of the browser's window. It provides a protocol for receiving notifications when the current domain node changes, and reacts to these changes.
announce:
announcer
browser
browser:
definitionPanel
inBrowser:
isDefinition
isNavigation
subscribe
OBPlatform
An OBPlatform is xxxxxxxxx.
Instance Variables
build:
builder
current
current:
default
OBPluggableCommand
An OBPluggableCommand is xxxxxxxxx.
Instance Variables
action: <Object>
active: <Object>
buttonLabel: <Object>
enabled: <Object>
icon: <Object>
keystroke: <Object>
label: <Object>
action
- xxxxx
active
- xxxxx
buttonLabel
- xxxxx
enabled
- xxxxx
icon
- xxxxx
keystroke
- xxxxx
label
- xxxxx
action:
action:active:
active:
buttonLabel
buttonLabel:
enabled:
execute
group
icon
icon:
initialize
Subclasses should redefine this method to perform initializations on instance creation
isActive
isEnabled
keystroke
keystroke:
label
label:
labelWithKeystroke
new
on:for:
takesNodes
takesText
useLineAfter
wantsButton
Put this here for compatibility. Eventually this will be obsolete
OBPluggableFilter
An OBPluggableFilter is xxxxxxxxx.
Instance Variables
edges: <Object>
icon: <Object>
nodeDisplay: <Object>
nodes: <Object>
note: <Object>
parentDisplay: <Object>
edges
- xxxxx
icon
- xxxxx
nodeDisplay
- xxxxx
nodes
- xxxxx
note
- xxxxx
parentDisplay
- xxxxx
displayString:forNode:
displayString:forParent:child:
edges
edges:
edgesFrom:forNode:
icon
icon:
icon:forNode:
nodeDisplay
nodeDisplay:
nodes
nodes:
nodesFrom:forNode:
note
note:
noteParent:child:
parentDisplay
parentDisplay:
OBPosition
An OBPosition is xxxxxxxxx.
Instance Variables
index: <Object>
index
- xxxxx
clearSelection
hasSelection
index
index:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
selection
selection:
OBRefreshRequired
An OBRefreshRequired is xxxxxxxxx.
Instance Variables
OBRescueFilter
An OBRescueFilter is xxxxxxxxx.
Instance Variables
cache: <Object>
rescued: <Object>
cache
- xxxxx
rescued
- xxxxx
cache:for:
displayString:forParent:child:
initCache:for:
initialize
Subclasses should redefine this method to perform initializations on instance creation
nodesFrom:forNode:
rescue:for:
OBSelectingNode
An OBSelectingNode is xxxxxxxxx.
Instance Variables
node: <Object>
node
- xxxxx
node
node:
OBSelectionChanged
An OBSelectionChanged is xxxxxxxxx.
Instance Variables
column: <Object>
deselectedNode: <Object>
node: <Object>
column
- xxxxx
deselectedNode
- xxxxx
node
- xxxxx
column
column:
deselectedNode
deselectedNode:
node
node:
OBSubtree
An OBSubtree is xxxxxxxxx.
Instance Variables
state: <Object>
state
- xxxxx
childOf:ancestorOf:indexOn:
from:to:
initializeWithRoot:leaf:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
selectInColumns:
state
OBSwitch
An OBSwitch is xxxxxxxxx.
Instance Variables
column: <Object>
filter: <Object>
column
- xxxxx
filter
- xxxxx
buildOn:
currentNode:
filter
filter:
inColumn:
isActive
isEnabled:
list
longDescriptions
okToChange
Allows a controller to ask this of any model
refresh
selection
selection:
setColumn:filter:
OBTextCommandScan
An OBTextCommandScan is xxxxxxxxx.
Instance Variables
OBTextDefinition
An OBTextDefinition is xxxxxxxxx.
Instance Variables
text: <Object>
text
- xxxxx
setText:
text
text:
OBTextPanel
An OBTextPanel is xxxxxxxxx.
Instance Variables
addEditingItemsToMenu:shifted:
addMoreToMenu:
addTextCommandsToMenu:selection:
allowsEditing
browseIt:
createCompletionController
environment
guessTypeForName:
implementorsOfIt:
initializeCompletionController
isEditable
menu:shifted:selection:
perform:orSendTo:
If I wish to intercept and handle selector myself, do it; else send it to otherTarget
referencesToIt:
sendersOfIt:
shiftedYellowButtonMenu
yellowButtonMenu
OBTextRequest
This notification is used to ask the user to supply a short piece of text. Its defaultAction is to open a FillInTheBlank.
iVars:
prompt - a string describing the text the user is asked to supply
template - a default reply
handleWith:
prompt
prompt:
prompt:template:
template
template:
OBTextSelection
An OBTextSelection is xxxxxxxxx.
Instance Variables
selection: <Object>
text: <Object>
selection
- xxxxx
text
- xxxxx
fullText
hasSelector
on:
on:inText:
onAllOf:
selection
selector
setSelection:inText:
text
OBWaitRequest
This notification is used to tell the user to wait while some longer action is performed. The default action is to show a hourglass instead of the normal cursor.
iVars:
block - the code to execute
block
block:
handleWith: