diff options
author | Andre Fischer <af@openoffice.org> | 2003-03-13 16:14:28 +0000 |
---|---|---|
committer | Andre Fischer <af@openoffice.org> | 2003-03-13 16:14:28 +0000 |
commit | 556fa073dd173e663474fb02c93bbd50abcc25ae (patch) | |
tree | e2fdc9457fc7e4633fb23be7d5598a3f0f3161e9 /toolkit/test/accessibility/AccessibilityTree.java | |
parent | 0a20d897ff8a2374f5015061c7219063eb5cd947 (diff) |
Major restructuring.
Diffstat (limited to 'toolkit/test/accessibility/AccessibilityTree.java')
-rwxr-xr-x | toolkit/test/accessibility/AccessibilityTree.java | 215 |
1 files changed, 13 insertions, 202 deletions
diff --git a/toolkit/test/accessibility/AccessibilityTree.java b/toolkit/test/accessibility/AccessibilityTree.java index 518a039483fc..7af9c6f024da 100755 --- a/toolkit/test/accessibility/AccessibilityTree.java +++ b/toolkit/test/accessibility/AccessibilityTree.java @@ -1,19 +1,4 @@ -import drafts.com.sun.star.accessibility.XAccessible; -import drafts.com.sun.star.accessibility.XAccessibleContext; -import drafts.com.sun.star.accessibility.XAccessibleComponent; -import drafts.com.sun.star.accessibility.XAccessibleExtendedComponent; -import drafts.com.sun.star.accessibility.XAccessibleAction; -import drafts.com.sun.star.accessibility.XAccessibleImage; -import drafts.com.sun.star.accessibility.XAccessibleRelationSet; -import drafts.com.sun.star.accessibility.XAccessibleStateSet; -import drafts.com.sun.star.accessibility.XAccessibleText; -import drafts.com.sun.star.accessibility.XAccessibleEditableText; -import drafts.com.sun.star.accessibility.AccessibleTextType; -import drafts.com.sun.star.accessibility.XAccessibleEventListener; -import drafts.com.sun.star.accessibility.XAccessibleEventBroadcaster; -import drafts.com.sun.star.accessibility.AccessibleEventObject; -import drafts.com.sun.star.accessibility.AccessibleEventId; - +import drafts.com.sun.star.accessibility.*; import com.sun.star.lang.XServiceInfo; import com.sun.star.lang.IndexOutOfBoundsException; import com.sun.star.uno.UnoRuntime; @@ -25,10 +10,6 @@ import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; -// JDK 1.4. -// import java.util.regex.Pattern; -// import java.util.regex.Matcher; - /** This class is a start to collect the handling of a JTree and a DefaultTreeModel. @@ -41,18 +22,11 @@ public class AccessibilityTree for displaying messages and the specified canvas to draw the graphical representations of accessible objects on. */ - public AccessibilityTree ( - MessageInterface aMessageDisplay, - Print aPrinter) + public AccessibilityTree () { - maMessageDisplay = aMessageDisplay; - maPrinter = aPrinter; - AccessibilityTreeModel aModel = new AccessibilityTreeModel ( - new StringNode ("Please press Update button", null), - aMessageDisplay, - aPrinter); + new StringNode ("Please press Update button", null)); setModel (aModel); maCellRenderer = new AccessibleTreeCellRenderer(); @@ -77,7 +51,6 @@ public class AccessibilityTree if (mnExpandLevel == 0) { setCursor (new Cursor (Cursor.WAIT_CURSOR)); - message ("expanding node "); } mnExpandLevel += 1; } @@ -85,7 +58,6 @@ public class AccessibilityTree { if (mnExpandLevel == 0) { - message ("collapsing node "); setCursor (new Cursor (Cursor.WAIT_CURSOR)); } mnExpandLevel += 1; @@ -95,7 +67,6 @@ public class AccessibilityTree mnExpandLevel -= 1; if (mnExpandLevel == 0) { - message (""); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); } } @@ -104,7 +75,6 @@ public class AccessibilityTree mnExpandLevel -= 1; if (mnExpandLevel == 0) { - message (""); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); } } @@ -152,7 +122,6 @@ public class AccessibilityTree { if (mnExpandLevel == 0) { - message ("Expanding tree"); setEnabled (false); } mnExpandLevel += 1; @@ -173,7 +142,6 @@ public class AccessibilityTree { setEnabled (true); ((AccessibilityTreeModel)getModel()).unlock (aNode); - message (""); } } @@ -246,17 +214,21 @@ public class AccessibilityTree - protected void message (String message) - { - maMessageDisplay.message (message); - } - public void disposing (com.sun.star.lang.EventObject e) { System.out.println ("disposing " + e); } + public Dimension getPreferredSize () + { + Dimension aPreferredSize = super.getPreferredSize(); + Dimension aMinimumSize = super.getMinimumSize(); + if (aPreferredSize.width < aMinimumSize.width) + aPreferredSize.width = aMinimumSize.width; + return aPreferredSize; + } + class MouseListener extends MouseAdapter { @@ -375,172 +347,11 @@ public class AccessibilityTree } - /** listen to tree model changes in order to update XAccessibleText objects - */ - class TextUpdateListener implements TreeModelListener - { - public void treeNodesChanged(TreeModelEvent e) - { - // if the change is to the first child of a DefaultMutableTreeNode - // with an XAccessibleText child, then we call updateText - int[] aIndices = e.getChildIndices(); - if( (aIndices != null) && - (aIndices.length > 0) ) - { - // we have a parent... lets check for XAccessibleText then - DefaultMutableTreeNode aParent = (DefaultMutableTreeNode) - (e.getTreePath().getLastPathComponent()); - DefaultMutableTreeNode aNode = (DefaultMutableTreeNode) - (aParent.getChildAt(aIndices[0])); - if( aParent.getUserObject() instanceof XAccessibleText) - { - // aha! we have an xText. So we can now check for - // the various cases we support - XAccessibleText xText = - (XAccessibleText)aParent.getUserObject(); - - if( aIndices[0] == 0 ) - { - // first child! Then we call updateText - updateText( xText, aNode.toString() ); - } - else - { -// JDK 1.4: -// // check for pattern "Selection:" -// Matcher m = Pattern.compile( -// "selection: \\[(-?[0-9]+),(-?[0-9]+)\\] \".*" ). -// matcher( aNode.toString() ); -// if( m.matches() ) -// { -// try -// { -// // aha! Selection: -// setSelection( xText, -// Integer.parseInt(m.group(1)), -// Integer.parseInt(m.group(2)) ); -// } -// catch( NumberFormatException f ) -// { -// // ignore -// } -// } - } - } - } - } - // don't care: - public void treeNodesInserted(TreeModelEvent e) { ; } - public void treeNodesRemoved(TreeModelEvent e) { ; } - public void treeStructureChanged(TreeModelEvent e) { ; } - - /** update the text */ - boolean updateText( XAccessibleText xText, String sNew ) - { - // is this text editable? if not, fudge you and return - XAccessibleEditableText xEdit = - (XAccessibleEditableText) UnoRuntime.queryInterface ( - XAccessibleEditableText.class, xText); - if (xEdit == null) - return false; - - String sOld = xText.getText(); - - // false alarm? Early out if no change was done! - if( sOld.equals( sNew ) ) - return false; - - // get the minimum length of both strings - int nMinLength = sOld.length(); - if( sNew.length() < nMinLength ) - nMinLength = sNew.length(); - - // count equal characters from front and end - int nFront = 0; - while( (nFront < nMinLength) && - (sNew.charAt(nFront) == sOld.charAt(nFront)) ) - nFront++; - int nBack = 0; - while( (nBack < nMinLength) && - ( sNew.charAt(sNew.length()-nBack-1) == - sOld.charAt(sOld.length()-nBack-1) ) ) - nBack++; - if( nFront + nBack > nMinLength ) - nBack = nMinLength - nFront; - - // so... the first nFront and the last nBack characters - // are the same. Change the others! - String sDel = sOld.substring( nFront, sOld.length() - nBack ); - String sIns = sNew.substring( nFront, sNew.length() - nBack ); - - System.out.println("edit text: " + - sOld.substring(0, nFront) + - " [ " + sDel + " -> " + sIns + " ] " + - sOld.substring(sOld.length() - nBack) ); - - boolean bRet = false; - try - { - // edit the text, and use - // (set|insert|delete|replace)Text as needed - if( nFront+nBack == 0 ) - bRet = xEdit.setText( sIns ); - else if( sDel.length() == 0 ) - bRet = xEdit.insertText( sIns, nFront ); - else if( sIns.length() == 0 ) - bRet = xEdit.deleteText( nFront, sOld.length()-nBack ); - else - bRet = xEdit.replaceText(nFront, sOld.length()-nBack,sIns); - } - catch( IndexOutOfBoundsException e ) - { - bRet = false; - } - - return bRet; - } - - boolean setSelection( XAccessibleText xText, int p1, int p2 ) - { - try - { - return xText.setSelection( p1, p2 ); - } - catch( com.sun.star.lang.IndexOutOfBoundsException f ) - { - return false; - } - } - -// /** replace the given node with a new xText node */ -// void updateNode( XAccessibleText xText, -// DefaultMutableTreeNode aNode ) -// { -// // create a new node -// DefaultMutableTreeNode aNew = newTextTreeNode( xText ); -// -// // get parent (must be DefaultMutableTreeNode) -// DefaultMutableTreeNode aParent = -// (DefaultMutableTreeNode)aNode.getParent(); -// if( aParent != null ) -// { -// // remove old sub-tree, and insert new one -// int nIndex = aParent.getIndex( aNode ); -// aParent.remove( nIndex ); -// aParent.insert( aNew, nIndex ); -// } -// } - } - - - protected MessageInterface - maMessageDisplay; - protected Print - maPrinter; protected AccessibleTreeCellRenderer maCellRenderer; + private Canvas maCanvas; private boolean |