001: /*
002: * Jacareto Copyright (c) 2002-2005
003: * Applied Computer Science Research Group, Darmstadt University of
004: * Technology, Institute of Mathematics & Computer Science,
005: * Ludwigsburg University of Education, and Computer Based
006: * Learning Research Group, Aachen University. All rights reserved.
007: *
008: * Jacareto is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation; either
011: * version 2 of the License, or (at your option) any later version.
012: *
013: * Jacareto is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public
019: * License along with Jacareto; if not, write to the Free
020: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
021: *
022: */
023:
024: package jacareto.comp;
025:
026: import jacareto.system.Environment;
027:
028: import java.awt.Component;
029:
030: import java.util.Vector;
031:
032: import javax.accessibility.AccessibleContext;
033:
034: import javax.swing.JDialog;
035:
036: /**
037: * This is a class which provides methods for JDialogs. It uses the accessibility API for the
038: * retrieval of the child components of a JComponent in addition to standard methods.
039: *
040: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
041: * @version 1.0
042: */
043: public class JDialogHandler extends DialogHandler {
044: /**
045: * Creates a new JDialog handler.
046: *
047: * @param env the environment
048: * @param components the components instance
049: */
050: public JDialogHandler(Environment env, Components components) {
051: super (env, components);
052: }
053:
054: /**
055: * Returns whether this handler is responsible for the given component. This class is
056: * responsible for JDialogs.
057: *
058: * @param component the component
059: *
060: * @return <code>true</code> if this handler is responsible for the given component, otherwise
061: * <code>false</code>
062: */
063: public boolean handlesComponent(Component component) {
064: return (component != null) && component instanceof JDialog;
065: }
066:
067: /**
068: * Returns an array with components contained
069: *
070: * @param component the component
071: *
072: * @return the array
073: */
074: public Component[] getChildren(Component component) {
075: Vector children = new Vector();
076:
077: // Children retrieved from the accessible context
078: AccessibleContext context = ((JDialog) component)
079: .getAccessibleContext();
080:
081: if (context != null) {
082: int childrenCount = context.getAccessibleChildrenCount();
083:
084: for (int i = 0; i < childrenCount; i++) {
085: Object child = context.getAccessibleChild(i);
086:
087: if ((child != null) && child instanceof Component) {
088: children.add(child);
089: }
090: }
091: }
092:
093: // Children retrieved from the component as container
094: Component[] containerChildren = super .getChildren(component);
095:
096: if (containerChildren != null) {
097: for (int i = 0; i < containerChildren.length; i++) {
098: if ((containerChildren[i] != null)
099: && !children.contains(containerChildren[i])) {
100: children.add(containerChildren[i]);
101: }
102: }
103: }
104:
105: // convert the vector to an array
106: Component[] result = new Component[children.size()];
107:
108: for (int i = 0; i < result.length; i++) {
109: result[i] = (Component) children.get(i);
110: }
111:
112: return result;
113: }
114: }
|