Tools__ProjectLoader.st
branchjv
changeset 13330 02d6c2d848a0
parent 12431 9f0c59c742d5
parent 13281 0c6a72cc4858
child 13391 43eaa1c36082
--- a/Tools__ProjectLoader.st	Thu Aug 08 10:48:08 2013 +0100
+++ b/Tools__ProjectLoader.st	Thu Aug 08 11:08:29 2013 +0100
@@ -93,7 +93,7 @@
 
 projectSites
 
-    ^UserPreferences current projectLoaderProjectSites
+    ^UserPreferences current at:#projectLoaderProjectSites ifAbsent:#()
 
     "Created: / 22-11-2008 / 09:13:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 26-11-2008 / 10:13:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
@@ -102,14 +102,16 @@
 !ProjectLoader class methodsFor:'defaults'!
 
 defaultProjectFile
-    ^ (Filename homeDirectory construct:'.smalltalk') construct:'projects.rc'
+    ^ Filename homeDirectory / '.smalltalk' / 'projects.rc'
 
     "Created: / 26-11-2008 / 10:15:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 31-07-2013 / 12:44:52 / cg"
 !
 
 defaultProjects
 
     ^#(
+        "/ cvut projects
         (
                 'CellStore'
                 ('cvut:fel/cellstore/core')
@@ -128,9 +130,26 @@
                 'IZAR'
                 ('cvut:fel/izar')
         )
+
+        "/ exept projects
+        (
+                'expecco'
+                ('exept:expecco/application')
+        )
+        (
+                'expeccoNET'
+                ('expeccoNET:server')
+        )
+
+        "/ private projects
+        (
+                'scheme'
+                ('cg:hdm/scheme2013')
+        )
 )
 
     "Created: / 26-11-2008 / 10:06:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 31-07-2013 / 12:40:49 / cg"
 ! !
 
 !ProjectLoader class methodsFor:'interface specs'!
@@ -143,93 +162,91 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ProjectLoadDialog andSelector:#windowSpec
-     Tools::ProjectLoadDialog new openInterface:#windowSpec
-     Tools::ProjectLoadDialog open
+     UIPainter new openOnClass:Tools::ProjectLoader andSelector:#windowSpec
+     Tools::ProjectLoader new openInterface:#windowSpec
+     Tools::ProjectLoader open
     "
 
     <resource: #canvas>
 
     ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'Select project'
-          name: 'Select project'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 402 301)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'Main'
-              layout: (LayoutFrame 3 0 3 0 -3 1 -3 1)
-              horizontalLayout: fitSpace
-              verticalLayout: bottomSpaceFit
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (SelectionInListModelViewSpec
-                    name: 'ProjectList'
-                    model: projectSelectionHolder
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    listModel: projectNamesHolder
-                    highlightMode: line
-                    doubleClickSelector: doAccept
-                    extent: (Point 390 240)
-                  )
-                 (ActionButtonSpec
-                    label: 'Update list from network'
-                    name: 'Update'
-                    translateLabel: true
-                    model: doUpdateFromNetwork
-                    initiallyDisabled: false
-                    useDefaultExtent: true
-                  )
-                 (HorizontalPanelViewSpec
-                    name: 'ButtonPanel'
-                    horizontalLayout: fit
-                    verticalLayout: fitSpace
-                    horizontalSpace: 3
-                    verticalSpace: 3
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ActionButtonSpec
-                          label: 'Cancel'
-                          name: 'CancelButton'
-                          translateLabel: true
-                          model: doCancel
-                          useDefaultExtent: true
-                        )
-                       (ActionButtonSpec
-                          label: 'Load'
-                          name: 'LoadButton'
-                          translateLabel: true
-                          model: doAccept
-                          enableChannel: canDoAcceptHolder
-                          useDefaultExtent: true
-                        )
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'Select project'
+         name: 'Select project'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 402 301)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (VerticalPanelViewSpec
+             name: 'Main'
+             layout: (LayoutFrame 3 0 3 0 -3 1 -3 1)
+             horizontalLayout: fitSpace
+             verticalLayout: bottomSpaceFit
+             horizontalSpace: 3
+             verticalSpace: 3
+             component: 
+            (SpecCollection
+               collection: (
+                (SelectionInListModelViewSpec
+                   name: 'ProjectList'
+                   model: projectSelectionHolder
+                   hasHorizontalScrollBar: true
+                   hasVerticalScrollBar: true
+                   listModel: projectNamesHolder
+                   highlightMode: line
+                   doubleClickSelector: doAccept
+                   extent: (Point 390 237)
+                 )
+                (ActionButtonSpec
+                   label: 'Update list from network'
+                   name: 'Update'
+                   translateLabel: true
+                   model: doUpdateFromNetwork
+                   useDefaultExtent: true
+                 )
+                (HorizontalPanelViewSpec
+                   name: 'ButtonPanel'
+                   horizontalLayout: fit
+                   verticalLayout: fitSpace
+                   horizontalSpace: 3
+                   verticalSpace: 3
+                   reverseOrderIfOKAtLeft: true
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (ActionButtonSpec
+                         label: 'Cancel'
+                         name: 'CancelButton'
+                         translateLabel: true
+                         model: doCancel
+                         useDefaultExtent: true
                        )
-                     
-                    )
-                    useDefaultExtent: true
-                  )
+                      (ActionButtonSpec
+                         label: 'Load'
+                         name: 'LoadButton'
+                         translateLabel: true
+                         model: doAccept
+                         enableChannel: canDoAcceptHolder
+                         useDefaultExtent: true
+                       )
+                      )
+                    
+                   )
+                   useDefaultExtent: true
                  )
-               
-              )
-            )
+                )
+              
+             )
            )
-         
-        )
-      )
-
-    "Modified: / 26-11-2008 / 09:16:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
+          )
+        
+       )
+     )
 ! !
 
 !ProjectLoader class methodsFor:'load & save'!
@@ -264,50 +281,53 @@
 !ProjectLoader methodsFor:'actions'!
 
 doAccept
+    |packages|
 
-    | packages |
-    self canDoAcceptHolder value ifFalse:[^self].
-    packages := (projectList at: self projectSelectionHolder value) second.
-    packages do:
-        [:pkg|Smalltalk loadPackage: pkg].
+    self canDoAcceptHolder value ifFalse:[
+        ^ self
+    ].
+    packages := (projectList at:self projectSelectionHolder value) second.
+    packages do:[:pkg | 
+        Smalltalk loadPackage:pkg
+    ].
     super doAccept.
 
     "Created: / 22-11-2008 / 09:55:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified (format): / 31-07-2013 / 12:51:54 / cg"
 !
 
 doUpdateFromNetwork
     <resource: #uiCallback>
 
     | projects newProjects |
+
     projects := self class loadProjects asOrderedCollection.
-    self class projectSites do:
-        [:site|
+    self class projectSites do:[:site|
         | siteUrl response |
+
         siteUrl := site asURL.
         response := HTTPInterface get: siteUrl path fromHost: siteUrl host.
         newProjects := Compiler evaluate: response data ifFail:[#()].
-        newProjects do:
-            [:newPrj|
-                | oldPrj |
-                oldPrj := projects 
-                            detect:[:oldPrj|oldPrj first = newPrj first] 
-                            ifNone:[projects add: newPrj].
-                oldPrj at:2 put: newPrj second.
-            ]
-        ].
+        newProjects do:[:newPrj|
+            | oldPrj |
+            oldPrj := projects 
+                        detect:[:oldPrj|oldPrj first = newPrj first] 
+                        ifNone:[projects add: newPrj].
+            oldPrj at:2 put: newPrj second.
+        ]
+    ].
     projects := projects asArray.
 
     projectList := projects.
     self class saveProjects: projects.
     self projectListChanged
 
-
     "
         Tools::ProjectLoadDialog new doUpdateFromNetwork
-
     "
 
     "Modified: / 26-11-2008 / 10:28:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified (comment): / 31-07-2013 / 12:51:48 / cg"
 ! !
 
 !ProjectLoader methodsFor:'aspects'!
@@ -315,73 +335,47 @@
 canDoAcceptHolder
     <resource: #uiAspect>
 
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
     |holder|
 
     (holder := builder bindingAt:#canDoAcceptHolder) isNil ifTrue:[
         holder := false asValue.
         builder aspectAt:#canDoAcceptHolder put:holder.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       holder addDependent:self.
-"/       holder onChangeSend:#canDoAcceptHolderChanged to:self.
     ].
     ^ holder.
 
     "Created: / 22-11-2008 / 09:51:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified (comment): / 31-07-2013 / 12:52:12 / cg"
 !
 
 projectNamesHolder
     <resource: #uiAspect>
 
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
     |holder|
 
     (holder := builder bindingAt:#projectNamesHolder) isNil ifTrue:[
         holder := #() asValue.
         builder aspectAt:#projectNamesHolder put:holder.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       holder addDependent:self.
-"/       holder onChangeSend:#projectNamesHolderChanged to:self.
     ].
     ^ holder.
 
     "Created: / 22-11-2008 / 08:59:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified (comment): / 31-07-2013 / 12:52:21 / cg"
 !
 
 projectSelectionHolder
     <resource: #uiAspect>
 
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
     |holder|
 
     (holder := builder bindingAt:#projectSelectionHolder) isNil ifTrue:[
         holder := ValueHolder new.
         builder aspectAt:#projectSelectionHolder put:holder.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-        holder addDependent:self.
         holder onChangeSend:#projectSelectionHolderChanged to:self.
     ].
     ^ holder.
 
     "Created: / 22-11-2008 / 08:59:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 31-07-2013 / 18:00:28 / cg"
 ! !
 
 !ProjectLoader methodsFor:'change & update'!
@@ -389,9 +383,18 @@
 projectListChanged
 
     self projectNamesHolder value:
-        (projectList collect:[:prj|prj first])
+        (projectList collect:[:prj |
+            |name origin|
+
+            name := prj first.
+            origin := prj second first.
+            '%1 %2' 
+                bindWith:prj first
+                with:(('(%1)' bindWith:origin) colorizeAllWith:Color grey)
+        ])
 
     "Created: / 22-11-2008 / 09:52:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 31-07-2013 / 12:48:34 / cg"
 !
 
 projectSelectionHolderChanged
@@ -418,8 +421,12 @@
 
 !ProjectLoader class methodsFor:'documentation'!
 
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ProjectLoader.st,v 1.5 2013-07-31 16:00:44 cg Exp $'
+!
+
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libtool/Tools__ProjectLoader.st,v 1.2 2011/07/03 19:41:59 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ProjectLoader.st,v 1.5 2013-07-31 16:00:44 cg Exp $'
 !
 
 version_HG
@@ -428,7 +435,7 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__ProjectLoader.st 7989 2012-05-05 21:28:49Z vranyj1 $'
+    ^ '$Id: Tools__ProjectLoader.st,v 1.5 2013-07-31 16:00:44 cg Exp $'
 ! !