ProjectBrowser.st
changeset 1099 965cfbbf4bf2
parent 1098 5f4b4338a68f
child 1106 07f8c4005d10
equal deleted inserted replaced
1098:5f4b4338a68f 1099:965cfbbf4bf2
   915         #name: #windowSpec
   915         #name: #windowSpec
   916         #window: 
   916         #window: 
   917        #(#WindowSpec
   917        #(#WindowSpec
   918           #label: 'ProjectBrowser'
   918           #label: 'ProjectBrowser'
   919           #name: 'ProjectBrowser'
   919           #name: 'ProjectBrowser'
   920           #layout: #(#LayoutFrame 218 0 107 0 781 0 497 0)
   920           #layout: #(#LayoutFrame 216 0 173 0 779 0 563 0)
   921           #level: 0
   921           #level: 0
   922           #min: #(#Point 10 10)
   922           #min: #(#Point 10 10)
   923           #max: #(#Point 1024 768)
   923           #max: #(#Point 1024 768)
   924           #bounds: #(#Rectangle 218 107 782 498)
   924           #bounds: #(#Rectangle 216 173 780 564)
   925           #menu: #mainMenu
   925           #menu: #mainMenu
   926           #usePreferredExtent: false
   926           #usePreferredExtent: false
   927           #returnIsOKInDialog: true
   927           #returnIsOKInDialog: true
   928           #escapeIsCancelInDialog: true
   928           #escapeIsCancelInDialog: true
   929         )
   929         )
   943               #component: 
   943               #component: 
   944              #(#SpecCollection
   944              #(#SpecCollection
   945                 #collection: #(
   945                 #collection: #(
   946                  #(#SelectionInTreeViewSpec
   946                  #(#SelectionInTreeViewSpec
   947                     #name: 'TreeList1'
   947                     #name: 'TreeList1'
   948                     #model: #selectedTreeNode
   948                     #model: #selectedTreeNodeHolder
   949                     #menu: #itemMenuHolder
   949                     #menu: #itemMenuHolder
   950                     #performer: #itemMenuPerformer
   950                     #performer: #itemMenuPerformer
   951                     #hasHorizontalScrollBar: true
   951                     #hasHorizontalScrollBar: true
   952                     #hasVerticalScrollBar: true
   952                     #hasVerticalScrollBar: true
   953                     #miniScrollerHorizontal: true
   953                     #miniScrollerHorizontal: true
   954                     #showRoot: false
   954                     #showRoot: false
   955                     #showDirectoryIndicatorForRoot: false
   955                     #showDirectoryIndicatorForRoot: false
   956                     #showDirectoryIndicator: true
   956                     #showDirectoryIndicator: true
   957                     #valueChangeSelector: #itemSelected:
   957                     #valueChangeSelector: #itemSelected:
       
   958                     #doubleClickSelector: #itemDoubleClicked:
   958                     #hierarchicalList: #projectTreeHolder
   959                     #hierarchicalList: #projectTreeHolder
   959                     #selectConditionSelector: #selectionChangeAllowed
   960                     #selectConditionSelector: #selectionChangeAllowed
   960                     #highlightMode: #label
   961                     #highlightMode: #label
   961                   )
   962                   )
   962                  #(#SubCanvasSpec
   963                  #(#SubCanvasSpec
  1431            #model: #selectorFromPatchesInfo:
  1432            #model: #selectorFromPatchesInfo:
  1432        )
  1433        )
  1433      )
  1434      )
  1434 ! !
  1435 ! !
  1435 
  1436 
       
  1437 !ProjectBrowser methodsFor:'accessing'!
       
  1438 
       
  1439 selectedTreeNode
       
  1440     "automatically generated by UIPainter ..."
       
  1441 
       
  1442     ^ self selectedTreeNodeHolder value
       
  1443 ! !
       
  1444 
  1436 !ProjectBrowser methodsFor:'aspects'!
  1445 !ProjectBrowser methodsFor:'aspects'!
  1437 
  1446 
  1438 browseClass
  1447 browseClass
  1439     |node className cls|
  1448     |node className cls|
  1440 
  1449 
  1441     self hasClassNodeSelected ifFalse:[^ self].
  1450     self hasClassNodeSelected ifFalse:[^ self].
  1442 
  1451 
  1443     node := self selectedTreeNode value.
  1452     node := self selectedTreeNode.
  1444     className := node contents value.
  1453     className := node contents value.
  1445     cls := Smalltalk at:className.
  1454     cls := Smalltalk at:className.
  1446     cls isNil ifTrue:[
  1455     cls isNil ifTrue:[
  1447         self information:'The class is not (yet) loaded'.
  1456         self information:'The class is not (yet) loaded'.
  1448         ^ self.
  1457         ^ self.
  1803     ^ holder.
  1812     ^ holder.
  1804 
  1813 
  1805     "Created: / 23.3.1999 / 14:18:05 / cg"
  1814     "Created: / 23.3.1999 / 14:18:05 / cg"
  1806 !
  1815 !
  1807 
  1816 
  1808 selectedTreeNode
  1817 selectedTreeNodeHolder
  1809     "automatically generated by UIPainter ..."
  1818     "automatically generated by UIPainter ..."
  1810 
  1819 
  1811     |holder|
  1820     |holder|
  1812 
  1821 
  1813     (holder := builder bindingAt:#selectedTreeNode) isNil ifTrue:[
  1822     (holder := builder bindingAt:#selectedTreeNodeHolder) isNil ifTrue:[
  1814         builder aspectAt:#selectedTreeNode put:(holder :=  ValueHolder new).
  1823         builder aspectAt:#selectedTreeNodeHolder put:(holder :=  ValueHolder new).
  1815     ].
  1824     ].
  1816     ^ holder.
  1825     ^ holder.
  1817 ! !
  1826 ! !
  1818 
  1827 
  1819 !ProjectBrowser methodsFor:'change & update'!
  1828 !ProjectBrowser methodsFor:'change & update'!
  1931 !
  1940 !
  1932 
  1941 
  1933 currentProject
  1942 currentProject
  1934     |node|
  1943     |node|
  1935 
  1944 
  1936     node := self selectedTreeNode value.
  1945     node := self selectedTreeNode.
  1937     node isNil ifTrue:[^ nil].
  1946     node isNil ifTrue:[^ nil].
  1938 
  1947 
  1939     [node notNil and:[node isProjectNode not]] whileTrue:[
  1948     [node notNil and:[node isProjectNode not]] whileTrue:[
  1940         node := node parent.
  1949         node := node parent.
  1941     ].
  1950     ].
  1947 !
  1956 !
  1948 
  1957 
  1949 hasClassNodeSelected
  1958 hasClassNodeSelected
  1950     |selectedNode|
  1959     |selectedNode|
  1951 
  1960 
  1952     selectedNode := self selectedTreeNode value.
  1961     selectedNode := self selectedTreeNode.
  1953     selectedNode isNil ifTrue:[^ false].
  1962     selectedNode isNil ifTrue:[^ false].
  1954 
  1963 
  1955     ^ selectedNode contents isAssociation
  1964     ^ selectedNode contents isAssociation
  1956       and:[selectedNode contents key == #class]
  1965       and:[selectedNode contents key == #class]
  1957 
  1966 
  1958 !
  1967 !
  1959 
  1968 
  1960 hasClassesNodeSelected
  1969 hasClassesNodeSelected
  1961     |selectedNode|
  1970     |selectedNode|
  1962 
  1971 
  1963     selectedNode := self selectedTreeNode value.
  1972     selectedNode := self selectedTreeNode.
  1964     selectedNode isNil ifTrue:[^ false].
  1973     selectedNode isNil ifTrue:[^ false].
  1965 
  1974 
  1966     ^ selectedNode contents == #classes
  1975     ^ selectedNode contents == #classes
  1967 
  1976 
  1968 !
  1977 !
  1969 
  1978 
  1970 hasNodeSelected
  1979 hasNodeSelected
  1971     ^ self selectedTreeNode value notNil
  1980     ^ self selectedTreeNode notNil
  1972 
  1981 
  1973 !
  1982 !
  1974 
  1983 
  1975 hasProjectNodeSelected
  1984 hasProjectNodeSelected
  1976     |selectedNode|
  1985     |selectedNode|
  1977 
  1986 
  1978     selectedNode := self selectedTreeNode value.
  1987     selectedNode := self selectedTreeNode.
  1979     selectedNode isNil ifTrue:[^ false].
  1988     selectedNode isNil ifTrue:[^ false].
  1980 
  1989 
  1981     ^ selectedNode isProjectNode
  1990     ^ selectedNode isProjectNode
  1982 
  1991 
  1983 !
  1992 !
  1984 
  1993 
  1985 hasSubProjectsNodeSelected
  1994 hasSubProjectsNodeSelected
  1986     |selectedNode|
  1995     |selectedNode|
  1987 
  1996 
  1988     selectedNode := self selectedTreeNode value.
  1997     selectedNode := self selectedTreeNode.
  1989     selectedNode isNil ifTrue:[^ false].
  1998     selectedNode isNil ifTrue:[^ false].
  1990 
  1999 
  1991     ^ selectedNode contents == #subprojects
  2000     ^ selectedNode contents == #subprojects
  1992 
  2001 
  1993 !
  2002 !
  2102 readAspectsFromProject
  2111 readAspectsFromProject
  2103     |p|
  2112     |p|
  2104 
  2113 
  2105     p := self currentProject.
  2114     p := self currentProject.
  2106     p notNil ifTrue:[
  2115     p notNil ifTrue:[
  2107         self selectedTreeNode value contents == #comment ifTrue:[
  2116         self selectedTreeNode contents == #comment ifTrue:[
  2108             self rightCanvasTextHolder value:p comment.
  2117             self rightCanvasTextHolder value:p comment.
  2109         ].
  2118         ].
  2110 
  2119 
  2111         self currentProjectWasNotLoadedFromFile value:p wasLoadedFromFile not.
  2120         self currentProjectWasNotLoadedFromFile value:p wasLoadedFromFile not.
  2112         self projectType value:(p type).
  2121         self projectType value:(p type).
  2174     |selectedNode nodeContents spec|
  2183     |selectedNode nodeContents spec|
  2175 
  2184 
  2176     self selectedProjectInPrerequisites value:nil.
  2185     self selectedProjectInPrerequisites value:nil.
  2177     self selectedRequiredProjectInPrerequisites value:nil.
  2186     self selectedRequiredProjectInPrerequisites value:nil.
  2178 
  2187 
  2179     selectedNode := self selectedTreeNode value.
  2188     selectedNode := self selectedTreeNode.
  2180     selectedNode isNil ifTrue:[
  2189     selectedNode isNil ifTrue:[
  2181         self setupCanvasForNoSelection.
  2190         self setupCanvasForNoSelection.
  2182         ^ self
  2191         ^ self
  2183     ].
  2192     ].
  2184 
  2193 
  2285     "reload aspects from the project"
  2294     "reload aspects from the project"
  2286 
  2295 
  2287     self readAspectsFromProject
  2296     self readAspectsFromProject
  2288 !
  2297 !
  2289 
  2298 
       
  2299 itemDoubleClicked:index
       
  2300     |node className cls|
       
  2301 
       
  2302     self hasClassNodeSelected ifTrue:[
       
  2303         node := self selectedTreeNode.
       
  2304         className := node contents value.
       
  2305         cls := Smalltalk at:className.
       
  2306         cls isNil ifTrue:[
       
  2307             self information:'The class is not (yet) loaded'.
       
  2308             ^ self
       
  2309         ].
       
  2310         SystemBrowser browseClass:cls.
       
  2311     ].
       
  2312 !
       
  2313 
  2290 itemSelected:index
  2314 itemSelected:index
  2291     |item action|
  2315     |item action|
  2292 
  2316 
  2293     self updateRightCanvas.
  2317     self updateRightCanvas.
  2294 
  2318 
  2325     "make the selected Project the current project"
  2349     "make the selected Project the current project"
  2326 
  2350 
  2327     |project selectedNode|
  2351     |project selectedNode|
  2328 
  2352 
  2329     self hasProjectNodeSelected ifTrue:[
  2353     self hasProjectNodeSelected ifTrue:[
  2330         selectedNode := self selectedTreeNode value.
  2354         selectedNode := self selectedTreeNode.
  2331         project := selectedNode contents.
  2355         project := selectedNode contents.
  2332 
  2356 
  2333         Project current:project.
  2357         Project current:project.
  2334     ]
  2358     ]
  2335 !
  2359 !
  2350 !
  2374 !
  2351 
  2375 
  2352 newSubProject
  2376 newSubProject
  2353     |selectedNode subProjectsNode newNode parentProject newProject|
  2377     |selectedNode subProjectsNode newNode parentProject newProject|
  2354 
  2378 
  2355     selectedNode := self selectedTreeNode value.
  2379     selectedNode := self selectedTreeNode.
  2356 
  2380 
  2357     self hasProjectNodeSelected ifTrue:[
  2381     self hasProjectNodeSelected ifTrue:[
  2358         parentProject := selectedNode contents.
  2382         parentProject := selectedNode contents.
  2359         subProjectsNode := selectedNode children detect:[:child | child contents == #subprojects].
  2383         subProjectsNode := selectedNode children detect:[:child | child contents == #subprojects].
  2360     ] ifFalse:[
  2384     ] ifFalse:[
  2401 
  2425 
  2402 removeProject
  2426 removeProject
  2403     |projectToRemove selectedNode subNode newNode parentNode parentProject newProject|
  2427     |projectToRemove selectedNode subNode newNode parentNode parentProject newProject|
  2404 
  2428 
  2405     self hasProjectNodeSelected ifTrue:[
  2429     self hasProjectNodeSelected ifTrue:[
  2406         selectedNode := self selectedTreeNode value.
  2430         selectedNode := self selectedTreeNode.
  2407         projectToRemove := selectedNode contents.
  2431         projectToRemove := selectedNode contents.
  2408 
  2432 
  2409         (self confirm:'Really remove the project ?') ifTrue:[
  2433         (self confirm:'Really remove the project ?') ifTrue:[
  2410             self withExecuteCursorDo:[
  2434             self withExecuteCursorDo:[
  2411                 self projectTreeHolder removeSelection.
  2435                 self projectTreeHolder removeSelection.
  2417 
  2441 
  2418 renameProject
  2442 renameProject
  2419     |nm selectedNode selectedProject|
  2443     |nm selectedNode selectedProject|
  2420 
  2444 
  2421     self hasProjectNodeSelected ifTrue:[
  2445     self hasProjectNodeSelected ifTrue:[
  2422         selectedNode := self selectedTreeNode value.
  2446         selectedNode := self selectedTreeNode.
  2423         selectedProject := selectedNode contents.
  2447         selectedProject := selectedNode contents.
  2424 
  2448 
  2425         nm := Dialog 
  2449         nm := Dialog 
  2426                 request:'Rename to:'
  2450                 request:'Rename to:'
  2427                 initialAnswer:selectedProject name.
  2451                 initialAnswer:selectedProject name.
  2470 
  2494 
  2471     self hasClassNodeSelected ifFalse:[^ self].
  2495     self hasClassNodeSelected ifFalse:[^ self].
  2472 
  2496 
  2473     self currentCanvasHolder value:(self class rightCanvasSpecForEditableText).
  2497     self currentCanvasHolder value:(self class rightCanvasSpecForEditableText).
  2474 
  2498 
  2475     node := self selectedTreeNode value.
  2499     node := self selectedTreeNode.
  2476     className := node contents value.
  2500     className := node contents value.
  2477     cls := Smalltalk at:className.
  2501     cls := Smalltalk at:className.
  2478     cls isNil ifTrue:[
  2502     cls isNil ifTrue:[
  2479         text := 'The class is not (yet) loaded'.
  2503         text := 'The class is not (yet) loaded'.
  2480     ] ifFalse:[
  2504     ] ifFalse:[