mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			334 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			334 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Java
		
	
	
	
/* Copyright (C) 2000  Free Software Foundation
 | 
						|
 | 
						|
   This file is part of libgcj.
 | 
						|
 | 
						|
This software is copyrighted work licensed under the terms of the
 | 
						|
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | 
						|
details.  */
 | 
						|
 | 
						|
package gnu.awt.xlib;
 | 
						|
 | 
						|
import java.awt.*;
 | 
						|
import java.awt.peer.*;
 | 
						|
import java.awt.image.ImageProducer;
 | 
						|
import java.awt.image.ImageObserver;
 | 
						|
import java.net.*;
 | 
						|
import java.awt.datatransfer.Clipboard;
 | 
						|
 | 
						|
import gnu.gcj.xlib.Display;
 | 
						|
import gnu.gcj.xlib.Screen;
 | 
						|
import gnu.gcj.xlib.Visual;
 | 
						|
 | 
						|
public class XToolkit extends Toolkit
 | 
						|
{
 | 
						|
  static XToolkit INSTANCE;
 | 
						|
  
 | 
						|
  Display display;
 | 
						|
 | 
						|
  EventQueue queue;
 | 
						|
  XEventLoop eventLoop;
 | 
						|
 | 
						|
  XGraphicsConfiguration defaultConfig;
 | 
						|
 | 
						|
  public XToolkit()
 | 
						|
  {
 | 
						|
    INSTANCE = this;
 | 
						|
    display = new Display();
 | 
						|
    synchronized (display)
 | 
						|
      {
 | 
						|
	queue = new XEventQueue(display);
 | 
						|
	eventLoop = new XEventLoop(display, queue);
 | 
						|
      }
 | 
						|
  }
 | 
						|
 | 
						|
  public void flushIfIdle()
 | 
						|
  {
 | 
						|
    eventLoop.flushIfIdle();
 | 
						|
  }
 | 
						|
 | 
						|
  protected ButtonPeer createButton(Button frontend)
 | 
						|
  {
 | 
						|
    // FIXME: Stubbed out, needs Swing:
 | 
						|
    /*
 | 
						|
    XCanvasPeer realPeer = new XCanvasPeer(frontend);
 | 
						|
    SButtonPeer sbPeer = new SButtonPeer(frontend, realPeer);
 | 
						|
    return sbPeer;
 | 
						|
    */
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected TextFieldPeer createTextField(TextField frontend)
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected LabelPeer createLabel(Label frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected ListPeer createList(List frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected CheckboxPeer createCheckbox(Checkbox frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected ScrollbarPeer createScrollbar(Scrollbar frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected ScrollPanePeer createScrollPane(ScrollPane frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected TextAreaPeer createTextArea(TextArea frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected ChoicePeer createChoice(Choice frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected FramePeer createFrame(Frame frontend) {
 | 
						|
    return new XFramePeer(frontend);
 | 
						|
  }
 | 
						|
 | 
						|
  protected CanvasPeer createCanvas(Canvas frontend) {
 | 
						|
    XCanvasPeer peer = new XCanvasPeer(frontend);
 | 
						|
    return peer;
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected PanelPeer createPanel(Panel frontend) {
 | 
						|
    return new XPanelPeer(frontend);
 | 
						|
  }
 | 
						|
 | 
						|
  protected WindowPeer createWindow(Window frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected DialogPeer createDialog(Dialog frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected MenuBarPeer createMenuBar(MenuBar frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected MenuPeer createMenu(Menu frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected PopupMenuPeer createPopupMenu(PopupMenu frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected MenuItemPeer createMenuItem(MenuItem frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected FileDialogPeer createFileDialog(FileDialog frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
  
 | 
						|
  protected CheckboxMenuItemPeer
 | 
						|
      createCheckboxMenuItem(CheckboxMenuItem frontend) 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
 | 
						|
  protected java.awt.peer.FontPeer getFontPeer(String name, int style) 
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public Dimension getScreenSize()
 | 
						|
  { 
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public int getScreenResolution()
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
  
 | 
						|
  public java.awt.image.ColorModel getColorModel()
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public String[] getFontList()
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public FontMetrics getFontMetrics(Font font)
 | 
						|
  {
 | 
						|
    return defaultConfig.getXFontMetrics(font);
 | 
						|
  }
 | 
						|
 | 
						|
  public void sync()
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
    
 | 
						|
  public Image getImage(String filename)
 | 
						|
  {
 | 
						|
    return createImage(filename);
 | 
						|
  }
 | 
						|
  
 | 
						|
  public Image getImage(URL url)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public Image createImage(String filename)
 | 
						|
  {
 | 
						|
    // FIXME: Stubbed out. We need a proper image I/O API.
 | 
						|
 | 
						|
    /*
 | 
						|
    BufferedImage jpeg;
 | 
						|
    FileInputStream fis = openFile(filename);
 | 
						|
    if (fis == null)
 | 
						|
      return null;
 | 
						|
    
 | 
						|
    BasicRasterImageConsumer consumer = new BasicRasterImageConsumer();
 | 
						|
    JPEGImageDecoder jid = new JPEGImageDecoder(fis);
 | 
						|
 | 
						|
    jid.startProduction(consumer);
 | 
						|
    jpeg = consumer.getImage();
 | 
						|
    
 | 
						|
    int w = jpeg.getWidth();
 | 
						|
    int h = jpeg.getHeight();
 | 
						|
    
 | 
						|
    BufferedImage img =
 | 
						|
      getDefaultXGraphicsConfiguration().createCompatibleImage(w, h);
 | 
						|
    
 | 
						|
    Renderers renderers = Renderers.getInstance();
 | 
						|
    
 | 
						|
    RasterOp renderer = renderers.createRenderer(jpeg.getColorModel(),
 | 
						|
						 jpeg.getSampleModel(),
 | 
						|
						 img.getColorModel(),
 | 
						|
						 img.getSampleModel());
 | 
						|
	
 | 
						|
    if (renderer == null)
 | 
						|
      {
 | 
						|
	throw new UnsupportedOperationException("couldn't find renderer");
 | 
						|
      }
 | 
						|
 | 
						|
    renderer.filter(jpeg.getRaster(), img.getRaster());
 | 
						|
    
 | 
						|
    return img;
 | 
						|
    */
 | 
						|
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public Image createImage(URL url)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean prepareImage(Image image,
 | 
						|
			      int width,
 | 
						|
			      int height,
 | 
						|
			      ImageObserver observer)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
  
 | 
						|
  public int checkImage(Image image,
 | 
						|
			int width,
 | 
						|
			int height,
 | 
						|
			ImageObserver observer)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
  
 | 
						|
  public Image createImage(ImageProducer producer)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public Image createImage(byte[] imagedata,
 | 
						|
			   int imageoffset,
 | 
						|
			   int imagelength)
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  /*
 | 
						|
    public PrintJob getPrintJob(Frame frame,
 | 
						|
				String jobtitle,
 | 
						|
				Properties props);
 | 
						|
  */
 | 
						|
 | 
						|
  public void beep()
 | 
						|
  {
 | 
						|
    throw new UnsupportedOperationException("not implemented yet");
 | 
						|
  }
 | 
						|
 | 
						|
  public Clipboard getSystemClipboard() 
 | 
						|
  {
 | 
						|
    return null; // FIXME
 | 
						|
  }
 | 
						|
    
 | 
						|
  protected EventQueue getSystemEventQueueImpl()
 | 
						|
  {
 | 
						|
    return queue;
 | 
						|
  }
 | 
						|
    
 | 
						|
  XGraphicsConfiguration getDefaultXGraphicsConfiguration()
 | 
						|
  {
 | 
						|
    if (defaultConfig == null)
 | 
						|
      {
 | 
						|
	Screen screen = display.getDefaultScreen();
 | 
						|
	Visual visual = screen.getRootVisual();
 | 
						|
	defaultConfig = new XGraphicsConfiguration(visual);
 | 
						|
 | 
						|
	// ASSERT:
 | 
						|
	if (!defaultConfig.getVisual().getScreen().equals(screen))
 | 
						|
	  {
 | 
						|
	    String msg = "screen of graphics configuration is not " +
 | 
						|
	      "default screen";
 | 
						|
	    throw new Error(msg);
 | 
						|
	  }
 | 
						|
      }
 | 
						|
    
 | 
						|
    return defaultConfig;
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
    /*
 | 
						|
    public DragSourceContextPeer
 | 
						|
	createDragSourceContextPeer(DragGestureEvent dge)
 | 
						|
	throws InvalidDnDOperationException;
 | 
						|
 | 
						|
    public DragGestureRecognizer
 | 
						|
	createDragGestureRecognizer(Class abstractRecognizerClass,
 | 
						|
				    DragSource ds, Component c,
 | 
						|
				    int srcActions, DragGestureListener dgl) {
 | 
						|
	throw new UnsupportedOperationException("not implemented");
 | 
						|
    }
 | 
						|
    */
 | 
						|
 | 
						|
    
 | 
						|
    /*
 | 
						|
    public Map mapInputMethodHighlight(InputMethodHighlight highlight);
 | 
						|
    */
 | 
						|
}
 |