author | Claus Gittinger <cg@exept.de> |
Fri, 18 Nov 2011 15:06:17 +0100 | |
changeset 10875 | 2bcc9f486e55 |
parent 10664 | a3c3b49e35ff |
child 11134 | d717f4642fe0 |
permissions | -rw-r--r-- |
9996 | 1 |
" |
2 |
COPYRIGHT (c) 2006 by eXept Software AG |
|
3 |
All Rights Reserved |
|
4 |
||
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
12 |
"{ Package: 'stx:libtool' }" |
|
8779 | 13 |
|
14 |
"{ NameSpace: Tools }" |
|
15 |
||
16 |
ApplicationModel subclass:#Inspector2 |
|
10379 | 17 |
instanceVariableNames:'tabViewAspect navigationHistoryHolder navigationStateAspect |
10597 | 18 |
browser currentObjectHolder' |
10311 | 19 |
classVariableNames:'LastExtent' |
8779 | 20 |
poolDictionaries:'' |
10460 | 21 |
category:'Interface-Inspector2' |
8779 | 22 |
! |
23 |
||
10597 | 24 |
Model subclass:#NavigationState |
8779 | 25 |
instanceVariableNames:'theObject index tabs selectionIndex displayString' |
26 |
classVariableNames:'' |
|
27 |
poolDictionaries:'' |
|
28 |
privateIn:Inspector2 |
|
29 |
! |
|
30 |
||
9996 | 31 |
!Inspector2 class methodsFor:'documentation'! |
32 |
||
33 |
copyright |
|
34 |
" |
|
35 |
COPYRIGHT (c) 2006 by eXept Software AG |
|
36 |
All Rights Reserved |
|
37 |
||
38 |
This software is furnished under a license and may be used |
|
39 |
only in accordance with the terms of that license and with the |
|
40 |
inclusion of the above copyright notice. This software may not |
|
41 |
be provided or otherwise made available to, or used by, any |
|
42 |
other person. No title to or ownership of the software is |
|
43 |
hereby transferred. |
|
44 |
" |
|
10597 | 45 |
! |
46 |
||
47 |
description |
|
48 |
" |
|
49 |
an application for a multitab inspector |
|
50 |
extendable by the inspected object itself, by providing additional |
|
51 |
tabs via the inspector2XXX methods |
|
52 |
||
53 |
[author:] |
|
54 |
Jan Vrani |
|
55 |
" |
|
56 |
! ! |
|
57 |
||
58 |
!Inspector2 class methodsFor:'help specs'! |
|
59 |
||
60 |
flyByHelpSpec |
|
61 |
"This resource specification was automatically generated |
|
62 |
by the UIHelpTool of ST/X." |
|
63 |
||
64 |
"Do not manually edit this!! If it is corrupted, |
|
65 |
the UIHelpTool may not be able to read the specification." |
|
66 |
||
67 |
" |
|
68 |
UIHelpTool openOnClass:Tools::Inspector2 |
|
69 |
" |
|
70 |
||
71 |
<resource: #help> |
|
72 |
||
73 |
^ super flyByHelpSpec addPairsFrom:#( |
|
74 |
||
75 |
#backwardInVisitingHistory |
|
76 |
'Move backward in the history of previously visited objects' |
|
77 |
||
78 |
#browseClassOfShownObject |
|
79 |
'Open a Systembrowser on the shown object''s class' |
|
80 |
||
81 |
#browseFile |
|
82 |
'Open a Filebrowser on the file represented by the shown object' |
|
83 |
||
84 |
#forwardInVisitingHistory |
|
85 |
'Move forward in the history of previously visited objects' |
|
86 |
||
87 |
||
88 |
) |
|
89 |
||
90 |
"Created: / 19-08-2011 / 08:52:33 / cg" |
|
9996 | 91 |
! ! |
8779 | 92 |
|
93 |
!Inspector2 class methodsFor:'interface specs'! |
|
94 |
||
95 |
windowSpec |
|
96 |
"This resource specification was automatically generated |
|
97 |
by the UIPainter of ST/X." |
|
98 |
||
99 |
"Do not manually edit this!! If it is corrupted, |
|
100 |
the UIPainter may not be able to read the specification." |
|
101 |
||
102 |
" |
|
10425
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
103 |
UIPainter new openOnClass:Tools::Inspector2 andSelector:#windowSpec |
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
104 |
Tools::Inspector2 new openInterface:#windowSpec |
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
105 |
Tools::Inspector2 open |
8779 | 106 |
" |
107 |
||
108 |
<resource: #canvas> |
|
109 |
||
110 |
^ |
|
111 |
#(FullSpec |
|
112 |
name: windowSpec |
|
113 |
window: |
|
114 |
(WindowSpec |
|
115 |
label: 'Inspector2' |
|
116 |
name: 'Inspector2' |
|
117 |
labelChannel: windowTitleAspect |
|
118 |
min: (Point 0 0) |
|
119 |
bounds: (Rectangle 0 0 388 421) |
|
120 |
) |
|
121 |
component: |
|
122 |
(SpecCollection |
|
123 |
collection: ( |
|
124 |
(MenuPanelSpec |
|
125 |
name: 'ToolBar' |
|
10425
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
126 |
layout: (LayoutFrame 0 0 0 0 0 1 40 0) |
8779 | 127 |
menu: toolbarMenu |
128 |
textDefault: true |
|
129 |
) |
|
130 |
(NoteBookViewSpec |
|
131 |
name: 'NoteBook' |
|
10425
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
132 |
layout: (LayoutFrame 0 0 40 0 0 1 0 1) |
8779 | 133 |
model: tabSelectionIndexAspect |
134 |
menu: tabLabelsAspect |
|
135 |
useIndex: true |
|
136 |
fitLastRow: false |
|
137 |
canvas: tabViewAspect |
|
138 |
keepCanvasAlive: true |
|
139 |
) |
|
140 |
) |
|
141 |
||
142 |
) |
|
143 |
) |
|
144 |
! ! |
|
145 |
||
146 |
!Inspector2 class methodsFor:'menu specs'! |
|
147 |
||
148 |
toolbarMenu |
|
149 |
"This resource specification was automatically generated |
|
150 |
by the MenuEditor of ST/X." |
|
151 |
||
152 |
"Do not manually edit this!! If it is corrupted, |
|
153 |
the MenuEditor may not be able to read the specification." |
|
154 |
||
155 |
" |
|
10379 | 156 |
MenuEditor new openOnClass:Tools::Inspector2 andSelector:#toolbarMenu |
157 |
(Menu new fromLiteralArrayEncoding:(Tools::Inspector2 toolbarMenu)) startUp |
|
8779 | 158 |
" |
159 |
||
160 |
<resource: #menu> |
|
161 |
||
162 |
^ |
|
163 |
#(Menu |
|
164 |
( |
|
165 |
(MenuItem |
|
10597 | 166 |
activeHelpKey: backwardInVisitingHistory |
8779 | 167 |
enabled: backButtonEnabledHolder |
168 |
label: 'Back' |
|
169 |
itemValue: backButtonAction |
|
170 |
translateLabel: true |
|
10460 | 171 |
isButton: true |
10596 | 172 |
hideMenuOnActivated: false |
8779 | 173 |
submenuChannel: backButtonMenuChannel |
10596 | 174 |
labelImage: (ResourceRetriever ToolbarIconLibrary historyBackIcon) |
8779 | 175 |
) |
176 |
(MenuItem |
|
10597 | 177 |
activeHelpKey: forwardInVisitingHistory |
8779 | 178 |
enabled: forwardButtonEnabledHolder |
179 |
label: 'Forward' |
|
180 |
itemValue: forwardButtonAction |
|
181 |
translateLabel: true |
|
10460 | 182 |
isButton: true |
10596 | 183 |
hideMenuOnActivated: false |
8779 | 184 |
submenuChannel: forwardButtonMenuChannel |
10596 | 185 |
labelImage: (ResourceRetriever ToolbarIconLibrary historyForwardIcon) |
8779 | 186 |
) |
10379 | 187 |
(MenuItem |
188 |
label: '-' |
|
189 |
) |
|
190 |
(MenuItem |
|
10597 | 191 |
activeHelpKey: browseClassOfShownObject |
192 |
enabled: browseButtonEnabledHolder |
|
10379 | 193 |
label: 'Browse' |
194 |
itemValue: browseClassAction |
|
195 |
translateLabel: true |
|
196 |
isButton: true |
|
10596 | 197 |
hideMenuOnActivated: false |
198 |
labelImage: (ResourceRetriever ToolbarIconLibrary startNewSystemBrowserIcon) |
|
10379 | 199 |
) |
10597 | 200 |
(MenuItem |
201 |
activeHelpKey: browseFile |
|
202 |
label: 'Browse File' |
|
203 |
itemValue: browseFileAction |
|
204 |
translateLabel: true |
|
205 |
isButton: true |
|
206 |
isVisible: currentObjectIsFilename |
|
207 |
hideMenuOnActivated: false |
|
208 |
labelImage: (ResourceRetriever ToolbarIconLibrary startNewFileBrowserIcon) |
|
209 |
) |
|
10636 | 210 |
(MenuItem |
211 |
label: 'Refresh for Changed Object' |
|
212 |
itemValue: refreshTabs |
|
213 |
translateLabel: true |
|
214 |
isButton: true |
|
215 |
startGroup: right |
|
216 |
labelImage: (ResourceRetriever ToolbarIconLibrary reloadIcon) |
|
217 |
) |
|
8779 | 218 |
) |
219 |
nil |
|
220 |
nil |
|
221 |
) |
|
222 |
! ! |
|
223 |
||
224 |
!Inspector2 class methodsFor:'startup'! |
|
225 |
||
226 |
openOn: anObject |
|
227 |
||
10311 | 228 |
self new |
229 |
openOn: anObject. |
|
8779 | 230 |
|
231 |
"Modified: / 17-02-2008 / 10:29:45 / janfrog" |
|
10311 | 232 |
"Modified (format): / 11-07-2011 / 22:28:03 / cg" |
8779 | 233 |
! ! |
234 |
||
235 |
!Inspector2 class methodsFor:'testing'! |
|
236 |
||
237 |
testSimpleShow |
|
238 |
|ins| |
|
239 |
||
240 |
ins := Inspector2 openOn:4. |
|
241 |
ins inspect:10. |
|
242 |
ins inspect:42. |
|
243 |
ins inspect:'dead one'. |
|
244 |
ins inspect:'rolled back'. |
|
245 |
||
246 |
"/ins inspectItem: (ins history at: 3). "/ Rollback history, zustanou jen prvni 3 |
|
247 |
||
248 |
ins inspect:'xFuj'. |
|
249 |
||
250 |
"Modified: / 11-01-2008 / 20:36:37 / janfrog" |
|
251 |
! ! |
|
252 |
||
253 |
!Inspector2 methodsFor:'accessing'! |
|
254 |
||
10597 | 255 |
backButtonEnabled:value |
256 |
^ self backButtonEnabledHolder value:value |
|
8779 | 257 |
|
258 |
"Created: / 12-01-2008 / 19:14:35 / janfrog" |
|
10597 | 259 |
"Modified (format): / 19-08-2011 / 08:59:41 / cg" |
8779 | 260 |
! |
261 |
||
262 |
currentObject |
|
263 |
^ self navigationState theObject |
|
264 |
||
265 |
"Created: / 13-01-2008 / 10:14:47 / janfrog" |
|
266 |
"Modified: / 17-02-2008 / 09:49:01 / janfrog" |
|
267 |
! |
|
268 |
||
269 |
currentState |
|
270 |
^ self navigationHistoryHolder currentItem |
|
271 |
||
272 |
"Created: / 21-02-2008 / 19:39:45 / janfrog" |
|
273 |
"Modified: / 27-02-2008 / 11:56:55 / janfrog" |
|
274 |
! |
|
275 |
||
10597 | 276 |
forwardButtonEnabled:value |
277 |
^ self forwardButtonEnabledHolder value:value |
|
8779 | 278 |
|
279 |
"Created: / 12-01-2008 / 19:14:48 / janfrog" |
|
10597 | 280 |
"Modified (format): / 19-08-2011 / 08:59:45 / cg" |
8779 | 281 |
! |
282 |
||
283 |
navigationState |
|
10379 | 284 |
^ self navigationHistoryHolder value currentItem |
8779 | 285 |
|
286 |
"Created: / 17-02-2008 / 09:49:01 / janfrog" |
|
287 |
"Modified: / 21-02-2008 / 19:34:14 / janfrog" |
|
10379 | 288 |
"Modified: / 22-07-2011 / 19:13:14 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8779 | 289 |
! |
290 |
||
291 |
navigationState:historyItem |
|
10379 | 292 |
self navigationHistoryHolder "subjectChannel:" value currentItem:historyItem. |
8779 | 293 |
|
294 |
"/self fixNavigation. "Nevola se kvuli problemu s prekreslovanim" |
|
295 |
"/self updateTabs. |
|
296 |
||
297 |
"Created: / 17-02-2008 / 09:49:11 / janfrog" |
|
298 |
"Modified: / 21-02-2008 / 19:47:26 / janfrog" |
|
10379 | 299 |
"Modified: / 22-07-2011 / 19:13:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
10597 | 300 |
"Modified: / 19-08-2011 / 09:16:38 / cg" |
8779 | 301 |
! ! |
302 |
||
303 |
!Inspector2 methodsFor:'aspects'! |
|
304 |
||
305 |
backButtonEnabledHolder |
|
306 |
"return/create the 'backButtonEnabledHolder' value holder (automatically generated)" |
|
307 |
||
308 |
^(AspectAdaptor forAspect:#canGoBack) |
|
309 |
subjectChannel: self navigationHistoryHolder |
|
310 |
||
311 |
"Created: / 12-01-2008 / 19:13:49 / janfrog" |
|
312 |
"Modified: / 27-02-2008 / 12:11:30 / janfrog" |
|
313 |
! |
|
314 |
||
10597 | 315 |
browseButtonEnabledHolder |
316 |
^ BlockValue |
|
317 |
with:[:m | m notNil] |
|
318 |
argument:self navigationStateAspect |
|
319 |
||
320 |
"Created: / 19-08-2011 / 09:22:47 / cg" |
|
321 |
! |
|
322 |
||
323 |
currentObjectHolder |
|
324 |
currentObjectHolder isNil ifTrue:[ |
|
325 |
currentObjectHolder := ValueHolder new |
|
326 |
]. |
|
327 |
^ currentObjectHolder |
|
328 |
||
329 |
"Created: / 27-02-2008 / 12:05:22 / janfrog" |
|
330 |
"Created: / 19-08-2011 / 08:58:48 / cg" |
|
331 |
! |
|
332 |
||
333 |
currentObjectIsFilename |
|
334 |
^ BlockValue |
|
335 |
with:[:o | o isFilename ] |
|
336 |
argument:self currentObjectHolder |
|
337 |
||
338 |
"Created: / 19-08-2011 / 08:56:27 / cg" |
|
339 |
! |
|
340 |
||
8779 | 341 |
forwardButtonEnabledHolder |
342 |
"return/create the 'backButtonEnabledHolder' value holder (automatically generated)" |
|
343 |
||
344 |
^(AspectAdaptor forAspect:#canGoForward) |
|
345 |
subjectChannel: self navigationHistoryHolder |
|
346 |
||
347 |
"Created: / 12-01-2008 / 19:13:49 / janfrog" |
|
348 |
"Modified: / 27-02-2008 / 12:11:26 / janfrog" |
|
349 |
! |
|
350 |
||
351 |
navigationHistoryHolder |
|
352 |
"return/create the 'currentItemHolder' value holder (automatically generated)" |
|
353 |
||
354 |
navigationHistoryHolder isNil ifTrue:[ |
|
355 |
navigationHistoryHolder := Tools::NavigationHistory new. |
|
356 |
]. |
|
357 |
^ navigationHistoryHolder |
|
358 |
||
359 |
"Created: / 21-02-2008 / 19:34:14 / janfrog" |
|
360 |
! |
|
361 |
||
362 |
navigationStateAspect |
|
10597 | 363 |
navigationStateAspect isNil ifTrue:[ |
364 |
navigationStateAspect := (AspectAdaptor forAspect:#currentItem) |
|
365 |
subjectChannel:self navigationHistoryHolder |
|
366 |
]. |
|
367 |
^ navigationStateAspect |
|
8779 | 368 |
|
369 |
"Created: / 27-02-2008 / 12:05:22 / janfrog" |
|
10597 | 370 |
"Modified (format): / 19-08-2011 / 08:59:10 / cg" |
8779 | 371 |
! |
372 |
||
373 |
tabLabelsAspect |
|
374 |
^ (AspectAdaptor forAspect:#tabLabels) |
|
10597 | 375 |
subjectChannel:self navigationStateAspect |
8779 | 376 |
|
377 |
"Created: / 16-01-2008 / 17:29:52 / janfrog" |
|
378 |
"Modified: / 27-02-2008 / 12:05:32 / janfrog" |
|
10597 | 379 |
"Modified (format): / 19-08-2011 / 08:59:21 / cg" |
8779 | 380 |
! |
381 |
||
382 |
tabSelectionIndexAspect |
|
383 |
^ ((AspectAdaptor forAspect:#selectionIndex) |
|
384 |
subjectChannel:self navigationStateAspect) |
|
385 |
onChangeEvaluate:[ self tabViewAspect changed ]; |
|
386 |
yourself |
|
387 |
||
388 |
"Created: / 16-01-2008 / 17:29:29 / janfrog" |
|
389 |
"Modified: / 27-02-2008 / 12:06:05 / janfrog" |
|
390 |
! |
|
391 |
||
392 |
tabViewAspect |
|
10597 | 393 |
tabViewAspect isNil ifTrue:[ |
394 |
tabViewAspect := (AspectAdaptor forAspect:#selectionView) |
|
395 |
subjectChannel:self navigationStateAspect |
|
396 |
]. |
|
8779 | 397 |
^ tabViewAspect |
398 |
||
399 |
"Created: / 16-01-2008 / 17:30:05 / janfrog" |
|
400 |
"Modified: / 27-02-2008 / 12:05:46 / janfrog" |
|
10597 | 401 |
"Modified (format): / 19-08-2011 / 08:59:35 / cg" |
8779 | 402 |
! |
403 |
||
404 |
windowTitleAspect |
|
405 |
^ (AspectAdaptor forAspect:#displayString) |
|
406 |
subjectChannel:self navigationStateAspect |
|
407 |
||
408 |
"Created: / 17-02-2008 / 08:42:21 / janfrog" |
|
409 |
"Modified: / 27-02-2008 / 12:05:56 / janfrog" |
|
410 |
! ! |
|
411 |
||
10379 | 412 |
!Inspector2 methodsFor:'menu'! |
413 |
||
414 |
backButtonMenuChannel |
|
415 |
^ [ self navigationHistoryHolder goBackMenu ] |
|
416 |
||
417 |
"Created: / 12-01-2008 / 18:57:08 / janfrog" |
|
418 |
"Modified: / 22-02-2008 / 16:57:46 / janfrog" |
|
419 |
! |
|
420 |
||
421 |
forwardButtonMenuChannel |
|
422 |
^ [ self navigationHistoryHolder goForwardMenu ] |
|
423 |
||
424 |
"Created: / 12-01-2008 / 18:57:30 / janfrog" |
|
425 |
"Modified: / 22-02-2008 / 16:58:11 / janfrog" |
|
426 |
! ! |
|
427 |
||
428 |
!Inspector2 methodsFor:'menu actions'! |
|
8779 | 429 |
|
430 |
backButtonAction |
|
10320 | 431 |
self navigationHistoryHolder goBack. |
432 |
self updateWindowLabel |
|
8779 | 433 |
|
434 |
"Modified: / 21-02-2008 / 19:40:23 / janfrog" |
|
10320 | 435 |
"Modified: / 15-07-2011 / 16:26:28 / cg" |
8779 | 436 |
! |
437 |
||
10379 | 438 |
browseClassAction |
10636 | 439 |
"open a class browser, or try to add a tab to the previously opened class browser" |
10597 | 440 |
|
10460 | 441 |
| class | |
10379 | 442 |
|
443 |
class := self currentObject class. |
|
8779 | 444 |
|
10597 | 445 |
browser notNil ifTrue:[ |
446 |
"/ try to add a tab to the already opened browser |
|
447 |
(browser isKindOf:Tools::NewSystemBrowser) ifTrue:[ |
|
448 |
browser spawnClassBrowserFor:(Array with:class) in:#newBuffer. |
|
449 |
"/ browser spawnSingleClassBrowserFor:class in:#newBuffer. |
|
450 |
browser window raise. |
|
451 |
^ self. |
|
452 |
]. |
|
453 |
]. |
|
454 |
"/ if that fails, open a new one |
|
455 |
||
456 |
browser := UserPreferences current systemBrowserClass openInClass:class selector:nil "/ browseSingleClass: class |
|
10379 | 457 |
|
458 |
"Modified: / 23-07-2011 / 11:28:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
10636 | 459 |
"Modified (comment): / 21-08-2011 / 08:37:59 / cg" |
10597 | 460 |
! |
461 |
||
462 |
browseFileAction |
|
463 |
"open a filebrowser on the file represented by the current object" |
|
464 |
||
465 |
| fn | |
|
466 |
||
467 |
fn := self currentObject asFilename. |
|
468 |
UserPreferences current fileBrowserClass openOn:fn |
|
469 |
||
470 |
"Created: / 19-08-2011 / 09:29:44 / cg" |
|
8779 | 471 |
! |
472 |
||
473 |
forwardButtonAction |
|
10320 | 474 |
self navigationHistoryHolder goForward. |
475 |
self updateWindowLabel |
|
8779 | 476 |
|
477 |
"Created: / 21-02-2008 / 19:52:03 / janfrog" |
|
10320 | 478 |
"Modified: / 15-07-2011 / 16:26:33 / cg" |
10636 | 479 |
! |
480 |
||
481 |
refreshTabs |
|
482 |
self navigationHistoryHolder currentItem refreshTabs. |
|
483 |
self tabViewAspect changed. |
|
484 |
||
485 |
"/ sel := selectionIndex. |
|
486 |
"/ self selectionIndex:nil. |
|
487 |
"/ self selectionIndex:sel. |
|
488 |
||
489 |
"Created: / 21-08-2011 / 08:23:00 / cg" |
|
8779 | 490 |
! ! |
491 |
||
492 |
!Inspector2 methodsFor:'opening'! |
|
493 |
||
10311 | 494 |
closeDownViews |
495 |
LastExtent := self window extent. |
|
496 |
super closeDownViews. |
|
497 |
||
498 |
"Created: / 11-07-2011 / 22:33:47 / cg" |
|
499 |
! |
|
500 |
||
8779 | 501 |
historyTryPush: anObject |
10597 | 502 |
<resource: #obsolete> |
8779 | 503 |
|
504 |
"/ Pokud uz na anObject byl tak tam skocit, jinak pridat na konec |
|
505 |
self history do: [:item | |
|
506 |
item theObject == anObject ifTrue:[ ^item ] |
|
507 |
]. |
|
508 |
||
509 |
^ self history push:anObject. |
|
510 |
||
511 |
"Modified: / 16-01-2008 / 14:25:30 / janfrog" |
|
512 |
! |
|
513 |
||
514 |
inspect:anObject |
|
10597 | 515 |
self navigationHistoryHolder currentItem:(NavigationState for:anObject). |
516 |
self window notNil ifTrue:[ |
|
10320 | 517 |
self updateWindowLabel |
518 |
]. |
|
8779 | 519 |
|
520 |
"Modified: / 27-02-2008 / 12:06:52 / janfrog" |
|
10320 | 521 |
"Modified: / 15-07-2011 / 16:26:03 / cg" |
10597 | 522 |
"Modified (format): / 19-08-2011 / 09:01:20 / cg" |
8779 | 523 |
! |
524 |
||
525 |
openOn: anObject |
|
10311 | 526 |
self inspect: anObject. |
527 |
self openWithExtent:(LastExtent ? nil). |
|
8779 | 528 |
|
529 |
"Modified: / 13-01-2008 / 13:55:27 / janfrog" |
|
10311 | 530 |
"Modified: / 11-07-2011 / 22:31:42 / cg" |
10320 | 531 |
! |
532 |
||
533 |
postBuildWith:aBuilder |
|
534 |
self updateWindowLabel |
|
535 |
||
536 |
"Created: / 15-07-2011 / 16:25:36 / cg" |
|
537 |
! |
|
538 |
||
539 |
updateWindowLabel |
|
10423
8215f496b6de
changed: #updateWindowLabel
Claus Gittinger <cg@exept.de>
parents:
10392
diff
changeset
|
540 |
|currentItem object| |
10320 | 541 |
|
10423
8215f496b6de
changed: #updateWindowLabel
Claus Gittinger <cg@exept.de>
parents:
10392
diff
changeset
|
542 |
(currentItem := self navigationHistoryHolder currentItem) notNil ifTrue:[ |
8215f496b6de
changed: #updateWindowLabel
Claus Gittinger <cg@exept.de>
parents:
10392
diff
changeset
|
543 |
object := currentItem theObject. |
8215f496b6de
changed: #updateWindowLabel
Claus Gittinger <cg@exept.de>
parents:
10392
diff
changeset
|
544 |
]. |
10597 | 545 |
self currentObjectHolder value:object. |
10320 | 546 |
self window label:(InspectorView commonLabelFor:object). |
547 |
||
548 |
"Created: / 15-07-2011 / 16:25:42 / cg" |
|
8779 | 549 |
! ! |
550 |
||
551 |
!Inspector2::NavigationState class methodsFor:'creating classes'! |
|
552 |
||
10597 | 553 |
for:anObject |
554 |
|item| |
|
555 |
||
556 |
item := self new. |
|
557 |
item theObject:anObject. |
|
558 |
^ item. |
|
559 |
||
560 |
"Modified (format): / 19-08-2011 / 09:24:40 / cg" |
|
8779 | 561 |
! ! |
562 |
||
563 |
!Inspector2::NavigationState class methodsFor:'documentation'! |
|
564 |
||
9996 | 565 |
version |
10875 | 566 |
^'$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.20 2011-11-18 14:06:17 cg Exp $' |
9996 | 567 |
! |
568 |
||
8779 | 569 |
version_SVN |
8904
f051532eb303
update #version_SVN with § as keyword expansion character
fm
parents:
8816
diff
changeset
|
570 |
^'§Id: Tools__Inspector2.st 115 2009-04-16 12:47:07Z vranyj1 §' |
8779 | 571 |
! ! |
572 |
||
573 |
!Inspector2::NavigationState methodsFor:'accessing'! |
|
574 |
||
575 |
index |
|
576 |
^ index |
|
577 |
! |
|
578 |
||
579 |
index:something |
|
580 |
index := something. |
|
581 |
! |
|
582 |
||
583 |
selectionIndex |
|
10875 | 584 |
selectionIndex isNil ifTrue:[^1]. |
8779 | 585 |
selectionIndex < 1 ifTrue:[^1]. |
586 |
selectionIndex > tabs size ifTrue:[^tabs size]. |
|
587 |
^selectionIndex |
|
588 |
||
589 |
"Created: / 16-01-2008 / 17:24:27 / janfrog" |
|
590 |
"Modified: / 17-02-2008 / 10:20:35 / janfrog" |
|
10875 | 591 |
"Modified: / 18-11-2011 / 15:00:01 / cg" |
8779 | 592 |
! |
593 |
||
594 |
selectionIndex: anInteger |
|
595 |
selectionIndex := anInteger. |
|
596 |
self changed:#selectionIndex |
|
597 |
||
598 |
"Created: / 16-01-2008 / 17:27:52 / janfrog" |
|
599 |
"Modified: / 17-02-2008 / 09:46:45 / janfrog" |
|
600 |
! |
|
601 |
||
602 |
selectionView |
|
603 |
||
604 |
|tab| |
|
605 |
||
606 |
tab := self tabs at: self selectionIndex. |
|
607 |
^tab |
|
608 |
ifNil:[nil] |
|
609 |
ifNotNil:[tab view]. |
|
610 |
||
611 |
"Created: / 16-01-2008 / 17:31:19 / janfrog" |
|
612 |
! |
|
613 |
||
614 |
tabLabels |
|
615 |
||
616 |
^self tabs collect:[:tab | tab label] |
|
617 |
||
618 |
"Created: / 16-01-2008 / 17:14:07 / janfrog" |
|
619 |
! |
|
620 |
||
621 |
tabViews |
|
622 |
||
623 |
^self tabs collect:[:tab | tab view] |
|
624 |
||
625 |
"Created: / 16-01-2008 / 17:14:13 / janfrog" |
|
626 |
! |
|
627 |
||
628 |
tabs |
|
629 |
||
10875 | 630 |
tabs isNil ifTrue:[self initializeTabs]. |
8779 | 631 |
^tabs |
632 |
||
633 |
"Created: / 16-01-2008 / 16:51:53 / janfrog" |
|
10875 | 634 |
"Modified: / 18-11-2011 / 15:00:05 / cg" |
8779 | 635 |
! |
636 |
||
637 |
theObject |
|
638 |
^ theObject |
|
639 |
! |
|
640 |
||
641 |
theObject:anObject |
|
642 |
theObject := anObject. |
|
10597 | 643 |
self changed |
8779 | 644 |
|
645 |
"Modified: / 17-02-2008 / 08:38:44 / janfrog" |
|
10597 | 646 |
"Modified: / 19-08-2011 / 09:16:25 / cg" |
8779 | 647 |
! ! |
648 |
||
649 |
!Inspector2::NavigationState methodsFor:'comparing'! |
|
650 |
||
651 |
= anotherState |
|
652 |
||
653 |
^self class == anotherState class |
|
654 |
and:[self theObject == anotherState theObject] |
|
655 |
||
656 |
"Created: / 21-02-2008 / 19:39:01 / janfrog" |
|
657 |
! |
|
658 |
||
659 |
hash |
|
660 |
||
661 |
^theObject hash |
|
662 |
||
663 |
"Created: / 21-02-2008 / 19:38:08 / janfrog" |
|
664 |
! ! |
|
665 |
||
666 |
!Inspector2::NavigationState methodsFor:'displaying'! |
|
667 |
||
668 |
displayString |
|
669 |
||
10392 | 670 |
displayString isNil ifTrue:[ |
671 |
displayString := theObject printString contractAtEndTo:15. |
|
672 |
displayString := displayString , ' [', theObject class name , ']' |
|
673 |
]. |
|
8779 | 674 |
^ displayString |
675 |
||
676 |
"Created: / 21-02-2008 / 19:53:07 / janfrog" |
|
10392 | 677 |
"Modified: / 25-07-2011 / 10:50:52 / cg" |
8779 | 678 |
! ! |
679 |
||
680 |
!Inspector2::NavigationState methodsFor:'initialization'! |
|
681 |
||
10379 | 682 |
initializeClassBrowserTab |
10629 | 683 |
| browser spec | |
10379 | 684 |
|
10629 | 685 |
spec := #singleClassBrowserSpec. |
686 |
"/spec := #multipleClassBrowserSpec. |
|
687 |
browser := Tools::NewSystemBrowser new. |
|
688 |
browser createBuilder. |
|
689 |
browser navigationState canvasType:spec. |
|
690 |
browser browserCanvasType:spec. |
|
691 |
browser browserCanvas value builder:(browser builder). |
|
692 |
browser navigationState canvas:browser browserCanvas value. |
|
693 |
browser showInheritedMethods. |
|
10664 | 694 |
browser classListGenerator value:(Array with:theObject class theNonMetaclass). |
10629 | 695 |
browser selectClass: theObject class theNonMetaclass. |
10379 | 696 |
|
697 |
tabs add: |
|
698 |
(Tools::Inspector2Tab new |
|
10629 | 699 |
priority: 0; |
700 |
label:'Class'; |
|
701 |
view: (ApplicationSubView new |
|
702 |
client: browser spec: spec)) |
|
10379 | 703 |
|
704 |
"Created: / 22-07-2011 / 18:48:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
10664 | 705 |
"Modified: / 05-09-2011 / 05:24:16 / cg" |
10379 | 706 |
! |
707 |
||
8779 | 708 |
initializeCommonTabs |
709 |
||
10379 | 710 |
"Unfinished code" |
10629 | 711 |
self initializeClassBrowserTab |
10379 | 712 |
|
9996 | 713 |
"/ tabs add: |
714 |
"/ (Tools::Inspector2Tab new |
|
715 |
"/ priority: 50; |
|
716 |
"/ label:'Object'; |
|
717 |
"/ view: ((theObject inspectorClass new inspect:theObject) |
|
718 |
"/ yourself)) |
|
8779 | 719 |
|
720 |
"Created: / 16-01-2008 / 16:56:48 / janfrog" |
|
721 |
"Modified: / 17-02-2008 / 10:29:54 / janfrog" |
|
10629 | 722 |
"Modified: / 21-08-2011 / 10:03:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8779 | 723 |
! |
724 |
||
725 |
initializeExtraTabs |
|
726 |
||
10206 | 727 |
"/ cg: I prefer using explicit getter - so I find them in the browser |
728 |
theObject inspector2Tabs do: [:selector| |
|
8779 | 729 |
| tab | |
730 |
tab := [ theObject perform: selector ] |
|
10636 | 731 |
on: Error do:[:ex| |
732 |
"/ for debugging: ex reject. |
|
8779 | 733 |
Tools::Inspector2Tab new |
734 |
label: selector; |
|
735 |
text: |
|
736 |
(ex description, Character cr, Character cr, |
|
10636 | 737 |
ex suspendedContext fullPrintAllString)]. |
8779 | 738 |
(tab notNil and:[tab isKindOf: Tools::Inspector2Tab]) |
739 |
ifTrue:[tabs add: tab]]. |
|
740 |
||
741 |
"Created: / 16-01-2008 / 17:25:24 / janfrog" |
|
742 |
"Modified: / 17-02-2008 / 10:30:43 / janfrog" |
|
743 |
"Modified: / 07-11-2008 / 08:40:35 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
10636 | 744 |
"Modified (format): / 21-08-2011 / 08:01:34 / cg" |
8779 | 745 |
! |
746 |
||
747 |
initializeTabs |
|
748 |
||
749 |
tabs := OrderedCollection new. |
|
750 |
self initializeCommonTabs. |
|
751 |
self initializeExtraTabs. |
|
752 |
tabs := tabs asSortedCollection:[:a :b|a priority > b priority]. |
|
753 |
||
754 |
"Created: / 16-01-2008 / 16:54:28 / janfrog" |
|
755 |
"Modified: / 17-02-2008 / 10:08:04 / janfrog" |
|
10636 | 756 |
! |
757 |
||
758 |
refreshTabs |
|
759 |
tabs := nil. |
|
760 |
self initializeTabs. |
|
761 |
||
762 |
"Created: / 21-08-2011 / 08:23:11 / cg" |
|
8779 | 763 |
! ! |
764 |
||
765 |
!Inspector2 class methodsFor:'documentation'! |
|
766 |
||
10425
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
767 |
version |
10875 | 768 |
^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.20 2011-11-18 14:06:17 cg Exp $' |
10425
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
769 |
! |
c49cba2bd28e
only follow (dive in) with double click;
Claus Gittinger <cg@exept.de>
parents:
10423
diff
changeset
|
770 |
|
8807 | 771 |
version_CVS |
10875 | 772 |
^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.20 2011-11-18 14:06:17 cg Exp $' |
8807 | 773 |
! |
774 |
||
8816 | 775 |
version_CVS_jvrany |
8904
f051532eb303
update #version_SVN with § as keyword expansion character
fm
parents:
8816
diff
changeset
|
776 |
^ '§Header: /opt/data/cvs/stx/goodies/libtool3/Inspector2.st,v 1.6 2008-02-27 13:45:23 vranyj1 Exp §' |
9996 | 777 |
! |
778 |
||
779 |
version_SVN |
|
780 |
^ '§Id: Tools__Inspector2.st 7486 2009-10-26 22:06:24Z vranyj1 §' |
|
8779 | 781 |
! ! |