--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__NavigationState.st Mon Mar 17 16:00:16 2014 +0100
@@ -0,0 +1,1718 @@
+"
+ COPYRIGHT (c) 2000 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libtool' }"
+
+"{ NameSpace: Tools }"
+
+Object subclass:#NavigationState
+ instanceVariableNames:'browserLabel codeModifiedHolder categoryList classList
+ packageFilter nameSpaceFilter hidePrivateClasses canvasType
+ notMetaToggle metaToggle metaToggleLabel organizerMode codeAspect
+ codeHolder classDocumentationHolder canvas selectorListGenerator
+ protocolListGenerator classListPerNameSpaceGenerator
+ classListGenerator categoryListGenerator nameSpaceListGenerator
+ projectListGenerator classHierarchyTopClass meta selectedMethods
+ selectedProtocols selectedClasses selectedCategories
+ selectedProjects selectedNamespaces selectedLintRules
+ variableFilter filterClassVars sortBy noAllItem autoSearchPattern
+ autoSearchIgnoreCase autoSearchAction realModifiedStateHolder
+ methodInfo versionDiffApplication selectorListGeneratorArray
+ selectedMethodsArray infoLabelHolder packageLabelHolder
+ cursorLineLabelHolder cursorColLabelHolder modeLabelHolder
+ sortVariablesBy editModeHolder scrollableCodeView specialEditors
+ selectedEditorNoteBookTabIndexHolder editorNoteBookListHolder
+ editorNoteBookCanvasHolder codeView stringSearchToolView
+ noteBookView inheritanceView documentationView languageHolder
+ messageSpecHolder messageHolder progressHolder tabContentView
+ messagePaneView codePaneAndPluginView
+ codePaneAndPluginViewRelativeCorners pluginVisibleHolder
+ bookmarkHolder worker packageInfoBackgroundColorHolder
+ packageInfoButton showMethodTemplate lastMethodShownInCodeView
+ showingParseError navigationHistory lintRuleListGenerator
+ profilerStatistics'
+ classVariableNames:'CodeAspectTranslations'
+ poolDictionaries:''
+ category:'Interface-Browsers-New'
+!
+
+!NavigationState class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!NavigationState class methodsFor:'initialization'!
+
+initialize
+ "Invoked at system start or when the class is dynamically loaded."
+
+ "/ please change as required (and remove this comment)
+
+ CodeAspectTranslations := Dictionary new.
+ CodeAspectTranslations at: #newApplication put: SyntaxHighlighter codeAspectClassDefinition.
+ CodeAspectTranslations at: #newError put: SyntaxHighlighter codeAspectClassDefinition.
+
+
+ "/ Add more...
+
+ "Modified: / 23-10-2012 / 11:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigationState methodsFor:'accessing'!
+
+autoSearchAction
+ ^ autoSearchAction
+!
+
+autoSearchAction:something
+ autoSearchAction := something.
+!
+
+autoSearchIgnoreCase
+ "return true if the autSearch is to be case-insensitive"
+
+ ^ autoSearchIgnoreCase
+!
+
+autoSearchIgnoreCase:aBoolean
+ "change the autSearches case-insensitivenes"
+
+ autoSearchIgnoreCase := aBoolean
+!
+
+autoSearchPattern
+ "return the automatic search pattern"
+
+ ^ autoSearchPattern
+!
+
+autoSearchPattern:aPattern
+ "change the automatic search pattern"
+
+ autoSearchPattern := aPattern.
+!
+
+browserLabel
+ "return the assigned state-label (to be shown in the tab)."
+
+ ^ browserLabel
+!
+
+browserLabel:aString
+ "set the assigned state-label (to be shown in the tab)."
+
+ browserLabel := aString
+!
+
+canvas
+ ^ canvas
+!
+
+canvas:something
+ canvas := something.
+ canvasType isNil ifTrue:[
+ canvasType := something spec
+ ].
+!
+
+canvasType
+ "return the type of canvas"
+
+ ^ canvasType
+!
+
+canvasType:aSpecSymbol
+ "set the type of canvas"
+
+ canvasType notNil ifTrue:[
+ canvasType ~~ aSpecSymbol ifTrue:[
+ self halt:'cannot be changed, once set'.
+ ]
+ ].
+ canvasType := aSpecSymbol
+!
+
+codeAspect
+ "return the codeAspect; a symbol describing what is shown in the codeView"
+
+ ^ codeAspect
+
+ "Created: / 11.2.2000 / 12:43:29 / cg"
+!
+
+codeAspect:aSymbolOrNil
+ "set the codeAspect; a symbol describing what is shown in the codeView"
+
+ codeAspect := aSymbolOrNil.
+ (codeView notNil and:[codeView isCodeView2]) ifTrue:[
+ | xlatedCodeAspect |
+
+ xlatedCodeAspect := CodeAspectTranslations at: aSymbolOrNil ifAbsent: aSymbolOrNil.
+ codeView codeAspect: xlatedCodeAspect
+ ].
+
+ "Created: / 11-02-2000 / 12:43:45 / cg"
+ "Modified: / 22-10-2012 / 17:05:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+codePaneAndPluginView
+ ^ codePaneAndPluginView
+!
+
+codePaneAndPluginView:something
+ codePaneAndPluginView := something.
+!
+
+codePaneAndPluginViewRelativeCorners
+ codePaneAndPluginViewRelativeCorners ifNil:[
+ codePaneAndPluginViewRelativeCorners := #(0.76 1.0)
+ ].
+ ^ codePaneAndPluginViewRelativeCorners
+
+ "Modified: / 04-10-2010 / 08:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+codePaneAndPluginViewRelativeCorners: anArray
+
+ codePaneAndPluginViewRelativeCorners := anArray.
+
+ "Modified: / 04-10-2010 / 08:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+editorNoteBookCanvasHolder
+ editorNoteBookCanvasHolder isNil ifTrue:[
+ editorNoteBookCanvasHolder := nil asValue.
+ ].
+ ^ editorNoteBookCanvasHolder
+!
+
+editorNoteBookListHolder
+ editorNoteBookListHolder isNil ifTrue:[
+ editorNoteBookListHolder := #() asValue.
+ ].
+ ^ editorNoteBookListHolder
+!
+
+environment
+ ^ Smalltalk
+!
+
+lastMethodShownInCodeView
+ ^ lastMethodShownInCodeView
+!
+
+lastMethodShownInCodeView:something
+ lastMethodShownInCodeView := something.
+!
+
+messagePaneView
+ ^ messagePaneView
+!
+
+messagePaneView:something
+ messagePaneView := something.
+!
+
+modified
+ "check for modified code by asking the editTextView;
+ this one returns true if ever modified - even if
+ the modifications where undone in the editor
+ (i.e. not really modified).
+ Use #reallyModified if the contents should be compared
+ against the original contents"
+
+ |v|
+
+ self realModifiedState == true ifTrue:[^ true].
+ self anySpecialEditorModified ifTrue:[^ true].
+
+ ^ (v := self codeView) notNil and:[v modified]
+!
+
+modified:aBoolean
+ |codeView|
+
+ (codeView := self codeView) notNil ifTrue:[
+ codeView modified:aBoolean
+ ].
+ specialEditors notNil ifTrue:[
+ specialEditors do:[:anEditor |
+ anEditor application modified:aBoolean
+ ].
+ ].
+!
+
+noteBookView
+ ^ noteBookView
+!
+
+noteBookView:something
+ noteBookView := something.
+!
+
+realModifiedState
+ ^ self realModifiedStateHolder value
+!
+
+realModifiedState:aBoolean
+ self realModifiedStateHolder value:aBoolean
+!
+
+realModifiedStateHolder
+ realModifiedStateHolder isNil ifTrue:[
+ realModifiedStateHolder := ValueHolder new.
+ ].
+ ^ realModifiedStateHolder
+!
+
+selectedEditorNoteBookTabIndexHolder
+ selectedEditorNoteBookTabIndexHolder isNil ifTrue:[
+ selectedEditorNoteBookTabIndexHolder := 1 asValue.
+ ].
+ ^ selectedEditorNoteBookTabIndexHolder
+!
+
+showMethodTemplate
+ ^ showMethodTemplate ? true
+
+ "Created: / 12-02-2012 / 08:49:32 / cg"
+!
+
+showMethodTemplate: aBoolean
+ showMethodTemplate := aBoolean
+
+ "Created: / 12-02-2012 / 08:49:45 / cg"
+!
+
+showingParseError
+ ^ showingParseError
+!
+
+showingParseError:something
+ showingParseError := something.
+!
+
+stringSearchToolView
+ ^ stringSearchToolView
+!
+
+stringSearchToolView: aStringSearchTool
+
+ stringSearchToolView := aStringSearchTool
+!
+
+tabContentView
+ ^ tabContentView
+!
+
+tabContentView:something
+ tabContentView := something.
+!
+
+worker
+ ^ worker
+!
+
+worker:aProcess
+ worker := aProcess.
+! !
+
+!NavigationState methodsFor:'accessing-selection'!
+
+theSingleSelectedClass
+ "if only one class is selected, return it.
+ Otherwise, return nil"
+
+ |classes|
+
+ classes := self selectedClasses value.
+ classes size == 1 ifTrue:[
+ ^ classes first
+ ].
+ ^ nil
+!
+
+theSingleSelectedMethod
+ "if only one method is selected, return it.
+ Otherwise, return nil"
+
+ |methods|
+
+ methods := self selectedMethods value.
+ methods size == 1 ifTrue:[
+ ^ methods first
+ ].
+ ^ nil
+! !
+
+!NavigationState methodsFor:'accessing-subApps'!
+
+applicationOfComponent:aComponentName
+ ^ self applicationOfComponent:aComponentName or:nil
+
+!
+
+applicationOfComponent:aComponentName or:anotherComponentName
+ |builder view|
+
+ canvas isNil ifTrue:[^ nil].
+
+ builder := canvas builder.
+
+ view := builder findVisibleComponentAt:aComponentName.
+ (view isNil and:[anotherComponentName notNil]) ifTrue:[
+ view := builder findVisibleComponentAt:anotherComponentName.
+ ].
+
+ view notNil ifTrue:[
+ ^ view application
+ ].
+ ^ nil
+!
+
+classCategoryListApplication
+ ^ self applicationOfComponent:#ClassCategoryList
+
+!
+
+classHierarchyListApplication
+ ^ self applicationOfComponent:#ClassHierarchyList
+!
+
+classListApplication
+ ^ self applicationOfComponent:#ClassList
+
+!
+
+metaToggleComponent
+ ^ canvas builder findComponentAt:#ClassToggle.
+!
+
+methodCategoryListApplication
+ ^ self applicationOfComponent:#MethodCategoryList
+!
+
+methodListApplication
+ ^ self applicationOfComponent:#MethodList
+!
+
+nameSpaceListApplication
+ ^ self applicationOfComponent:#NamespaceList or:#PseudoNamespaceList
+!
+
+projectListApplication
+ ^ self applicationOfComponent:#ProjectList or:#PseudoProjectList
+!
+
+variableListApplication
+ ^ self applicationOfComponent:#VariableList
+!
+
+versionDiffApplication
+ ^ versionDiffApplication
+
+!
+
+versionDiffApplication:anApplication
+ versionDiffApplication := anApplication
+
+! !
+
+!NavigationState methodsFor:'accessing-subViews'!
+
+anySpecialEditorModified
+ specialEditors notNil ifTrue:[
+ ^ specialEditors contains:[:anEditor | anEditor application isModified].
+ ].
+ ^ false
+!
+
+codeView
+ codeView isNil ifTrue:[
+ codeView := self scrollableCodeView scrolledView
+ ].
+ ^ codeView
+!
+
+doSaveInSpecialEditors
+ specialEditors notNil ifTrue:[
+ specialEditors do:[:anEditor |
+ anEditor application isModified ifTrue:[
+ anEditor application save.
+ ^ self.
+ ]
+ ].
+ ].
+!
+
+documentationView
+ |textView|
+
+ documentationView isNil ifTrue:[
+ textView := CodeView new.
+ documentationView := HVScrollableView forView:textView.
+ ].
+ ^ documentationView
+!
+
+getCodeView
+ ^ codeView
+!
+
+inheritanceView
+ inheritanceView isNil ifTrue:[
+ |classTreeView scrolledView|
+
+ classTreeView := ClassTreeGraphView new.
+ scrolledView := HVScrollableView forView:classTreeView.
+ classTreeView middleButtonMenu:nil.
+ inheritanceView := scrolledView
+ ].
+ ^ inheritanceView
+!
+
+methodCategoryList: aView
+
+ | builder |
+
+ builder := canvas builder.
+ builder namedComponents at: #MethodCategoryList put: aView.
+
+ "Created: / 08-08-2011 / 09:18:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+methodList: aView
+
+ | builder |
+
+ builder := canvas builder.
+ builder namedComponents at: #MethodList put: aView.
+
+ "Created: / 08-08-2011 / 15:32:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageInfoButton
+ ^ packageInfoButton
+!
+
+packageInfoButton:something
+ packageInfoButton := something.
+!
+
+scrollableCodeView
+ scrollableCodeView isNil ifTrue:[
+ scrollableCodeView := self setUpScrollableCodeView.
+ ].
+ ^ scrollableCodeView
+!
+
+setUpScrollableCodeView
+ |v newScrollableCodeView newCodeView |
+
+ (UserPreferences current useCodeView2In: #Browser) ifTrue:[
+ newCodeView := newScrollableCodeView := CodeView2 new.
+ newCodeView mode: #method.
+ newCodeView methodHolder: self theSingleSelectedMethodHolder.
+ newCodeView classHolder: self theSingleSelectedClassHolder.
+ ] ifFalse:[
+ newScrollableCodeView := HVScrollableView for:CodeView.
+ newCodeView := newScrollableCodeView scrolledView.
+ newScrollableCodeView horizontalMini:true.
+ ].
+
+ newScrollableCodeView name:'CodeView'.
+ newCodeView modifiedChannel:self codeModifiedHolder.
+ newCodeView model:self codeHolder.
+ newCodeView canTab:true.
+ UserPreferences current useCodeView2InTools ifTrue:[
+ newCodeView
+ classHolder:self theSingleSelectedClassFromMethodHolder;
+ languageHolder:self languageHolder
+ ].
+
+ (UserPreferences current showAcceptCancelBarInBrowser
+ and:[newCodeView isCodeView2 not or:[UserPreferences current codeView2ShowAcceptCancel not]]) ifTrue:[
+ ViewWithAcceptAndCancelBar notNil ifTrue:[
+ v := ViewWithAcceptAndCancelBar new.
+ v slaveView:newScrollableCodeView.
+ v reallyModifiedHolder:self realModifiedStateHolder.
+ v cancelAction:
+ [
+ "/ codeView setClipboardText:(codeView contents). "/ for undo
+ newCodeView device rememberInCopyBufferHistory:(newCodeView contents). "/ for undo
+ newCodeView application
+ delayedUpdateCodeWithAutoSearch:false checkModified:false.
+ newCodeView requestFocus.
+ ].
+ v compareAction:
+ [
+ newCodeView application doCompareIn:self.
+ newCodeView requestFocus
+ ].
+ newScrollableCodeView := v.
+ ]
+ ].
+
+ ^newScrollableCodeView
+
+ "Modified: / 05-07-2011 / 10:34:33 / cg"
+ "Modified: / 05-08-2011 / 09:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+specialEditorCanvasClassForResourceType:resourceTypeSymbol
+ resourceTypeSymbol == #fileImage ifTrue:[
+ ^ nil
+ ].
+ ^ SystemBrowser resourceEditorClassFor:resourceTypeSymbol
+!
+
+specialEditorCanvasForResourceType:resourceTypeSymbol
+ |appClass app editorView|
+
+ specialEditors isNil ifTrue:[
+ specialEditors := Dictionary new.
+ ].
+ editorView := specialEditors at:resourceTypeSymbol ifAbsent:nil.
+ editorView isNil ifTrue:[
+ appClass := self specialEditorCanvasClassForResourceType:resourceTypeSymbol.
+ appClass notNil ifTrue:[
+ app := appClass new.
+ app masterApplication:self canvas application.
+ app isEmbeddedInBrowser:true.
+ app infoLabelHolder:(self canvas application infoLabelHolder).
+
+ editorView := ApplicationSubView new.
+ editorView buildMenu:true.
+ editorView client:app.
+ app builder window:editorView.
+
+ specialEditors at:resourceTypeSymbol put:editorView.
+ ].
+ ].
+ ^ editorView
+! !
+
+!NavigationState methodsFor:'aspects'!
+
+bookmarkHolder
+ "return/create the 'bookmarkHolder' value holder (automatically generated)"
+
+ bookmarkHolder isNil ifTrue:[
+ bookmarkHolder := ValueHolder with: self theSingleSelectedBookmarkFromMethodOrClass.
+ self selectedMethods onChangeSend: #updateBookmarkHolder to: self.
+ self selectedClasses onChangeSend: #updateBookmarkHolder to: self.
+ ].
+ ^ bookmarkHolder
+
+ "Modified: / 03-06-2011 / 12:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryList
+ categoryList isNil ifTrue:[
+ categoryList := nil asValue.
+ ].
+ ^ categoryList
+
+ "Modified: / 25.2.2000 / 01:35:42 / cg"
+ "Created: / 25.2.2000 / 01:57:45 / cg"
+!
+
+categoryListGenerator
+ categoryListGenerator isNil ifTrue:[
+ categoryListGenerator := nil asValue.
+ ].
+ ^ categoryListGenerator
+
+ "Created: / 25.2.2000 / 01:34:30 / cg"
+ "Modified: / 25.2.2000 / 01:35:42 / cg"
+!
+
+classDocumentationHolder
+ classDocumentationHolder isNil ifTrue:[
+ classDocumentationHolder := nil asValue.
+ ].
+ ^ classDocumentationHolder
+!
+
+classHierarchyTopClass
+ classHierarchyTopClass isNil ifTrue:[
+ classHierarchyTopClass := nil asValue.
+ ].
+ ^ classHierarchyTopClass
+
+!
+
+classList
+ classList isNil ifTrue:[
+ classList := nil asValue.
+ ].
+ ^ classList
+
+ "Created: / 25.2.2000 / 01:57:28 / cg"
+!
+
+classListGenerator
+ classListGenerator isNil ifTrue:[
+ classListGenerator := nil asValue.
+ ].
+ ^ classListGenerator
+
+
+!
+
+classListPerNameSpaceGenerator
+ classListPerNameSpaceGenerator isNil ifTrue:[
+ classListPerNameSpaceGenerator := nil asValue.
+ ].
+ ^ classListPerNameSpaceGenerator
+
+ "Created: / 18.8.2000 / 14:15:34 / cg"
+!
+
+codeHolder
+ codeHolder isNil ifTrue:[
+ codeHolder := nil asValue.
+ ].
+ ^ codeHolder
+
+!
+
+codeModifiedHolder
+ codeModifiedHolder isNil ifTrue:[
+ codeModifiedHolder := false asValue.
+ ].
+ ^ codeModifiedHolder
+!
+
+cursorColLabelHolder
+ cursorColLabelHolder isNil ifTrue:[
+"/ self codeView isNil ifTrue:[^ nil].
+
+ cursorColLabelHolder := BlockValue
+ with:[:v | v printString]
+ argument:self codeView cursorColHolder.
+ ].
+ ^ cursorColLabelHolder
+!
+
+cursorLineLabelHolder
+ cursorLineLabelHolder isNil ifTrue:[
+"/ self codeView isNil ifTrue:[^ nil].
+
+ cursorLineLabelHolder := BlockValue
+ with:[:v | v printString]
+ argument:self codeView cursorLineHolder.
+ ].
+ ^ cursorLineLabelHolder
+!
+
+editModeHolder
+ editModeHolder isNil ifTrue:[
+ editModeHolder := self codeView editModeHolder.
+ ].
+ ^ editModeHolder
+!
+
+filterClassVars
+ filterClassVars isNil ifTrue:[
+ filterClassVars := false asValue.
+ ].
+ ^ filterClassVars
+
+ "Created: / 24.2.2000 / 23:45:28 / cg"
+!
+
+hidePrivateClasses
+ hidePrivateClasses isNil ifTrue:[
+ hidePrivateClasses := false asValue.
+ ].
+ ^ hidePrivateClasses
+
+ "Created: / 24.2.2000 / 16:17:02 / cg"
+!
+
+infoLabelHolder
+ infoLabelHolder isNil ifTrue:[
+ infoLabelHolder := '' asValue.
+ ].
+ ^ infoLabelHolder
+!
+
+languageHolder
+
+ languageHolder ifNil:[
+ languageHolder := ValueHolder with: self theSingleSelectedLanguageFromMethodOrClass.
+ self selectedMethods onChangeSend: #updateLanguageHolder to: self.
+ self selectedClasses onChangeSend: #updateLanguageHolder to: self.
+ ].
+ ^languageHolder
+
+ "Created: / 20-07-2010 / 16:03:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lintRuleListGenerator
+ lintRuleListGenerator ifNil: [
+ lintRuleListGenerator := ValueHolder new.
+ ].
+ ^lintRuleListGenerator
+
+ "Created: / 22-07-2009 / 15:27:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+messageHolder
+ "return/create the 'messageHolder' value holder (automatically generated)"
+
+ messageHolder isNil ifTrue:[
+ messageHolder := ValueHolder new.
+ ].
+ ^ messageHolder
+!
+
+messageHolder:aValueHolder
+ "set the 'messageHolder' value holder (automatically generated)"
+
+ messageHolder := aValueHolder.
+!
+
+messageSpecHolder
+ "return/create the 'messageSpecHolder' value holder (automatically generated)"
+
+ messageSpecHolder isNil ifTrue:[
+ messageSpecHolder := ValueHolder with:#messageInfoSpec.
+ ].
+ ^ messageSpecHolder
+
+ "Modified: / 28-08-2010 / 11:40:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+messageSpecHolder:something
+ "set the 'messageSpecHolder' value holder (automatically generated)"
+
+ messageSpecHolder := something.
+!
+
+meta
+ meta isNil ifTrue:[
+ meta := false asValue.
+ ].
+ ^ meta
+
+
+!
+
+metaToggleLabelHolder
+ metaToggleLabel isNil ifTrue:[
+ metaToggleLabel := 'Class' asValue.
+ ].
+ ^ metaToggleLabel
+!
+
+methodInfo
+ methodInfo isNil ifTrue:[
+ methodInfo := nil asValue.
+ ].
+ ^ methodInfo
+
+!
+
+methodList
+ |methodListApplication|
+
+ methodListApplication := self methodListApplication.
+ methodListApplication isNil ifTrue:[^ nil].
+
+ ^ methodListApplication methodList
+!
+
+modeLabelHolder
+ modeLabelHolder isNil ifTrue:[
+ modeLabelHolder := self codeView modeLabelHolder.
+ ].
+ ^ modeLabelHolder
+!
+
+nameSpaceFilter
+ nameSpaceFilter isNil ifTrue:[
+ nameSpaceFilter := nil asValue.
+ ].
+ ^ nameSpaceFilter
+
+ "Created: / 18.8.2000 / 14:25:24 / cg"
+!
+
+nameSpaceListGenerator
+ nameSpaceListGenerator isNil ifTrue:[
+ nameSpaceListGenerator := nil asValue.
+ ].
+ ^ nameSpaceListGenerator
+
+ "Created: / 18.8.2000 / 14:26:19 / cg"
+ "Modified: / 18.8.2000 / 14:27:59 / cg"
+!
+
+navigationHistory
+ navigationHistory ifNil:[
+ navigationHistory := NavigationHistory new.
+ ].
+ ^navigationHistory
+
+ "Created: / 21-02-2008 / 20:08:43 / janfrog"
+ "Modified: / 21-07-2009 / 22:39:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+noAllItem
+ noAllItem isNil ifTrue:[
+ noAllItem := nil asValue.
+ ].
+ ^ noAllItem
+!
+
+organizerMode
+ "return the organizerMode holder;
+ holding a symbol describing how things are organized
+ (#category, #hierarchy, #project or #namespace)"
+
+ organizerMode isNil ifTrue:[
+ organizerMode := OrganizerCanvas organizerModeCategory asValue.
+ ].
+ ^ organizerMode
+
+ "Created: / 18.2.2000 / 13:33:55 / cg"
+ "Modified: / 18.8.2000 / 18:37:22 / cg"
+!
+
+packageFilter
+ packageFilter isNil ifTrue:[
+ packageFilter := nil asValue.
+ ].
+ ^ packageFilter
+
+ "Created: / 24.2.2000 / 23:45:28 / cg"
+!
+
+packageInfoBackgroundColorHolder
+
+ packageInfoBackgroundColorHolder isNil ifTrue:[
+ packageInfoBackgroundColorHolder := nil asValue.
+ ].
+ ^ packageInfoBackgroundColorHolder
+
+ "Created: / 03-10-2011 / 14:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageLabelHolder
+ packageLabelHolder isNil ifTrue:[
+ packageLabelHolder := '' asValue.
+ ].
+ ^ packageLabelHolder
+!
+
+pluginVisibleHolder
+ pluginVisibleHolder isNil ifTrue:[
+ pluginVisibleHolder := false asValue.
+ ].
+ ^ pluginVisibleHolder
+
+ "Created: / 03-10-2010 / 17:50:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+profilerStatistics
+ profilerStatistics ifNil: [
+ profilerStatistics := ValueHolder new.
+ ].
+ ^profilerStatistics
+
+ "Created: / 22-07-2009 / 15:27:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+profilerStatistics: aValueHolder
+ profilerStatistics := aValueHolder
+
+ "Created: / 21-02-2008 / 20:08:43 / janfrog"
+ "Modified: / 21-07-2009 / 22:41:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+progressHolder
+ "return/create the 'progressHolder' value holder (automatically generated)"
+
+ progressHolder isNil ifTrue:[
+ progressHolder := ValueHolder new.
+ ].
+ ^ progressHolder
+!
+
+progressHolder:aValueHolder
+ "set the 'progressHolder' value holder (automatically generated)"
+
+ progressHolder := aValueHolder.
+!
+
+projectListGenerator
+ projectListGenerator isNil ifTrue:[
+ projectListGenerator := nil asValue.
+ ].
+ ^ projectListGenerator
+
+ "Modified: / 25.2.2000 / 01:35:42 / cg"
+ "Created: / 25.2.2000 / 02:43:26 / cg"
+!
+
+protocolListGenerator
+ protocolListGenerator isNil ifTrue:[
+ protocolListGenerator := nil asValue.
+ ].
+ ^ protocolListGenerator
+
+!
+
+selectedCategories
+ selectedCategories isNil ifTrue:[
+ selectedCategories := nil asValue.
+ ].
+ ^ selectedCategories
+
+!
+
+selectedClasses
+ selectedClasses isNil ifTrue:[
+ selectedClasses := "SpecialValueHolder with:nil." nil asValue.
+ ].
+ ^ selectedClasses
+
+ "Modified: / 26-02-2013 / 12:29:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedLintRules
+ selectedLintRules isNil ifTrue:[
+ selectedLintRules := nil asValue.
+ ].
+ ^ selectedLintRules
+
+ "Modified: / 02-02-2010 / 20:42:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedMethods
+ selectedMethods isNil ifTrue:[
+ selectedMethods := nil asValue.
+ ].
+ ^ selectedMethods
+
+!
+
+selectedMethodsArrayAt:index
+ |holder|
+
+ selectedMethodsArray isNil ifTrue:[
+ selectedMethodsArray := OrderedCollection new
+ ].
+ index > selectedMethodsArray size ifTrue:[
+ selectedMethodsArray grow:index
+ ].
+ holder := selectedMethodsArray at:index.
+ holder isNil ifTrue:[
+ selectedMethodsArray at:index put:(holder := ValueHolder new)
+ ].
+ ^ holder.
+!
+
+selectedNamespaces
+ selectedNamespaces isNil ifTrue:[
+ selectedNamespaces := nil asValue.
+ ].
+ ^ selectedNamespaces
+
+!
+
+selectedProjects
+ selectedProjects isNil ifTrue:[
+ selectedProjects := nil asValue.
+ ].
+ ^ selectedProjects
+
+!
+
+selectedProtocols
+ selectedProtocols isNil ifTrue:[
+ selectedProtocols := nil asValue.
+ ].
+ ^ selectedProtocols
+
+!
+
+selectorListGenerator
+ selectorListGenerator isNil ifTrue:[
+ selectorListGenerator := nil asValue.
+ ].
+ ^ selectorListGenerator
+
+!
+
+selectorListGeneratorArray
+ self halt:'should not be invoked'.
+!
+
+selectorListGeneratorArrayAt:index
+ |holder|
+
+ selectorListGeneratorArray isNil ifTrue:[
+ selectorListGeneratorArray := OrderedCollection new
+ ].
+ index > selectorListGeneratorArray size ifTrue:[
+ selectorListGeneratorArray grow:index
+ ].
+ holder := selectorListGeneratorArray at:index.
+ holder isNil ifTrue:[
+ selectorListGeneratorArray at:index put:(holder := ValueHolder new)
+ ].
+ ^ holder.
+!
+
+sortBy
+ sortBy isNil ifTrue:[
+ sortBy := nil asValue.
+ ].
+ ^ sortBy
+!
+
+theSingleSelectedBookmarkFromMethodOrClass
+
+ | mth cls |
+
+ mth := self theSingleSelectedMethod.
+ (mth notNil and:[mth mclass notNil])
+ ifTrue:[^Tools::NewSystemBrowser bookmarkForClass:mth mclass selector:mth selector].
+ cls := self theSingleSelectedClass.
+ cls
+ ifNotNil:[^Tools::NewSystemBrowser bookmarkForClass:cls selector:nil].
+ ^nil
+
+ "Created: / 02-06-2011 / 22:16:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-06-2011 / 23:19:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedClassFromMethodHolder
+
+ ^BlockValue
+ with:
+ [:i1 :i2| | mth cls |
+ mth := self theSingleSelectedMethod.
+ cls := mth ifNil:[nil] ifNotNil:[mth mclass].
+ cls ifNil:[
+ cls := self theSingleSelectedClass].
+ cls]
+ argument: self selectedMethods
+ argument: self selectedClasses.
+
+ "Created: / 14-02-2010 / 10:05:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedClassHolder
+
+ ^BlockValue
+ with:
+ [:i1 | self theSingleSelectedClass]
+ argument:
+ self selectedClasses
+
+ "Created: / 05-08-2011 / 09:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedLanguageFromMethodOrClass
+
+ | mth cls |
+
+ mth := self theSingleSelectedMethod.
+ mth ifNotNil:[^mth programmingLanguage].
+ cls := self theSingleSelectedClass.
+ cls ifNotNil:[^cls programmingLanguage].
+ ^SmalltalkLanguage instance
+
+ "Created: / 20-07-2010 / 15:59:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedMethodHolder
+
+ ^BlockValue
+ with:
+ [:i1 | self theSingleSelectedMethod]
+ argument:
+ self selectedMethods
+
+ "Created: / 17-06-2011 / 12:39:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateBookmarkHolder
+
+ ^self bookmarkHolder value: self theSingleSelectedBookmarkFromMethodOrClass
+
+ "Created: / 02-06-2011 / 22:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateLanguageHolder
+
+ ^self languageHolder value: self theSingleSelectedLanguageFromMethodOrClass
+
+ "Created: / 20-07-2010 / 16:05:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+variableFilter
+ variableFilter isNil ifTrue:[
+ variableFilter := nil asValue.
+ ].
+ ^ variableFilter
+
+ "Created: / 24.2.2000 / 23:45:28 / cg"
+! !
+
+!NavigationState methodsFor:'aspects-kludges'!
+
+metaToggle
+ metaToggle isNil ifTrue:[
+ metaToggle := PluggableAdaptor on:(self meta).
+ metaToggle
+ getBlock:[:m | m value == true]
+ putBlock:[:m :newValue | m value:(newValue ? false)]
+ updateBlock:[:m :aspect :param | true].
+ ].
+ ^ metaToggle
+!
+
+notMetaToggle
+ notMetaToggle isNil ifTrue:[
+ notMetaToggle := PluggableAdaptor on:(self meta).
+ notMetaToggle
+ getBlock:[:m | m value == false]
+ putBlock:[:m :newValue | m value:(newValue ? false) not]
+ updateBlock:[:m :aspect :param | true].
+ ].
+ ^ notMetaToggle
+! !
+
+!NavigationState methodsFor:'history'!
+
+addToHistory: class selector: selector
+
+ | entry |
+ "/selector ifNil:[^self].
+ entry := SystemBrowser historyEntryForClass: class selector: selector.
+ self navigationHistory goTo: entry.
+ ^entry
+
+ "Created: / 22-02-2008 / 08:44:05 / janfrog"
+ "Modified: / 22-02-2008 / 17:20:00 / janfrog"
+ "Modified: / 06-04-2012 / 10:55:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigationState methodsFor:'printing & storing'!
+
+colorizeForModifiedBuffer:someString
+ ^ someString asText emphasisAllAdd:(UserPreferences current emphasisForModifiedBuffer)
+!
+
+nameString
+ "a descriptive string of what this state shows"
+
+ |s|
+
+ s := self rawNameStringOrNil ? 'nothing selected'.
+
+ (self realModifiedState == true) ifTrue:[
+ ^ self colorizeForModifiedBuffer:s string
+ ].
+ ^ s
+!
+
+nameStringOrNil
+ "a descriptive string of what this state shows"
+
+ |s "codeView"|
+
+ s := self rawNameStringOrNil.
+ s notNil ifTrue:[
+ self realModifiedState == true
+"/ ((codeView := self codeView) notNil
+"/ and:[codeView modified])
+ ifTrue:[
+ ^ self colorizeForModifiedBuffer:s string
+ ].
+ ].
+ ^ s
+!
+
+rawNameStringForCategory
+ |categories theCategory|
+
+ categories := self selectedCategories value.
+ categories size == 1 ifTrue:[
+ theCategory := categories first.
+ theCategory notNil ifTrue:[
+ ^ theCategory string, ' [Category]'
+ ].
+ ].
+ ^ nil
+
+ "Created: / 18.8.2000 / 19:42:42 / cg"
+!
+
+rawNameStringForNameSpace
+ |namespaces theNamespace nsName s|
+
+ namespaces := self selectedNamespaces value.
+ namespaces size == 1 ifTrue:[
+ theNamespace := namespaces first
+ ].
+ theNamespace notNil ifTrue:[
+ theNamespace isNameSpace ifTrue:[
+ nsName := theNamespace name
+ ] ifFalse:[
+ nsName := theNamespace
+ ].
+ s := nsName , ' [NameSpace]'.
+ (self isNameSpaceBrowser or:[self isNameSpaceFullBrowser]) ifTrue:[
+ ^ LabelAndIcon icon:(NewSystemBrowser nameSpaceIcon) string:s.
+ ].
+ ^ s
+ ].
+ ^ nil
+
+ "Created: / 18.8.2000 / 20:15:02 / cg"
+!
+
+rawNameStringForProject
+ |projects theProject s|
+
+ projects := self selectedProjects value.
+ projects size == 1 ifTrue:[
+ theProject := projects first
+ ].
+ theProject notNil ifTrue:[
+ s := theProject , ' [Project]'.
+ (self isProjectBrowser or:[self isProjectFullBrowser]) ifTrue:[
+ ^ LabelAndIcon icon:(NewSystemBrowser packageIcon) string:s.
+ ].
+ ^ s
+ ].
+ ^ nil
+
+ "Created: / 18.8.2000 / 20:18:34 / cg"
+!
+
+rawNameStringOrNil
+ "a descriptive string of what this state shows; nil, if nothing is selected"
+
+ ^ self rawNameStringOrNilWantShort:false
+!
+
+rawNameStringOrNilWantShort:shortName
+ "a descriptive string of what this state shows; nil, if nothing is selected"
+
+ |lbl nr numClasses numMethods numCategories cats classes theClass
+ "protocols theProtocol"
+ methods theSingleMethod projects theProject longName nm methodName suffix cls|
+
+ browserLabel notNil ifTrue:[
+ "/ add the number of selected methods
+ ((canvasType == #singleFullProtocolBrowserSpec)
+ or:[canvasType == #methodListBrowserSpec]) ifTrue:[
+ nr := self selectedMethods value size.
+ nr > 5 ifTrue:[
+ ^ browserLabel string , ' - ' , nr printString , ' methods'
+ ].
+ ].
+ ^ browserLabel
+ ].
+
+ suffix := ''.
+
+ self isProtocolOrFullProtocolBrowser ifTrue:[
+ lbl := self rawNameStringForProject.
+ lbl notNil ifTrue:[^ lbl].
+ suffix := ' [Protocol]'.
+ ].
+
+ self isCategoryBrowser ifTrue:[
+ lbl := self rawNameStringForCategory.
+ lbl notNil ifTrue:[^ lbl].
+ suffix := ' [Category]'.
+ ].
+
+ self isNameSpaceBrowser ifTrue:[
+ lbl := self rawNameStringForNameSpace.
+ lbl notNil ifTrue:[^ lbl].
+ suffix := ' [NameSpace]'.
+ ].
+
+ self isProjectBrowser ifTrue:[
+ projects := self selectedProjects value.
+ projects size == 1 ifTrue:[
+ theProject := projects first
+ ].
+ suffix := ' [Project]'.
+ theProject notNil ifTrue:[
+ ^ theProject , suffix
+ ]
+ ].
+
+ classes := self selectedClasses value.
+ classes size == 1 ifTrue:[
+ theClass := classes first.
+ theClass notNil ifTrue:[
+ theClass := theClass theNonMetaclass
+ ]
+ ].
+
+ self isClassBrowser ifTrue:[
+ suffix := ' [Class]'.
+ theClass notNil ifTrue:[
+ ^ theClass name , suffix
+ ]
+ ].
+
+"/ protocols := self selectedProtocols value.
+"/ protocols size == 1 ifTrue:[
+"/ theProtocol := protocols first
+"/ ].
+
+ methods := self selectedMethods value.
+ methods size == 1 ifTrue:[
+ theSingleMethod := methods first
+ ].
+
+ theSingleMethod notNil ifTrue:[
+ methodName := theSingleMethod selector.
+ methodName isSymbol ifTrue:[methodName := methodName selector].
+ theSingleMethod isJavaMethod ifTrue:[
+ methodName := theSingleMethod printStringForBrowserWithSelector:methodName.
+ ].
+ ].
+
+ self isMethodBrowser ifTrue:[
+ suffix := ' [Selector]'.
+
+ theSingleMethod notNil ifTrue:[
+ theSingleMethod mclass isNil ifTrue:[
+ ^ '???'
+ ].
+ ^ theSingleMethod mclass name , ' ' , methodName , suffix
+ ]
+ ].
+
+ self isCategoryBrowser ifTrue:[
+ suffix := ' [Category]'.
+ ] ifFalse:[
+ self isFullClassSourceBrowser ifTrue:[
+ suffix := ' [Full]'.
+ ] ifFalse:[
+ self isClassDocumentationBrowser ifTrue:[
+ suffix := ' [Doc]'.
+ ] ifFalse:[
+ self isProjectBrowser ifTrue:[
+ suffix := ' [Project]'.
+ ]
+ ]
+ ]
+ ].
+
+ nm := nil.
+ (numClasses := classes size) > 0 ifTrue:[
+ numClasses > 1 ifTrue:[
+ methods size > 0 ifTrue:[
+ theSingleMethod notNil ifTrue:[
+ cls := theSingleMethod mclass.
+ cls isNil ifTrue:[
+ "/ oops - unbound
+ nm := '???'
+ ] ifFalse:[
+ longName := nm := cls nameInBrowser.
+ shortName ifTrue:[
+ nm := cls nameWithoutPrefix.
+ cls isPrivate ifTrue:[
+ nm := ':' , nm
+ ]
+ ].
+ ].
+ nm := nm , ' ', (methodName ? '???')
+ ] ifFalse:[
+ nm := methods size printString , ' methods'.
+ numClasses := (methods collect:[:each | each mclass] as:IdentitySet) size.
+ numClasses > 1 ifTrue:[
+ nm := nm , ' in ' , numClasses printString , ' classes'.
+ ].
+ ].
+ ^ nm , suffix.
+ ].
+
+ nm := numClasses printString , ' classes in '.
+ "/ cats := self selectedCategories value
+ cats := classes collect:[:each | each category] as:Set.
+ (numCategories := cats size) == 1 ifTrue:[
+ nm := nm , cats first
+ ] ifFalse:[
+ nm := nm , numCategories printString , ' categories'
+ ]
+ ] ifFalse:[
+ cls := theClass theNonMetaclass.
+ longName := nm := cls nameInBrowser.
+ shortName ifTrue:[
+ nm := cls nameWithoutPrefix.
+ cls isPrivate ifTrue:[
+ nm := ':' , nm
+ ]
+ ].
+ methods := self selectedMethods value.
+ (numMethods := methods size) > 0 ifTrue:[
+ numMethods == 1 ifTrue:[
+ theSingleMethod := methods first.
+ nm := nm , ' ', (methodName ? '???')
+ ] ifFalse:[
+ nm := numMethods printString , ' methods in ' , nm
+ ]
+ ]
+ ]
+ ] ifFalse:[
+ (self isNameSpaceBrowser
+ or:[self isNameSpaceFullBrowser
+ or:[organizerMode value == OrganizerCanvas organizerModeNamespace]]) ifTrue:[
+ lbl := self rawNameStringForNameSpace.
+ lbl notNil ifTrue:[^ lbl].
+ suffix := ' [NameSpace]'.
+ ] ifFalse:[
+ (self isProjectBrowser
+ or:[self isProjectFullBrowser
+ or:[organizerMode value == OrganizerCanvas organizerModeProject]]) ifTrue:[
+ lbl := self rawNameStringForProject.
+ lbl notNil ifTrue:[^ lbl].
+ suffix := ' [Project]'.
+ ] ifFalse:[
+ cats := self selectedCategories value.
+ cats size == 1 ifTrue:[
+ nm := (cats first ? '') string
+ ]
+ ]
+ ].
+ ].
+ nm isNil ifTrue:[ ^ nil ].
+ ^ nm , suffix.
+
+ "Created: / 11-02-2000 / 13:32:16 / cg"
+ "Modified: / 18-08-2000 / 21:06:35 / cg"
+ "Modified: / 20-07-2010 / 10:52:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+shortNameString
+ "a descriptive string of what this state shows"
+
+ |s|
+
+ s := (self rawNameStringOrNilWantShort:true) ? 'nothing selected'.
+
+ (self realModifiedState == true) ifTrue:[
+ ^ self colorizeForModifiedBuffer:s string
+ ].
+ ^ s
+! !
+
+!NavigationState methodsFor:'queries'!
+
+isCategoryBrowser
+ ^ canvasType == #categoryBrowserSpec
+ or:[ canvasType == #singleCategoryBrowserSpec
+ or:[ canvasType == #multipleCategoryBrowserSpec ]]
+
+ "Modified: / 25.2.2000 / 01:17:02 / cg"
+!
+
+isChainBrowser
+ ^ canvasType == #chainBrowserSpec
+!
+
+isCheckOutputBrowser
+ ^ canvasType == #multipleClassWithInfoAndMethodWithInfoBrowserSpec
+ or:[canvasType == #multipleMethodWithInfoBrowserSpec
+ or:[canvasType == #multipleClassWithInfoBrowserSpec]]
+!
+
+isClassBrowser
+ ^ canvasType == #classBrowserSpec
+ or:[ canvasType == #singleClassBrowserSpec
+ or:[ canvasType == #multipleClassBrowserSpec ]]
+
+ "Modified: / 25.2.2000 / 00:38:07 / cg"
+!
+
+isClassDocumentationBrowser
+ ^ canvasType == #classDocumentationBrowserSpec
+
+ "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isClassExtensionBrowser
+ ^ canvasType == #multipleClassExtensionBrowserSpec
+
+ "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isFullBrowser
+ ^ canvasType == #fullBrowserSpec
+!
+
+isFullClassSourceBrowser
+ ^ canvasType == #fullClassSourceBrowserSpec
+
+ "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isFullProtocolBrowser
+ ^ canvasType == #singleFullProtocolBrowserSpec
+ or:[ canvasType == #multipleFullProtocolBrowserSpec ]
+
+ "Created: / 24.2.2000 / 21:32:09 / cg"
+ "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isLintResultBrowser
+ ^ canvasType == #smallLintByRuleResultBrowserSpec
+!
+
+isMethodBrowser
+ ^ canvasType == #methodListBrowserSpec
+ or:[ canvasType == #singleMethodBrowserSpec
+ or:[ canvasType == #multipleMethodBrowserSpec
+ or:[ canvasType == #multipleMethodWithInfoBrowserSpec ]]]
+
+ "Modified: / 1.3.2000 / 13:35:12 / cg"
+!
+
+isMethodListBrowser
+ canvasType == #methodListBrowserSpec ifTrue:[^ true].
+ canvasType == #multipleMethodBrowserSpec ifTrue:[^ true].
+ canvasType == #singleProtocolBrowserSpec ifTrue:[^ true].
+ ^ false.
+!
+
+isNameSpaceBrowser
+ ^ canvasType == #singleNameSpaceBrowserSpec
+ or:[ canvasType == #multipleNameSpaceBrowserSpec]
+
+ "Modified: / 18.8.2000 / 16:12:34 / cg"
+!
+
+isNameSpaceFullBrowser
+ ^ canvasType == #singleNameSpaceFullBrowserSpec
+ or:[ canvasType == #multipleNameSpaceFullBrowserSpec ]
+
+ "Created: / 18.8.2000 / 14:58:36 / cg"
+!
+
+isProjectBrowser
+ ^ canvasType == #singleProjectBrowserSpec
+ or:[ canvasType == #multipleProjectBrowserSpec ]
+
+ "Created: / 24.2.2000 / 21:32:09 / cg"
+ "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isProjectFullBrowser
+ ^ canvasType == #singleProjectFullBrowserSpec
+ or:[ canvasType == #multipleProjectFullBrowserSpec ]
+
+ "Created: / 18.8.2000 / 19:02:49 / cg"
+!
+
+isProtocolBrowser
+ ^ canvasType == #singleProtocolBrowserSpec
+ or:[ canvasType == #multipleProtocolBrowserSpec ]
+
+ "Created: / 24.2.2000 / 21:32:09 / cg"
+ "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isProtocolOrFullProtocolBrowser
+ ^ self isProtocolBrowser
+ or:[ self isFullProtocolBrowser ]
+!
+
+isSingleCategoryBrowser
+ ^ canvasType == #singleCategoryBrowserSpec
+!
+
+isSingleClassBrowser
+ ^ canvasType == #singleClassBrowserSpec
+!
+
+isSingleFullProtocolBrowser
+ ^ canvasType == #singleFullProtocolBrowserSpec
+!
+
+isSingleMethodBrowser
+ ^ canvasType == #singleMethodBrowserSpec
+
+ "Created: / 1.3.2000 / 13:35:52 / cg"
+!
+
+isSingleNamespaceBrowser
+ ^ canvasType == #singleNameSpaceBrowserSpec
+!
+
+isSingleNamespaceFullBrowser
+ ^ canvasType == #singleNameSpaceFullBrowserSpec
+!
+
+isSingleProjectBrowser
+ ^ canvasType == #singleProjectBrowserSpec
+ or:[ canvasType == #singleProjectFullBrowserSpec ]
+
+ "Created: / 24.2.2000 / 21:32:09 / cg"
+ "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isSingleProjectFullBrowser
+ ^ canvasType == #singleProjectFullBrowserSpec
+
+ "Created: / 24.2.2000 / 21:32:09 / cg"
+ "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isSingleProtocolBrowser
+ ^ canvasType == #singleProtocolBrowserSpec
+!
+
+isVersionDiffBrowser
+ ^ canvasType == #multipleClassRepositoryDiffBrowserSpec
+! !
+
+!NavigationState class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__NavigationState.st,v 1.55 2014-03-17 15:00:16 cg Exp $'
+!
+
+version_CVS
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__NavigationState.st,v 1.55 2014-03-17 15:00:16 cg Exp $'
+!
+
+version_SVN
+ ^ '$Id: Tools__NavigationState.st,v 1.55 2014-03-17 15:00:16 cg Exp $'
+! !
+
+
+NavigationState initialize!