123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- Smalltalk current createPackage: 'Helios-Inspector' properties: #{}!
- HLWidget subclass: #HLInspector
- instanceVariableNames: 'model variables display code'
- package: 'Helios-Inspector'!
- !HLInspector methodsFor: 'accessing'!
- code
- ^ code ifNil:[self initializeCode]
- !
- display
- ^ display ifNil:[self initializeDisplay]
- !
- inspectee
- ^ self model inspectee
- !
- inspectee: anObject
- self model inspectee: anObject
- !
- model
- ^ model ifNil:[self initializeModel]
- !
- model: aModel
- model := aModel.
-
- self code model: aModel code.
- self observeCode.
- !
- tabLabel
-
- ^ model inspectee printString
- !
- variables
- ^ variables ifNil:[self initializeVariables]
- ! !
- !HLInspector methodsFor: 'actions'!
- ensureModel
- "Sends the #model: initialization message if needed."
- model ifNil:[
- self model: self model]
- !
- inspect: anObject
- self model inspectee: anObject
- !
- makeCode
- ^ HLCodeWidget new
- model: model code;
- doItReaction: [self refresh];
- yourself.
- !
- makeDisplay
- ^ HLInspectorDisplay new
- model: self model;
- yourself
- !
- makeVariables
- ^ HLInspectorVariables new
- model: self model;
- yourself
- !
- observeCode
- !
- open
- HLManager current addTab: (HLTab on: self labelled: self tabLabel)
- !
- refresh
- self
- inspect: self inspectee;
- updateVariablesList;
- updateValueTextarea
- ! !
- !HLInspector methodsFor: 'initialization'!
- initializeCode
- ^ code := self makeCode.
- !
- initializeDisplay
- ^ display := self makeDisplay
- !
- initializeModel
- ^ model := HLInspectorModel new
- !
- initializeVariables
- ^ variables := self makeVariables
- ! !
- !HLInspector methodsFor: 'reactions'!
- onDoIt
- !
- onInspectIt
- !
- onPrintIt
- ! !
- !HLInspector methodsFor: 'rendering'!
- renderContentOn: html
- self ensureModel.
-
- html with: (HLContainer with: (HLHorizontalSplitter
- with: (HLVerticalSplitter
- with: self variables
- with: self display)
- with: self code))
- ! !
- !HLInspector class methodsFor: 'accessing'!
- tabLabel
- ^ 'Inspector'
- !
- tabPriority
- ^ 10
- ! !
- !HLInspector class methodsFor: 'testing'!
- canBeOpenAsTab
- ^ false
- ! !
- HLNavigationListWidget subclass: #HLInspectorDisplay
- instanceVariableNames: 'model'
- package: 'Helios-Inspector'!
- !HLInspectorDisplay methodsFor: 'accessing'!
- model
- ^ model
- !
- model: aModel
- model := aModel
- ! !
- !HLInspectorDisplay methodsFor: 'rendering'!
- renderContentOn: html
-
- html div with: 'display'
- ! !
- Object subclass: #HLInspectorModel
- instanceVariableNames: 'announcer environment inspectee code variables selection'
- package: 'Helios-Inspector'!
- !HLInspectorModel methodsFor: 'accessing'!
- announcer
- ^ announcer ifNil: [ self initializeAnnouncer ]
- !
- code
- "Answers the code model working for this workspace model"
- ^ code ifNil:[self initializeCode]
- !
- environment
- ^ environment ifNil: [ self initializeEnvironment]
- !
- environment: anEnvironment
- environment := anEnvironment
- !
- inspectee
- ^ inspectee
- !
- inspectee: anObject
- inspectee := anObject
- !
- selection
- ^ selection ifNil:[self initializeSelection]
- !
- selection: anObject
- selection := anObject
- ! !
- !HLInspectorModel methodsFor: 'actions'!
- beLocal
- self initializeEnvironment
- !
- beRemoteOn: anIPAddress port: aPort
- "to-do"
-
- "environment := HLRemoteEnvironment on: anIPAddress port: aPort
-
- ...kind of stuff"
- !
- subscribe: aWidget
- aWidget subscribeTo: self announcer
- ! !
- !HLInspectorModel methodsFor: 'initialization'!
- initializeAnnouncer
- ^ announcer := Announcer new
- !
- initializeCode
- ^ code := HLCodeModel on: self environment
- !
- initializeEnvironment
- ^ environment := HLLocalEnvironment new
- !
- initializeSelection
- ^ selection := self inspectee
- ! !
- !HLInspectorModel methodsFor: 'reactions'!
- onKeyDown: anEvent
- <if(anEvent.ctrlKey) {
- if(anEvent.keyCode === 80) { //ctrl+p
- self._printIt();
- anEvent.preventDefault();
- return false;
- }
- if(anEvent.keyCode === 68) { //ctrl+d
- self._doIt();
- anEvent.preventDefault();
- return false;
- }
- if(anEvent.keyCode === 73) { //ctrl+i
- self._inspectIt();
- anEvent.preventDefault();
- return false;
- }
- }>
- ! !
- !HLInspectorModel class methodsFor: 'actions'!
- on: anEnvironment
- ^ self new
- environment: anEnvironment;
- yourself
- ! !
- HLNavigationListWidget subclass: #HLInspectorVariables
- instanceVariableNames: 'model'
- package: 'Helios-Inspector'!
- !HLInspectorVariables methodsFor: 'accessing'!
- model
-
- ^ model
- !
- model: aModel
-
- model := aModel
- ! !
- !HLInspectorVariables methodsFor: 'rendering'!
- renderContentOn: html
-
- html div with: 'variables'
- ! !
|