summaryrefslogtreecommitdiff
path: root/accessibility/bridge/org/openoffice/java/accessibility/logging
diff options
context:
space:
mode:
Diffstat (limited to 'accessibility/bridge/org/openoffice/java/accessibility/logging')
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java186
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java61
-rw-r--r--accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java270
3 files changed, 517 insertions, 0 deletions
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java
new file mode 100644
index 000000000000..36bec1cab8fb
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleEventLog.java
@@ -0,0 +1,186 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility.logging;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+/**
+ *
+ */
+public class XAccessibleEventLog implements XAccessibleEventListener {
+
+ private static XAccessibleEventLog theEventListener = null;
+
+ private static java.util.Hashtable proxyList = new java.util.Hashtable();
+
+ /** Creates a new instance of UNOAccessibleEventListener */
+ public XAccessibleEventLog() {
+ }
+
+ private static XAccessibleEventListener get() {
+ if (theEventListener == null) {
+ theEventListener = new XAccessibleEventLog();
+ }
+ return theEventListener;
+ }
+
+ public static void addEventListener(XAccessibleContext xac, java.awt.Component c) {
+ XAccessibleEventBroadcaster broadcaster = (XAccessibleEventBroadcaster)
+ UnoRuntime.queryInterface(XAccessibleEventBroadcaster.class, xac);
+ if (broadcaster != null) {
+ broadcaster.addEventListener(XAccessibleEventLog.get());
+
+ // remember the proxy objects
+ synchronized (proxyList) {
+// proxyList.put(UnoRuntime.generateOid(xac), new WeakReference(c));
+ proxyList.put(UnoRuntime.generateOid(xac), c);
+ }
+ }
+ }
+
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ }
+
+ public void notifyEvent(com.sun.star.accessibility.AccessibleEventObject accessibleEventObject) {
+ switch (accessibleEventObject.EventId) {
+ case AccessibleEventId.ACTIVE_DESCENDANT_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved active descendant event.");
+ break;
+ case AccessibleEventId.STATE_CHANGED:
+ logStateChange(accessibleEventObject.Source,
+ accessibleEventObject.OldValue,
+ accessibleEventObject.NewValue);
+ break;
+ case AccessibleEventId.CHILD:
+ logMessage(accessibleEventObject.Source, "Retrieved children event.");
+ break;
+ case AccessibleEventId.BOUNDRECT_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved boundrect changed event.");
+ break;
+ case AccessibleEventId.VISIBLE_DATA_CHANGED:
+ logMessage(accessibleEventObject.Source, "Retrieved visible data changed event.");
+ break;
+ case AccessibleEventId.INVALIDATE_ALL_CHILDREN:
+ logMessage(accessibleEventObject.Source, "Retrieved invalidate children event.");
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void logStateChange(Object o, Object any1, Object any2) {
+ try {
+ if (AnyConverter.isShort(any1)) {
+ logStateChange(o, AnyConverter.toShort(any1), " is no longer ");
+ }
+
+ if (AnyConverter.isShort(any2)) {
+ logStateChange(o, AnyConverter.toShort(any2), " is now ");
+ }
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ }
+ }
+
+ public void logStateChange(Object o, short n, String s) {
+ switch(n) {
+ case AccessibleStateType.ACTIVE:
+ logMessage(o, s + javax.accessibility.AccessibleState.ACTIVE);
+ break;
+ case AccessibleStateType.ARMED:
+ logMessage(o, s + javax.accessibility.AccessibleState.ARMED);
+ break;
+ case AccessibleStateType.CHECKED:
+ logMessage(o, s + javax.accessibility.AccessibleState.CHECKED);
+ break;
+ case AccessibleStateType.ENABLED:
+ logMessage(o, s + javax.accessibility.AccessibleState.ENABLED);
+ break;
+ case AccessibleStateType.FOCUSED:
+ logMessage(o, s + javax.accessibility.AccessibleState.FOCUSED);
+ break;
+ case AccessibleStateType.PRESSED:
+ logMessage(o, s + javax.accessibility.AccessibleState.PRESSED);
+ break;
+ case AccessibleStateType.SELECTED:
+ logMessage(o, s + javax.accessibility.AccessibleState.SELECTED);
+ break;
+ case AccessibleStateType.SENSITIVE:
+ logMessage(o, s + "sensitive");
+ break;
+ case AccessibleStateType.SHOWING:
+ logMessage(o, s + javax.accessibility.AccessibleState.SHOWING);
+ break;
+ case AccessibleStateType.VISIBLE:
+ logMessage(o, s + javax.accessibility.AccessibleState.VISIBLE);
+ break;
+ default:
+ logMessage(o, s + "??? (FIXME)");
+ break;
+ }
+ }
+
+ protected static void logMessage(Object o, String s) {
+ XAccessibleContext xac = (XAccessibleContext) UnoRuntime.queryInterface(XAccessibleContext.class, o);
+ if( xac != null ) {
+ String oid = UnoRuntime.generateOid(xac);
+ synchronized (proxyList) {
+ logMessage( (javax.accessibility.Accessible) proxyList.get( oid ), s );
+// WeakReference r = (WeakReference) proxyList.get( oid );
+// if(r != null) {
+// System.err.println( "*** Warning *** event is " + r.get() );
+// logMessage( (javax.accessibility.Accessible) r.get(), s );
+// } else {
+// System.err.println( "*** Warning *** event source not found in broadcaster list" );
+// }
+ }
+ } else
+ System.err.println( "*** Warning *** event source does not implement XAccessibleContext" );
+ }
+
+ protected static void logMessage(javax.accessibility.Accessible a, String s) {
+ if (a != null) {
+ logMessage(a.getAccessibleContext(), s);
+ } else {
+ logMessage(s);
+ }
+ }
+
+ protected static void logMessage(javax.accessibility.AccessibleContext ac, String s) {
+ if (ac != null) {
+ logMessage("[" + ac.getAccessibleRole() + "] "
+ + ac.getAccessibleName() + ": " + s);
+ } else {
+ logMessage(s);
+ }
+ }
+
+ protected static void logMessage(String s) {
+ System.err.println(s);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java
new file mode 100644
index 000000000000..f14da6d8280b
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleHypertextLog.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.java.accessibility.logging;
+
+import com.sun.star.accessibility.*;
+import com.sun.star.uno.*;
+
+/** The AccessibleHypertextImpl mapps all calls to the java AccessibleHypertext
+ * interface to the corresponding methods of the UNO XAccessibleHypertext
+ * interface.
+ */
+public class XAccessibleHypertextLog extends XAccessibleTextLog
+ implements com.sun.star.accessibility.XAccessibleHypertext {
+
+ private com.sun.star.accessibility.XAccessibleHypertext unoObject;
+
+ /** Creates a new instance of XAccessibleTextLog */
+ public XAccessibleHypertextLog(XAccessibleHypertext xAccessibleHypertext) {
+ super(xAccessibleHypertext);
+ unoObject = xAccessibleHypertext;
+ }
+
+ public XAccessibleHyperlink getHyperLink(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getHyperLink(param);
+ }
+
+ public int getHyperLinkCount() {
+ return unoObject.getHyperLinkCount();
+ }
+
+ public int getHyperLinkIndex(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getHyperLinkIndex(param);
+ }
+}
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java
new file mode 100644
index 000000000000..4b415ee60c74
--- /dev/null
+++ b/accessibility/bridge/org/openoffice/java/accessibility/logging/XAccessibleTextLog.java
@@ -0,0 +1,270 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package org.openoffice.java.accessibility.logging;
+
+import org.openoffice.java.accessibility.*;
+
+
+/**
+ *
+ */
+public class XAccessibleTextLog
+ implements com.sun.star.accessibility.XAccessibleText {
+ private com.sun.star.accessibility.XAccessibleText unoObject;
+ private String name = "[Unknown] NoName";
+
+ /** Creates a new instance of XAccessibleTextLog */
+ public XAccessibleTextLog(
+ com.sun.star.accessibility.XAccessibleText xAccessibleText) {
+ unoObject = xAccessibleText;
+ setName(xAccessibleText);
+ }
+
+ private void setName(
+ com.sun.star.accessibility.XAccessibleText xAccessibleText) {
+ try {
+ com.sun.star.accessibility.XAccessibleContext unoAccessibleContext = (com.sun.star.accessibility.XAccessibleContext) com.sun.star.uno.UnoRuntime.queryInterface(com.sun.star.accessibility.XAccessibleContext.class,
+ xAccessibleText);
+
+ if (unoAccessibleContext != null) {
+ name = "[" +
+ AccessibleRoleAdapter.getAccessibleRole(unoAccessibleContext.getAccessibleRole()) +
+ "] " + unoAccessibleContext.getAccessibleName() + ": ";
+ }
+ } catch (com.sun.star.uno.RuntimeException e) {
+ }
+ }
+
+ private String getPartString(short s) {
+ String part = "INVALID";
+
+ switch (s) {
+ case com.sun.star.accessibility.AccessibleTextType.CHARACTER:
+ part = "CHARACTER";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.WORD:
+ part = "WORD";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.SENTENCE:
+ part = "SENTENCE";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.LINE:
+ part = "LINE";
+
+ break;
+
+ case com.sun.star.accessibility.AccessibleTextType.ATTRIBUTE_RUN:
+ part = "ATTRIBUTE_RUN";
+
+ break;
+
+ default:
+ break;
+ }
+
+ return part;
+ }
+
+ private String dumpTextSegment(com.sun.star.accessibility.TextSegment ts) {
+ if (ts != null) {
+ return "(" + ts.SegmentStart + "," + ts.SegmentEnd + "," +
+ ts.SegmentText + ")";
+ }
+
+ return "NULL";
+ }
+
+ public boolean copyText(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.copyText(param, param1);
+ }
+
+ public int getCaretPosition() {
+ int pos = unoObject.getCaretPosition();
+ System.err.println(name + "getCaretPosition() returns " + pos);
+
+ return pos;
+ }
+
+ public char getCharacter(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getCharacter(param);
+ }
+
+ public com.sun.star.beans.PropertyValue[] getCharacterAttributes(
+ int param, String[] str)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getCharacterAttributes(param, str);
+ }
+
+ public com.sun.star.awt.Rectangle getCharacterBounds(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ try {
+ com.sun.star.awt.Rectangle r = unoObject.getCharacterBounds(param);
+ System.err.println(name + "getCharacterBounds(" + param +
+ ") returns (" + r.X + "," + r.Y + "," + r.Width + "," +
+ r.Height + ")");
+
+ return r;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ "getCharacterBounds(" + param + ")");
+ throw e;
+ }
+ }
+
+ public int getCharacterCount() {
+ return unoObject.getCharacterCount();
+ }
+
+ public int getIndexAtPoint(com.sun.star.awt.Point point) {
+ try {
+ int index = unoObject.getIndexAtPoint(point);
+ System.err.println(name + "getIndexAtPoint(" + point.X + ", " +
+ point.Y + ") returns " + index);
+
+ return index;
+ } catch (com.sun.star.uno.RuntimeException e) {
+ System.err.println(name +
+ "RuntimeException caught for getIndexAtPoint(" + point.X +
+ ", " + point.Y + ")");
+ System.err.println(e.getMessage());
+ throw e;
+ }
+ }
+
+ public String getSelectedText() {
+ return unoObject.getSelectedText();
+ }
+
+ public int getSelectionEnd() {
+ return unoObject.getSelectionEnd();
+ }
+
+ public int getSelectionStart() {
+ return unoObject.getSelectionStart();
+ }
+
+ public String getText() {
+ return unoObject.getText();
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextAtIndex(int param,
+ short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextAtIndex(param,
+ param1);
+ System.err.println(name + "getTextAtIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextAtIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextAtIndex(" + getPartString(param1) + "," + param + ")");
+ throw e;
+ }
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextBeforeIndex(
+ int param, short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextBeforeIndex(param,
+ param1);
+ System.err.println(name + " getTextBeforeIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextBeforeIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextBeforeIndex(" + getPartString(param1) + "," + param +
+ ")");
+ throw e;
+ }
+ }
+
+ public com.sun.star.accessibility.TextSegment getTextBehindIndex(
+ int param, short param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException,
+ com.sun.star.lang.IllegalArgumentException {
+ try {
+ com.sun.star.accessibility.TextSegment ts = unoObject.getTextBehindIndex(param,
+ param1);
+ System.err.println(name + " getTextBehindIndex(" +
+ getPartString(param1) + "," + param + ") returns " +
+ dumpTextSegment(ts));
+
+ return ts;
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.err.println("IndexOutOufBoundsException caught for " + name +
+ " getTextBehindIndex(" + getPartString(param1) + "," + param1 +
+ ")");
+ throw e;
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ System.err.println("IllegalArgumentException caught for " + name +
+ " getTextBehindIndex(" + getPartString(param1) + "," + param +
+ ")");
+ throw e;
+ }
+ }
+
+ public String getTextRange(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.getTextRange(param, param1);
+ }
+
+ public boolean setCaretPosition(int param)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.setCaretPosition(param);
+ }
+
+ public boolean setSelection(int param, int param1)
+ throws com.sun.star.lang.IndexOutOfBoundsException {
+ return unoObject.setSelection(param, param1);
+ }
+}