xref: /AOO41X/main/toolkit/test/accessibility/ov/TextView.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 package ov;
2 
3 import java.awt.Color;
4 import java.awt.GridBagConstraints;
5 import java.awt.GridBagLayout;
6 import java.awt.event.ActionListener;
7 import java.awt.event.ActionEvent;
8 
9 import javax.swing.JButton;
10 import javax.swing.JLabel;
11 
12 import com.sun.star.accessibility.AccessibleEventId;
13 import com.sun.star.accessibility.AccessibleEventObject;
14 import com.sun.star.accessibility.AccessibleStateType;
15 import com.sun.star.accessibility.XAccessibleText;
16 import com.sun.star.accessibility.XAccessibleContext;
17 import com.sun.star.accessibility.XAccessibleStateSet;
18 import com.sun.star.uno.UnoRuntime;
19 
20 public class TextView
21     extends ListeningObjectView
22 {
23     /** Create a TextView when the given object supports the
24         XAccessibleText interface.
25     */
26     static public ObjectView Create (
27         ObjectViewContainer aContainer,
28         XAccessibleContext xContext)
29     {
30         XAccessibleText xText = (XAccessibleText)UnoRuntime.queryInterface(
31                 XAccessibleText.class, xContext);
32         if (xText != null)
33             return new TextView (aContainer);
34         else
35             return null;
36     }
37 
38 
39     public TextView (ObjectViewContainer aContainer)
40     {
41         super (aContainer);
42 
43         setLayout (new GridBagLayout());
44         GridBagConstraints aConstraints = new GridBagConstraints ();
45 
46         JLabel aLabel = new JLabel ("Text:");
47         aConstraints.gridy = 0;
48         aConstraints.weightx = 1;
49         aConstraints.fill = GridBagConstraints.HORIZONTAL;
50         add (aLabel, aConstraints);
51 
52         maTextLabel = new JLabel ("");
53         aConstraints.gridx = 1;
54         aConstraints.fill = GridBagConstraints.NONE;
55         aConstraints.anchor = GridBagConstraints.WEST;
56         add (maTextLabel, aConstraints);
57 
58         aLabel = new JLabel ("Caret position:");
59         aConstraints.gridx = 0;
60         aConstraints.gridy = 1;
61         aConstraints.weightx = 1;
62         aConstraints.fill = GridBagConstraints.HORIZONTAL;
63         add (aLabel, aConstraints);
64 
65         maCaretPositionLabel = new JLabel ("");
66         aConstraints.gridx = 1;
67         aConstraints.fill = GridBagConstraints.NONE;
68         aConstraints.anchor = GridBagConstraints.WEST;
69         add (maCaretPositionLabel, aConstraints);
70     }
71 
72 
73     /** Additionally to the context store a reference to the
74         XAccessibleText interface.
75     */
76     public void SetObject (XAccessibleContext xObject)
77     {
78         mxText = (XAccessibleText)UnoRuntime.queryInterface(
79             XAccessibleText.class, xObject);
80         super.SetObject (xObject);
81     }
82 
83     synchronized public void Destroy ()
84     {
85         super.Destroy();
86     }
87 
88     synchronized public void Update ()
89     {
90         if (mxText == null)
91         {
92             maTextLabel.setText ("<null object>");
93             maCaretPositionLabel.setText ("<null object>");
94         }
95         else
96         {
97             maTextLabel.setText (mxText.getText());
98             maCaretPositionLabel.setText (Integer.toString(mxText.getCaretPosition()));
99         }
100     }
101 
102     public String GetTitle ()
103     {
104         return ("Text");
105     }
106 
107     public void notifyEvent (AccessibleEventObject aEvent)
108     {
109         System.out.println (aEvent);
110         switch (aEvent.EventId)
111         {
112             case AccessibleEventId.TEXT_CHANGED :
113             case AccessibleEventId.CARET_CHANGED :
114                 Update ();
115                 break;
116         }
117     }
118 
119     private JLabel
120         maTextLabel,
121         maCaretPositionLabel;
122     private XAccessibleText mxText;
123 }
124