/*
* LineBorderEditor.java
*
* Created on 31 ���� 2006 �., 18:05
*
*/
package datechooser.beans.editor.border.types;
import datechooser.beans.editor.utils.*;
import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString;
import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
/**
* Editor for line borders.<br>
* �������� ������ ���� Line
* @author Androsov Vadim
* @since 1.0
*/
public class LineBorderEditor extends AbstractBorderEditor implements PropertyChangeListener {
private static int MIN_THICK = 1;
private static int MAX_THICK = 20;
private ColorHolder color;
private int thickness;
private boolean roundedCorners;
private JCheckBox rounded;
private SpinnerNumberModel thickModel;
public LineBorderEditor() {
initialize();
color = new ColorHolder();
setCaption(getEditorLocaleString("Line"));
assignValueToParameters();
rounded = new JCheckBox(getEditorLocaleString("Rounded_corners"));
rounded.setSelected(roundedCorners);
rounded.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
roundedCorners = rounded.isSelected();
fireChange();
}
});
thickModel = new SpinnerNumberModel(thickness, MIN_THICK, MAX_THICK, 1);
SpinPane thickPane = new SpinPane(thickModel, getEditorLocaleString("Thickness"));
thickModel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
thickness = thickModel.getNumber().intValue();
fireChange();
}
});
JButton bColor = new JButton(getEditorLocaleString("Color"));
ColorChooseAction colorChooseAction = new ColorChooseAction(color,
getEditorLocaleString("Color"), this);
colorChooseAction.addPropertyChangeListener(this);
bColor.addActionListener(colorChooseAction);
setLayout(new BorderLayout());
JPanel pane = new JPanel(new GridLayout(1, 2));
pane.add(getCenteredPane(rounded));
pane.add(getCenteredPane(thickPane));
JPanel paneTotal = new JPanel(new GridLayout(2, 1));
paneTotal.add(pane);
paneTotal.add(getCenteredPane(bColor));
add(paneTotal, BorderLayout.NORTH);
refreshInterface();
}
protected void prepareSelection() {
setValue(new LineBorder(color.getColor(), thickness, roundedCorners));
}
private void assignValueToParameters() {
color.setColor(getValue().getLineColor());
thickness = getValue().getThickness();
roundedCorners = getValue().getRoundedCorners();
}
protected LineBorder getValue() {
return (LineBorder) value;
}
public void refreshInterface() {
assignValueToParameters();
rounded.setSelected(roundedCorners);
thickModel.setValue(new Integer(thickness));
}
protected Border getDefaultValue() {
return new LineBorder(Color.BLACK);
}
public void propertyChange(PropertyChangeEvent evt) {
if (!ColorChooseAction.COLOR_CHOOSE_EVENT_NAME.equals(evt.getPropertyName())) return;
fireChange();
}
}