Revision: 5990 http://sourceforge.net/p/jump-pilot/code/5990 Author: ma15569 Date: 2018-11-09 12:48:32 +0000 (Fri, 09 Nov 2018) Log Message: ----------- Added text editor component, to modify a String in a Text component
Added Paths: ----------- core/trunk/src/com/vividsolutions/jump/workbench/ui/TextEditor.java Added: core/trunk/src/com/vividsolutions/jump/workbench/ui/TextEditor.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/ui/TextEditor.java (rev 0) +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/TextEditor.java 2018-11-09 12:48:32 UTC (rev 5990) @@ -0,0 +1,848 @@ +package com.vividsolutions.jump.workbench.ui; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.GraphicsEnvironment; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; +import javax.swing.SwingUtilities; +import javax.swing.border.Border; +import javax.swing.border.EtchedBorder; +import javax.swing.border.TitledBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.JTextComponent; +import javax.swing.text.Position; + +import com.vividsolutions.jump.I18N; +import com.vividsolutions.jump.workbench.ui.images.IconLoader; + +/** + * + * + * /** Modified from + * http://jfontchooser.osdn.jp/site/jfontchooser/project-summary.html MIT/X + * common Licence, Copyright (c) <2004> <Masahiko SAWAI> + * + * - The panel gets Font and Text preview from a selected Text component - + * Preview panel works as text editor. Preview is saved as text - + * + * How it works + * + * <pre> + * TextEditor editor = new JFontChooser(); + * editor.showDialog(Component.getParent(), "Title of this font/editor panel"); + * + * // <Optional, set font, font size, font style and preview text in the TextEditor from a JTextComponent> + * // + * // editor.setSelectedFont(JTextComponent.getFont()); + * // editor.setSelectedFontSize(JTextComponent.getFont().getSize()); + * // editor.setSelectedFontStyle(JTextComponent.getFont().getStyle()); + * // editor.setSelectedFontFamily(JTextComponent.getFont().getFamily()); + * // editor.setSampleTextField(JTextComponent.getText()); + * + * if (editor.wasOKPressed()) { + * Font font = editor.getSelectedFont(); + * System.out.println("Selected Font : " + font); + * + * // <Optional, get modified text String from preview panel> + * // + * // String string = editor.getSampleTextField().getText() + * // System.out.println("Selected modified text: "string); + * + * } else { + * reportNothingToUndoYet(null); + * } + * + * <pre> + * + * + * @author Giuseppe Aruta + * + */ +public class TextEditor extends JComponent { + /** + * + */ + private static final long serialVersionUID = 1L; + // class variables + /** + * Return value from <code>showDialog()</code>. + * + * @see #showDialog + **/ + public static final int OK_OPTION = 0; + /** + * Return value from <code>showDialog()</code>. + * + * @see #showDialog + **/ + public static final int CANCEL_OPTION = 1; + /** + * Return value from <code>showDialog()</code>. + * + * @see #showDialog + **/ + + public static final int ERROR_OPTION = -1; + private static final Font DEFAULT_SELECTED_FONT = new Font("Serif", + Font.PLAIN, 12); + private final static JLabel label = new JLabel(); + // private static final Font DEFAULT_FONT = new Font("Dialog", Font.PLAIN, + // 10); + private static final Font DEFAULT_FONT = new Font( + label.getFont().getName(), Font.PLAIN, label.getFont().getSize()); + private static final int[] FONT_STYLE_CODES = { Font.PLAIN, Font.BOLD, + Font.ITALIC, Font.BOLD | Font.ITALIC }; + private static final String[] DEFAULT_FONT_SIZE_STRINGS = { "8", "9", "10", + "11", "12", "14", "16", "18", "20", "22", "24", "26", "28", "36", + "48", "72", }; + + // instance variables + protected int dialogResultValue = ERROR_OPTION; + + private String[] fontStyleNames = null; + private String[] fontFamilyNames = null; + private String[] fontSizeStrings = null; + private JTextField fontFamilyTextField = null; + private JTextField fontStyleTextField = null; + private JTextField fontSizeTextField = null; + private JList<String> fontNameList = null; + private JList<String> fontStyleList = null; + private JList<String> fontSizeList = null; + private JPanel fontNamePanel = null; + private JPanel fontStylePanel = null; + private JPanel fontSizePanel = null; + private JPanel samplePanel = null; + private JTextField sampleText = null; + + /** + * Constructs a <code>JFontChooser</code> object. + **/ + public TextEditor() { + this(DEFAULT_FONT_SIZE_STRINGS); + } + + /** + * Constructs a <code>JFontChooser</code> object using the given font size + * array. + * + * @param fontSizeStrings + * the array of font size string. + **/ + public TextEditor(String[] fontSizeStrings) { + if (fontSizeStrings == null) { + fontSizeStrings = DEFAULT_FONT_SIZE_STRINGS; + } + this.fontSizeStrings = fontSizeStrings; + + final JPanel selectPanel = new JPanel(); + + selectPanel.setLayout(new BoxLayout(selectPanel, BoxLayout.X_AXIS)); + selectPanel.add(getFontFamilyPanel()); + selectPanel.add(getFontStylePanel()); + selectPanel.add(getFontSizePanel()); + final JPanel contentsPanel = new JPanel(); + contentsPanel.setLayout(new GridLayout(2, 1)); + contentsPanel.add(selectPanel, BorderLayout.NORTH); + + contentsPanel.add(getSamplePanel(), BorderLayout.CENTER); + + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + this.add(contentsPanel); + setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + setSelectedFont(DEFAULT_SELECTED_FONT); + } + + public JTextField getFontFamilyTextField() { + if (fontFamilyTextField == null) { + fontFamilyTextField = new JTextField(); + fontFamilyTextField.setEditable(true); + fontFamilyTextField + .addFocusListener(new TextFieldFocusHandlerForTextSelection( + fontFamilyTextField)); + fontFamilyTextField + .addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown( + getFontFamilyList())); + fontFamilyTextField.getDocument() + .addDocumentListener( + new ListSearchTextFieldDocumentHandler( + getFontFamilyList())); + fontFamilyTextField.setFont(DEFAULT_FONT); + + } + return fontFamilyTextField; + } + + public JTextField getFontStyleTextField() { + if (fontStyleTextField == null) { + fontStyleTextField = new JTextField(); + fontStyleTextField.setEditable(true); + fontStyleTextField + .addFocusListener(new TextFieldFocusHandlerForTextSelection( + fontStyleTextField)); + fontStyleTextField + .addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown( + getFontStyleList())); + fontStyleTextField.getDocument().addDocumentListener( + new ListSearchTextFieldDocumentHandler(getFontStyleList())); + fontStyleTextField.setFont(DEFAULT_FONT); + } + return fontStyleTextField; + } + + public JTextField getFontSizeTextField() { + if (fontSizeTextField == null) { + fontSizeTextField = new JTextField(); + fontSizeTextField + .addFocusListener(new TextFieldFocusHandlerForTextSelection( + fontSizeTextField)); + fontSizeTextField + .addKeyListener(new TextFieldKeyHandlerForListSelectionUpDown( + getFontSizeList())); + fontSizeTextField.getDocument().addDocumentListener( + new ListSearchTextFieldDocumentHandler(getFontSizeList())); + fontSizeTextField.setFont(DEFAULT_FONT); + } + return fontSizeTextField; + } + + public JList<String> getFontFamilyList() { + if (fontNameList == null) { + fontNameList = new JList<String>(getFontFamilies()); + fontNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + fontNameList.addListSelectionListener(new ListSelectionHandler( + getFontFamilyTextField())); + fontNameList.setSelectedIndex(0); + fontNameList.setFont(DEFAULT_FONT); + fontNameList.setFocusable(false); + } + return fontNameList; + } + + public JList<String> getFontStyleList() { + if (fontStyleList == null) { + fontStyleList = new JList<String>(getFontStyleNames()); + fontStyleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + fontStyleList.addListSelectionListener(new ListSelectionHandler( + getFontStyleTextField())); + fontStyleList.setSelectedIndex(0); + fontStyleList.setFont(DEFAULT_FONT); + fontStyleList.setFocusable(false); + } + return fontStyleList; + } + + public JList<String> getFontSizeList() { + if (fontSizeList == null) { + fontSizeList = new JList<String>(fontSizeStrings); + fontSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + fontSizeList.addListSelectionListener(new ListSelectionHandler( + getFontSizeTextField())); + fontSizeList.setSelectedIndex(0); + fontSizeList.setFont(DEFAULT_FONT); + fontSizeList.setFocusable(false); + } + return fontSizeList; + } + + /** + * Get the family name of the selected font. + * + * @return the font family of the selected font. + * + * @see #setSelectedFontFamily + **/ + public String getSelectedFontFamily() { + final String fontName = getFontFamilyList().getSelectedValue(); + return fontName; + } + + /** + * Get the style of the selected font. + * + * @return the style of the selected font. <code>Font.PLAIN</code>, + * <code>Font.BOLD</code>, <code>Font.ITALIC</code>, + * <code>Font.BOLD|Font.ITALIC</code> + * + * @see java.awt.Font#PLAIN + * @see java.awt.Font#BOLD + * @see java.awt.Font#ITALIC + * @see #setSelectedFontStyle + **/ + public int getSelectedFontStyle() { + final int index = getFontStyleList().getSelectedIndex(); + return FONT_STYLE_CODES[index]; + } + + /** + * Get the size of the selected font. + * + * @return the size of the selected font + * + * @see #setSelectedFontSize + **/ + public int getSelectedFontSize() { + int fontSize = 1; + String fontSizeString = getFontSizeTextField().getText(); + while (true) { + try { + fontSize = Integer.parseInt(fontSizeString); + break; + } catch (final NumberFormatException e) { + fontSizeString = getFontSizeList().getSelectedValue(); + getFontSizeTextField().setText(fontSizeString); + } + } + + return fontSize; + } + + /** + * Get the selected font. + * + * @return the selected font + * + * @see #setSelectedFont + * @see java.awt.Font + **/ + public Font getSelectedFont() { + final Font font = new Font(getSelectedFontFamily(), + getSelectedFontStyle(), getSelectedFontSize()); + return font; + } + + /** + * Set the family name of the selected font. + * + * @param name + * the family name of the selected font. + * + * @see getSelectedFontFamily + **/ + public void setSelectedFontFamily(String name) { + final String[] names = getFontFamilies(); + for (int i = 0; i < names.length; i++) { + if (names[i].toLowerCase().equals(name.toLowerCase())) { + getFontFamilyList().setSelectedIndex(i); + break; + } + } + updateSampleFont(); + } + + /** + * Set the style of the selected font. + * + * @param style + * the size of the selected font. <code>Font.PLAIN</code>, + * <code>Font.BOLD</code>, <code>Font.ITALIC</code>, or + * <code>Font.BOLD|Font.ITALIC</code>. + * + * @see java.awt.Font#PLAIN + * @see java.awt.Font#BOLD + * @see java.awt.Font#ITALIC + * @see #getSelectedFontStyle + **/ + public void setSelectedFontStyle(int style) { + for (int i = 0; i < FONT_STYLE_CODES.length; i++) { + if (FONT_STYLE_CODES[i] == style) { + getFontStyleList().setSelectedIndex(i); + break; + } + } + updateSampleFont(); + } + + public void setSampleTextField(String a) { + if (sampleText == null) { + final Border lowered = BorderFactory.createLoweredBevelBorder(); + + sampleText = new JTextField(a); + sampleText.setBorder(lowered); + sampleText.setPreferredSize(new Dimension(300, 60)); + } + getSampleTextField().setText(a); + updateSampleFont(); + } + + /** + * Set the size of the selected font. + * + * @param size + * the size of the selected font + * + * @see #getSelectedFontSize + **/ + public void setSelectedSampleTextField(int size) { + final String sizeString = String.valueOf(size); + for (int i = 0; i < fontSizeStrings.length; i++) { + if (fontSizeStrings[i].equals(sizeString)) { + getFontSizeList().setSelectedIndex(i); + break; + } + } + getSampleTextField().setText(sizeString); + updateSampleFont(); + } + + /** + * Set the size of the selected font. + * + * @param size + * the size of the selected font + * + * @see #getSelectedFontSize + **/ + public void setSelectedFontSize(int size) { + final String sizeString = String.valueOf(size); + for (int i = 0; i < fontSizeStrings.length; i++) { + if (fontSizeStrings[i].equals(sizeString)) { + getFontSizeList().setSelectedIndex(i); + break; + } + } + getFontSizeTextField().setText(sizeString); + updateSampleFont(); + } + + /** + * Set the selected font. + * + * @param font + * the selected font + * + * @see #getSelectedFont + * @see java.awt.Font + **/ + public void setSelectedFont(Font font) { + setSelectedFontFamily(font.getFamily()); + setSelectedFontStyle(font.getStyle()); + setSelectedFontSize(font.getSize()); + } + + public String getVersionString() { + return ("Version"); + } + + final protected OKCancelApplyPanel okCancelApplyPanel = new OKCancelApplyPanel(); + + /** + * Show font selection dialog. + * + * @param parent + * Dialog's Parent component. + * @return OK_OPTION, CANCEL_OPTION or ERROR_OPTION + * + * @see #OK_OPTION + * @see #CANCEL_OPTION + * @see #ERROR_OPTION + **/ + public int showDialog(Component parent, String title) { + dialogResultValue = ERROR_OPTION; + final JDialog dialog = createDialog(parent, title); + dialog.setIconImage(IconLoader.image("oj_16_Kplain2oj.png")); + dialog.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + dialogResultValue = CANCEL_OPTION; + } + }); + okCancelApplyPanel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + if (okCancelApplyPanel.wasApplyPressed()) { + return; + } else { + dialog.dispose(); + return; + } + } + }); + dialog.setVisible(true); + dialog.dispose(); + return dialogResultValue; + } + + public void addOKCancelApplyPanelActionListener( + ActionListener actionListener) { + okCancelApplyPanel.addActionListener(actionListener); + } + + void okCancelApplyPanel_actionPerformed(ActionEvent e) { + if (okCancelApplyPanel.wasApplyPressed()) { + return; + } else if (!okCancelApplyPanel.wasOKPressed()) { + setVisible(false); + return; + } + + } + + public void setApplyVisible(boolean applyVisible) { + okCancelApplyPanel.setApplyVisible(applyVisible); + } + + public void setCancelVisible(boolean cancelVisible) { + okCancelApplyPanel.setCancelVisible(cancelVisible); + } + + public void setOKVisible(boolean okVisible) { + okCancelApplyPanel.setOKVisible(okVisible); + } + + public void setApplyEnabled(boolean applyEnabled) { + okCancelApplyPanel.setApplyEnabled(applyEnabled); + } + + public void setCancelEnabled(boolean cancelEnabled) { + okCancelApplyPanel.setCancelEnabled(cancelEnabled); + } + + public void setOKEnabled(boolean okEnabled) { + okCancelApplyPanel.setOKEnabled(okEnabled); + } + + public boolean wasApplyPressed() { + return okCancelApplyPanel.wasApplyPressed(); + } + + public boolean wasOKPressed() { + return okCancelApplyPanel.wasOKPressed(); + } + + protected class ListSelectionHandler implements ListSelectionListener { + private final JTextComponent textComponent; + + ListSelectionHandler(JTextComponent textComponent) { + this.textComponent = textComponent; + } + + @SuppressWarnings("rawtypes") + @Override + public void valueChanged(ListSelectionEvent e) { + if (e.getValueIsAdjusting() == false) { + final JList list = (JList) e.getSource(); + final String selectedValue = (String) list.getSelectedValue(); + + final String oldValue = textComponent.getText(); + textComponent.setText(selectedValue); + if (!oldValue.equalsIgnoreCase(selectedValue)) { + textComponent.selectAll(); + textComponent.requestFocus(); + } + + updateSampleFont(); + } + } + } + + protected class TextFieldFocusHandlerForTextSelection extends FocusAdapter { + private final JTextComponent textComponent; + + public TextFieldFocusHandlerForTextSelection( + JTextComponent textComponent) { + this.textComponent = textComponent; + } + + @Override + public void focusGained(FocusEvent e) { + textComponent.selectAll(); + } + + @Override + public void focusLost(FocusEvent e) { + textComponent.select(0, 0); + updateSampleFont(); + } + } + + protected class TextFieldKeyHandlerForListSelectionUpDown extends + KeyAdapter { + @SuppressWarnings("rawtypes") + private final JList targetList; + + public TextFieldKeyHandlerForListSelectionUpDown( + @SuppressWarnings("rawtypes") JList list) { + targetList = list; + } + + @Override + public void keyPressed(KeyEvent e) { + int i = targetList.getSelectedIndex(); + switch (e.getKeyCode()) { + case KeyEvent.VK_UP: + i = targetList.getSelectedIndex() - 1; + if (i < 0) { + i = 0; + } + targetList.setSelectedIndex(i); + break; + case KeyEvent.VK_DOWN: + final int listSize = targetList.getModel().getSize(); + i = targetList.getSelectedIndex() + 1; + if (i >= listSize) { + i = listSize - 1; + } + targetList.setSelectedIndex(i); + break; + default: + break; + } + } + } + + protected class ListSearchTextFieldDocumentHandler implements + DocumentListener { + @SuppressWarnings("rawtypes") + JList targetList; + + public ListSearchTextFieldDocumentHandler( + @SuppressWarnings("rawtypes") JList targetList) { + this.targetList = targetList; + } + + @Override + public void insertUpdate(DocumentEvent e) { + update(e); + } + + @Override + public void removeUpdate(DocumentEvent e) { + update(e); + } + + @Override + public void changedUpdate(DocumentEvent e) { + update(e); + } + + private void update(DocumentEvent event) { + String newValue = ""; + try { + final Document doc = event.getDocument(); + newValue = doc.getText(0, doc.getLength()); + } catch (final BadLocationException e) { + e.printStackTrace(); + } + + if (newValue.length() > 0) { + int index = targetList.getNextMatch(newValue, 0, + Position.Bias.Forward); + if (index < 0) { + index = 0; + } + targetList.ensureIndexIsVisible(index); + + final String matchedName = targetList.getModel() + .getElementAt(index).toString(); + if (newValue.equalsIgnoreCase(matchedName)) { + if (index != targetList.getSelectedIndex()) { + SwingUtilities.invokeLater(new ListSelector(index)); + } + } + } + } + + public class ListSelector implements Runnable { + private final int index; + + public ListSelector(int index) { + this.index = index; + } + + @Override + public void run() { + targetList.setSelectedIndex(index); + } + } + } + + protected JDialog createDialog(Component parent, String title) { + final Frame frame = parent instanceof Frame ? (Frame) parent + : (Frame) SwingUtilities + .getAncestorOfClass(Frame.class, parent); + final JDialog dialog = new JDialog(frame, title, true); + + dialog.getContentPane().add(this, BorderLayout.CENTER); + + dialog.getContentPane().add(okCancelApplyPanel, BorderLayout.SOUTH); + dialog.pack(); + dialog.setLocationRelativeTo(frame); + return dialog; + } + + protected void updateSampleFont() { + final Font font = getSelectedFont(); + getSampleTextField().setFont(font); + } + + protected JPanel getFontFamilyPanel() { + if (fontNamePanel == null) { + fontNamePanel = new JPanel(); + fontNamePanel.setLayout(new BorderLayout()); + fontNamePanel + .setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + fontNamePanel.setPreferredSize(new Dimension(180, 130)); + + final JScrollPane scrollPane = new JScrollPane(getFontFamilyList()); + + scrollPane.getVerticalScrollBar().setFocusable(false); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + + final JPanel p = new JPanel(); + p.setLayout(new BorderLayout()); + p.add(getFontFamilyTextField(), BorderLayout.NORTH); + p.add(scrollPane, BorderLayout.CENTER); + + final JLabel label = new JLabel(I18N.get("ui.FontChooser.font")); + label.setHorizontalAlignment(JLabel.LEFT); + label.setHorizontalTextPosition(JLabel.LEFT); + label.setLabelFor(getFontFamilyTextField()); + label.setDisplayedMnemonic('F'); + fontNamePanel.setBorder(new TitledBorder(new EtchedBorder(), " " + + I18N.get("ui.FontChooser.font") + " ")); + fontNamePanel.add(p, BorderLayout.CENTER); + + } + return fontNamePanel; + } + + protected JPanel getFontStylePanel() { + if (fontStylePanel == null) { + fontStylePanel = new JPanel(); + fontStylePanel.setLayout(new BorderLayout()); + fontStylePanel.setBorder(BorderFactory + .createEmptyBorder(5, 5, 5, 5)); + fontStylePanel.setPreferredSize(new Dimension(140, 130)); + + final JScrollPane scrollPane = new JScrollPane(getFontStyleList()); + scrollPane.getVerticalScrollBar().setFocusable(false); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + + final JPanel p = new JPanel(); + p.setLayout(new BorderLayout()); + p.add(getFontStyleTextField(), BorderLayout.NORTH); + p.add(scrollPane, BorderLayout.CENTER); + + final JLabel label = new JLabel(I18N.get("ui.FontChooser.style")); + label.setHorizontalAlignment(JLabel.LEFT); + label.setHorizontalTextPosition(JLabel.LEFT); + label.setLabelFor(getFontStyleTextField()); + label.setDisplayedMnemonic('Y'); + fontStylePanel.setBorder(new TitledBorder(new EtchedBorder(), " " + + I18N.get("ui.FontChooser.style") + " ")); + + fontStylePanel.add(p, BorderLayout.CENTER); + } + return fontStylePanel; + } + + protected JPanel getFontSizePanel() { + if (fontSizePanel == null) { + fontSizePanel = new JPanel(); + fontSizePanel.setLayout(new BorderLayout()); + fontSizePanel.setPreferredSize(new Dimension(120, 130)); + fontSizePanel + .setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + final JScrollPane scrollPane = new JScrollPane(getFontSizeList()); + scrollPane.getVerticalScrollBar().setFocusable(false); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + + final JPanel p = new JPanel(); + p.setLayout(new BorderLayout()); + p.add(getFontSizeTextField(), BorderLayout.NORTH); + p.add(scrollPane, BorderLayout.CENTER); + + final JLabel label = new JLabel( + I18N.get("ui.style.LabelStylePanel.height")); + label.setHorizontalAlignment(JLabel.LEFT); + label.setHorizontalTextPosition(JLabel.LEFT); + label.setLabelFor(getFontSizeTextField()); + label.setDisplayedMnemonic('S'); + fontSizePanel.setBorder(new TitledBorder(new EtchedBorder(), " " + + I18N.get("ui.FontChooser.size") + " ")); + fontSizePanel.add(p, BorderLayout.CENTER); + } + return fontSizePanel; + } + + protected JPanel getSamplePanel() { + if (samplePanel == null) { + samplePanel = new JPanel(); + samplePanel.setLayout(new BorderLayout()); + samplePanel + .setBorder(new TitledBorder( + new EtchedBorder(), + " " + + I18N.get("org.openjump.core.ui.plugin.queries.SimpleQuery.string") + + " ")); + samplePanel.add(getSampleTextField(), BorderLayout.CENTER); + } + return samplePanel; + } + + public JTextField getSampleTextField() { + if (sampleText == null) { + final Border lowered = BorderFactory.createLoweredBevelBorder(); + + sampleText = new JTextField(I18N.get("ui.FontChooser.sampletext")); + sampleText.setBorder(lowered); + sampleText.setPreferredSize(new Dimension(300, 40)); + } + return sampleText; + } + + protected String[] getFontFamilies() { + if (fontFamilyNames == null) { + final GraphicsEnvironment env = GraphicsEnvironment + .getLocalGraphicsEnvironment(); + fontFamilyNames = env.getAvailableFontFamilyNames(); + } + return fontFamilyNames; + } + + protected String[] getFontStyleNames() { + if (fontStyleNames == null) { + int i = 0; + fontStyleNames = new String[4]; + fontStyleNames[i++] = ("Plain"); + fontStyleNames[i++] = ("Bold"); + fontStyleNames[i++] = ("Italic"); + fontStyleNames[i++] = ("BoldItalic"); + } + return fontStyleNames; + } + +} Property changes on: core/trunk/src/com/vividsolutions/jump/workbench/ui/TextEditor.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel