summaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/java/awt/peer/x/XToolkit.java')
-rw-r--r--libjava/classpath/gnu/java/awt/peer/x/XToolkit.java667
1 files changed, 0 insertions, 667 deletions
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java b/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
deleted file mode 100644
index a3eeb0f5339..00000000000
--- a/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
+++ /dev/null
@@ -1,667 +0,0 @@
-/* XToolkit.java -- The central AWT Toolkit for the X peers
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath 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 for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package gnu.java.awt.peer.x;
-
-import java.awt.AWTException;
-import java.awt.Button;
-import java.awt.Canvas;
-import java.awt.Checkbox;
-import java.awt.CheckboxMenuItem;
-import java.awt.Choice;
-import java.awt.Dialog;
-import java.awt.Dimension;
-import java.awt.EventQueue;
-import java.awt.FileDialog;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Frame;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.HeadlessException;
-import java.awt.Image;
-import java.awt.Label;
-import java.awt.List;
-import java.awt.Menu;
-import java.awt.MenuBar;
-import java.awt.MenuItem;
-import java.awt.Panel;
-import java.awt.PopupMenu;
-import java.awt.PrintJob;
-import java.awt.ScrollPane;
-import java.awt.Scrollbar;
-import java.awt.TextArea;
-import java.awt.TextField;
-import java.awt.Transparency;
-import java.awt.Window;
-import java.awt.Dialog.ModalExclusionType;
-import java.awt.Dialog.ModalityType;
-import java.awt.datatransfer.Clipboard;
-import java.awt.dnd.DragGestureEvent;
-import java.awt.dnd.peer.DragSourceContextPeer;
-import java.awt.im.InputMethodHighlight;
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorModel;
-import java.awt.image.DirectColorModel;
-import java.awt.image.ImageObserver;
-import java.awt.image.ImageProducer;
-import java.awt.peer.ButtonPeer;
-import java.awt.peer.CanvasPeer;
-import java.awt.peer.CheckboxMenuItemPeer;
-import java.awt.peer.CheckboxPeer;
-import java.awt.peer.ChoicePeer;
-import java.awt.peer.DialogPeer;
-import java.awt.peer.FileDialogPeer;
-import java.awt.peer.FontPeer;
-import java.awt.peer.FramePeer;
-import java.awt.peer.LabelPeer;
-import java.awt.peer.ListPeer;
-import java.awt.peer.MenuBarPeer;
-import java.awt.peer.MenuItemPeer;
-import java.awt.peer.MenuPeer;
-import java.awt.peer.PanelPeer;
-import java.awt.peer.PopupMenuPeer;
-import java.awt.peer.RobotPeer;
-import java.awt.peer.ScrollPanePeer;
-import java.awt.peer.ScrollbarPeer;
-import java.awt.peer.TextAreaPeer;
-import java.awt.peer.TextFieldPeer;
-import java.awt.peer.WindowPeer;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.WeakHashMap;
-
-import javax.imageio.ImageIO;
-
-import gnu.classpath.SystemProperties;
-import gnu.java.awt.ClasspathToolkit;
-import gnu.java.awt.EmbeddedWindow;
-import gnu.java.awt.font.OpenTypeFontPeer;
-import gnu.java.awt.image.ImageConverter;
-import gnu.java.awt.java2d.AbstractGraphics2D;
-import gnu.java.awt.peer.ClasspathFontPeer;
-import gnu.java.awt.peer.EmbeddedWindowPeer;
-import gnu.java.awt.peer.swing.SwingButtonPeer;
-import gnu.java.awt.peer.swing.SwingCanvasPeer;
-import gnu.java.awt.peer.swing.SwingCheckboxPeer;
-import gnu.java.awt.peer.swing.SwingLabelPeer;
-import gnu.java.awt.peer.swing.SwingPanelPeer;
-import gnu.java.awt.peer.swing.SwingTextAreaPeer;
-import gnu.java.awt.peer.swing.SwingTextFieldPeer;
-
-public class XToolkit
- extends ClasspathToolkit
-{
-
- /**
- * Set to true to enable debug output.
- */
- static boolean DEBUG = false;
-
- /**
- * Maps AWT colors to X colors.
- */
- HashMap colorMap = new HashMap();
-
- /**
- * The system event queue.
- */
- private EventQueue eventQueue;
-
- /**
- * The default color model of this toolkit.
- */
- private ColorModel colorModel;
-
- /**
- * Maps image URLs to Image instances.
- */
- private HashMap imageCache = new HashMap();
-
- /**
- * The cached fonts.
- */
- private WeakHashMap<String,ClasspathFontPeer> fontCache =
- new WeakHashMap<String,ClasspathFontPeer>();
-
- public XToolkit()
- {
- SystemProperties.setProperty("gnu.javax.swing.noGraphics2D", "true");
- SystemProperties.setProperty("java.awt.graphicsenv",
- "gnu.java.awt.peer.x.XGraphicsEnvironment");
- }
-
- public GraphicsEnvironment getLocalGraphicsEnvironment()
- {
- return new XGraphicsEnvironment();
- }
-
- /**
- * Returns the font peer for a font with the specified name and attributes.
- *
- * @param name the font name
- * @param attrs the font attributes
- *
- * @return the font peer for a font with the specified name and attributes
- */
- public ClasspathFontPeer getClasspathFontPeer(String name, Map attrs)
- {
- ClasspathFontPeer font;
- if ("true".equals(System.getProperty("escherpeer.usexfonts")))
- {
- String canonical = XFontPeer.encodeFont(name, attrs);
- if (!fontCache.containsKey(canonical))
- {
- font = new XFontPeer(name, attrs);
- fontCache.put(canonical, font);
- }
- else
- {
- font = fontCache.get(canonical);
- }
- }
- else
- {
- String canonical = OpenTypeFontPeer.encodeFont(name, attrs);
- if (!fontCache.containsKey(canonical))
- {
- font = new OpenTypeFontPeer(name, attrs);
- fontCache.put(canonical, font);
- }
- else
- {
- font = fontCache.get(canonical);
- }
- }
- return font;
- }
-
- public Font createFont(int format, InputStream stream)
- {
- return null;
- }
-
- public RobotPeer createRobot(GraphicsDevice screen) throws AWTException
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public EmbeddedWindowPeer createEmbeddedWindow(EmbeddedWindow w)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected ButtonPeer createButton(Button target)
- {
- checkHeadLess("No ButtonPeer can be created in an headless" +
- "graphics environment.");
-
- return new SwingButtonPeer(target);
- }
-
- protected TextFieldPeer createTextField(TextField target)
- {
- checkHeadLess("No TextFieldPeer can be created in an headless " +
- "graphics environment.");
-
- return new SwingTextFieldPeer(target);
- }
-
- protected LabelPeer createLabel(Label target)
- {
- checkHeadLess("No LabelPeer can be created in an headless graphics " +
- "environment.");
- return new SwingLabelPeer(target);
- }
-
- protected ListPeer createList(List target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected CheckboxPeer createCheckbox(Checkbox target)
- {
- checkHeadLess("No CheckboxPeer can be created in an headless graphics " +
- "environment.");
-
- return new SwingCheckboxPeer(target);
- }
-
- protected ScrollbarPeer createScrollbar(Scrollbar target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected ScrollPanePeer createScrollPane(ScrollPane target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected TextAreaPeer createTextArea(TextArea target)
- {
- checkHeadLess("No TextAreaPeer can be created in an headless graphics " +
- "environment.");
-
- return new SwingTextAreaPeer(target);
- }
-
- protected ChoicePeer createChoice(Choice target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected FramePeer createFrame(Frame target)
- {
- XFramePeer frame = new XFramePeer(target);
- return frame;
- }
-
- protected CanvasPeer createCanvas(Canvas target)
- {
- return new SwingCanvasPeer(target);
- }
-
- protected PanelPeer createPanel(Panel target)
- {
- return new SwingPanelPeer(target);
- }
-
- protected WindowPeer createWindow(Window target)
- {
- return new XWindowPeer(target);
- }
-
- protected DialogPeer createDialog(Dialog target)
- {
- return new XDialogPeer(target);
- }
-
- protected MenuBarPeer createMenuBar(MenuBar target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected MenuPeer createMenu(Menu target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected PopupMenuPeer createPopupMenu(PopupMenu target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected MenuItemPeer createMenuItem(MenuItem target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected FileDialogPeer createFileDialog(FileDialog target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- protected FontPeer getFontPeer(String name, int style)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public Dimension getScreenSize()
- {
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice gd = ge.getDefaultScreenDevice();
- GraphicsConfiguration gc = gd.getDefaultConfiguration();
- XGraphicsConfiguration xgc = (XGraphicsConfiguration) gc;
-
- return xgc.getSize();
- }
-
- public int getScreenResolution()
- {
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice gd = ge.getDefaultScreenDevice();
- GraphicsConfiguration gc = gd.getDefaultConfiguration();
- XGraphicsConfiguration xgc = (XGraphicsConfiguration) gc;
-
- return xgc.getResolution();
- }
-
- /**
- * Returns the color model used by this toolkit.
- *
- * @return the color model used by this toolkit
- */
- public ColorModel getColorModel()
- {
- // TODO: I assume 24 bit depth here, we can do this better.
- if (colorModel == null)
- colorModel = new DirectColorModel(24, 0xFF0000, 0xFF00, 0xFF);
- return colorModel;
- }
-
- public String[] getFontList()
- {
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- return ge.getAvailableFontFamilyNames();
- }
-
- public FontMetrics getFontMetrics(Font name)
- {
- ClasspathFontPeer peer = (ClasspathFontPeer) name.getPeer();
- return peer.getFontMetrics(name);
- }
-
- public void sync()
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Returns an image that has its pixel data loaded from a file with the
- * specified name. If that file doesn't exist, an empty or error image
- * is returned instead.
- *
- * @param name the filename of the file that contains the pixel data
- *
- * @return the image
- */
- public Image getImage(String name)
- {
- Image image;
- try
- {
- File file = new File(name);
- image = getImage(file.toURL());
- }
- catch (MalformedURLException ex)
- {
- // TODO: Replace by a more meaningful error image instead.
- image = null;
- }
- return image;
- }
-
- /**
- * Returns an image that has its pixel data loaded from the specified URL.
- * If the image cannot be loaded for some reason, an empty or error image
- * is returned instead.
- *
- * @param url the URL to the image data
- *
- * @return the image
- */
- public Image getImage(URL url)
- {
- Image image;
- if (imageCache.containsKey(url))
- {
- image = (Image) imageCache.get(url);
- }
- else
- {
- image = createImage(url);
- imageCache.put(url, image);
- }
- return image;
- }
-
- /**
- * Returns an image that has its pixel data loaded from a file with the
- * specified name. If that file doesn't exist, an empty or error image
- * is returned instead.
- *
- * @param filename the filename of the file that contains the pixel data
- *
- * @return the image
- */
- public Image createImage(String filename)
- {
- Image im;
- try
- {
- File file = new File(filename);
- URL url = file.toURL();
- im = createImage(url);
- }
- catch (MalformedURLException ex)
- {
- im = createErrorImage();
- }
- return im;
- }
-
- /**
- * Returns an image that has its pixel data loaded from the specified URL.
- * If the image cannot be loaded for some reason, an empty or error image
- * is returned instead.
- *
- * @param url the URL to the image data
- *
- * @return the image
- */
- public Image createImage(URL url)
- {
- Image image;
- try
- {
- image = createImage(url.openStream());
- }
- catch (IOException ex)
- {
- image = createErrorImage();
- }
- return image;
- }
-
- /**
- * Creates an image that is returned when calls to createImage() yields an
- * error.
- *
- * @return an image that is returned when calls to createImage() yields an
- * error
- */
- private Image createErrorImage()
- {
- // TODO: Create better error image.
- return new XImage(1, 1);
- }
-
- public boolean prepareImage(Image image, int width, int height, ImageObserver observer)
- {
- Image scaled = AbstractGraphics2D.prepareImage(image, width, height);
- return checkImage(image, width, height, observer) == ImageObserver.ALLBITS;
- }
-
- public int checkImage(Image image, int width, int height, ImageObserver observer)
- {
- // Images are loaded synchronously, so we don't bother and return true.
- return ImageObserver.ALLBITS;
- }
-
- public Image createImage(ImageProducer producer)
- {
- ImageConverter conv = new ImageConverter();
- producer.startProduction(conv);
- Image image = conv.getImage();
- return image;
- }
-
- public Image createImage(byte[] data, int offset, int len)
- {
- Image image;
- try
- {
- ByteArrayInputStream i = new ByteArrayInputStream(data, offset, len);
- image = createImage(i);
- }
- catch (IOException ex)
- {
- image = createErrorImage();
- }
- return image;
- }
-
- private Image createImage(InputStream i)
- throws IOException
- {
- Image image;
- BufferedImage buffered = ImageIO.read(i);
- // If the bufferedimage is opaque, then we can copy it over to an
- // X Pixmap for faster drawing.
- if (buffered != null && buffered.getTransparency() == Transparency.OPAQUE)
- {
- ImageProducer source = buffered.getSource();
- image = createImage(source);
- }
- else if (buffered != null)
- {
- image = buffered;
- }
- else
- {
- image = createErrorImage();
- }
- return image;
- }
-
- public PrintJob getPrintJob(Frame frame, String title, Properties props)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public void beep()
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public Clipboard getSystemClipboard()
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Returns the eventqueue used by the XLib peers.
- *
- * @return the eventqueue used by the XLib peers
- */
- protected EventQueue getSystemEventQueueImpl()
- {
- if (eventQueue == null)
- eventQueue = new EventQueue();
- return eventQueue;
- }
-
- public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public Map mapInputMethodHighlight(InputMethodHighlight highlight)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Helper method to quickly fetch the default device (X Display).
- *
- * @return the default XGraphicsDevice
- */
- static XGraphicsDevice getDefaultDevice()
- {
- XGraphicsEnvironment env = (XGraphicsEnvironment)
- XGraphicsEnvironment.getLocalGraphicsEnvironment();
- return (XGraphicsDevice) env.getDefaultScreenDevice();
- }
-
- @Override
- public boolean isModalExclusionTypeSupported(ModalExclusionType modalExclusionType)
- {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean isModalityTypeSupported(ModalityType modalityType)
- {
- // TODO Auto-generated method stub
- return false;
- }
-
- private void checkHeadLess(String message) throws HeadlessException
- {
- if(GraphicsEnvironment.isHeadless())
- {
- if(message == null)
- message = "This method cannot be called in headless mode.";
-
- throw new HeadlessException(message);
- }
- }
-}