2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / libjava / gnu / awt / xlib / XToolkit.java
blob3da993f3924c27f7f4ff975b34c6d10b0998a5ac
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 flushIfIdle ();
192 // FIXME: should instead wait for eventLoop to go idle
193 // (perhaps send a dummy event there and block till it makes
194 // it through the queue)
197 public Image getImage(String filename)
199 return createImage(filename);
202 public Image getImage(URL url)
204 throw new UnsupportedOperationException("not implemented yet");
207 public Image createImage(String filename)
209 // FIXME: Stubbed out. We need a proper image I/O API.
212 BufferedImage jpeg;
213 FileInputStream fis = openFile(filename);
214 if (fis == null)
215 return null;
217 BasicRasterImageConsumer consumer = new BasicRasterImageConsumer();
218 JPEGImageDecoder jid = new JPEGImageDecoder(fis);
220 jid.startProduction(consumer);
221 jpeg = consumer.getImage();
223 int w = jpeg.getWidth();
224 int h = jpeg.getHeight();
226 BufferedImage img =
227 getDefaultXGraphicsConfiguration().createCompatibleImage(w, h);
229 Renderers renderers = Renderers.getInstance();
231 RasterOp renderer = renderers.createRenderer(jpeg.getColorModel(),
232 jpeg.getSampleModel(),
233 img.getColorModel(),
234 img.getSampleModel());
236 if (renderer == null)
238 throw new UnsupportedOperationException("couldn't find renderer");
241 renderer.filter(jpeg.getRaster(), img.getRaster());
243 return img;
246 return null;
249 public Image createImage(URL url)
251 throw new UnsupportedOperationException("not implemented yet");
254 public boolean prepareImage(Image image,
255 int width,
256 int height,
257 ImageObserver observer)
259 throw new UnsupportedOperationException("not implemented yet");
262 public int checkImage(Image image,
263 int width,
264 int height,
265 ImageObserver observer)
267 throw new UnsupportedOperationException("not implemented yet");
270 public Image createImage(ImageProducer producer)
272 throw new UnsupportedOperationException("not implemented yet");
275 public Image createImage(byte[] imagedata,
276 int imageoffset,
277 int imagelength)
279 throw new UnsupportedOperationException("not implemented yet");
283 public PrintJob getPrintJob(Frame frame,
284 String jobtitle,
285 Properties props);
288 public void beep()
290 throw new UnsupportedOperationException("not implemented yet");
293 public Clipboard getSystemClipboard()
295 return null; // FIXME
298 protected EventQueue getSystemEventQueueImpl()
300 return queue;
303 public PrintJob getPrintJob (Frame frame, String title, Properties props)
305 return null; // FIXME
308 XGraphicsConfiguration getDefaultXGraphicsConfiguration()
310 if (defaultConfig == null)
312 Screen screen = display.getDefaultScreen();
313 Visual visual = screen.getRootVisual();
314 defaultConfig = new XGraphicsConfiguration(visual);
316 // ASSERT:
317 if (!defaultConfig.getVisual().getScreen().equals(screen))
319 String msg = "screen of graphics configuration is not " +
320 "default screen";
321 throw new Error(msg);
325 return defaultConfig;
328 public DragSourceContextPeer
329 createDragSourceContextPeer(DragGestureEvent dge)
330 throws InvalidDnDOperationException
332 throw new UnsupportedOperationException("not implemented");
335 public DragGestureRecognizer
336 createDragGestureRecognizer(Class abstractRecognizerClass,
337 DragSource ds, Component c,
338 int srcActions, DragGestureListener dgl)
340 throw new UnsupportedOperationException("not implemented");
344 public Map mapInputMethodHighlight(InputMethodHighlight highlight)
346 throw new UnsupportedOperationException("not implemented");