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
12 import java
.awt
.dnd
.*;
13 import java
.awt
.dnd
.peer
.*;
15 import java
.awt
.peer
.*;
16 import java
.awt
.image
.ImageProducer
;
17 import java
.awt
.image
.ImageObserver
;
19 import java
.awt
.datatransfer
.Clipboard
;
20 import java
.util
.Properties
;
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
;
36 XGraphicsConfiguration defaultConfig
;
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);
65 protected TextFieldPeer
createTextField(TextField frontend
)
70 protected LabelPeer
createLabel(Label frontend
)
75 protected ListPeer
createList(List frontend
)
80 protected CheckboxPeer
createCheckbox(Checkbox frontend
)
85 protected ScrollbarPeer
createScrollbar(Scrollbar frontend
)
90 protected ScrollPanePeer
createScrollPane(ScrollPane frontend
)
95 protected TextAreaPeer
createTextArea(TextArea frontend
)
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
);
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
)
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
);
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.
210 FileInputStream fis = openFile(filename);
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();
224 getDefaultXGraphicsConfiguration().createCompatibleImage(w, h);
226 Renderers renderers = Renderers.getInstance();
228 RasterOp renderer = renderers.createRenderer(jpeg.getColorModel(),
229 jpeg.getSampleModel(),
231 img.getSampleModel());
233 if (renderer == null)
235 throw new UnsupportedOperationException("couldn't find renderer");
238 renderer.filter(jpeg.getRaster(), img.getRaster());
246 public Image
createImage(URL url
)
248 throw new UnsupportedOperationException("not implemented yet");
251 public boolean prepareImage(Image image
,
254 ImageObserver observer
)
256 throw new UnsupportedOperationException("not implemented yet");
259 public int checkImage(Image image
,
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
,
276 throw new UnsupportedOperationException("not implemented yet");
280 public PrintJob getPrintJob(Frame frame,
287 throw new UnsupportedOperationException("not implemented yet");
290 public Clipboard
getSystemClipboard()
292 return null; // FIXME
295 protected EventQueue
getSystemEventQueueImpl()
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
);
314 if (!defaultConfig
.getVisual().getScreen().equals(screen
))
316 String msg
= "screen of graphics configuration is not " +
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");