changed: #canEnterContentsSelection
authorClaus Gittinger <cg@exept.de>
Sun, 04 Dec 2011 20:10:00 +0100
changeset 2864 fcdea80a431e
parent 2863 eb998d836550
child 2865 2600408a8005
changed: #canEnterContentsSelection
Tools__ProjectBuilderAssistantApplication.st
--- a/Tools__ProjectBuilderAssistantApplication.st	Sun Dec 04 19:56:26 2011 +0100
+++ b/Tools__ProjectBuilderAssistantApplication.st	Sun Dec 04 20:10:00 2011 +0100
@@ -2272,7 +2272,7 @@
 !
 
 canEnterContentsSelection
-    |prj cls|
+    |prj cls impl|
 
     self hasProjectSelected ifFalse:[
         self infoHolder value:'no project selected'. 
@@ -2294,32 +2294,40 @@
     ].
     (prj class compiledMethodAt:#startupSelector) isNil ifTrue:[
         self infoHolder value:('inherited startup selector is "%1"' bindWith:prj startupSelector). 
-"/        ^ false
+        impl := prj class whichClassImplements:#startupSelector.
+        impl theNonMetaclass isAbstract ifTrue:[
+            self infoHolder value:('must redefine startup selector method (#startupSelector) in "%1"' bindWith:prj class name). 
+            ^ false
+        ].
     ].
     (prj class compiledMethodAt:#startupClassName) package == prj package ifFalse:[
-        self infoHolder value:('startup class method must be in package "%1" (is in "%2")' 
+        self infoHolder value:('startup class method (#startupClassName) must be in package "%1" (is in "%2")' 
             bindWith:prj package
             with:(prj class compiledMethodAt:#startupClassName) package). 
         ^ false
     ].
     (prj class compiledMethodAt:#startupSelector) notNil ifTrue:[
         (prj class compiledMethodAt:#startupSelector) package == prj package ifFalse:[
-            self infoHolder value:('startup class method must be in package "%1" (is in "%2")' 
+            self infoHolder value:('startup class method (#startupSelector) must be in package "%1" (is in "%2")' 
                 bindWith:prj package
                 with:(prj class compiledMethodAt:#startupSelector) package). 
             ^ false
         ].
     ].
-"/    cls := Smalltalk classNamed:prj startupClassName.
-"/    (cls implements:(prj startupSelector)) ifFalse:[
-"/        self infoHolder value:('startup class "%1" does not implement startup selector "%2"' 
-"/                bindWith:cls name
-"/                with:prj startupSelector). 
-"/        ^ false
-"/    ].
+    cls := Smalltalk classNamed:prj startupClassName.
+    cls isNil ifTrue:[
+        self infoHolder value:('startup class "%1" does not exist' bindWith:prj startupClassName).
+        ^ false.
+    ].
+    (cls implements:(prj startupSelector)) ifFalse:[
+        self infoHolder value:('startup class "%1" does not implement startup selector "%2"' 
+                bindWith:cls name
+                with:prj startupSelector). 
+        ^ false
+    ].
     ^ true.
 
-    "Modified: / 23-08-2011 / 12:50:07 / cg"
+    "Modified: / 04-12-2011 / 20:09:34 / cg"
 !
 
 canEnterDeploy
@@ -2657,6 +2665,10 @@
 
 !ProjectBuilderAssistantApplication class methodsFor:'documentation'!
 
+version
+    ^ '$Header$'
+!
+
 version_CVS
     ^ '$Header$'
 ! !