Merged gcj-eclipse branch to trunk.
From-SVN: r120621
This commit is contained in:
parent
c648dedbde
commit
97b8365caf
17478 changed files with 606493 additions and 100744 deletions
|
@ -62,6 +62,7 @@ import java.awt.FontMetrics;
|
|||
import java.awt.Frame;
|
||||
import java.awt.GraphicsDevice;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.HeadlessException;
|
||||
import java.awt.Image;
|
||||
import java.awt.Label;
|
||||
import java.awt.List;
|
||||
|
@ -83,6 +84,7 @@ import java.awt.dnd.DragGestureEvent;
|
|||
import java.awt.dnd.DragGestureListener;
|
||||
import java.awt.dnd.DragGestureRecognizer;
|
||||
import java.awt.dnd.DragSource;
|
||||
import java.awt.dnd.InvalidDnDOperationException;
|
||||
import java.awt.dnd.peer.DragSourceContextPeer;
|
||||
import java.awt.im.InputMethodHighlight;
|
||||
import java.awt.image.ColorModel;
|
||||
|
@ -115,7 +117,6 @@ import java.awt.peer.WindowPeer;
|
|||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Hashtable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
@ -131,37 +132,30 @@ import javax.imageio.spi.IIORegistry;
|
|||
|
||||
public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
||||
{
|
||||
Hashtable containers = new Hashtable();
|
||||
static EventQueue q;
|
||||
static Thread mainThread;
|
||||
private static EventQueue q;
|
||||
|
||||
static native void gtkInit(int portableNativeSync);
|
||||
|
||||
static native void gtkMain();
|
||||
|
||||
static native void gtkQuit();
|
||||
|
||||
static
|
||||
{
|
||||
System.loadLibrary("gtkpeer");
|
||||
|
||||
|
||||
int portableNativeSync;
|
||||
String portNatSyncProp =
|
||||
System.getProperty("gnu.classpath.awt.gtk.portable.native.sync");
|
||||
|
||||
|
||||
if (portNatSyncProp == null)
|
||||
portableNativeSync = -1; // unset
|
||||
else if (Boolean.valueOf(portNatSyncProp).booleanValue())
|
||||
portableNativeSync = 1; // true
|
||||
else
|
||||
portableNativeSync = 0; // false
|
||||
|
||||
|
||||
gtkInit(portableNativeSync);
|
||||
|
||||
mainThread = new Thread ("GTK main thread")
|
||||
{
|
||||
public void run ()
|
||||
{
|
||||
gtkMain ();
|
||||
}
|
||||
};
|
||||
mainThread.start ();
|
||||
}
|
||||
|
||||
public GtkToolkit ()
|
||||
|
@ -169,6 +163,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
}
|
||||
|
||||
public native void beep();
|
||||
|
||||
private native void getScreenSizeDimensions(int[] xy);
|
||||
|
||||
public int checkImage (Image image, int width, int height,
|
||||
|
@ -181,6 +176,9 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
if (image instanceof GtkImage)
|
||||
return ((GtkImage) image).checkImage (observer);
|
||||
|
||||
if (image instanceof AsyncImage)
|
||||
return ((AsyncImage) image).checkImage(observer);
|
||||
|
||||
if (observer != null)
|
||||
observer.imageUpdate (image, status,
|
||||
-1, -1,
|
||||
|
@ -194,7 +192,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
* Helper to return either a Image -- the argument -- or a
|
||||
* GtkImage with the errorLoading flag set if the argument is null.
|
||||
*/
|
||||
private Image imageOrError(Image b)
|
||||
static Image imageOrError(Image b)
|
||||
{
|
||||
if (b == null)
|
||||
return GtkImage.getErrorImage();
|
||||
|
@ -221,16 +219,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
|
||||
public Image createImage (URL url)
|
||||
{
|
||||
Image image;
|
||||
try
|
||||
{
|
||||
image = CairoSurface.getBufferedImage( new GtkImage( url ) );
|
||||
}
|
||||
catch (IllegalArgumentException iae)
|
||||
{
|
||||
image = null;
|
||||
}
|
||||
return imageOrError(image);
|
||||
return new AsyncImage(url);
|
||||
}
|
||||
|
||||
public Image createImage (ImageProducer producer)
|
||||
|
@ -301,7 +290,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
"SansSerif" });
|
||||
}
|
||||
|
||||
private class LRUCache extends LinkedHashMap
|
||||
static class LRUCache extends LinkedHashMap
|
||||
{
|
||||
int max_entries;
|
||||
public LRUCache(int max)
|
||||
|
@ -316,23 +305,11 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
}
|
||||
|
||||
private LRUCache fontCache = new LRUCache(50);
|
||||
private LRUCache metricsCache = new LRUCache(50);
|
||||
private LRUCache imageCache = new LRUCache(50);
|
||||
|
||||
public FontMetrics getFontMetrics (Font font)
|
||||
{
|
||||
synchronized (metricsCache)
|
||||
{
|
||||
if (metricsCache.containsKey(font))
|
||||
return (FontMetrics) metricsCache.get(font);
|
||||
}
|
||||
|
||||
FontMetrics m = new GdkFontMetrics (font);
|
||||
synchronized (metricsCache)
|
||||
{
|
||||
metricsCache.put(font, m);
|
||||
}
|
||||
return m;
|
||||
return ((GdkFontPeer) font.getPeer()).getFontMetrics(font);
|
||||
}
|
||||
|
||||
public Image getImage (String filename)
|
||||
|
@ -408,6 +385,13 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
return ((((GtkImage)image).checkImage (observer) &
|
||||
ImageObserver.ALLBITS) != 0);
|
||||
|
||||
if (image instanceof AsyncImage)
|
||||
{
|
||||
AsyncImage aImg = (AsyncImage) image;
|
||||
aImg.addObserver(observer);
|
||||
return aImg.realImage != null;
|
||||
}
|
||||
|
||||
/* Assume anything else is too */
|
||||
return true;
|
||||
}
|
||||
|
@ -437,106 +421,131 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
|
||||
protected ButtonPeer createButton (Button b)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkButtonPeer (b);
|
||||
}
|
||||
|
||||
protected CanvasPeer createCanvas (Canvas c)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkCanvasPeer (c);
|
||||
}
|
||||
|
||||
protected CheckboxPeer createCheckbox (Checkbox cb)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkCheckboxPeer (cb);
|
||||
}
|
||||
|
||||
protected CheckboxMenuItemPeer createCheckboxMenuItem (CheckboxMenuItem cmi)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkCheckboxMenuItemPeer (cmi);
|
||||
}
|
||||
|
||||
protected ChoicePeer createChoice (Choice c)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkChoicePeer (c);
|
||||
}
|
||||
|
||||
protected DialogPeer createDialog (Dialog d)
|
||||
{
|
||||
checkHeadless();
|
||||
GtkMainThread.createWindow();
|
||||
return new GtkDialogPeer (d);
|
||||
}
|
||||
|
||||
protected FileDialogPeer createFileDialog (FileDialog fd)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkFileDialogPeer (fd);
|
||||
}
|
||||
|
||||
protected FramePeer createFrame (Frame f)
|
||||
{
|
||||
checkHeadless();
|
||||
GtkMainThread.createWindow();
|
||||
return new GtkFramePeer (f);
|
||||
}
|
||||
|
||||
protected LabelPeer createLabel (Label label)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkLabelPeer (label);
|
||||
}
|
||||
|
||||
protected ListPeer createList (List list)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkListPeer (list);
|
||||
}
|
||||
|
||||
protected MenuPeer createMenu (Menu m)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkMenuPeer (m);
|
||||
}
|
||||
|
||||
protected MenuBarPeer createMenuBar (MenuBar mb)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkMenuBarPeer (mb);
|
||||
}
|
||||
|
||||
protected MenuItemPeer createMenuItem (MenuItem mi)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkMenuItemPeer (mi);
|
||||
}
|
||||
|
||||
protected PanelPeer createPanel (Panel p)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkPanelPeer (p);
|
||||
}
|
||||
|
||||
protected PopupMenuPeer createPopupMenu (PopupMenu target)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkPopupMenuPeer (target);
|
||||
}
|
||||
|
||||
protected ScrollPanePeer createScrollPane (ScrollPane sp)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkScrollPanePeer (sp);
|
||||
}
|
||||
|
||||
protected ScrollbarPeer createScrollbar (Scrollbar sb)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkScrollbarPeer (sb);
|
||||
}
|
||||
|
||||
protected TextAreaPeer createTextArea (TextArea ta)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkTextAreaPeer (ta);
|
||||
}
|
||||
|
||||
protected TextFieldPeer createTextField (TextField tf)
|
||||
{
|
||||
checkHeadless();
|
||||
return new GtkTextFieldPeer (tf);
|
||||
}
|
||||
|
||||
protected WindowPeer createWindow (Window w)
|
||||
{
|
||||
checkHeadless();
|
||||
GtkMainThread.createWindow();
|
||||
return new GtkWindowPeer (w);
|
||||
}
|
||||
|
||||
public EmbeddedWindowPeer createEmbeddedWindow (EmbeddedWindow w)
|
||||
{
|
||||
checkHeadless();
|
||||
GtkMainThread.createWindow();
|
||||
return new GtkEmbeddedWindowPeer (w);
|
||||
}
|
||||
|
||||
|
@ -605,6 +614,8 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
|
||||
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e)
|
||||
{
|
||||
if (GraphicsEnvironment.isHeadless())
|
||||
throw new InvalidDnDOperationException();
|
||||
return new GtkDragSourceContextPeer(e);
|
||||
}
|
||||
|
||||
|
@ -614,7 +625,8 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
int actions,
|
||||
DragGestureListener l)
|
||||
{
|
||||
if (recognizer.getName().equals("java.awt.dnd.MouseDragGestureRecognizer"))
|
||||
if (recognizer.getName().equals("java.awt.dnd.MouseDragGestureRecognizer")
|
||||
&& ! GraphicsEnvironment.isHeadless())
|
||||
{
|
||||
GtkMouseDragGestureRecognizer gestureRecognizer
|
||||
= new GtkMouseDragGestureRecognizer(ds, comp, actions, l);
|
||||
|
@ -661,13 +673,25 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
|
|||
GdkPixbufDecoder.registerSpis(reg);
|
||||
}
|
||||
|
||||
public static native void gtkMain();
|
||||
|
||||
protected MouseInfoPeer getMouseInfoPeer()
|
||||
{
|
||||
return new GtkMouseInfoPeer();
|
||||
}
|
||||
|
||||
public boolean isFrameStateSupported(int state)
|
||||
{
|
||||
// GTK supports ICONFIED, NORMAL and MAXIMIZE_BOTH, but
|
||||
// not (yet?) MAXIMIZE_VERT and MAXIMIZE_HORIZ.
|
||||
return state == Frame.NORMAL || state == Frame.ICONIFIED
|
||||
|| state == Frame.MAXIMIZED_BOTH;
|
||||
}
|
||||
|
||||
private void checkHeadless()
|
||||
{
|
||||
if (GraphicsEnvironment.isHeadless())
|
||||
throw new HeadlessException();
|
||||
}
|
||||
|
||||
public native int getMouseNumberOfButtons();
|
||||
|
||||
} // class GtkToolkit
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue