/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* 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.
*/
{
/** All calls into GTK should be synchronized on this lock */
public static int getDatatransferTimeout() {
new GetIntegerAction("sun.awt.datatransfer.timeout"));
return DEFAULT_DATATRANSFER_TIMEOUT;
} else {
return dt;
}
}
/**
* Returns true if the native GTK libraries are capable of being
* loaded and are expected to work properly, false otherwise. Note
* that this method will not leave the native GTK libraries loaded if
* they haven't already been loaded. This allows, for example, Swing's
* GTK L&F to test for the presence of native GTK support without
* leaving the native libraries loaded. To attempt long-term loading
* of the native GTK libraries, use the loadGTK() method instead.
*/
public boolean isNativeGTKAvailable() {
synchronized (GTK_LOCK) {
if (nativeGTKLoaded != null) {
// We've already attempted to load GTK, so just return the
// status of that attempt.
return nativeGTKLoaded.booleanValue();
} else if (nativeGTKAvailable != null) {
// We've already checked the availability of the native GTK
// libraries, so just return the status of that attempt.
return nativeGTKAvailable.booleanValue();
} else {
return success;
}
}
}
/**
* Loads the GTK libraries, if necessary. The first time this method
* is called, it will attempt to load the native GTK library. If
* successful, it leaves the library open and returns true; otherwise,
* the library is left closed and returns false. On future calls to
* this method, the status of the first attempt is returned (a simple
* lightweight boolean check, no native calls required).
*/
public boolean loadGTK() {
synchronized (GTK_LOCK) {
if (nativeGTKLoaded == null) {
}
}
return nativeGTKLoaded.booleanValue();
}
/**
* Overridden to handle GTK icon loading
*/
return lazilyLoadGTKIcon(name);
}
return super.lazilyLoadDesktopProperty(name);
}
/**
* Load a native Gtk stock icon.
*
* @param longname a desktop property name. This contains icon name, size
* and orientation, e.g. <code>"gtk.icon.gtk-add.4.rtl"</code>
* @return an <code>Image</code> for the icon, or <code>null</code> if the
* icon could not be loaded
*/
// Check if we have already loaded it.
return result;
}
// We need to have at least gtk.icon.<stock_id>.<size>.<orientation>
return null;
}
// Parse out the stock icon size we are looking for.
int size = 0;
try {
} catch (NumberFormatException nfe) {
return null;
}
// Direction.
// Load the stock icon.
// Create the desktop property for the icon.
}
return img;
}
/**
* Returns a BufferedImage which contains the Gtk icon requested. If no
* such icon exists or an error occurs loading the icon the result will
* be null.
*
* @param filename
* @return The icon or null if it was not found or loaded.
*/
if (!loadGTK()) {
return null;
} else {
// Call the native method to load the icon.
synchronized (GTK_LOCK) {
if (!load_gtk_icon(filename)) {
}
}
}
// Return local image the callback loaded the icon into.
return tmpImage;
}
/**
* Returns a BufferedImage which contains the Gtk stock icon requested.
* If no such stock icon exists the result will be null.
*
* @param widgetType one of WidgetType values defined in GTKNativeEngine or
* -1 for system default stock icon.
* @param stockId String which defines the stock id of the gtk item.
* For a complete list reference the API at www.gtk.org for StockItems.
* @param iconSize One of the GtkIconSize values defined in GTKConstants
* @param textDirection One of the TextDirection values defined in
* GTKConstants
* @param detail Render detail that is passed to the native engine (feel
* free to pass null)
* @return The stock icon or null if it was not found or loaded.
*/
if (!loadGTK()) {
return null;
} else {
// Call the native method to load the icon.
synchronized (GTK_LOCK) {
}
}
}
// Return local image the callback loaded the icon into.
return tmpImage; // set by loadIconCallback
}
/**
* This method is used by JNI as a callback from load_stock_icon.
* Image data is passed back to us via this method and loaded into the
* local BufferedImage and then returned via getStockIcon.
*
* Do NOT call this method directly.
*/
// Reset the stock image to null.
// Create a new BufferedImage based on the data returned from the
// JNI call.
// Maybe test # channels to determine band offsets?
// Set the local image so we can return it later from
// getStockIcon().
}
private static native boolean check_gtk();
private static native boolean load_gtk();
private static native boolean unload_gtk();
private native void nativeSync();
public void sync() {
// flush the X11 buffer
nativeSync();
// now flush the OGL pipeline (this is a no-op if OGL is not enabled)
}
/*
* This returns the value for the desktop property "awt.font.desktophints"
* It builds this by querying the Gnome desktop properties to return
* them as platform independent hints.
* This requires that the Gnome properties have already been gathered.
*/
/* On a KDE desktop running KWin the rendering hint will
* have been set as property "fontconfig/Antialias".
* No need to parse further in this case.
*/
} else {
return null; // no Gnome or KDE Desktop properties available.
}
}
/* 0 means off, 1 means some ON. What would any other value mean?
* If we require "1" to enable AA then some new value would cause
* us to default to "OFF". I don't think that's the best guess.
* So if its !=0 then lets assume AA.
*/
if (aa) {
} else {
/* didn't recognise the string, but AA is requested */
}
} else {
}
}
int micro);
/**
* Returns {@code true} if the GTK+ library is compatible with the given
* version.
*
* @param major
* The required major version.
* @param minor
* The required minor version.
* @param micro
* The required micro version.
* @return {@code true} if the GTK+ library is compatible with the given
* version.
*/
if (loadGTK()) {
}
return false;
}
}