aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/javax/swing
diff options
context:
space:
mode:
authormalenkov <none@none>2008-05-07 21:54:03 +0400
committermalenkov <none@none>2008-05-07 21:54:03 +0400
commite18c7a4718a117dffb4b709154e90f11224eb994 (patch)
tree6f413f340d9b218341254b2146c9c0c514c23ca9 /src/share/classes/javax/swing
parent0ad10ae1e6a4c02a605f065e11948cf84ccfedeb (diff)
6348456: BasicColorChooserUI ignores JColorChooser selection model changes
Summary: Some methods are moved from AbstractColorChooserPanel to BasicColorChooserUI Reviewed-by: peterz, alexp
Diffstat (limited to 'src/share/classes/javax/swing')
-rw-r--r--src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java36
-rw-r--r--src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java39
2 files changed, 27 insertions, 48 deletions
diff --git a/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java b/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java
index c01c99290..9fa819ba9 100644
--- a/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java
+++ b/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,9 +26,7 @@
package javax.swing.colorchooser;
import java.awt.*;
-import java.io.Serializable;
import javax.swing.*;
-import javax.swing.event.*;
/**
* This is the abstract superclass for color choosers. If you want to add
@@ -55,17 +53,6 @@ public abstract class AbstractColorChooserPanel extends JPanel {
private JColorChooser chooser;
/**
- *
- */
- private ChangeListener colorListener;
-
- /**
- *
- */
- private boolean dirty = true;
-
-
- /**
* Invoked automatically when the model's state changes.
* It is also called by <code>installChooserPanel</code> to allow
* you to set up the initial state of your chooser.
@@ -157,8 +144,6 @@ public abstract class AbstractColorChooserPanel extends JPanel {
chooser = enclosingChooser;
buildChooser();
updateChooser();
- colorListener = new ModelListener();
- getColorSelectionModel().addChangeListener(colorListener);
}
/**
@@ -166,7 +151,6 @@ public abstract class AbstractColorChooserPanel extends JPanel {
* If override this, be sure to call <code>super</code>.
*/
public void uninstallChooserPanel(JColorChooser enclosingChooser) {
- getColorSelectionModel().removeChangeListener(colorListener);
chooser = null;
}
@@ -192,10 +176,6 @@ public abstract class AbstractColorChooserPanel extends JPanel {
* @param g the <code>Graphics</code> object
*/
public void paint(Graphics g) {
- if (dirty) {
- updateChooser();
- dirty = false;
- }
super.paint(g);
}
@@ -222,18 +202,4 @@ public abstract class AbstractColorChooserPanel extends JPanel {
}
return defaultValue;
}
-
- /**
- *
- */
- class ModelListener implements ChangeListener, Serializable {
- public void stateChanged(ChangeEvent e) {
- if (isShowing()) { // isVisible
- updateChooser();
- dirty = false;
- } else {
- dirty = true;
- }
- }
- }
}
diff --git a/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java b/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java
index 43d28fed0..fd63e7fcb 100644
--- a/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java
+++ b/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,16 +30,12 @@ import javax.swing.colorchooser.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.plaf.*;
-import java.util.*;
import java.awt.*;
-import java.awt.image.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.io.Serializable;
import sun.swing.DefaultLookup;
-import sun.swing.UIAction;
/**
* Provides the basic look and feel for a JColorChooser.
@@ -212,9 +208,24 @@ public class BasicColorChooserUI extends ColorChooserUI
protected void uninstallListeners() {
chooser.removePropertyChangeListener( propertyChangeListener );
chooser.getSelectionModel().removeChangeListener(previewListener);
+ previewListener = null;
previewPanel.removeMouseListener(getHandler());
}
+ private void selectionChanged(ColorSelectionModel model) {
+ if (this.previewPanel != null) {
+ this.previewPanel.setForeground(model.getSelectedColor());
+ this.previewPanel.repaint();
+ }
+ AbstractColorChooserPanel[] panels = this.chooser.getChooserPanels();
+ if (panels != null) {
+ for (AbstractColorChooserPanel panel : panels) {
+ if (panel != null) {
+ panel.updateChooser();
+ }
+ }
+ }
+ }
private class Handler implements ChangeListener, MouseListener,
PropertyChangeListener {
@@ -222,11 +233,7 @@ public class BasicColorChooserUI extends ColorChooserUI
// ChangeListener
//
public void stateChanged(ChangeEvent evt) {
- ColorSelectionModel model = (ColorSelectionModel)evt.getSource();
- if (previewPanel != null) {
- previewPanel.setForeground(model.getSelectedColor());
- previewPanel.repaint();
- }
+ selectionChanged((ColorSelectionModel) evt.getSource());
}
//
@@ -302,13 +309,19 @@ public class BasicColorChooserUI extends ColorChooserUI
newPanels[i].installChooserPanel(chooser);
}
}
-
- if (prop == JColorChooser.PREVIEW_PANEL_PROPERTY) {
+ else if (prop == JColorChooser.PREVIEW_PANEL_PROPERTY) {
if (evt.getNewValue() != previewPanel) {
installPreviewPanel();
}
}
- if (prop == "componentOrientation") {
+ else if (prop == JColorChooser.SELECTION_MODEL_PROPERTY) {
+ ColorSelectionModel oldModel = (ColorSelectionModel) evt.getOldValue();
+ oldModel.removeChangeListener(previewListener);
+ ColorSelectionModel newModel = (ColorSelectionModel) evt.getNewValue();
+ newModel.addChangeListener(previewListener);
+ selectionChanged(newModel);
+ }
+ else if (prop == "componentOrientation") {
ComponentOrientation o =
(ComponentOrientation)evt.getNewValue();
JColorChooser cc = (JColorChooser)evt.getSource();