[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: accessibility fixes
Kaffe CVS
cvs-commits at kaffe.org
Wed Jan 5 13:32:29 PST 2005
PatchSet 5772
Date: 2005/01/05 20:16:24
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: accessibility fixes
Members:
ChangeLog:1.3316->1.3317
libraries/javalib/java/awt/CheckboxMenuItem.java:1.13->1.14
libraries/javalib/java/awt/Choice.java:1.4->1.5
libraries/javalib/java/awt/Dialog.java:1.11->1.12
libraries/javalib/java/awt/Frame.java:1.21->1.22
libraries/javalib/java/awt/List.java:1.4->1.5
libraries/javalib/java/awt/MenuComponent.java:1.14->1.15
libraries/javalib/java/awt/MenuItem.java:1.16->1.17
libraries/javalib/java/awt/ScrollPane.java:1.17->1.18
libraries/javalib/java/awt/Scrollbar.java:1.6->1.7
libraries/javalib/java/awt/Window.java:1.25->1.26
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3316 kaffe/ChangeLog:1.3317
--- kaffe/ChangeLog:1.3316 Wed Jan 5 20:12:37 2005
+++ kaffe/ChangeLog Wed Jan 5 20:16:24 2005
@@ -2,6 +2,29 @@
Resynced with GNU Classpath.
+ 2004-12-29 Jerry Quinn <jlquinn at optonline.net>
+
+ * java/awt/CheckboxMenuItem.java (getAccessibleContext,
+ AccessibleAWTCheckboxMenuItem): Implement.
+ * java/awt/Choice.java: Add implements declaration for Accessible.
+ * java/awt/Dialog.java (AccessibleAWTFrame, getAccessibleContext):
+ Implement.
+ * java/awt/Frame.java (AccessibleAWTFrame, getAccessibleContext):
+ Implement.
+ * java/awt/List.java: Implement AccessibleAWTList, AccessibleAWTListChild.
+ * java/awt/MenuComponent.java (accessibleContext): Make package visible.
+ * java/awt/MenuItem.java (getAccessibleContext): Implement.
+ * java/awt/Scrollbar.java (AccessibleAWTScrollbar, getAccessibleContext):
+ Implement.
+ * java/awt/ScrollPane.java (AccessibleAWTScrollPane, getAccessibleContext):
+ Implement.
+ * java/awt/Window.java (AccessibleAWTWindow): Implement.
+ (isActive, isFocused, getAccessibleContext): Implement.
+
+2005-01-05 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
2004-12-29 Michael Koch <konqueror at gmx.de>
* javax/swing/text/TextAction.java
Index: kaffe/libraries/javalib/java/awt/CheckboxMenuItem.java
diff -u kaffe/libraries/javalib/java/awt/CheckboxMenuItem.java:1.13 kaffe/libraries/javalib/java/awt/CheckboxMenuItem.java:1.14
--- kaffe/libraries/javalib/java/awt/CheckboxMenuItem.java:1.13 Wed Nov 24 21:49:17 2004
+++ kaffe/libraries/javalib/java/awt/CheckboxMenuItem.java Wed Jan 5 20:16:25 2005
@@ -43,6 +43,11 @@
import java.awt.peer.CheckboxMenuItemPeer;
import java.util.EventListener;
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleAction;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+
/**
* This class implements a menu item that has a checkbox on it indicating
* the selected state of some option.
@@ -50,7 +55,8 @@
* @author Aaron M. Renn (arenn at urbanophile.com)
* @author Tom Tromey <tromey at redhat.com>
*/
-public class CheckboxMenuItem extends MenuItem implements ItemSelectable
+public class CheckboxMenuItem extends MenuItem
+ implements ItemSelectable, Accessible
{
/*
@@ -315,5 +321,30 @@
{
return (ItemListener[]) getListeners (ItemListener.class);
}
+
+
+ protected class AccessibleAWTCheckboxMenuItem extends AccessibleAWTMenuItem
+ implements AccessibleAction, AccessibleValue
+ {
+ // I think the base class provides the necessary implementation
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>List</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTCheckboxMenuItem();
+ }
+ return accessibleContext;
+ }
+
} // class CheckboxMenuItem
Index: kaffe/libraries/javalib/java/awt/Choice.java
diff -u kaffe/libraries/javalib/java/awt/Choice.java:1.4 kaffe/libraries/javalib/java/awt/Choice.java:1.5
--- kaffe/libraries/javalib/java/awt/Choice.java:1.4 Fri Dec 3 01:56:21 2004
+++ kaffe/libraries/javalib/java/awt/Choice.java Wed Jan 5 20:16:25 2005
@@ -45,6 +45,7 @@
import java.util.EventListener;
import java.util.Vector;
+import javax.accessibility.Accessible;
import javax.accessibility.AccessibleAction;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
@@ -54,7 +55,8 @@
*
* @author Aaron M. Renn (arenn at urbanophile.com)
*/
-public class Choice extends Component implements ItemSelectable, Serializable
+public class Choice extends Component
+ implements ItemSelectable, Serializable, Accessible
{
/*
Index: kaffe/libraries/javalib/java/awt/Dialog.java
diff -u kaffe/libraries/javalib/java/awt/Dialog.java:1.11 kaffe/libraries/javalib/java/awt/Dialog.java:1.12
--- kaffe/libraries/javalib/java/awt/Dialog.java:1.11 Thu Jul 22 19:20:22 2004
+++ kaffe/libraries/javalib/java/awt/Dialog.java Wed Jan 5 20:16:25 2005
@@ -40,6 +40,11 @@
import java.awt.peer.DialogPeer;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
/**
* A dialog box widget class.
*
@@ -511,5 +516,41 @@
this.undecorated = undecorated;
}
+
+ protected class AccessibleAWTDialog extends AccessibleAWTWindow
+ {
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.DIALOG;
+ }
+
+ public AccessibleStateSet getAccessibleState()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ if (isResizable())
+ states.add(AccessibleState.RESIZABLE);
+ if (isModal())
+ states.add(AccessibleState.MODAL);
+ return states;
+ }
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>Dialog</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTDialog();
+ }
+ return accessibleContext;
+ }
+
} // class Dialog
Index: kaffe/libraries/javalib/java/awt/Frame.java
diff -u kaffe/libraries/javalib/java/awt/Frame.java:1.21 kaffe/libraries/javalib/java/awt/Frame.java:1.22
--- kaffe/libraries/javalib/java/awt/Frame.java:1.21 Tue Oct 12 00:24:58 2004
+++ kaffe/libraries/javalib/java/awt/Frame.java Wed Jan 5 20:16:25 2005
@@ -41,6 +41,11 @@
import java.awt.peer.FramePeer;
import java.util.Vector;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
/**
* This class is a top-level window with a title bar and window
* decorations.
@@ -549,4 +554,40 @@
{
return next_frame_number++;
}
+
+ protected class AccessibleAWTFrame extends AccessibleAWTWindow
+ {
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.FRAME;
+ }
+
+ public AccessibleStateSet getAccessibleState()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ if (isResizable())
+ states.add(AccessibleState.RESIZABLE);
+ if ((state & ICONIFIED) != 0)
+ states.add(AccessibleState.ICONIFIED);
+ return states;
+ }
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>Frame</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTFrame();
+ }
+ return accessibleContext;
+ }
+
}
Index: kaffe/libraries/javalib/java/awt/List.java
diff -u kaffe/libraries/javalib/java/awt/List.java:1.4 kaffe/libraries/javalib/java/awt/List.java:1.5
--- kaffe/libraries/javalib/java/awt/List.java:1.4 Wed Nov 24 21:49:17 2004
+++ kaffe/libraries/javalib/java/awt/List.java Wed Jan 5 20:16:26 2005
@@ -47,6 +47,11 @@
import java.util.Vector;
import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleSelection;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
/**
* Class that implements a listbox widget
@@ -106,6 +111,7 @@
// The list of ActionListeners for this object.
private ActionListener action_listeners;
+
/*************************************************************************/
/*
@@ -1075,5 +1081,186 @@
public ItemListener[] getItemListeners ()
{
return (ItemListener[]) getListeners (ItemListener.class);
+ }
+
+ // Accessibility internal class
+ protected class AccessibleAWTList extends AccessibleAWTComponent
+ implements AccessibleSelection, ItemListener, ActionListener
+ {
+ protected class AccessibleAWTListChild extends AccessibleAWTComponent
+ implements Accessible
+ {
+ private int index;
+ private List parent;
+
+ public AccessibleAWTListChild(List parent, int indexInParent)
+ {
+ this.parent = parent;
+ index = indexInParent;
+ if (parent == null)
+ index = -1;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.Accessible#getAccessibleContext()
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ return this;
+ }
+
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.LIST_ITEM;
+ }
+
+ public AccessibleStateSet getAccessibleStateSet()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ if (parent.isIndexSelected(index))
+ states.add(AccessibleState.SELECTED);
+ return states;
+ }
+
+ public int getAccessibleIndexInParent()
+ {
+ return index;
+ }
+
+ }
+
+ public AccessibleAWTList()
+ {
+ addItemListener(this);
+ addActionListener(this);
+ }
+
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.LIST;
+ }
+
+ public AccessibleStateSet getAccessibleStateSet()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ states.add(AccessibleState.SELECTABLE);
+ if (isMultipleMode())
+ states.add(AccessibleState.MULTISELECTABLE);
+ return states;
+ }
+
+ public int getAccessibleChildrenCount()
+ {
+ return getItemCount();
+ }
+
+ public Accessible getAccessibleChild(int i)
+ {
+ if (i >= getItemCount())
+ return null;
+ return new AccessibleAWTListChild(List.this, i);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#getAccessibleSelectionCount()
+ */
+ public int getAccessibleSelectionCount()
+ {
+ return getSelectedIndexes().length;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#getAccessibleSelection()
+ */
+ public AccessibleSelection getAccessibleSelection()
+ {
+ return this;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#getAccessibleSelection(int)
+ */
+ public Accessible getAccessibleSelection(int i)
+ {
+ int[] items = getSelectedIndexes();
+ if (i >= items.length)
+ return null;
+ return new AccessibleAWTListChild(List.this, items[i]);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#isAccessibleChildSelected(int)
+ */
+ public boolean isAccessibleChildSelected(int i)
+ {
+ return isIndexSelected(i);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#addAccessibleSelection(int)
+ */
+ public void addAccessibleSelection(int i)
+ {
+ select(i);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#removeAccessibleSelection(int)
+ */
+ public void removeAccessibleSelection(int i)
+ {
+ deselect(i);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#clearAccessibleSelection()
+ */
+ public void clearAccessibleSelection()
+ {
+ for (int i = 0; i < getItemCount(); i++)
+ deselect(i);
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleSelection#selectAllAccessibleSelection()
+ */
+ public void selectAllAccessibleSelection()
+ {
+ if (isMultipleMode())
+ for (int i = 0; i < getItemCount(); i++)
+ select(i);
+ }
+
+ /* (non-Javadoc)
+ * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
+ */
+ public void itemStateChanged(ItemEvent event)
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+ */
+ public void actionPerformed(ActionEvent event)
+ {
+ }
+
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>List</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTList();
+ }
+ return accessibleContext;
}
} // class List
Index: kaffe/libraries/javalib/java/awt/MenuComponent.java
diff -u kaffe/libraries/javalib/java/awt/MenuComponent.java:1.14 kaffe/libraries/javalib/java/awt/MenuComponent.java:1.15
--- kaffe/libraries/javalib/java/awt/MenuComponent.java:1.14 Mon Oct 4 09:01:30 2004
+++ kaffe/libraries/javalib/java/awt/MenuComponent.java Wed Jan 5 20:16:26 2005
@@ -130,7 +130,7 @@
* @see #getAccessibleContext()
* @serial the accessibility information for this component.
*/
- private AccessibleContext accessibleContext;
+ AccessibleContext accessibleContext;
/**
* Was the name of the component set? This value defaults
Index: kaffe/libraries/javalib/java/awt/MenuItem.java
diff -u kaffe/libraries/javalib/java/awt/MenuItem.java:1.16 kaffe/libraries/javalib/java/awt/MenuItem.java:1.17
--- kaffe/libraries/javalib/java/awt/MenuItem.java:1.16 Sun Dec 12 01:35:09 2004
+++ kaffe/libraries/javalib/java/awt/MenuItem.java Wed Jan 5 20:16:26 2005
@@ -47,6 +47,7 @@
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleAction;
+import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.accessibility.AccessibleValue;
@@ -579,7 +580,21 @@
",actionCommand=" + actionCommand + "," + super.paramString());
}
-// Accessibility API not yet implemented.
-// public AccessibleContext getAccessibleContext()
+/**
+ * Gets the AccessibleContext associated with this <code>MenuItem</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+public AccessibleContext getAccessibleContext()
+{
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTMenuItem();
+ }
+ return accessibleContext;
+}
} // class MenuItem
Index: kaffe/libraries/javalib/java/awt/ScrollPane.java
diff -u kaffe/libraries/javalib/java/awt/ScrollPane.java:1.17 kaffe/libraries/javalib/java/awt/ScrollPane.java:1.18
--- kaffe/libraries/javalib/java/awt/ScrollPane.java:1.17 Mon Oct 4 09:01:32 2004
+++ kaffe/libraries/javalib/java/awt/ScrollPane.java Wed Jan 5 20:16:27 2005
@@ -43,6 +43,8 @@
import java.awt.peer.ScrollPanePeer;
import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
/**
* This widget provides a scrollable region that allows a single
@@ -586,6 +588,31 @@
public void setWheelScrollingEnabled (boolean enable)
{
wheelScrollingEnabled = enable;
+ }
+
+ protected class AccessibleAWTScrollPane extends AccessibleAWTContainer
+ {
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.SCROLL_PANE;
+ }
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>Scrollbar</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTScrollPane();
+ }
+ return accessibleContext;
}
} // class ScrollPane
Index: kaffe/libraries/javalib/java/awt/Scrollbar.java
diff -u kaffe/libraries/javalib/java/awt/Scrollbar.java:1.6 kaffe/libraries/javalib/java/awt/Scrollbar.java:1.7
--- kaffe/libraries/javalib/java/awt/Scrollbar.java:1.6 Wed Nov 24 21:49:19 2004
+++ kaffe/libraries/javalib/java/awt/Scrollbar.java Wed Jan 5 20:16:27 2005
@@ -45,6 +45,12 @@
import java.util.EventListener;
import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRelation;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.accessibility.AccessibleValue;
/**
* This class implements a scrollbar widget.
@@ -769,5 +775,82 @@
{
return next_scrollbar_number++;
}
+
+ protected class AccessibleAWTScrollbar extends AccessibleAWTComponent
+ implements AccessibleValue
+ {
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.SCROLL_BAR;
+ }
+
+ public AccessibleStateSet getAccessibleStateSet()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ if (getOrientation() == HORIZONTAL)
+ states.add(AccessibleState.HORIZONTAL);
+ else
+ states.add(AccessibleState.VERTICAL);
+ if (getValueIsAdjusting())
+ states.add(AccessibleState.BUSY);
+ return states;
+ }
+
+ public AccessibleValue getAccessibleValue()
+ {
+ return this;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleValue#getCurrentAccessibleValue()
+ */
+ public Number getCurrentAccessibleValue()
+ {
+ return new Integer(getValue());
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleValue#setCurrentAccessibleValue(java.lang.Number)
+ */
+ public boolean setCurrentAccessibleValue(Number number)
+ {
+ setValue(number.intValue());
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleValue#getMinimumAccessibleValue()
+ */
+ public Number getMinimumAccessibleValue()
+ {
+ return new Integer(getMinimum());
+ }
+
+ /* (non-Javadoc)
+ * @see javax.accessibility.AccessibleValue#getMaximumAccessibleValue()
+ */
+ public Number getMaximumAccessibleValue()
+ {
+ return new Integer(getMaximum());
+ }
+ }
+
+ /**
+ * Gets the AccessibleContext associated with this <code>Scrollbar</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTScrollbar();
+ }
+ return accessibleContext;
+ }
+
} // class Scrollbar
Index: kaffe/libraries/javalib/java/awt/Window.java
diff -u kaffe/libraries/javalib/java/awt/Window.java:1.25 kaffe/libraries/javalib/java/awt/Window.java:1.26
--- kaffe/libraries/javalib/java/awt/Window.java:1.25 Sat Dec 11 23:08:40 2004
+++ kaffe/libraries/javalib/java/awt/Window.java Wed Jan 5 20:16:27 2005
@@ -56,6 +56,9 @@
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
/**
* This class represents a top-level window with no decorations.
@@ -84,11 +87,26 @@
private transient WindowFocusListener windowFocusListener;
private transient WindowStateListener windowStateListener;
private transient GraphicsConfiguration graphicsConfiguration;
- private transient AccessibleContext accessibleContext;
private transient boolean shown;
private transient Component windowFocusOwner;
+
+ protected class AccessibleAWTWindow extends AccessibleAWTContainer
+ {
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.WINDOW;
+ }
+
+ public AccessibleStateSet getAccessibleState()
+ {
+ AccessibleStateSet states = super.getAccessibleStateSet();
+ if (isActive())
+ states.add(AccessibleState.ACTIVE);
+ return states;
+ }
+ }
/**
* This (package access) constructor is used by subclasses that want
@@ -672,8 +690,34 @@
}
}
}
+
+ /**
+ * Identifies if this window is active. The active window is a Frame or
+ * Dialog that has focus or owns the active window.
+ *
+ * @return true if active, else false.
+ * @since 1.4
+ */
+ public boolean isActive()
+ {
+ KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager ();
+ return manager.getActiveWindow() == this;
+ }
/**
+ * Identifies if this window is focused. A window is focused if it is the
+ * focus owner or it contains the focus owner.
+ *
+ * @return true if focused, else false.
+ * @since 1.4
+ */
+ public boolean isFocused()
+ {
+ KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager ();
+ return manager.getFocusedWindow() == this;
+ }
+
+ /**
* Returns the child window that has focus if this window is active.
* This method returns <code>null</code> if this window is not active
* or no children have focus.
@@ -770,11 +814,21 @@
applyResourceBundle(rb);
}
+ /**
+ * Gets the AccessibleContext associated with this <code>Window</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
+ */
public AccessibleContext getAccessibleContext()
{
- // FIXME
- //return null;
- throw new Error ("Not implemented");
+ /* Create the context if this is the first request */
+ if (accessibleContext == null)
+ {
+ /* Create the context */
+ accessibleContext = new AccessibleAWTWindow();
+ }
+ return accessibleContext;
}
/**
More information about the kaffe
mailing list