/*
* BevelBorderEditor.java
*
* Created on 31 ���� 2006 �., 18:04
*
*/
package datechooser.beans.editor.border.types;
import datechooser.beans.editor.utils.ColorChooseAction;
import datechooser.beans.editor.utils.ColorHolder;
import datechooser.beans.editor.utils.RiseLowPanel;
import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.*;
import javax.swing.border.*;
/**
* Editor for bevel borders.<br>
* ���������� �������� ��� bevel ������.
* @author Androsov Vadim
* @since 1.0
*/
public abstract class AbstractBevelBorderEditor
extends AbstractBorderEditor implements PropertyChangeListener {
protected int bevelType;
protected ColorHolder highlightOuter;
protected ColorHolder highlightInner;
protected ColorHolder shadowOuter;
protected ColorHolder shadowInner;
private RiseLowPanel selType;
private JButton bHighOut;
private JButton bHighIn;
private JButton bShadowOut;
private JButton bShadowIn;
protected abstract Border getBorderByParams();
public AbstractBevelBorderEditor() {
highlightInner = new ColorHolder();
highlightOuter = new ColorHolder();
shadowInner = new ColorHolder();
shadowOuter = new ColorHolder();
initialize();
selType = new RiseLowPanel(bevelType,
BevelBorder.RAISED, BevelBorder.LOWERED);
selType.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bevelType = selType.getType();
fireChange();
}
});
bHighIn = new JButton(getEditorLocaleString("Highlight_innner"));
ColorChooseAction colorChooseAction = new ColorChooseAction(highlightInner,
getEditorLocaleString("Highlight_innner"), this);
colorChooseAction.addPropertyChangeListener(this);
bHighIn.addActionListener(colorChooseAction);
bHighOut = new JButton(getEditorLocaleString("Highlight_outher"));
colorChooseAction = new ColorChooseAction(highlightOuter,
getEditorLocaleString("Highlight_outher"), this);
colorChooseAction.addPropertyChangeListener(this);
bHighOut.addActionListener(colorChooseAction);
bShadowIn = new JButton(getEditorLocaleString("Shadow_innner"));
colorChooseAction = new ColorChooseAction(shadowInner,
getEditorLocaleString("Shadow_innner"), this);
bShadowIn.addActionListener(colorChooseAction);
bShadowOut = new JButton(getEditorLocaleString("Shadow_outher"));
colorChooseAction = new ColorChooseAction(shadowOuter,
getEditorLocaleString("Shadow_outher"), this);
bShadowOut.addActionListener(colorChooseAction);
setLayout(new BorderLayout());
JPanel confPane = new JPanel(new BorderLayout());
confPane.add(selType, BorderLayout.NORTH);
JPanel buttonPane = new JPanel(new GridLayout(2, 2));
buttonPane.add(getCenteredPane(bHighIn));
buttonPane.add(getCenteredPane(bHighOut));
buttonPane.add(getCenteredPane(bShadowIn));
buttonPane.add(getCenteredPane(bShadowOut));
confPane.add(buttonPane, BorderLayout.SOUTH);
add(confPane, BorderLayout.NORTH);
refreshInterface();
}
public void propertyChange(PropertyChangeEvent evt) {
if (!ColorChooseAction.COLOR_CHOOSE_EVENT_NAME.equals(evt.getPropertyName())) return;
firePropertyChange(BORDER_EVENT_NAME, null, null);
}
public void prepareSelection() {
setValue(getBorderByParams());
}
private void assignValueToParameters() {
bevelType = getValue().getBevelType();
highlightOuter.setColor(getValue().getHighlightOuterColor());
highlightInner.setColor(getValue().getHighlightInnerColor());
shadowOuter.setColor(getValue().getShadowOuterColor());
shadowInner.setColor(getValue().getShadowInnerColor());
}
protected BevelBorder getValue() {
return (BevelBorder) value;
}
public void refreshInterface() {
assignValueToParameters();
selType.setType(bevelType);
}
}