package ov; import java.util.Vector; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JOptionPane; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JToggleButton; import javax.swing.ListSelectionModel; import com.sun.star.accessibility.AccessibleEventId; import com.sun.star.accessibility.AccessibleEventObject; import com.sun.star.accessibility.AccessibleStateType; import com.sun.star.accessibility.XAccessible; import com.sun.star.accessibility.XAccessibleContext; import com.sun.star.accessibility.XAccessibleSelection; import com.sun.star.accessibility.XAccessibleStateSet; import com.sun.star.uno.UnoRuntime; import com.sun.star.lang.IndexOutOfBoundsException; /** Display a list of children and select/deselect buttons */ class SelectionView extends ListeningObjectView implements ActionListener { static public ObjectView Create ( ObjectViewContainer aContainer, XAccessibleContext xContext) { XAccessibleSelection xSelection = (XAccessibleSelection)UnoRuntime.queryInterface( XAccessibleSelection.class, xContext); if (xSelection != null) return new SelectionView(aContainer); else return null; } public SelectionView (ObjectViewContainer aContainer) { super (aContainer); Layout(); } public String GetTitle () { return "Selection"; } /** Create and arrange the widgets for this view. */ private void Layout () { setLayout (new GridBagLayout()); GridBagConstraints aConstraints = new GridBagConstraints(); // Label that shows wheter the selection is multi selectable. aConstraints.gridx = 0; aConstraints.gridy = 0; aConstraints.anchor = GridBagConstraints.WEST; maTypeLabel = new JLabel (); add (maTypeLabel, aConstraints); // the JListBox maChildrenSelector = new JPanel (); maChildrenSelector.setPreferredSize (new Dimension (100,100)); maChildrenSelector.setLayout (new BoxLayout (maChildrenSelector, BoxLayout.Y_AXIS)); aConstraints.gridx = 0; aConstraints.gridwidth = 4; aConstraints.gridy = 1; aConstraints.fill = GridBagConstraints.HORIZONTAL; add (new JScrollPane (maChildrenSelector, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), aConstraints); JButton aButton; aButton = new JButton( "Select all" ); aButton.setActionCommand( "Select all" ); aButton.addActionListener( this ); aConstraints.gridx = 0; aConstraints.gridwidth = 1; aConstraints.gridy = 2; aConstraints.fill = GridBagConstraints.NONE; aConstraints.anchor = GridBagConstraints.WEST; add (aButton, aConstraints); aButton = new JButton( "Clear Selection" ); aButton.setActionCommand( "Clear Selection" ); aButton.addActionListener( this ); aConstraints.gridx = 1; aConstraints.gridy = 2; aConstraints.weightx = 1; add (aButton, aConstraints); setSize (getPreferredSize()); } public void SetObject (XAccessibleContext xContext) { mxSelection = (XAccessibleSelection)UnoRuntime.queryInterface( XAccessibleSelection.class, xContext); super.SetObject (xContext); } public void Update () { maChildrenSelector.removeAll (); // Determine whether multi selection is possible. XAccessibleStateSet aStateSet = mxContext.getAccessibleStateSet(); boolean bMultiSelectable = false; ButtonGroup aButtonGroup = null; if (aStateSet!=null && aStateSet.contains(AccessibleStateType.MULTI_SELECTABLE)) { bMultiSelectable = true; maTypeLabel.setText ("multi selectable"); } else { maTypeLabel.setText ("single selectable"); aButtonGroup = new ButtonGroup (); } int nCount = mxContext.getAccessibleChildCount(); for (int i=0; i