/*
* InsetsPanel.java
*
* Created on 31 ���� 2006 �., 22:11
*
*/
package datechooser.beans.editor.utils;
import java.awt.*;
import java.beans.PropertyChangeListener;
import javax.swing.*;
import javax.swing.event.*;
import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString;
/**
* Panel for insets editing.<br>
* ������ ��� �������������� ������� (insets).
* @author Androsov Vadim
* @since 1.0
*/
public class InsetsPanel extends JPanel {
private static int MIN_VALUE = 1;
private static int MAX_VALUE = 50;
public static final String INSETS_EVENT_NAME = "insets";
private Insets insets;
private SpinnerNumberModel left;
private SpinnerNumberModel top;
private SpinnerNumberModel right;
private SpinnerNumberModel bottom;
private boolean autoEditing;
public InsetsPanel(Insets insets) {
setAutoEditing(false);
this.insets = insets;
OnChange onChange = new OnChange();
left = new SpinnerNumberModel(getInsets().left, MIN_VALUE, MAX_VALUE, 1);
left.addChangeListener(onChange);
top = new SpinnerNumberModel(getInsets().top, MIN_VALUE, MAX_VALUE, 1);
top.addChangeListener(onChange);
right = new SpinnerNumberModel(getInsets().right, MIN_VALUE, MAX_VALUE, 1);
right.addChangeListener(onChange);
bottom = new SpinnerNumberModel(getInsets().bottom, MIN_VALUE, MAX_VALUE, 1);
bottom.addChangeListener(onChange);
setLayout(new GridLayout(3, 3));
// foo top foo
// left foo right
// foo bottom foo
add(getFoo());
add(new SpinPane(top, getEditorLocaleString("top")));
add(getFoo());
add(new SpinPane(left, getEditorLocaleString("left")));
add(getFoo());
add(new SpinPane(right, getEditorLocaleString("right")));
add(getFoo());
add(new SpinPane(bottom, getEditorLocaleString("bottom")));
add(getFoo());
}
private Component getFoo() {
return new JPanel();
}
public Insets getInsets() {
return insets;
}
class OnChange implements ChangeListener {
public void stateChanged(ChangeEvent e) {
if (isAutoEditing()) return;
insets.set(top.getNumber().intValue(), left.getNumber().intValue(),
bottom.getNumber().intValue(), right.getNumber().intValue());
firePropertyChange(INSETS_EVENT_NAME, null, null);
}
}
public void setInsets(Insets insets) {
this.insets = insets;
refresh();
}
public void refresh() {
setAutoEditing(true);
left.setValue(new Integer(insets.left));
right.setValue(new Integer(insets.right));
top.setValue(new Integer(insets.top));
bottom.setValue(new Integer(insets.bottom));
setAutoEditing(false);
}
public boolean isAutoEditing() {
return autoEditing;
}
public void setAutoEditing(boolean autoEditing) {
this.autoEditing = autoEditing;
}
}