All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.glass.ui.accessible.AccessibleBaseProvider Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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 General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package com.sun.glass.ui.accessible;

import com.sun.glass.ui.PlatformFactory;
import com.sun.javafx.accessible.providers.AccessibleProvider;
import com.sun.javafx.accessible.utils.Rect;
import java.util.ArrayList;
import java.util.List;

/**
 * The Accessible for a Glass accessible object.
 * 

* Accessibles are created via a call to the static createProvider method. Once * the platform (Windows, Linux, OS X) is determined a platform specific Accessible * is returned. *

* This class is subclassed by platform specific specializations, e.g. * WinAccessibleBaseProvider, MacAccessibleBaseProvider. During construction each * subclass downcalls to native code to create a native accessible. */ public abstract class AccessibleBaseProvider { protected List patternProviders; protected Object node; // the JavaFX node /** * Static method to create a Glass accessible * * Determines which platform and then calls the platform specific factory to * construct and return a platform specific accessible. * * @param node the related FX node object. * * @return a newly created platform specific AccessibleBaseProvider. */ public static AccessibleBaseProvider createProvider(Object node) { AccessibleLogger.getLogger().fine("node: " + node); return PlatformFactory.getPlatformFactory().createAccessibleProvider(node); } /** * Constructor * * @param node the related FX node object. */ public AccessibleBaseProvider(Object node) { this.node = node; patternProviders = new ArrayList(); } /** * Get the FX accessible node. * * @return the FX accessible node. */ public Object getNode() { return node; } /** * Add a pattern provider to the base provider. * * @param pattern the pattern provider to add */ public void addPatternProviders(AccessibleBasePatternProvider pattern) { patternProviders.add(pattern); } // Downcalls /** * Destroy the native accessible */ abstract public void destroyAccessible(); /** * Fire an event * * @param eventID identifies the event. */ abstract public void fireEvent(int eventID); /** Fire a property change event * * @param propertyId identifies the property * @param oldProperty the old value of the property * @param newProperty the new value of the property */ abstract public void firePropertyChange(int propertyId, int oldProperty, int newProperty); /** Fire a property change event * * @param propertyId identifies the property * @param oldProperty the old value of the property * @param newProperty the new value of the property */ abstract public void firePropertyChange( int propertyId, boolean oldProperty, boolean newProperty ); // Upcalls /** * Gets the value of a property. * * @param propertyId identifies the requested property. * * @return the value of the property. */ protected Object getPropertyValue(int propertyId) { AccessibleLogger.getLogger().fine("propertyID: " + propertyId); Object value; if (node instanceof AccessibleProvider) { value = ((AccessibleProvider)node).getPropertyValue(propertyId); } else { // TODO: Should we do something else like throw an acception? value = null; } AccessibleLogger.getLogger().fine("returning: " + value); return value; } /** * Get the bounding rectangle of this element. * * @return the bounding rectangle (x, y, w, h), in screen coordinates, * with respect to upper left corner. */ private Rect boundingRectangle() { Rect rect; if (node instanceof AccessibleProvider) { rect = ((AccessibleProvider)node).boundingRectangle(); AccessibleLogger.getLogger().fine("returning: " + "MinX=" + rect.getMinX() + "MinY=" + rect.getMinY() + "MaxX=" + rect.getMaxX() + "MaxY=" + rect.getMaxY()); } else { // TODO: Should we do something else like throw an acception? rect = null; } return rect; } /** * Set focus to this object. */ private void setFocus() { if (node instanceof AccessibleProvider) { ((AccessibleProvider)node).setFocus(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy