FSF GCC merge 02/23/03
[official-gcc.git] / libjava / gnu / awt / xlib / XToolkit.java
blobdf3a2b6b59521cfdcb6277bf323a2d7eb64bb00f
1 /* Copyright (C) 2000, 2002, 2003 Free Software Foundation
3 This file is part of libgcj.
5 This software is copyrighted work licensed under the terms of the
6 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
7 details. */
9 package gnu.awt.xlib;
11 import java.awt.*;
12 import java.awt.dnd.*;
13 import java.awt.dnd.peer.*;
14 import java.awt.im.*;
15 import java.awt.peer.*;
16 import java.awt.image.ImageProducer;
17 import java.awt.image.ImageObserver;
18 import java.net.*;
19 import java.awt.datatransfer.Clipboard;
20 import java.util.Properties;
21 import java.util.Map;
23 import gnu.gcj.xlib.Display;
24 import gnu.gcj.xlib.Screen;
25 import gnu.gcj.xlib.Visual;
27 public class XToolkit extends Toolkit
29 static XToolkit INSTANCE;
31 Display display;
33 EventQueue queue;
34 XEventLoop eventLoop;
36 XGraphicsConfiguration defaultConfig;
38 public XToolkit()
40 INSTANCE = this;
41 display = new Display();
42 synchronized (display)
44 queue = new XEventQueue(display);
45 eventLoop = new XEventLoop(display, queue);
49 public void flushIfIdle()
51 eventLoop.flushIfIdle();
54 protected ButtonPeer createButton(Button frontend)
56 // FIXME: Stubbed out, needs Swing:
58 XCanvasPeer realPeer = new XCanvasPeer(frontend);
59 SButtonPeer sbPeer = new SButtonPeer(frontend, realPeer);
60 return sbPeer;
62 return null;
65 protected TextFieldPeer createTextField(TextField frontend)
67 return null; // FIXME
70 protected LabelPeer createLabel(Label frontend)
72 return null; // FIXME
75 protected ListPeer createList(List frontend)
77 return null; // FIXME
80 protected CheckboxPeer createCheckbox(Checkbox frontend)
82 return null; // FIXME
85 protected ScrollbarPeer createScrollbar(Scrollbar frontend)
87 return null; // FIXME
90 protected ScrollPanePeer createScrollPane(ScrollPane frontend)
92 return null; // FIXME
95 protected TextAreaPeer createTextArea(TextArea frontend)
97 return null; // FIXME
100 protected ChoicePeer createChoice(Choice frontend)
102 return null; // FIXME
105 protected FramePeer createFrame(Frame frontend) {
106 return new XFramePeer(frontend);
109 protected CanvasPeer createCanvas(Canvas frontend) {
110 XCanvasPeer peer = new XCanvasPeer(frontend);
111 return peer;
114 protected PanelPeer createPanel(Panel frontend) {
115 return new XPanelPeer(frontend);
118 protected WindowPeer createWindow(Window frontend)
120 return null; // FIXME
123 protected DialogPeer createDialog(Dialog frontend)
125 return null; // FIXME
128 protected MenuBarPeer createMenuBar(MenuBar frontend)
130 return null; // FIXME
133 protected MenuPeer createMenu(Menu frontend)
135 return null; // FIXME
138 protected PopupMenuPeer createPopupMenu(PopupMenu frontend)
140 return null; // FIXME
143 protected MenuItemPeer createMenuItem(MenuItem frontend)
145 return null; // FIXME
148 protected FileDialogPeer createFileDialog(FileDialog frontend)
150 return null; // FIXME
153 protected CheckboxMenuItemPeer
154 createCheckboxMenuItem(CheckboxMenuItem frontend)
156 return null; // FIXME
159 protected java.awt.peer.FontPeer getFontPeer(String name, int style)
161 return null;
164 public Dimension getScreenSize()
166 throw new UnsupportedOperationException("not implemented yet");
169 public int getScreenResolution()
171 throw new UnsupportedOperationException("not implemented yet");
174 public java.awt.image.ColorModel getColorModel()
176 return getDefaultXGraphicsConfiguration().getColorModel();
179 public String[] getFontList()
181 throw new UnsupportedOperationException("not implemented yet");
184 public FontMetrics getFontMetrics(Font font)
186 return getDefaultXGraphicsConfiguration().getXFontMetrics(font);
189 public void sync()
191 throw new UnsupportedOperationException("not implemented yet");
194 public Image getImage(String filename)
196 return createImage(filename);
199 public Image getImage(URL url)
201 throw new UnsupportedOperationException("not implemented yet");
204 public Image createImage(String filename)
206 // FIXME: Stubbed out. We need a proper image I/O API.
209 BufferedImage jpeg;
210 FileInputStream fis = openFile(filename);
211 if (fis == null)
212 return null;
214 BasicRasterImageConsumer consumer = new BasicRasterImageConsumer();
215 JPEGImageDecoder jid = new JPEGImageDecoder(fis);
217 jid.startProduction(consumer);
218 jpeg = consumer.getImage();
220 int w = jpeg.getWidth();
221 int h = jpeg.getHeight();
223 BufferedImage img =
224 getDefaultXGraphicsConfiguration().createCompatibleImage(w, h);
226 Renderers renderers = Renderers.getInstance();
228 RasterOp renderer = renderers.createRenderer(jpeg.getColorModel(),
229 jpeg.getSampleModel(),
230 img.getColorModel(),
231 img.getSampleModel());
233 if (renderer == null)
235 throw new UnsupportedOperationException("couldn't find renderer");
238 renderer.filter(jpeg.getRaster(), img.getRaster());
240 return img;
243 return null;
246 public Image createImage(URL url)
248 throw new UnsupportedOperationException("not implemented yet");
251 public boolean prepareImage(Image image,
252 int width,
253 int height,
254 ImageObserver observer)
256 throw new UnsupportedOperationException("not implemented yet");
259 public int checkImage(Image image,
260 int width,
261 int height,
262 ImageObserver observer)
264 throw new UnsupportedOperationException("not implemented yet");
267 public Image createImage(ImageProducer producer)
269 throw new UnsupportedOperationException("not implemented yet");
272 public Image createImage(byte[] imagedata,
273 int imageoffset,
274 int imagelength)
276 throw new UnsupportedOperationException("not implemented yet");
280 public PrintJob getPrintJob(Frame frame,
281 String jobtitle,
282 Properties props);
285 public void beep()
287 throw new UnsupportedOperationException("not implemented yet");
290 public Clipboard getSystemClipboard()
292 return null; // FIXME
295 protected EventQueue getSystemEventQueueImpl()
297 return queue;
300 public PrintJob getPrintJob (Frame frame, String title, Properties props)
302 return null; // FIXME
305 XGraphicsConfiguration getDefaultXGraphicsConfiguration()
307 if (defaultConfig == null)
309 Screen screen = display.getDefaultScreen();
310 Visual visual = screen.getRootVisual();
311 defaultConfig = new XGraphicsConfiguration(visual);
313 // ASSERT:
314 if (!defaultConfig.getVisual().getScreen().equals(screen))
316 String msg = "screen of graphics configuration is not " +
317 "default screen";
318 throw new Error(msg);
322 return defaultConfig;
325 public DragSourceContextPeer
326 createDragSourceContextPeer(DragGestureEvent dge)
327 throws InvalidDnDOperationException
329 throw new UnsupportedOperationException("not implemented");
332 public DragGestureRecognizer
333 createDragGestureRecognizer(Class abstractRecognizerClass,
334 DragSource ds, Component c,
335 int srcActions, DragGestureListener dgl)
337 throw new UnsupportedOperationException("not implemented");
341 public Map mapInputMethodHighlight(InputMethodHighlight highlight)
343 throw new UnsupportedOperationException("not implemented");