/* * TitledBorderEditor.java * * Created on 31 ���� 2006 �., 18:07 * */ package datechooser.beans.editor.border.types; import datechooser.beans.editor.border.SimpleBorderEditor; import datechooser.beans.editor.font.SimpleFontEditor; import datechooser.beans.editor.utils.*; import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString; import java.awt.*; import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; /** * Editor for titled borders.<br> * �������� ������ ���� Titled * @author Androsov Vadim * @since 1.0 */ public class TitledBorderEditor extends AbstractBorderEditor implements PropertyChangeListener { private static String SAMPLE_TEXT = getEditorLocaleString("sample"); private String title; private int titleJustification; private int titlePosition; private Font titleFont; private ColorHolder titleColor; private Border titledBorder; private Dimension comboDim = new Dimension(100, 20); private JComboBox comboPos; private JComboBox comboJust; private EditorDialog borderEditorDialog; private EditorDialog fontEditorDialog; public TitledBorderEditor() { initialize(); titleColor = new ColorHolder(); borderEditorDialog = new EditorDialog((Frame)getParent(), new SimpleBorderEditor()); fontEditorDialog = new EditorDialog((Frame)getParent(), new SimpleFontEditor()); setCaption(getEditorLocaleString("Titled")); assignValueToParameters(); setLayout(new BorderLayout()); JPanel pControls = new JPanel(new GridLayout(3, 1)); pControls.add(createCaptionField()); JPanel buttons = getCenteredPane(null); buttons.add(createFontChooseButton()); buttons.add(createBorderChooseButton()); buttons.add(createColorChooseButton()); pControls.add(buttons); JPanel selectors = getCenteredPane(null); selectors.add(createTitlePositionSelector()); selectors.add(createTitleJustifySelector()); pControls.add(selectors); add(pControls, BorderLayout.NORTH); refreshInterface(); } private void setText(String text) { title = text; fireChange(); } private JPanel createCaptionField() { final JTextField field = new JTextField(15); field.setText(SAMPLE_TEXT); field.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { setText(field.getText()); } public void insertUpdate(DocumentEvent e) { setText(field.getText()); } public void removeUpdate(DocumentEvent e) { setText(field.getText()); } }); return getCenteredPane(field); } private JPanel createBorderChooseButton() { JButton bBorder = new JButton(getEditorLocaleString("Border")); bBorder.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Border newBorder = (Border) borderEditorDialog.showDialog(titledBorder, getEditorLocaleString("Select_border")); if (!borderEditorDialog.isCanceled()) { titledBorder = newBorder; fireChange(); } } }); return getCenteredPane(bBorder); } private JPanel createColorChooseButton() { JButton bColor = new JButton(getEditorLocaleString("Color")); ColorChooseAction colorChooseAction = new ColorChooseAction(titleColor, getEditorLocaleString("Title_color"), this); colorChooseAction.addPropertyChangeListener(this); bColor.addActionListener(colorChooseAction); return getCenteredPane(bColor); } private JPanel createTitleJustifySelector() { NamedInt[] data = new NamedInt[] { new NamedInt(getEditorLocaleString("left"), TitledBorder.LEFT), new NamedInt(getEditorLocaleString("center"), TitledBorder.CENTER), new NamedInt(getEditorLocaleString("right"), TitledBorder.RIGHT), new NamedInt(getEditorLocaleString("leading"), TitledBorder.LEADING), new NamedInt(getEditorLocaleString("trailing"), TitledBorder.TRAILING) }; comboJust = new JComboBox(data); comboJust.setPreferredSize(comboDim); setSelectedInt(comboJust, titleJustification); comboJust.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { titleJustification = ((NamedInt)comboJust.getSelectedItem()).getValue(); fireChange(); } }); return getCenteredPane(comboJust); } private JPanel createTitlePositionSelector() { NamedInt[] data = new NamedInt[] { new NamedInt(getEditorLocaleString("above_top"), TitledBorder.ABOVE_TOP), new NamedInt(getEditorLocaleString("top"), TitledBorder.TOP), new NamedInt(getEditorLocaleString("below_top"), TitledBorder.BELOW_TOP), new NamedInt(getEditorLocaleString("above_bottom"), TitledBorder.ABOVE_BOTTOM), new NamedInt(getEditorLocaleString("bottom"), TitledBorder.BOTTOM), new NamedInt(getEditorLocaleString("below_bottom"), TitledBorder.BELOW_BOTTOM)}; comboPos = new JComboBox(data); setSelectedInt(comboPos, titlePosition); comboPos.setPreferredSize(comboDim); comboPos.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { titlePosition = ((NamedInt)comboPos.getSelectedItem()).getValue(); fireChange(); } }); return getCenteredPane(comboPos); } private void setSelectedInt(JComboBox combo, int intValue) { int items = combo.getItemCount(); for (int i = 0; i < items; i++) { if (((NamedInt)combo.getItemAt(i)).getValue() == intValue) { combo.setSelectedIndex(i); break; } } } private JPanel createFontChooseButton() { JButton bFont = new JButton(getEditorLocaleString("Font")); bFont.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Font newFont = (Font) fontEditorDialog.showDialog(titleFont, getEditorLocaleString("Select_font")); if (!fontEditorDialog.isCanceled()) { titleFont = newFont; fireChange(); } } }); return getCenteredPane(bFont); } protected void prepareSelection() { setValue(new TitledBorder(titledBorder, title, titleJustification, titlePosition, titleFont, titleColor.getColor())); } private void assignValueToParameters() { titledBorder = getValue().getBorder(); title = getValue().getTitle(); titleJustification = getValue().getTitleJustification(); titlePosition = getValue().getTitlePosition(); titleFont = getValue().getTitleFont(); titleColor.setColor(getValue().getTitleColor()); } protected TitledBorder getValue() { return (TitledBorder) value; } public void refreshInterface() { assignValueToParameters(); setSelectedInt(comboPos, titlePosition); setSelectedInt(comboJust, titleJustification); } protected Border getDefaultValue() { return new TitledBorder(BorderFactory.createEtchedBorder(), SAMPLE_TEXT); } public void propertyChange(PropertyChangeEvent evt) { if (!ColorChooseAction.COLOR_CHOOSE_EVENT_NAME.equals(evt.getPropertyName())) return; fireChange(); } }