summaryrefslogtreecommitdiff
path: root/examples/gnu/classpath/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples/gnu/classpath/examples')
-rw-r--r--examples/gnu/classpath/examples/swing/Demo.java94
-rw-r--r--examples/gnu/classpath/examples/swing/HtmlDemo.java53
-rw-r--r--examples/gnu/classpath/examples/swing/TabbedPaneDemo.java145
-rw-r--r--examples/gnu/classpath/examples/swing/TreeDemo.java35
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);
}