refactorings & code cleanup
authorClaus Gittinger <cg@exept.de>
Thu, 10 Jan 2008 13:59:39 +0100
changeset 2231 ae58d3ccbbfd
parent 2230 33c98cefa7e6
child 2232 1613b21d0095
refactorings & code cleanup
UIPainterView.st
--- a/UIPainterView.st	Thu Jan 10 13:59:22 2008 +0100
+++ b/UIPainterView.st	Thu Jan 10 13:59:39 2008 +0100
@@ -1821,13 +1821,13 @@
 !
 
 propertyOfName:aString
-    "returns property assigned to name
-    "
+    "returns the property for a given widgets name (name in tree)"
+
     |name|
 
     aString isNil ifFalse:[
-	name := aString string withoutSeparators.
-      ^ treeView propertyDetect:[:p| p name = name ].
+        name := aString string withoutSeparators.
+        ^ treeView propertyDetect:[:p| p name = name ].
     ].
     ^ nil
 !
@@ -1859,31 +1859,28 @@
 !
 
 uniqueNameFor:aSpecOrString
-    "generate and return an unique name for a class
-    "
-    |next name size|
-
-    aSpecOrString isString ifFalse:[name := aSpecOrString userFriendlyName]
-			    ifTrue:[name := aSpecOrString].
-
-    size  := name size + 1.
-    next  := 0.
+    "generate and return a unique name for a specClass or an items name.
+     (unique name in the tree)"
+
+    |maxUsedIndex name nameLen|
+
+    name := aSpecOrString isString 
+                ifFalse:[aSpecOrString userFriendlyName]
+                ifTrue:[aSpecOrString].
+
+    nameLen := name size.
+    maxUsedIndex := 0.
 
     treeView propertiesDo:[:p|
-	|n|
-	n := p name.
-
-	(n size >= size and:[n startsWith:name]) ifTrue:[
-	    next := next max:(p extractNumberStartingAt:size)
-	]
+        |thisName|
+
+        thisName := p name.
+
+        (thisName size > nameLen and:[thisName startsWith:name]) ifTrue:[
+            maxUsedIndex := maxUsedIndex max:(p extractNumberStartingAt:nameLen+1)
+        ]
     ].
-    next := next + 1.
-    name := name, next printString.
-  ^ name
-
-
-
-
+    ^ name, (maxUsedIndex+1) printString.
 !
 
 uniqueNameOf:aView
@@ -2014,25 +2011,25 @@
 
     "/ remember view<->spec associations to tree
     aBuilder componentCreationHook:[:aView :aSpec :builder|
-        |sv p s n|
-
-        p := ViewProperty new.
-        s := aSpec copy.
-        p spec:s.
-        p view:aView.
+        |newProperty copyOfSpec nameOfSpec|
+
+        newProperty := ViewProperty new.
+        copyOfSpec := aSpec copy.
+        newProperty spec:copyOfSpec.
+        newProperty view:aView.
 
         "/ break refs to child-specs
         "/ (not needed, as we keep the child info in the view hierarchy)
-        s class supportsSubComponents ifTrue:[
-            s component:nil
+        copyOfSpec class supportsSubComponents ifTrue:[
+            copyOfSpec component:nil
         ].
 
-        n := s name.
-
-        (n isNil or:[(self propertyOfName:n) notNil]) ifTrue:[
-            s name:(self uniqueNameFor:s)
+        nameOfSpec := copyOfSpec name.
+
+        (nameOfSpec isNil or:[(self propertyOfName:nameOfSpec) notNil]) ifTrue:[
+            copyOfSpec name:(self uniqueNameFor:copyOfSpec)
         ].
-        treeView addProperty:p.
+        treeView addProperty:newProperty.
     ].
     ^ aSpecification buildViewWithLayoutFor:aBuilder in:aFrame.
 
@@ -2435,18 +2432,26 @@
 !UIPainterView::ViewProperty methodsFor:'misc'!
 
 extractNumberStartingAt:anIndex
-    "return the number from the name starting at anIndex or 0.
+    "return the number from the name starting at anIndex (or 0 if there is no number)."
+
+    "/ cg: code cleanup.
+    ^ Integer 
+        readFrom:(self name readStream skip:(anIndex-1))
+        onError:0
+
+"/    |val|
+"/
+"/    val := 0.
+"/
+"/    self name from:anIndex do:[:c|
+"/        c isDigit ifTrue:[val := val * 10 + c digitValue]
+"/                 ifFalse:[^ 0]
+"/    ].
+"/    ^ val
+
     "
-    |val|
-
-    val := 0.
-
-    self name from:anIndex do:[:c|
-	c isDigit ifTrue:[val := val * 10 + c digitValue]
-		 ifFalse:[^ 0]
-    ].
-    ^ val
-
+     (self basicNew spec:(ButtonSpec new name:'button12')) extractNumberStartingAt:7 
+    "
 ! !
 
 !UIPainterView::ViewProperty methodsFor:'spec messages'!