www.pudn.com > tame.rar > TextColorChooser.java


/* (swing1.1beta3) */
package tame.colorchooser;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
@author Nobuo Tamemasa
@version 1.0 11/22/98
*/
public class TextColorChooser extends JColorChooser {

  public TextColorChooser(Color target, Color reference, boolean isForgroundSelection) {
    super(target);
    if (isForgroundSelection) {
      setPreviewPanel(new TextPreviewLabel(target, reference,isForgroundSelection));
    } else {
      setPreviewPanel(new TextPreviewLabel(reference,target, isForgroundSelection));
    }
    updateUI();
  }

  public Color showDialog(Component component, String title) {
    ColorChooserDialog dialog = new ColorChooserDialog(component, title, this);
    dialog.show();
    Color col = dialog.getColor();
    dialog.dispose();
    return col;
  }

}

/**
@author Nobuo Tamemasa
@version 1.0 11/22/98
*/
class TextPreviewLabel extends JLabel {
  private String sampleText = "  Sample Text  Sample Text  ";
  boolean isForgroundSelection;

  public TextPreviewLabel() {
    this(Color.black, Color.white, true);
  }

  public TextPreviewLabel(Color fore, Color back, boolean isForgroundSelection) {
    setOpaque(true);
    setForeground(fore);
    setBackground(back);
    this.isForgroundSelection = isForgroundSelection;
    setText(sampleText);
  }

  public void setForeground(Color col) {
    if (isForgroundSelection) {
      super.setForeground(col);
    } else {
      super.setBackground(col);
    }
  }

}


/**
@author Nobuo Tamemasa
@version 1.0 11/22/98
*/
class ColorChooserDialog extends JDialog {
    private Color initialColor;
    private Color retColor;
    private JColorChooser chooserPane;

    public ColorChooserDialog(Component c, String title,
                          final    JColorChooser chooserPane) {
        super(JOptionPane.getFrameForComponent(c), title, true);
        setResizable(false);

        this.chooserPane = chooserPane;

	String okString = UIManager.getString("ColorChooser.okText");
	String cancelString = UIManager.getString("ColorChooser.cancelText");
	String resetString = UIManager.getString("ColorChooser.resetText");

        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(chooserPane, BorderLayout.CENTER);

        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER));
        JButton okButton = new JButton(okString);
	getRootPane().setDefaultButton(okButton);
        okButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                retColor = chooserPane.getColor();
                setVisible(false);
            }
        });
        buttonPane.add(okButton);

        JButton cancelButton = new JButton(cancelString);
        cancelButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                retColor = null;
                setVisible(false);
            }
        });
        buttonPane.add(cancelButton);

        JButton resetButton = new JButton(resetString);
        resetButton.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               chooserPane.setColor(initialColor);
           }
        });
        buttonPane.add(resetButton);
        contentPane.add(buttonPane, BorderLayout.SOUTH);

        pack();
        setLocationRelativeTo(c);
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            setVisible(false);
          }
        });
    }

  public Color getColor() {
    return retColor;
  }
}