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