15 |
15 |
16 ToolApplicationModel subclass:#ViewTreeInspectorApplication |
16 ToolApplicationModel subclass:#ViewTreeInspectorApplication |
17 instanceVariableNames:'model treeView hasSingleSelectionHolder clickedItem clickedPoint |
17 instanceVariableNames:'model treeView hasSingleSelectionHolder clickedItem clickedPoint |
18 motionAction process followFocusChannel showNamesHolder |
18 motionAction process followFocusChannel showNamesHolder |
19 inspectorView inspectorModeIndexHolder path |
19 inspectorView inspectorModeIndexHolder path |
20 isCatchingEventsChannel' |
20 isCatchingEventsChannel browser' |
21 classVariableNames:'' |
21 classVariableNames:'' |
22 poolDictionaries:'' |
22 poolDictionaries:'' |
23 category:'Interface-Smalltalk' |
23 category:'Interface-Smalltalk' |
24 ! |
24 ! |
25 |
25 |
351 model: inspectorModeIndexHolder |
351 model: inspectorModeIndexHolder |
352 menu: inspectorModes |
352 menu: inspectorModes |
353 useIndex: true |
353 useIndex: true |
354 translateLabel: true |
354 translateLabel: true |
355 ) |
355 ) |
|
356 (SubCanvasSpec |
|
357 name: 'Browser' |
|
358 layout: (LayoutFrame 0 0 26 0 0 1 0 1) |
|
359 visibilityChannel: browserVisibleHolder |
|
360 hasHorizontalScrollBar: true |
|
361 hasVerticalScrollBar: true |
|
362 majorKey: #'Tools::NewSystemBrowser' |
|
363 minorKey: singleClassWithoutVariableListBrowserSpec |
|
364 createNewApplication: true |
|
365 createNewBuilder: true |
|
366 postBuildCallback: postBuildBrowserCanvas: |
|
367 ) |
356 (ViewSpec |
368 (ViewSpec |
357 name: 'Inspector' |
369 name: 'Inspector' |
358 layout: (LayoutFrame 0 0 26 0 0 1 0 1) |
370 layout: (LayoutFrame 0 0 26 0 0 1 0 1) |
|
371 visibilityChannel: inspectorVisibleHolder |
359 postBuildCallback: postBuildInspectorView: |
372 postBuildCallback: postBuildInspectorView: |
360 viewClassName: 'InspectorView' |
373 viewClassName: 'InspectorView' |
361 ) |
374 ) |
362 ) |
375 ) |
363 |
376 |
909 1->widget |
938 1->widget |
910 2->application |
939 2->application |
911 3->WindowGroup |
940 3->WindowGroup |
912 4->Sensor |
941 4->Sensor |
913 5->Model |
942 5->Model |
914 " |
943 6->Widget Class |
915 |
944 7->Application Class |
916 (inspectorModeIndexHolder value == 1) ifTrue:[ ^#widget]. |
945 " |
917 (inspectorModeIndexHolder value == 2) ifTrue:[ ^#application]. |
946 |
918 (inspectorModeIndexHolder value == 3) ifTrue:[ ^#group]. |
947 |mode| |
919 (inspectorModeIndexHolder value == 4) ifTrue:[ ^#sensor]. |
948 mode := inspectorModeIndexHolder value. |
920 (inspectorModeIndexHolder value == 5) ifTrue:[ ^#model]. |
949 ^ #( widget application group sensor model widgetClass applicationClass) at:mode ifAbsent:#widget |
921 ^ #application |
|
922 |
950 |
923 "Created: / 30-07-2013 / 07:44:59 / cg" |
951 "Created: / 30-07-2013 / 07:44:59 / cg" |
924 ! |
952 ! |
925 |
953 |
926 inspectorModeIndexHolder |
954 inspectorModeIndexHolder |
928 1->Widget |
956 1->Widget |
929 2->Application |
957 2->Application |
930 3->WindowGroup |
958 3->WindowGroup |
931 4->Sensor |
959 4->Sensor |
932 5->Model |
960 5->Model |
|
961 6->Widget Class |
|
962 7->Application Class |
933 " |
963 " |
934 |
964 |
935 ^ inspectorModeIndexHolder |
965 ^ inspectorModeIndexHolder |
936 |
966 |
937 "Created: / 30-07-2013 / 07:44:07 / cg" |
967 "Created: / 30-07-2013 / 07:44:07 / cg" |
938 ! |
968 ! |
939 |
969 |
940 inspectorModes |
970 inspectorModes |
941 ^ #('Widget' 'Application' 'WindowGroup' 'Sensor' 'Model') |
971 "/ labels of tabs |
|
972 ^ #('Widget' 'Application' 'WindowGroup' 'Sensor' 'Model' 'Widget Class' 'App Class') |
942 |
973 |
943 "Created: / 30-07-2013 / 09:42:16 / cg" |
974 "Created: / 30-07-2013 / 09:42:16 / cg" |
|
975 ! |
|
976 |
|
977 inspectorVisibleHolder |
|
978 "what is shown in the inspector: |
|
979 1->Widget |
|
980 2->Application |
|
981 3->WindowGroup |
|
982 4->Sensor |
|
983 5->Model |
|
984 6->Widget Class |
|
985 7->Application Class |
|
986 " |
|
987 |
|
988 ^ BlockValue |
|
989 with:[:v | v not ] |
|
990 argument:self browserVisibleHolder |
944 ! |
991 ! |
945 |
992 |
946 isCatchingEventsChannel |
993 isCatchingEventsChannel |
947 ^ isCatchingEventsChannel |
994 ^ isCatchingEventsChannel |
948 ! |
995 ! |
999 |
1046 |
1000 ^ model testModeChannel |
1047 ^ model testModeChannel |
1001 ! |
1048 ! |
1002 |
1049 |
1003 windowSpecMethodOfSelection |
1050 windowSpecMethodOfSelection |
1004 |item view app spec builder specSelector implementors| |
1051 |item view app nonMeta meta masterApp |
|
1052 spec builder specSelector implementors| |
1005 |
1053 |
1006 item := model selectedItem. |
1054 item := model selectedItem. |
1007 item isNil ifTrue:[^ nil]. |
1055 item isNil ifTrue:[^ nil]. |
1008 |
1056 |
1009 view := item widget. |
1057 view := item widget. |
1010 view isNil ifTrue:[^ nil]. |
1058 view isNil ifTrue:[^ nil]. |
1011 |
1059 |
1012 app := view application. |
1060 app := view application. |
1013 app isNil ifTrue:[^ nil]. |
1061 app isNil ifTrue:[^ nil]. |
1014 |
1062 |
1015 builder := app builder. |
1063 builder := app builder. |
1016 builder isNil ifTrue:[^ nil]. |
1064 builder isNil ifTrue:[^ nil]. |
1017 |
1065 |
1018 spec := builder spec. |
1066 spec := builder spec. |
1019 spec isNil ifTrue:[^ nil]. |
1067 spec isNil ifTrue:[^ nil]. |
1020 |
1068 |
1021 specSelector := spec name. |
1069 specSelector := spec name. |
1022 specSelector isNil ifTrue:[^ nil]. |
1070 specSelector isNil ifTrue:[^ nil]. |
1023 |
1071 |
1024 (app class theNonMetaclass canUnderstand:specSelector) ifTrue:[ |
1072 ((nonMeta := app class theNonMetaclass) canUnderstand:specSelector) ifTrue:[ |
1025 ^ app class theNonMetaclass lookupMethodFor:specSelector. |
1073 ^ nonMeta lookupMethodFor:specSelector. |
1026 ]. |
1074 ]. |
1027 (app class theMetaclass canUnderstand:specSelector) ifTrue:[ |
1075 ((meta := app class theMetaclass) canUnderstand:specSelector) ifTrue:[ |
1028 ^ app class theMetaclass lookupMethodFor:specSelector. |
1076 ^ meta lookupMethodFor:specSelector. |
1029 ]. |
1077 ]. |
1030 |
1078 |
1031 "/ maybe a simple dialog given a spec |
1079 "/ maybe a simple dialog given a spec |
1032 app masterApplication notNil ifTrue:[ |
1080 (masterApp := app masterApplication) notNil ifTrue:[ |
1033 (app masterApplication class theNonMetaclass canUnderstand:specSelector) ifTrue:[ |
1081 ((nonMeta := masterApp class theNonMetaclass) canUnderstand:specSelector) ifTrue:[ |
1034 ^ app masterApplication class theNonMetaclass lookupMethodFor:specSelector. |
1082 ^ nonMeta lookupMethodFor:specSelector. |
1035 ]. |
1083 ]. |
1036 (app masterApplication class theMetaclass canUnderstand:specSelector) ifTrue:[ |
1084 ((meta := masterApp class theMetaclass) canUnderstand:specSelector) ifTrue:[ |
1037 ^ app masterApplication class theMetaclass lookupMethodFor:specSelector. |
1085 ^ meta lookupMethodFor:specSelector. |
1038 ]. |
1086 ]. |
1039 ]. |
1087 ]. |
1040 |
1088 |
1041 implementors := Smalltalk allImplementorsOf: specSelector. |
1089 implementors := Smalltalk allImplementorsOf: specSelector. |
1042 implementors size == 1 ifTrue:[ |
1090 implementors size == 1 ifTrue:[ |
1100 ]. |
1148 ]. |
1101 |
1149 |
1102 super update:something with:someArgument from:aModel. |
1150 super update:something with:someArgument from:aModel. |
1103 ! |
1151 ! |
1104 |
1152 |
|
1153 updateBrowser |
|
1154 |cls widget| |
|
1155 |
|
1156 widget := self selectedView. |
|
1157 |
|
1158 "/ update the browser |
|
1159 self inspectorMode == #widgetClass ifTrue:[ |
|
1160 cls := widget class. |
|
1161 ] ifFalse:[ |
|
1162 cls := widget application class |
|
1163 ]. |
|
1164 browser switchToClass:cls selector:nil. |
|
1165 ! |
|
1166 |
1105 updateInspector |
1167 updateInspector |
1106 |view obj| |
1168 |view mode obj| |
1107 |
1169 |
1108 view := self selectedView. |
1170 view := self selectedView. |
1109 (view isNil or:[self inspectorMode == #widget]) ifTrue:[ |
1171 mode := self inspectorMode. |
|
1172 |
|
1173 ((mode == #widgetClass) or:[(mode == #applicationClass)]) ifTrue:[ |
|
1174 "/ update the browser |
|
1175 view notNil ifTrue:[ |
|
1176 self updateBrowser. |
|
1177 ]. |
|
1178 ^ self. |
|
1179 ]. |
|
1180 |
|
1181 (view isNil or:[mode == #widget]) ifTrue:[ |
1110 obj := view. |
1182 obj := view. |
1111 ] ifFalse:[ (self inspectorMode == #group) ifTrue:[ |
1183 ] ifFalse:[ (mode == #group) ifTrue:[ |
1112 obj := view windowGroup |
1184 obj := view windowGroup |
1113 ] ifFalse:[ (self inspectorMode == #sensor) ifTrue:[ |
1185 ] ifFalse:[ (mode == #sensor) ifTrue:[ |
1114 obj := view sensor |
1186 obj := view sensor |
1115 ] ifFalse:[ (self inspectorMode == #model) ifTrue:[ |
1187 ] ifFalse:[ (mode == #model) ifTrue:[ |
1116 obj := view model |
1188 obj := view model |
1117 ] ifFalse:[ |
1189 ] ifFalse:[ |
1118 obj := view application. |
1190 obj := view application. |
1119 ]]]]. |
1191 ]]]]. |
1120 inspectorView inspect:obj. |
1192 inspectorView inspect:obj. |
1364 showNamesHolder addDependent:self. |
1436 showNamesHolder addDependent:self. |
1365 |
1437 |
1366 "Modified: / 30-07-2013 / 09:20:08 / cg" |
1438 "Modified: / 30-07-2013 / 09:20:08 / cg" |
1367 ! |
1439 ! |
1368 |
1440 |
|
1441 postBuildBrowserCanvas:aSubCanvas |
|
1442 browser := aSubCanvas application. |
|
1443 |
|
1444 "/ browser navigationState meta onChangeEvaluate:(self updateBrowser). |
|
1445 "/ self updateBrowser. |
|
1446 ! |
|
1447 |
1369 postBuildInspectorView:anInspector |
1448 postBuildInspectorView:anInspector |
1370 inspectorView := anInspector. |
1449 inspectorView := anInspector. |
1371 ! |
1450 ! |
1372 |
1451 |
1373 postBuildTree:aTree |
1452 postBuildTree:aTree |
2141 self setRootItem:nil. |
2220 self setRootItem:nil. |
2142 ! |
2221 ! |
2143 |
2222 |
2144 objectToInspectOrBrowse:what |
2223 objectToInspectOrBrowse:what |
2145 "return one of: |
2224 "return one of: |
2146 #view inspect class |
2225 #view inspect view/widget |
2147 #group inspect windowGroup |
2226 #group inspect windowGroup |
2148 #model inspect model |
2227 #model inspect model |
2149 #application inspect application |
2228 #application inspect application |
2150 #controller inspect controller |
2229 #controller inspect controller |
2151 #process inspect application's process |
2230 #process inspect application's process |
2152 " |
2231 #widgetClass browse widget's class |
2153 |view inst| |
2232 " |
|
2233 |view| |
2154 |
2234 |
2155 view := self selectedView. |
2235 view := self selectedView. |
2156 view isNil ifTrue:[^ nil]. |
2236 view isNil ifTrue:[^ nil]. |
2157 |
2237 |
2158 what == #group ifTrue:[ inst := view windowGroup ] |
2238 what == #group ifTrue:[ ^ view windowGroup ]. |
2159 ifFalse:[what == #model ifTrue:[ inst := view model ] |
2239 what == #model ifTrue:[ ^ view model ]. |
2160 ifFalse:[what == #application ifTrue:[ inst := view application ] |
2240 what == #controller ifTrue:[ ^ view controller ]. |
2161 ifFalse:[what == #controller ifTrue:[ inst := view controller ] |
2241 what == #process ifTrue:[ ^ view windowGroup process ]. |
2162 ifFalse:[what == #process ifTrue:[ inst := view windowGroup process ] |
2242 what == #sensor ifTrue:[ ^ view sensor ]. |
2163 ifFalse:[what == #sensor ifTrue:[ inst := view sensor ] |
2243 what == #application ifTrue:[ ^ view application ? view topView ]. |
2164 ifFalse:[inst := view ]]]]]]. |
2244 what == #applicationClass ifTrue:[ ^ view application ? view topView ]. |
2165 |
2245 |
2166 (inst isNil and:[what == #application]) ifTrue:[ |
2246 ^ view |
2167 inst := view topView |
|
2168 ]. |
|
2169 ^ inst |
|
2170 |
2247 |
2171 "Modified: / 28-08-2013 / 23:58:27 / cg" |
2248 "Modified: / 28-08-2013 / 23:58:27 / cg" |
2172 ! |
2249 ! |
2173 |
2250 |
2174 openDocumentation |
2251 openDocumentation |