]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/style/FontChooser.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / style / FontChooser.java
index d762947aa84e93bce8fa318aab09881ca8cf536c..85524e2ed9d0299b2e57a652b4c2d467d2d650e6 100644 (file)
-package org.simantics.modeling.ui.actions.style;\r
-\r
-import java.awt.BorderLayout;\r
-import java.awt.Color;\r
-import java.awt.Component;\r
-import java.awt.Dimension;\r
-import java.awt.Font;\r
-import java.awt.GraphicsEnvironment;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-\r
-import javax.swing.BorderFactory;\r
-import javax.swing.JCheckBox;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JLabel;\r
-import javax.swing.JList;\r
-import javax.swing.JPanel;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.ListCellRenderer;\r
-import javax.swing.ListSelectionModel;\r
-import javax.swing.SwingConstants;\r
-import javax.swing.event.ListSelectionEvent;\r
-import javax.swing.event.ListSelectionListener;\r
-\r
-@SuppressWarnings({"rawtypes", "unchecked"})\r
-public class FontChooser extends JPanel {\r
-\r
-    private static final long serialVersionUID = -53650261362110193L;\r
-\r
-    private static Font DEFAULT_FONT = new Font("Arial", Font.PLAIN, 16);\r
-\r
-    private String sampleText;\r
-    private JLabel text;\r
-\r
-    private JList fontList;\r
-    private JComboBox sizeComboBox;\r
-    private JCheckBox boldCheckBox;\r
-    private JCheckBox italicCheckBox;\r
-\r
-    private String fonts[];\r
-\r
-    private Font originalFont;\r
-    private Font font;\r
-\r
-    public FontChooser(String sampleText) {\r
-        super();\r
-\r
-        this.sampleText = sampleText;\r
-        JPanel textPanel = new JPanel();\r
-        text = new JLabel(sampleText, SwingConstants.CENTER);\r
-        text.setVerticalAlignment(SwingConstants.CENTER);\r
-        this.setLayout(new BorderLayout());\r
-        textPanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));\r
-        textPanel.add(text);\r
-        textPanel.setMinimumSize(new Dimension(100, 100));\r
-        textPanel.setPreferredSize(new Dimension(200, 100));\r
-        this.add(textPanel,BorderLayout.NORTH);\r
-\r
-        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();\r
-        String[] ff = ge.getAvailableFontFamilyNames();\r
-        fonts = new String[ff.length + 1];\r
-        fonts[0] = "-- keep current font --";\r
-        System.arraycopy(ff, 0, fonts, 1, ff.length);\r
-\r
-        fontList = new JList(fonts);\r
-        fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-        fontList.setLayoutOrientation(JList.VERTICAL);\r
-        fontList.setVisibleRowCount(-1);\r
-\r
-        fontList.addListSelectionListener(new ListSelectionListener() {\r
-\r
-            @Override\r
-            public void valueChanged(ListSelectionEvent e) {\r
-                if (!e.getValueIsAdjusting()) {\r
-                    int index = fontList.getSelectedIndex();\r
-                    if (index != -1) {\r
-                        selectFont(index);\r
-                    }\r
-                }\r
-            }\r
-        });\r
-\r
-        fontList.setCellRenderer(new FontListRenderer());\r
-\r
-\r
-        JScrollPane listScrollPane = new JScrollPane(fontList);\r
-        listScrollPane.setPreferredSize(new Dimension(400, 200));\r
-        this.add(listScrollPane, BorderLayout.CENTER);\r
-\r
-        JPanel controlPanel = new JPanel();\r
-        this.add(controlPanel,BorderLayout.SOUTH);\r
-\r
-        ActionListener listener = new ActionListener() {\r
-            @Override\r
-            public void actionPerformed(ActionEvent e) {\r
-                selectFont(fontList.getSelectedIndex());\r
-            }\r
-        };\r
-\r
-        // FIXME: hack\r
-        Integer[] sizes = {4, 6, 7, 8, 9, 10, 11, 12, 14, 18, 20, 22, 24, 36, 40, 48, 56, 64, 72, 144};\r
-        sizeComboBox = new JComboBox(sizes);\r
-        sizeComboBox.addActionListener(listener);\r
-        sizeComboBox.setSelectedIndex(7);\r
-        controlPanel.add(new JLabel("Size: "));\r
-        controlPanel.add(sizeComboBox);\r
-\r
-        boldCheckBox = new JCheckBox("Bold");\r
-        boldCheckBox.addActionListener(listener);\r
-        controlPanel.add(boldCheckBox);\r
-\r
-        italicCheckBox = new JCheckBox("Italic");\r
-        italicCheckBox.addActionListener(listener);\r
-        controlPanel.add(italicCheckBox);\r
-\r
-        fontList.setSelectedIndex(0);\r
-    }\r
-\r
-    private void selectFont(int index) {\r
-        if (index < 0)\r
-            return;\r
-        String name = fonts[index];\r
-        Integer size = (Integer)sizeComboBox.getSelectedItem();\r
-        int style = Font.PLAIN; // plain == 0\r
-        if (boldCheckBox.isSelected())\r
-            style = style | Font.BOLD;\r
-        if (italicCheckBox.isSelected())\r
-            style = style | Font.ITALIC;\r
-        Font original = originalFont != null ? originalFont : DEFAULT_FONT;\r
-        // Index 0 is reserved for keeping the original font (family)\r
-        Font f = index == 0 ? original.deriveFont(style, size) : new Font(name, style, size);\r
-        font = !f.equals(original) ? f : null;\r
-        text.setText(sampleText);\r
-        text.setFont(f);\r
-    }\r
-\r
-    public Font getFont() {\r
-        return font;\r
-    }\r
-\r
-    public void setCurrentFont(Font font) {\r
-        int index = -1;\r
-        for (int i = 0; i < fonts.length; i++) {\r
-            if (fonts[i].equals(font.getFamily())) {\r
-                index = i;\r
-                break;\r
-            }\r
-        }\r
-        if (index == -1)\r
-            return;\r
-        fontList.setSelectedIndex(index);\r
-        fontList.scrollRectToVisible(fontList.getCellBounds(index, index));\r
-        boldCheckBox.setSelected((font.getStyle() & Font.BOLD) > 0);\r
-        italicCheckBox.setSelected((font.getStyle() & Font.ITALIC) > 0);\r
-        sizeComboBox.setSelectedItem(font.getSize());\r
-        this.originalFont = font;\r
-        selectFont(index);\r
-    }\r
-\r
-    public class FontListRenderer extends JLabel implements ListCellRenderer {\r
-\r
-        private static final long serialVersionUID = 1237633327794383545L;\r
-\r
-        public FontListRenderer() {\r
-            setOpaque(true);\r
-            setHorizontalAlignment(LEFT);\r
-            setVerticalAlignment(CENTER);\r
-        };\r
-\r
-        @Override\r
-        public Component getListCellRendererComponent(JList list, Object value,\r
-                int index, boolean isSelected, boolean cellHasFocus) {\r
-            if (isSelected) {\r
-                setBackground(list.getSelectionBackground());\r
-                setForeground(list.getSelectionForeground());\r
-            } else {\r
-                setBackground(list.getBackground());\r
-                setForeground(list.getForeground());\r
-            }\r
-\r
-            String text = (String) value;\r
-            setText(text);\r
-\r
-            // Not really that helpful when one can't even read the name of\r
-            // some fonts with the sample text. Also keeps the list visually cleaner.\r
-            // Thus removed.\r
-            //setFont(index > 0 ? new Font(text,Font.PLAIN,16) : DEFAULT_FONT);\r
-\r
-            return this;\r
-        }\r
-    }\r
-}\r
+package org.simantics.modeling.ui.actions.style;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GraphicsEnvironment;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingConstants;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class FontChooser extends JPanel {
+
+    private static final long serialVersionUID = -53650261362110193L;
+
+    private static Font DEFAULT_FONT = new Font("Arial", Font.PLAIN, 16);
+
+    private String sampleText;
+    private JLabel text;
+
+    private JList fontList;
+    private JComboBox sizeComboBox;
+    private JCheckBox boldCheckBox;
+    private JCheckBox italicCheckBox;
+
+    private String fonts[];
+
+    private Font originalFont;
+    private Font font;
+
+    public FontChooser(String sampleText) {
+        super();
+
+        this.sampleText = sampleText;
+        JPanel textPanel = new JPanel();
+        text = new JLabel(sampleText, SwingConstants.CENTER);
+        text.setVerticalAlignment(SwingConstants.CENTER);
+        this.setLayout(new BorderLayout());
+        textPanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));
+        textPanel.add(text);
+        textPanel.setMinimumSize(new Dimension(100, 100));
+        textPanel.setPreferredSize(new Dimension(200, 100));
+        this.add(textPanel,BorderLayout.NORTH);
+
+        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        String[] ff = ge.getAvailableFontFamilyNames();
+        fonts = new String[ff.length + 1];
+        fonts[0] = "-- keep current font --";
+        System.arraycopy(ff, 0, fonts, 1, ff.length);
+
+        fontList = new JList(fonts);
+        fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        fontList.setLayoutOrientation(JList.VERTICAL);
+        fontList.setVisibleRowCount(-1);
+
+        fontList.addListSelectionListener(new ListSelectionListener() {
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                if (!e.getValueIsAdjusting()) {
+                    int index = fontList.getSelectedIndex();
+                    if (index != -1) {
+                        selectFont(index);
+                    }
+                }
+            }
+        });
+
+        fontList.setCellRenderer(new FontListRenderer());
+
+
+        JScrollPane listScrollPane = new JScrollPane(fontList);
+        listScrollPane.setPreferredSize(new Dimension(400, 200));
+        this.add(listScrollPane, BorderLayout.CENTER);
+
+        JPanel controlPanel = new JPanel();
+        this.add(controlPanel,BorderLayout.SOUTH);
+
+        ActionListener listener = new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                selectFont(fontList.getSelectedIndex());
+            }
+        };
+
+        // FIXME: hack
+        Integer[] sizes = {4, 6, 7, 8, 9, 10, 11, 12, 14, 18, 20, 22, 24, 36, 40, 48, 56, 64, 72, 144};
+        sizeComboBox = new JComboBox(sizes);
+        sizeComboBox.addActionListener(listener);
+        sizeComboBox.setSelectedIndex(7);
+        controlPanel.add(new JLabel("Size: "));
+        controlPanel.add(sizeComboBox);
+
+        boldCheckBox = new JCheckBox("Bold");
+        boldCheckBox.addActionListener(listener);
+        controlPanel.add(boldCheckBox);
+
+        italicCheckBox = new JCheckBox("Italic");
+        italicCheckBox.addActionListener(listener);
+        controlPanel.add(italicCheckBox);
+
+        fontList.setSelectedIndex(0);
+    }
+
+    private void selectFont(int index) {
+        if (index < 0)
+            return;
+        String name = fonts[index];
+        Integer size = (Integer)sizeComboBox.getSelectedItem();
+        int style = Font.PLAIN; // plain == 0
+        if (boldCheckBox.isSelected())
+            style = style | Font.BOLD;
+        if (italicCheckBox.isSelected())
+            style = style | Font.ITALIC;
+        Font original = originalFont != null ? originalFont : DEFAULT_FONT;
+        // Index 0 is reserved for keeping the original font (family)
+        Font f = index == 0 ? original.deriveFont(style, size) : new Font(name, style, size);
+        font = !f.equals(original) ? f : null;
+        text.setText(sampleText);
+        text.setFont(f);
+    }
+
+    public Font getFont() {
+        return font;
+    }
+
+    public void setCurrentFont(Font font) {
+        int index = -1;
+        for (int i = 0; i < fonts.length; i++) {
+            if (fonts[i].equals(font.getFamily())) {
+                index = i;
+                break;
+            }
+        }
+        if (index == -1)
+            return;
+        fontList.setSelectedIndex(index);
+        fontList.scrollRectToVisible(fontList.getCellBounds(index, index));
+        boldCheckBox.setSelected((font.getStyle() & Font.BOLD) > 0);
+        italicCheckBox.setSelected((font.getStyle() & Font.ITALIC) > 0);
+        sizeComboBox.setSelectedItem(font.getSize());
+        this.originalFont = font;
+        selectFont(index);
+    }
+
+    public class FontListRenderer extends JLabel implements ListCellRenderer {
+
+        private static final long serialVersionUID = 1237633327794383545L;
+
+        public FontListRenderer() {
+            setOpaque(true);
+            setHorizontalAlignment(LEFT);
+            setVerticalAlignment(CENTER);
+        };
+
+        @Override
+        public Component getListCellRendererComponent(JList list, Object value,
+                int index, boolean isSelected, boolean cellHasFocus) {
+            if (isSelected) {
+                setBackground(list.getSelectionBackground());
+                setForeground(list.getSelectionForeground());
+            } else {
+                setBackground(list.getBackground());
+                setForeground(list.getForeground());
+            }
+
+            String text = (String) value;
+            setText(text);
+
+            // Not really that helpful when one can't even read the name of
+            // some fonts with the sample text. Also keeps the list visually cleaner.
+            // Thus removed.
+            //setFont(index > 0 ? new Font(text,Font.PLAIN,16) : DEFAULT_FONT);
+
+            return this;
+        }
+    }
+}