/*
* Created on 17.12.2004
*
*/
/*
This file is part of BORG.
BORG is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
BORG is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with BORG; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Copyright 2003 by Mike Berger
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
/**
* GUI control to easy choose foreground or background color.
* Indicates color to be stored by its own foreground or background.
*
* @author bsv
*
*/
public class JButtonKnowsBgColor extends JButton {
// colorProperty is ONE color, but can be indicated by fore or back color
protected Color colorProperty;
// bg=true means "choosed color is background color"
// bg=false means "choosed color is foreground color"
protected boolean bg;
public JButtonKnowsBgColor( String p_text, Color p_color, boolean p_bg ){
setText( p_text );
setColorProperty( p_color );
setBg( p_bg );
setColorByProperty();
addActionListener(new ModalListener());
}
public void setColorByProperty(){
if( isBg() ){
setBackground( getColorProperty() );
} else {
setForeground( getColorProperty() );
}
}
// for testing purposes only
public static void main(String[] args) {
JButtonKnowsBgColor jbkbc = new JButtonKnowsBgColor( "choose back", Color.RED, true );
JButtonKnowsBgColor jbkbc1 = new JButtonKnowsBgColor( "choose fore", Color.BLUE, false );
JFrame jf = new JFrame();
jf.setLayout( new BorderLayout() );
jf.getContentPane().add( jbkbc, BorderLayout.NORTH );
jf.getContentPane().add( jbkbc1, BorderLayout.CENTER );
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize( 100, 200 );
jf.setVisible(true);
}
/**
* @return Returns the color.
*/
public Color getColorProperty() {
return colorProperty;
}
/**
* @param color The color to set.
*/
public void setColorProperty(Color color) {
this.colorProperty = color;
}
/**
* @return Returns the bg.
*/
protected boolean isBg() {
return bg;
}
/**
* @param bg The bg to set.
*/
protected void setBg(boolean bg) {
this.bg = bg;
}
private class ModalListener implements ActionListener{
public void actionPerformed(ActionEvent event){
Color selected = JColorChooser.showDialog(
null,
isBg()?"Set background":"Set foreground",
getColorProperty());
setColorProperty(selected);
setColorByProperty();
}
}
}