@@ -153,7 +153,7 @@ public SimpleColorPalette(SimpleColorPicker colorPicker) {
153153 if (e .getCode () == KeyCode .ESCAPE ) {
154154 e .consume ();
155155 colorPicker .revertToOriginalColor ();
156- colorPicker .hide ();
156+ colorPicker .hidePopup ();
157157 }
158158 });
159159 } catch (IOException e ) {
@@ -169,21 +169,21 @@ public SimpleColorPalette(SimpleColorPicker colorPicker) {
169169 // Handle color selection on click.
170170 colorSample .setOnMouseClicked (event -> {
171171 colorPicker .updateHistory ();
172- colorPicker .hide ();
172+ colorPicker .hidePopup ();
173173 });
174174
175175 webColorCode .textProperty ().addListener (webColorListener );
176176
177177 saveBtn .setOnAction (event -> {
178178 colorPicker .updateHistory ();
179- colorPicker .hide ();
179+ colorPicker .hidePopup ();
180180 });
181181
182182 saveBtn .setDefaultButton (true );
183183
184184 cancelBtn .setOnAction (event -> {
185185 colorPicker .revertToOriginalColor ();
186- colorPicker .hide ();
186+ colorPicker .hidePopup ();
187187 });
188188
189189 satValueRect .setBackground (
@@ -270,6 +270,7 @@ public SimpleColorPalette(SimpleColorPicker colorPicker) {
270270
271271 huePickerOverlay .setOnMouseDragged (hueMouseHandler );
272272 huePickerOverlay .setOnMousePressed (hueMouseHandler );
273+ huePickerOverlay .setOnMouseReleased (event -> updateRandomColorSamples ());
273274
274275 EventHandler <MouseEvent > mouseHandler = event -> {
275276 saturation .set (clamp (event .getX () / satValueRect .getWidth ()));
@@ -278,6 +279,7 @@ public SimpleColorPalette(SimpleColorPicker colorPicker) {
278279
279280 valueOverlay .setOnMousePressed (mouseHandler );
280281 valueOverlay .setOnMouseDragged (mouseHandler );
282+ valueOverlay .setOnMouseReleased (event -> updateRandomColorSamples ());
281283
282284 hue .addListener ((observable , oldValue , newValue ) -> updateCurrentColor (newValue .doubleValue (),
283285 saturation .get (), value .get ()));
@@ -315,6 +317,17 @@ public SimpleColorPalette(SimpleColorPicker colorPicker) {
315317 }
316318 }
317319
320+ /**
321+ * Updates the nearby random color samples.
322+ */
323+ void updateRandomColorSamples () {
324+ Color color = colorPicker .getColor ();
325+ for (Region swatch : sample ) {
326+ swatch .setBackground (new Background (
327+ new BackgroundFill (getRandomNearColor (color ), CornerRadii .EMPTY , Insets .EMPTY )));
328+ }
329+ }
330+
318331 protected void setColor (Color color ) {
319332 hue .set (color .getHue () / 360 );
320333 saturation .set (color .getSaturation ());
@@ -343,11 +356,7 @@ private static double clamp(double value) {
343356 private void updateCurrentColor (double hue , double saturation , double value ) {
344357 Color newColor = Color .hsb (hue * 360 , saturation , value );
345358
346- for (Region swatch : sample ) {
347- swatch .setBackground (new Background (
348- new BackgroundFill (getRandomNearColor (newColor ), CornerRadii .EMPTY , Insets .EMPTY )));
349- }
350- colorPicker .setColor (newColor );
359+ colorPicker .colorProperty ().set (newColor );
351360
352361 GraphicsContext gc = colorSample .getGraphicsContext2D ();
353362 gc .setFill (newColor );
@@ -357,8 +366,10 @@ private void updateCurrentColor(double hue, double saturation, double value) {
357366 // TODO: make sure color values are rounded correctly.
358367 // Suspending the web color listener to avoid it tweaking the current color.
359368 webColorCode .textProperty ().removeListener (webColorListener );
360- webColorCode .setText (String .format ("#%02X%02X%02X" , (int ) (newColor .getRed () * 255 + 0.5 ),
361- (int ) (newColor .getGreen () * 255 + 0.5 ), (int ) (newColor .getBlue () * 255 + 0.5 )));
369+ webColorCode .setText (String .format ("#%02X%02X%02X" ,
370+ (int ) (newColor .getRed () * 255 + 0.5 ),
371+ (int ) (newColor .getGreen () * 255 + 0.5 ),
372+ (int ) (newColor .getBlue () * 255 + 0.5 )));
362373 webColorCode .textProperty ().addListener (webColorListener );
363374 }
364375 }
0 commit comments