ColorEditDialog.st
changeset 2326 f23fac376621
parent 2279 f077161d5d57
child 2347 c37fb02785bc
--- a/ColorEditDialog.st	Thu Mar 27 10:09:28 2008 +0100
+++ b/ColorEditDialog.st	Mon Mar 31 15:31:21 2008 +0200
@@ -466,11 +466,58 @@
               name: 'ColorNameField'
               layout: (LayoutFrame 108 0 176 0 -162 1 198 0)
               model: colorNameHolder
-              immediateAccept: true
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: true
+            )
+           (LabelSpec
+              label: 'HTML Color Name:'
+              name: 'HTMLColorNameLabel'
+              layout: (LayoutFrame 4 0 204 0 110 0 226 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'MLHTColorNameFieldField'
+              layout: (LayoutFrame 108 0 204 0 -162 1 226 0)
+              model: htmlColorNameHolder
+              immediateAccept: false
               acceptOnReturn: true
               acceptOnTab: true
               acceptOnLostFocus: true
-              acceptOnPointerLeave: false
+              acceptOnPointerLeave: true
+            )
+           (ActionButtonSpec
+              label: 'Copy Color'
+              name: 'CopyColor'
+              layout: (LayoutFrame 12 0 236 0 100 0 258 0)
+              activeHelpKey: hlsMixer
+              translateLabel: true
+              resizeForLabel: true
+              tabable: true
+              model: copyColor
+            )
+           (ActionButtonSpec
+              label: 'Paste Color'
+              name: 'PasteColor'
+              layout: (LayoutFrame 108 0 236 0 196 0 258 0)
+              translateLabel: true
+              resizeForLabel: true
+              tabable: true
+              model: pasteColor
+            )
+           (ActionButtonSpec
+              label: 'pickColorIcon'
+              name: 'Button1'
+              layout: (LayoutFrame 285 0 236 0 312 0 263 0)
+              activeHelpKey: pickColor
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+              resizeForLabel: true
+              tabable: true
+              model: pickColor
             )
            (HorizontalPanelViewSpec
               name: 'HorizontalPanel1'
@@ -507,53 +554,6 @@
                
               )
             )
-           (LabelSpec
-              label: 'HTML Color Name:'
-              name: 'HTMLColorNameLabel'
-              layout: (LayoutFrame 4 0 204 0 110 0 226 0)
-              translateLabel: true
-              adjust: right
-            )
-           (InputFieldSpec
-              name: 'MLHTColorNameFieldField'
-              layout: (LayoutFrame 108 0 204 0 -162 1 226 0)
-              model: htmlColorNameHolder
-              immediateAccept: true
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: false
-            )
-           (ActionButtonSpec
-              label: 'Copy Color'
-              name: 'CopyColor'
-              layout: (LayoutFrame 12 0 236 0 100 0 258 0)
-              activeHelpKey: hlsMixer
-              translateLabel: true
-              resizeForLabel: true
-              tabable: true
-              model: copyColor
-            )
-           (ActionButtonSpec
-              label: 'Paste Color'
-              name: 'PasteColor'
-              layout: (LayoutFrame 108 0 236 0 196 0 258 0)
-              translateLabel: true
-              resizeForLabel: true
-              tabable: true
-              model: pasteColor
-            )
-           (ActionButtonSpec
-              label: 'pickColorIcon'
-              name: 'Button1'
-              layout: (LayoutFrame 285 0 236 0 312 0 263 0)
-              activeHelpKey: pickColor
-              hasCharacterOrientedLabel: false
-              translateLabel: true
-              resizeForLabel: true
-              tabable: true
-              model: pickColor
-            )
            )
          
         )
@@ -567,9 +567,10 @@
 
     colorName := self colorName.
     colorName notEmptyOrNil ifTrue:[
+        "/ ^ Color name:(colorName asSymbol)
         ^ colorName asSymbol
     ].
-    ^Color redByte:(red value) greenByte:(green value) blueByte:(blue value)
+    ^ Color redByte:(red value) greenByte:(green value) blueByte:(blue value)
 !
 
 color:aColor
@@ -603,19 +604,14 @@
     clr isColor ifTrue:[
         "not a symbol"
         self setPreview:clr.
-        self htmlColorNameHolder value:(clr htmlPrintString).
+        self htmlColorNameHolder value:(clr htmlPrintString) withoutNotifying:self.
     ].
 !
 
-colorNameChanged
+colorChangedTo:clr
     "compute rgb and hls (if possible)"
 
-    |clr h|
-
-    clr := Color name:colorNameHolder value ifIllegal:nil.
-    clr isNil ifTrue:[
-        ^ self
-    ].
+    |h|
 
     self red   value:clr redByte withoutNotifying:self.
     self green value:clr greenByte withoutNotifying:self.
@@ -631,6 +627,18 @@
     self colorChanged
 !
 
+colorNameChanged
+    "compute rgb and hls (if possible)"
+
+    |clr|
+
+    clr := Color name:colorNameHolder value ifIllegal:nil.
+    clr isNil ifTrue:[
+        ^ self
+    ].
+    self colorChangedTo:clr.
+!
+
 copyColor
     self window setClipboardObject:self color
 !
@@ -651,6 +659,22 @@
     self colorChanged
 !
 
+htmlColorNameChanged
+    "compute rgb and hls (if possible)"
+
+    |clr|
+
+    clr := Color rgbValue:(Integer 
+                                readFrom:(htmlColorNameHolder value copyFrom:2)
+                                radix:16
+                                onError:nil).
+    clr isNil ifTrue:[
+        ^ self
+    ].
+    self colorNameHolder value:'' withoutNotifying:self.
+    self colorChangedTo:clr.
+!
+
 pasteColor
     |copyBufferColor|
 
@@ -731,6 +755,7 @@
 htmlColorNameHolder
     htmlColorNameHolder isNil ifTrue:[
         htmlColorNameHolder := '' asValue.
+        htmlColorNameHolder addDependent:self.
     ].
     ^htmlColorNameHolder
 !
@@ -773,20 +798,27 @@
     (changedObject == red
     or:[changedObject == green
     or:[changedObject == blue]]) ifTrue:[
-        ^ self rgbSliderChanged
+        self rgbSliderChanged.
+        ^ self
     ].
 
     (changedObject == hue
     or:[changedObject == light
     or:[changedObject == saturation]]) ifTrue:[
-        ^ self hlsSliderChanged
+        self hlsSliderChanged.
+        ^ self
     ].
 
     (changedObject == colorNameHolder) ifTrue:[
-        ^ self colorNameChanged
+        self colorNameChanged.
+        ^ self
+    ].
+    (changedObject == htmlColorNameHolder) ifTrue:[
+        self htmlColorNameChanged.
+        ^ self
     ].
 
-    ^ super update:something with:aParameter from:changedObject
+    super update:something with:aParameter from:changedObject
 ! !
 
 !ColorEditDialog methodsFor:'startup & release'!