#100467# initial release

This commit is contained in:
Oliver Braun 2002-08-08 13:12:46 +00:00
parent 1768b6cf61
commit 64832d007e
5 changed files with 871 additions and 0 deletions

View file

@ -0,0 +1,274 @@
/*************************************************************************
*
* $RCSfile: AccessBridge.java,v $
*
* $Revision: 1.1 $
*
* last change: $Author: obr $ $Date: 2002-08-08 14:10:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
package org.openoffice.accessibility;
import com.sun.star.awt.XTopWindow;
import com.sun.star.awt.XWindow;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.registry.*;
import com.sun.star.uno.*;
import com.sun.star.comp.loader.FactoryHelper;
import org.openoffice.accessibility.internal.*;
import drafts.com.sun.star.accessibility.XAccessible;
import drafts.com.sun.star.accessibility.bridge.XAccessibleTopWindowMap;
import javax.accessibility.Accessible;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
public class AccessBridge {
static private final boolean DEBUG = true;
static public class _AccessBridge implements XAccessibleTopWindowMap {
static private final String _serviceName = "drafts.com.sun.star.accessibility.bridge.AccessBridge";
private XMultiServiceFactory _xMultiServiceFactory;
private java.util.Hashtable frameMap = null;
private Method registerVirtualFrame = null;
private Method revokeVirtualFrame = null;
public _AccessBridge(XMultiServiceFactory xMultiServiceFactory) {
_xMultiServiceFactory = xMultiServiceFactory;
frameMap = new java.util.Hashtable();
// On Windows all native frames must be registered to the access bridge. Therefor
// the bridge exports two methods that we try to find here.
String os = (String) System.getProperty("os.name");
if(os.startsWith("Windows")) {
try {
Class bridge = Class.forName("com.sun.java.accessibility.AccessBridge");
Class[] parameterTypes = { javax.accessibility.Accessible.class, Integer.class };
if(bridge != null) {
registerVirtualFrame = bridge.getMethod("registerVirtualFrame", parameterTypes);
revokeVirtualFrame = bridge.getMethod("revokeVirtualFrame", parameterTypes);
}
}
catch(NoSuchMethodException e) {
System.err.println("ERROR: incompatible AccessBridge found: " + e.getMessage());
// Forward this exception to UNO to indicate that the service will not work correctly.
throw new com.sun.star.uno.RuntimeException("incompatible AccessBridge class: " + e.getMessage());
}
catch(java.lang.SecurityException e) {
System.err.println("ERROR: no access to AccessBridge: " + e.getMessage());
// Forward this exception to UNO to indicate that the service will not work correctly.
throw new com.sun.star.uno.RuntimeException("Security exception caught: " + e.getMessage());
}
catch(ClassNotFoundException e) {
// This is quite normal on
}
}
}
/*
* XAccessibleNativeFrameMap
*/
public void registerAccessibleNativeFrame(Object any, XAccessible xAccessible, XTopWindow xTopWindow ){
try {
Integer handle = new Integer(AnyConverter.toInt(any));
// Add the window fake object as top window listener to receive activate/deactivate events
WindowFake w = new WindowFake(xAccessible);
xTopWindow.addTopWindowListener(w);
if(DEBUG)
System.out.println( "register native frame: " + handle );
// Remember the accessible object associated to this frame
synchronized(frameMap) {
frameMap.put(handle, w);
}
// If running on Windows, register this frame to the access bridge
if(registerVirtualFrame != null) {
Object[] args = { w, handle};
try {
registerVirtualFrame.invoke(null, args);
}
catch(IllegalAccessException e) {
System.err.println("IllegalAccessException caught: " + e.getMessage());
}
catch(IllegalArgumentException e) {
System.err.println("IllegalArgumentException caught: " + e.getMessage());
}
catch(InvocationTargetException e) {
System.err.println("InvokationTargetException caught: " + e.getMessage());
}
}
}
catch(com.sun.star.lang.IllegalArgumentException exception) {
System.err.println("IllegalArgumentException caught: " + exception.getMessage());
}
}
public void revokeAccessibleNativeFrame(Object any) {
try {
Integer handle = new Integer(AnyConverter.toInt(any));
WindowFake w;
// Remember the accessible object associated to this frame
synchronized(frameMap) {
w = (WindowFake) frameMap.remove(handle);
}
if(w != null) {
if(DEBUG)
System.out.println( "revoke native frame: " + handle );
// If running on Windows, register this frame to the access bridge
if(revokeVirtualFrame != null) {
Object[] args = { w, handle };
try {
revokeVirtualFrame.invoke(null, args);
}
catch(IllegalAccessException e) {
System.err.println("IllegalAccessException caught: " + e.getMessage());
}
catch(IllegalArgumentException e) {
System.err.println("IllegalArgumentException caught: " + e.getMessage());
}
catch(InvocationTargetException e) {
System.err.println("InvokationTargetException caught: " + e.getMessage());
}
}
}
}
catch(com.sun.star.lang.IllegalArgumentException exception) {
System.err.println("IllegalArgumentException caught: " + exception.getMessage());
}
}
}
public static XSingleServiceFactory __getServiceFactory(String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) {
XSingleServiceFactory xSingleServiceFactory = null;
if (implName.equals(AccessBridge.class.getName()) ) {
// Initialize toolkit to register at Java <-> Windows access bridge
java.awt.Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
if(DEBUG) {
try {
java.io.PrintStream log = new java.io.PrintStream( new java.io.FileOutputStream( "AccessBridge.log" ) );
System.setOut( log );
System.setErr( log );
}
catch(java.io.FileNotFoundException e) {
}
}
try {
XInterface instance = (XInterface) multiFactory.createInstance("org.openoffice.accessibility.internal.RemoteAccessBridge");
if(instance != null) {
WindowFake.infoProvider = (XAccessibilityInformationProvider)
UnoRuntime.queryInterface(XAccessibilityInformationProvider.class, instance);
if(WindowFake.infoProvider == null) {
System.err.println("InfoProvider does not implement XAccessibleInformationProvider.");
}
} else {
System.err.println("InfoProvider service not found.");
}
}
catch (com.sun.star.uno.Exception e) {
System.err.println(e.getMessage());
}
xSingleServiceFactory = FactoryHelper.getServiceFactory(_AccessBridge.class, _AccessBridge._serviceName, multiFactory, regKey);
}
return xSingleServiceFactory;
}
public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
return FactoryHelper.writeRegistryServiceInfo(AccessBridge.class.getName(), _AccessBridge._serviceName, regKey);
}
}

View file

@ -0,0 +1,89 @@
#*************************************************************************
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.1 $
#
# last change: $Author: obr $ $Date: 2002-08-08 14:10:18 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
#
# - GNU Lesser General Public License Version 2.1
# - Sun Industry Standards Source License Version 1.1
#
# Sun Microsystems Inc., October, 2000
#
# GNU Lesser General Public License Version 2.1
# =============================================
# Copyright 2000 by Sun Microsystems, Inc.
# 901 San Antonio Road, Palo Alto, CA 94303, USA
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 2.1, as published by the Free Software Foundation.
#
# This library 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 for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
#
# Sun Industry Standards Source License Version 1.1
# =================================================
# The contents of this file are subject to the Sun Industry Standards
# Source License Version 1.1 (the "License"); You may not use this file
# except in compliance with the License. You may obtain a copy of the
# License at http://www.openoffice.org/license.html.
#
# Software provided under this License is provided on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
# See the License for the specific provisions governing your rights and
# obligations concerning the Software.
#
# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
#
# Copyright: 2000 by Sun Microsystems, Inc.
#
# All Rights Reserved.
#
# Contributor(s): _______________________________________
#
#
#
#*************************************************************************
PRJNAME = accessibility
PRJ = ..$/..$/..$/..
TARGET = java_uno_accessbridge
PACKAGE = org$/openoffice$/accessibility
USE_JAVAVER:=TRUE
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
.IF "$(JAVAVER:s/.//)" >= "130"
JARFILES = sandbox.jar jurt.jar unoil.jar ridl.jar
JAVAFILES := $(shell +ls *.java)
JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
JARTARGET = $(TARGET).jar
JARCOMPRESS = TRUE
JARCLASSDIRS = $(PACKAGE) org/openoffice/java/accessibility
CUSTOMMANIFESTFILE = manifest
.ENDIF
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk

View file

@ -0,0 +1 @@
RegistrationClassName: org.openoffice.accessibility.AccessBridge

View file

@ -0,0 +1,362 @@
/*************************************************************************
*
* $RCSfile: AccessibleObjectFactory.java,v $
*
* $Revision: 1.1 $
*
* last change: $Author: obr $ $Date: 2002-08-08 14:12:38 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
package org.openoffice.java.accessibility;
import org.openoffice.accessibility.internal.*;
import java.lang.ref.WeakReference;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleStateSet;
import com.sun.star.uno.*;
import drafts.com.sun.star.accessibility.AccessibleRole;
import drafts.com.sun.star.accessibility.XAccessible;
import drafts.com.sun.star.accessibility.XAccessibleContext;
/**
*/
public class AccessibleObjectFactory {
// This type is needed for conversions from/to uno Any
public static final Type XAccessibleType = new Type(XAccessible.class);
java.util.Hashtable objectList = new java.util.Hashtable();
XAccessibilityInformationProvider infoProvider;
public AccessibleObjectFactory(XAccessibilityInformationProvider provider) {
infoProvider = provider;
System.out.println("ObjectFactory created");
}
public AccessibleObject getAccessibleObject(XAccessible xAccessible, Accessible parent) {
XAccessibleContext xAccessibleContext = null;
if(xAccessible == null) {
return null;
}
// Save the round trip to C++ UNO if possible
if(xAccessible instanceof XAccessibleContext) {
xAccessibleContext = (XAccessibleContext) xAccessible;
} else {
xAccessibleContext = xAccessible.getAccessibleContext();
}
// Ensure that we really got an UNO accessible context
if(xAccessibleContext == null) {
return null;
}
// Retrieve unique id for the original UNO object to be used as a hash key
String oid = UnoRuntime.generateOid(xAccessibleContext);
AccessibleObject o = null;
// Check if we already have a wrapper object for this context
synchronized (objectList) {
WeakReference r = (WeakReference) objectList.get(oid);
if(r != null) {
o = (AccessibleObject) r.get();
}
}
if( o == null ) {
AccessibleContextInfo info = infoProvider.getAccessibleContextInfo(xAccessibleContext);
switch(info.Role) {
case AccessibleRole.CHECKBOX:
o = new AccessibleCheckBox(xAccessibleContext);
break;
case AccessibleRole.COMBOBOX:
case AccessibleRole.LIST:
case AccessibleRole.MENUBAR:
case AccessibleRole.POPUPMENU:
o = new AccessibleContainer(
AccessibleRoleMap.toAccessibleRole(info.Role),
xAccessibleContext
);
break;
case AccessibleRole.LABEL:
case AccessibleRole.TABLE_CELL:
if((info.States & AccessibleState.TRANSIENT) == 0) {
o = new AccessibleFixedText(info.IndexInParent);
} else {
o = new AccessibleLabel(xAccessibleContext);
}
break;
case AccessibleRole.DIALOG:
case AccessibleRole.FRAME:
o = new AccessibleFrame(
AccessibleRoleMap.toAccessibleRole(info.Role),
xAccessibleContext
);
break;
case AccessibleRole.ICON:
o = new AccessibleImage(xAccessibleContext);
break;
case AccessibleRole.LISTITEM:
o = new AccessibleListItem(xAccessibleContext);
break;
case AccessibleRole.MENU:
o = new AccessibleMenu(xAccessibleContext);
break;
case AccessibleRole.MENUITEM:
o = new AccessibleMenuItem(xAccessibleContext);
break;
case AccessibleRole.PARAGRAPH:
o = new AccessibleParagraph(xAccessibleContext);
break;
case AccessibleRole.PUSHBUTTON:
o = new AccessiblePushButton(xAccessibleContext);
break;
case AccessibleRole.RADIOBUTTON:
o = new AccessibleRadioButton(xAccessibleContext);
break;
case AccessibleRole.SCROLLBAR:
o = new AccessibleScrollBar(xAccessibleContext);
break;
case AccessibleRole.SEPARATOR:
o = new AccessibleSeparator(xAccessibleContext);
break;
case AccessibleRole.TABLE:
if((info.States & AccessibleState.CHILDREN_TRANSIENT) != 0) {
o = new AccessibleSpreadsheet(xAccessibleContext);
} else {
o = new AccessibleTextTable(xAccessibleContext);
}
break;
case AccessibleRole.TEXT:
o = new AccessibleEditLine(xAccessibleContext);
break;
case AccessibleRole.TREE:
if((info.States & AccessibleState.CHILDREN_TRANSIENT) == 0) {
o = new AccessibleTreeList(xAccessibleContext);
} else {
o = new AccessibleTreeListItem(xAccessibleContext, info.IndexInParent);
}
break;
case AccessibleRole.CANVAS:
case AccessibleRole.DOCUMENT:
case AccessibleRole.ENDNOTE:
case AccessibleRole.FILLER:
case AccessibleRole.FOOTER:
case AccessibleRole.FOOTNOTE:
case AccessibleRole.HEADER:
case AccessibleRole.LAYEREDPANE:
case AccessibleRole.PAGETAB:
case AccessibleRole.PANEL:
case AccessibleRole.ROOTPANE:
case AccessibleRole.SCROLLPANE:
case AccessibleRole.SHAPE:
case AccessibleRole.SPLITPANE:
case AccessibleRole.STATUSBAR:
case AccessibleRole.TOOLBAR:
case AccessibleRole.WINDOW:
o = new AccessibleWindow(
AccessibleRoleMap.toAccessibleRole(info.Role),
xAccessibleContext
);
break;
default:
if( Build.DEBUG) {
System.out.println("Unmapped role: " + AccessibleRoleMap.toAccessibleRole(info.Role));
}
o = new AccessibleWindow(AccessibleRoleMap.toAccessibleRole(info.Role), xAccessibleContext);
break;
}
// Add the newly created object to the cache list
synchronized (objectList) {
objectList.put(oid, new WeakReference(o));
if( Build.DEBUG ) {
// System.out.println("Object cache now contains " + objectList.size() + " objects.");
}
}
// Register as event listener if possible
AccessibleEventListener listener = null;
if(o instanceof AccessibleEventListener && (info.States & AccessibleState.TRANSIENT) == 0) {
listener = (AccessibleEventListener) o;
}
/* The accessible event broadcaster will never be removed by a removeEventListener
* call. This requires that the UNO accessibility objects get activly destructed
* using dispose().
*/
synchronized (o) {
initializeAccessibleObject(o,
infoProvider.getAccessibleComponentInfo(xAccessibleContext, listener)
);
}
// Finaly set accessible parent object
// FIXME: create temporary parent if parent is null !!
o.setAccessibleParent(parent);
// Add the child to the internal list if parent is AccessibleWindow
if( ((info.States & AccessibleState.CHILDREN_TRANSIENT) == 0) && (parent instanceof AccessibleWindow) ) {
AccessibleWindow w = (AccessibleWindow) parent;
w.addAccessibleChild(o);
}
}
if(Build.DEBUG && o == null) {
System.out.println("AccessibleObjectFactory: returning null object");
}
return o;
}
// Set the initial values of this accessible object
protected void initializeAccessibleObject(AccessibleObject o, AccessibleComponentInfo info) {
// Set the factory to retrieve callback on finalize
o.setObjectFactory(this);
// Set accessible name and description
o.setAccessibleName(info.Name);
o.setAccessibleDescription(info.Description);
// Set the object boundaries and colors
o.setBounds(new java.awt.Rectangle(info.Bounds.X, info.Bounds.Y, info.Bounds.Width, info.Bounds.Height));
o.setForeground(new java.awt.Color(info.ForegroundColor));
o.setBackground(new java.awt.Color(info.BackgroundColor));
// Fill the state set
AccessibleStateTypeMap.fillAccessibleStateSet(o.getAccessibleStateSet(), info.States);
// Set the number of children
if(o instanceof AccessibleWindow) {
AccessibleWindow w = (AccessibleWindow) o;
w.setAccessibleChildrenCount(info.ChildrenCount);
} else if(o instanceof AccessibleFixedText) {
AccessibleFixedText t = (AccessibleFixedText) o;
if( info.Text != null )
t.setText(info.Text);
else
t.setText(info.Name);
} else if(o instanceof AccessibleLabel) {
AccessibleLabel l = (AccessibleLabel) o;
if( info.Text != null && info.Text.length() > 0 )
l.setText(info.Text);
else
l.setText(info.Name);
}
}
public AccessibleObject removeAccessibleObject(XAccessible xAccessible) {
XAccessibleContext xAccessibleContext = null;
if(xAccessible == null) {
return null;
}
// Save the round trip to C++ UNO if possible
if(xAccessible instanceof XAccessibleContext) {
xAccessibleContext = (XAccessibleContext) xAccessible;
} else {
xAccessibleContext = xAccessible.getAccessibleContext();
}
// Ensure that we really got an UNO accessible context
if(xAccessibleContext == null) {
return null;
}
// Retrieve unique id for the original UNO object to be used as a hash key
String oid = UnoRuntime.generateOid(xAccessibleContext);
AccessibleObject o = null;
// Check if we already have a wrapper object for this context
synchronized (objectList) {
WeakReference r = (WeakReference) objectList.remove(oid);
if(r != null) {
o = (AccessibleObject) r.get();
}
}
// FIXME create dummy for objects not found.
return null;
}
public static XAccessible toXAccessible(Object any) {
if(AnyConverter.isObject(any)) {
try {
return (XAccessible) AnyConverter.toObject(XAccessibleType, any);
}
catch(com.sun.star.lang.IllegalArgumentException e) {
// FIXME: output
}
}
return null;
}
public void releaseAccessibleObject(AccessibleObject o) {
synchronized (objectList) {
objectList.remove(o.getObjectId());
if( Build.DEBUG ) {
System.out.println("Object cache now contains " + objectList.size() + " objects.");
}
}
}
}

View file

@ -0,0 +1,145 @@
#*************************************************************************
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.1 $
#
# last change: $Author: obr $ $Date: 2002-08-08 14:12:46 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
#
# - GNU Lesser General Public License Version 2.1
# - Sun Industry Standards Source License Version 1.1
#
# Sun Microsystems Inc., October, 2000
#
# GNU Lesser General Public License Version 2.1
# =============================================
# Copyright 2000 by Sun Microsystems, Inc.
# 901 San Antonio Road, Palo Alto, CA 94303, USA
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 2.1, as published by the Free Software Foundation.
#
# This library 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 for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
#
# Sun Industry Standards Source License Version 1.1
# =================================================
# The contents of this file are subject to the Sun Industry Standards
# Source License Version 1.1 (the "License"); You may not use this file
# except in compliance with the License. You may obtain a copy of the
# License at http://www.openoffice.org/license.html.
#
# Software provided under this License is provided on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
# See the License for the specific provisions governing your rights and
# obligations concerning the Software.
#
# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
#
# Copyright: 2000 by Sun Microsystems, Inc.
#
# All Rights Reserved.
#
# Contributor(s): _______________________________________
#
#
#
#*************************************************************************
PRJNAME = accessibility
PRJ = ..$/..$/..$/..$/..
TARGET = java_accessibility
PACKAGE = org$/openoffice$/java$/accessibility
USE_JAVAVER:=TRUE
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
.IF "$(JAVAVER:s/.//)" >= "140"
JAVADIR = $(OUT)$/misc$/java
JARFILES = sandbox.jar jurt.jar unoil.jar ridl.jar
JAVAFILES = \
AccessibleButton.java \
AccessibleCheckBox.java \
AccessibleContainer.java \
AccessibleDescendantManager.java \
AccessibleEditLine.java \
AccessibleEventListener.java \
AccessibleFixedText.java \
AccessibleFrame.java \
AccessibleImage.java \
AccessibleLabel.java \
AccessibleListItem.java \
AccessibleMenu.java \
AccessibleMenuItem.java \
AccessibleObjectFactory.java \
AccessibleObject.java \
AccessibleParagraph.java \
AccessiblePushButton.java \
AccessibleRadioButton.java \
AccessibleRoleMap.java \
AccessibleScrollBar.java \
AccessibleSeparator.java \
AccessibleSpreadsheet.java \
AccessibleStateTypeMap.java \
AccessibleTextTable.java \
AccessibleTreeList.java \
AccessibleTreeListItem.java \
AccessibleWindow.java \
GenericAccessibleEditableText.java \
GenericAccessibleExtendedTable.java \
GenericAccessibleSelection.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) $(CLASSDIR)$/$(PACKAGE)$/Build.class
JARTARGET = $(TARGET).jar
JARCOMPRESS = TRUE
JARCLASSDIRS = $(PACKAGE)
.ENDIF
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
# Enable logging in non-product only
.IF "$(PRODUCT)"!=""
DEBUGSWITCH = false
.ELSE
DEBUGSWITCH = true
.ENDIF
.IF "$(GUI)"=="UNX" || "$(USE_SHELL)" != "4nt"
$(JAVADIR)$/$(PACKAGE)$/%.java:
@-+$(MKDIRHIER) $(JAVADIR)$/$(PACKAGE) >& $(NULLDEV)
@-+echo package org.openoffice.java.accessibility\; > $@
@-+echo public class Build { >> $@
@-+echo public static final boolean DEBUG = $(DEBUGSWITCH)\; >> $@
@-+echo } >> $@
.ELSE
$(JAVADIR)$/$(PACKAGE)$/%.java:
@-+$(MKDIRHIER) $(JAVADIR)$/$(PACKAGE) >& $(NULLDEV)
@-+echo package org.openoffice.java.accessibility; > $@
@-+echo public class Build { >> $@
@-+echo public static final boolean DEBUG = $(DEBUGSWITCH); >> $@
@-+echo } >> $@
.ENDIF
$(CLASSDIR)$/$(PACKAGE)$/Build.class : $(JAVADIR)$/$(PACKAGE)$/Build.java
-+$(JAVAC) -d $(CLASSDIR) $(JAVADIR)$/$(PACKAGE)$/Build.java