diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/gnu/classpath/examples/swing/Demo.java | 94 | ||||
-rw-r--r-- | examples/gnu/classpath/examples/swing/HtmlDemo.java | 53 | ||||
-rw-r--r-- | examples/gnu/classpath/examples/swing/TabbedPaneDemo.java | 145 | ||||
-rw-r--r-- | examples/gnu/classpath/examples/swing/TreeDemo.java | 35 |
4 files changed, 209 insertions, 118 deletions
diff --git a/examples/gnu/classpath/examples/swing/Demo.java b/examples/gnu/classpath/examples/swing/Demo.java index 19bc27c1d..6570cdbad 100644 --- a/examples/gnu/classpath/examples/swing/Demo.java +++ b/examples/gnu/classpath/examples/swing/Demo.java @@ -28,7 +28,6 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; -import javax.swing.tree.*; import javax.swing.plaf.basic.BasicLookAndFeel; import javax.swing.plaf.metal.DefaultMetalTheme; @@ -161,6 +160,8 @@ public class Demo NavigationFilterDemo.createDemoFactory()))); examples.add(new JMenuItem(new PopupAction("JNI Overhead", JNIOverhead.createDemoFactory()))); + examples.add(new JMenuItem(new PopupAction("HTML Demo", + HtmlDemo.createDemoFactory()))); final JMenuItem vmMenu; @@ -294,21 +295,6 @@ public class Demo return bar; } - private static String valign2str(int a) - { - switch (a) - { - case SwingConstants.CENTER: - return "Center"; - case SwingConstants.TOP: - return "Top"; - case SwingConstants.BOTTOM: - return "Bottom"; - default: - return "Unknown"; - } - } - static String halign2str(int a) { switch (a) @@ -354,17 +340,6 @@ public class Demo return mkButton(null, i, -1, -1, -1, -1); } - - private static JScrollPane mkScrollPane(JComponent inner) - { - JScrollPane jsp; - jsp = new JScrollPane(inner, - JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - - return jsp; - } - public Demo() { frame = new JFrame("Swing Activity Board"); @@ -376,10 +351,7 @@ public class Demo JPanel main = new JPanel(); main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS)); desktop = createDesktop(); - - // Put the desktop in a scrollpane. The scrollbars may show then - // up when the them or LaF is changed. - main.add(new JScrollPane(desktop)); + main.add(desktop); main.add(mkButtonBar()); component.add(main, BorderLayout.CENTER); frame.pack(); @@ -391,7 +363,7 @@ public class Demo { public void run() { - Demo demo = new Demo(); + new Demo(); } } @@ -407,16 +379,6 @@ public class Demo return b; } - private static JPanel mkPanel(JComponent[] inners) - { - JPanel p = new JPanel(); - for (int i = 0; i < inners.length; ++i) - { - p.add(inners[i]); - } - return p; - } - static JButton mkDisposerButton(final JFrame c) { JButton close = mkBigButton("Close"); @@ -479,52 +441,6 @@ public class Demo } } - /** - * Create the tree. - * - * @return thr scroll pane, containing the tree. - */ - private static JComponent mkTree() - { - DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root node"); - - addChildren("Node", root, 12); - - JTree tree = new JTree(root); - tree.setLargeModel(true); - DefaultTreeSelectionModel dtsm = new DefaultTreeSelectionModel(); - dtsm.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION); - tree.setSelectionModel(dtsm); - - // Make it editable. - tree.setEditable(true); - - JComponent t = mkScrollPane(tree); - t.setPreferredSize(new Dimension(200,200)); - return t; - } - - /** - * Add the specified number of children to this parent node. For each - * child, the method is called recursively adding the nChildren-3 number of - * grandchildren. - * - * @param parent the parent node - * @param nChildren the number of children - */ - private static void addChildren(String name, DefaultMutableTreeNode parent, - int nChildren) - { - for (int i = 0; i < nChildren; i++) - { - String child_name = parent+"."+i; - DefaultMutableTreeNode child = new DefaultMutableTreeNode - (child_name); - parent.add(child); - addChildren(child_name, child, nChildren-3); - } - } - private JPanel mkButtonBar() { JPanel panel = new JPanel(new GridLayout(3, 1, 5, 5)); @@ -558,6 +474,8 @@ public class Demo MetalThemeEditor.createDemoFactory()))); panel.add(new JButton(new PopupAction("JNI Overhead", JNIOverhead.createDemoFactory()))); + panel.add(new JButton(new PopupAction("HTML", + HtmlDemo.createDemoFactory()))); JButton exitDisposer = mkDisposerButton(frame); panel.add(exitDisposer); diff --git a/examples/gnu/classpath/examples/swing/HtmlDemo.java b/examples/gnu/classpath/examples/swing/HtmlDemo.java index 223ee07cd..d31d8cc9d 100644 --- a/examples/gnu/classpath/examples/swing/HtmlDemo.java +++ b/examples/gnu/classpath/examples/swing/HtmlDemo.java @@ -52,6 +52,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextPane; import javax.swing.SwingUtilities; +import javax.swing.text.AbstractDocument; import javax.swing.text.Element; import javax.swing.text.html.HTMLDocument; @@ -62,16 +63,48 @@ import javax.swing.text.html.HTMLDocument; */ public class HtmlDemo extends JPanel { - + + /** + * Setting this to true causes the parsed element structure to be dumped. + */ + private static final boolean DEBUG = true; + JTextPane html = new JTextPane(); - JTextArea text = new JTextArea("<html><body>" + - "123456789HR!<hr>987654321"+ - "123456789BR!<br>987654321"+ - "<p id='insertHere'>Insertion target</p><p>"+ - "<font color=red>ma</font>"+ - "<sup>sup</sup>normal<sub>sub</sub>normal</p><p>Table:"+ - "<table><tr>a<td>b<td>c<tr>x<td>y<td>z</table></body></html>"); + JTextArea text = new JTextArea("<html><body>\n" + + + "<h1>H1 Headline</h1>\n" + + "<h2>H2 Headline</h2>\n" + + "<h3>H3 Headline</h3>\n" + + "<h4>H4 Headline</h3>\n" + + "<h5>H5 Headline</h5>\n" + + "<h6>H6 Headline</h6>\n" + + "<h1>CSS colors via font tag</h1>\n" + + "<p>" + + "<font color=\"maroon\">maroon</font>\n" + + "<font color=\"red\">red</font>\n" + + "<font color=\"orange\">orange</font>\n" + + "<font color=\"yellow\">yellow</font>\n" + + "<font color=\"olive\">olive</font>\n" + + "<font color=\"purple\">purlpe</font>\n" + + "<font color=\"fuchsia\">fuchsia</font>\n" + + "<font color=\"white\">white</font>\n" + + "<font color=\"lime\">lime</font>\n" + + "<font color=\"green\">green</font>\n" + + "<font color=\"navy\">navy</font>\n" + + "<font color=\"blue\">blue</font>\n" + + "<font color=\"aqua\">aqua</font>\n" + + "<font color=\"teal\">teal</font>\n" + + "<font color=\"black\">black</font>\n" + + "<font color=\"silver\">silver</font>\n" + + "<font color=\"gray\">gray</font>\n" + + "</p>" + + "<h1>Some HTML formatting tags</h1>\n" + + "<p>Normal <b>Bold</b> <i>Italic</i> <b><i>Bold + Italic</i></b></p>\n" + + "<p><big>Big</big> <em>Emphasized</em> <small>Small</small>\n" + + "<strike>Strike</strike> <strong>Strong</strong> <u>Underline</u></p>\n" + + "<p>Normal vs <sup>Superscript</sup> vs <sub>Subscript</sub> text</p>\n" + + "</body></html>\n"); JPanel buttons; @@ -111,7 +144,9 @@ public class HtmlDemo extends JPanel String t = text.getText(); System.out.println("HtmlDemo.java.createContent:Parsing started"); html.setText(t); - System.out.println("HtmlDemo.java.createContent:Parsing completed"); + System.out.println("HtmlDemo.java.createContent:Parsing completed"); + if (DEBUG) + ((AbstractDocument) html.getDocument()).dump(System.out); } }); diff --git a/examples/gnu/classpath/examples/swing/TabbedPaneDemo.java b/examples/gnu/classpath/examples/swing/TabbedPaneDemo.java index 527fe455e..bd0e6bf15 100644 --- a/examples/gnu/classpath/examples/swing/TabbedPaneDemo.java +++ b/examples/gnu/classpath/examples/swing/TabbedPaneDemo.java @@ -39,15 +39,24 @@ exception statement from your version. */ package gnu.classpath.examples.swing; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; import javax.swing.JTabbedPane; +import javax.swing.JTextArea; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; @@ -55,6 +64,10 @@ public class TabbedPaneDemo extends JPanel implements ActionListener { + static Color[] colors = { Color.BLUE, Color.CYAN, Color.GRAY, Color.GREEN, + Color.MAGENTA, Color.ORANGE, Color.PINK, + Color.ORANGE, Color.RED, Color.BLUE, Color.YELLOW + }; TabbedPaneDemo() { super(); @@ -64,25 +77,123 @@ public class TabbedPaneDemo private void createContent() { JPanel p = new JPanel(); - p.setLayout(new GridLayout(2, 2)); - JTabbedPane tabs1 = new JTabbedPane(SwingConstants.TOP); - tabs1.add("Top Item 1", new JButton("Content: Top Item 1")); - tabs1.add("Top Item 2", new JButton("Content: Top Item 2")); - JTabbedPane tabs2 = new JTabbedPane(SwingConstants.LEFT); - tabs2.add("Left Item 1", new JButton("Content: Left Item 1")); - tabs2.add("Left Item 2", new JButton("Content: Left Item 2")); - JTabbedPane tabs3 = new JTabbedPane(SwingConstants.BOTTOM); - tabs3.add("Bottom Item 1", new JButton("Content: Bottom Item 1")); - tabs3.add("Bottom Item 2", new JButton("Content: Bottom Item 2")); - JTabbedPane tabs4 = new JTabbedPane(SwingConstants.RIGHT); - tabs4.add("Right Item 1", new JButton("Content: Right Item 1")); - tabs4.add("Right Item 2", new JButton("Content: Right Item 2")); - p.add(tabs1); - p.add(tabs2); - p.add(tabs3); - p.add(tabs4); + p.setLayout(new GridLayout(1, 1)); + + int COUNT = 25; + JTabbedPane tp = createTabbedPane(SwingConstants.TOP, "tab", COUNT); + p.add(tp); + + final JPopupMenu popup = new JPopupMenu(); + + JMenu menu = new JMenu("tab placement"); + menu.add(createPlacementChangingMenuItem("top", + SwingConstants.TOP, + tp)); + + menu.add(createPlacementChangingMenuItem("bottom", + SwingConstants.BOTTOM, + tp)); + + menu.add(createPlacementChangingMenuItem("left", + SwingConstants.LEFT, + tp)); + + menu.add(createPlacementChangingMenuItem("right", + SwingConstants.RIGHT, + tp)); + popup.add(menu); + + menu = new JMenu("tab layout"); + menu.add(createLayoutPolicyChangingMenuItem("wrapping tabs", + JTabbedPane.WRAP_TAB_LAYOUT, + tp)); + + menu.add(createLayoutPolicyChangingMenuItem("scrolling tabs", + JTabbedPane.SCROLL_TAB_LAYOUT, + tp)); + popup.add(menu); + + tp.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent e) { + showPopup(e); + } + + public void mouseReleased(MouseEvent e) { + showPopup(e); + } + + void showPopup(MouseEvent e) { + if (e.isPopupTrigger()) { + popup.show(e.getComponent(), e.getX(), e.getY()); + } + } + }); + setLayout(new BorderLayout()); add(p, BorderLayout.CENTER); + + } + + private JMenuItem createPlacementChangingMenuItem(String t, + final int v, + final JTabbedPane dst) + { + JMenuItem item = new JMenuItem(t); + + item.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + dst.setTabPlacement(v); + } + }); + + return item; + } + + private JMenuItem createLayoutPolicyChangingMenuItem(String t, + final int v, + final JTabbedPane dst) + { + JMenuItem item = new JMenuItem(t); + + item.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + dst.setTabLayoutPolicy(v); + } + }); + + return item; + } + + private JTabbedPane createTabbedPane(int direction, String name, int count) + { + JTabbedPane pane = new JTabbedPane(direction); + + for(int i = 0; i< count; i++) + { + pane.addTab(name + " " + i, createTabContent(name + " " + i)); + if (Math.random() >= 0.75) + pane.setEnabledAt(i, false); + } + + return pane; + } + + private JPanel createTabContent(String name) + { + JTextArea ta; + JPanel panel = new JPanel(); + panel.add(new JLabel(name)); + panel.add(new JButton(name)); + panel.add(new JScrollPane(ta = new JTextArea(5, 5))); + + ta.setBackground(colors[(int) (Math.random() * colors.length)]); + + return panel; } public void actionPerformed(ActionEvent e) diff --git a/examples/gnu/classpath/examples/swing/TreeDemo.java b/examples/gnu/classpath/examples/swing/TreeDemo.java index 32f765f73..8da375071 100644 --- a/examples/gnu/classpath/examples/swing/TreeDemo.java +++ b/examples/gnu/classpath/examples/swing/TreeDemo.java @@ -39,17 +39,17 @@ exception statement from your version. */ package gnu.classpath.examples.swing; import java.awt.BorderLayout; -import java.awt.JobAttributes.DefaultSelectionType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.DebugGraphics; +import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.SwingUtilities; @@ -59,7 +59,6 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; public class TreeDemo extends JPanel @@ -222,11 +221,39 @@ public class TreeDemo p2.add(add); p2.add(cbSingle); p2.add(cbRoot); - + tree.getSelectionModel(). setSelectionMode(DefaultTreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); + // Panel for selecting line style. + ActionListener l = new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + JRadioButton b = (JRadioButton) e.getSource(); + tree.putClientProperty("JTree.lineStyle", b.getText()); + tree.repaint(); + } + }; + JPanel lineStylePanel = new JPanel(); + ButtonGroup buttons = new ButtonGroup(); + lineStylePanel.add(new JLabel("Line style: ")); + JRadioButton none = new JRadioButton("None"); + lineStylePanel.add(none); + buttons.add(none); + none.addActionListener(l); + JRadioButton angled = new JRadioButton("Angled"); + lineStylePanel.add(angled); + buttons.add(angled); + angled.addActionListener(l); + JRadioButton horizontal = new JRadioButton("Horizontal"); + lineStylePanel.add(horizontal); + buttons.add(horizontal); + horizontal.addActionListener(l); + p2.add(lineStylePanel); + add(p2, BorderLayout.NORTH); + add(new JScrollPane(tree), BorderLayout.CENTER); add(choice, BorderLayout.SOUTH); } |