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