📄 gtktoolkit.java
字号:
int max_entries; public LRUCache(int max) { super(max, 0.75f, true); max_entries = max; } protected boolean removeEldestEntry(Map.Entry eldest) { return size() > max_entries; } } private LRUCache fontCache = new LRUCache(50); private LRUCache metricsCache = new LRUCache(50); private LRUCache imageCache = new LRUCache(50); public FontMetrics getFontMetrics (Font font) { synchronized (metricsCache) { if (metricsCache.containsKey(font)) return (FontMetrics) metricsCache.get(font); } FontMetrics m = new GdkFontMetrics (font); synchronized (metricsCache) { metricsCache.put(font, m); } return m; } public Image getImage (String filename) { if (imageCache.containsKey(filename)) return (Image) imageCache.get(filename); else { Image im = createImage(filename); imageCache.put(filename, im); return im; } } public Image getImage (URL url) { if (imageCache.containsKey(url)) return (Image) imageCache.get(url); else { Image im = createImage(url); imageCache.put(url, im); return im; } } public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props) { return null; } public native int getScreenResolution(); public Dimension getScreenSize () { int dim[] = new int[2]; getScreenSizeDimensions(dim); return new Dimension(dim[0], dim[1]); } public Clipboard getSystemClipboard() { SecurityManager secman = System.getSecurityManager(); if (secman != null) secman.checkSystemClipboardAccess(); return GtkClipboard.getInstance(); } /** * Prepares a GtkImage. For every other kind of Image it just * assumes the image is already prepared for rendering. */ public boolean prepareImage (Image image, int width, int height, ImageObserver observer) { /* GtkImages are always prepared, as long as they're loaded. */ if (image instanceof GtkImage) return ((((GtkImage)image).checkImage (observer) & ImageObserver.ALLBITS) != 0); /* Assume anything else is too */ return true; } public native void sync(); protected void setComponentState (Component c, GtkComponentPeer cp) { /* Make the Component reflect Peer defaults */ if (c.getForeground () == null) c.setForeground (cp.getForeground ()); if (c.getBackground () == null) c.setBackground (cp.getBackground ()); // if (c.getFont () == null) // c.setFont (cp.getFont ()); /* Make the Peer reflect the state of the Component */ if (! (c instanceof Window)) { cp.setCursor (c.getCursor ()); Rectangle bounds = c.getBounds (); cp.setBounds (bounds.x, bounds.y, bounds.width, bounds.height); cp.setVisible (c.isVisible ()); } } protected ButtonPeer createButton (Button b) { return new GtkButtonPeer (b); } protected CanvasPeer createCanvas (Canvas c) { return new GtkCanvasPeer (c); } protected CheckboxPeer createCheckbox (Checkbox cb) { return new GtkCheckboxPeer (cb); } protected CheckboxMenuItemPeer createCheckboxMenuItem (CheckboxMenuItem cmi) { return new GtkCheckboxMenuItemPeer (cmi); } protected ChoicePeer createChoice (Choice c) { return new GtkChoicePeer (c); } protected DialogPeer createDialog (Dialog d) { return new GtkDialogPeer (d); } protected FileDialogPeer createFileDialog (FileDialog fd) { return new GtkFileDialogPeer (fd); } protected FramePeer createFrame (Frame f) { return new GtkFramePeer (f); } protected LabelPeer createLabel (Label label) { return new GtkLabelPeer (label); } protected ListPeer createList (List list) { return new GtkListPeer (list); } protected MenuPeer createMenu (Menu m) { return new GtkMenuPeer (m); } protected MenuBarPeer createMenuBar (MenuBar mb) { return new GtkMenuBarPeer (mb); } protected MenuItemPeer createMenuItem (MenuItem mi) { return new GtkMenuItemPeer (mi); } protected PanelPeer createPanel (Panel p) { return new GtkPanelPeer (p); } protected PopupMenuPeer createPopupMenu (PopupMenu target) { return new GtkPopupMenuPeer (target); } protected ScrollPanePeer createScrollPane (ScrollPane sp) { return new GtkScrollPanePeer (sp); } protected ScrollbarPeer createScrollbar (Scrollbar sb) { return new GtkScrollbarPeer (sb); } protected TextAreaPeer createTextArea (TextArea ta) { return new GtkTextAreaPeer (ta); } protected TextFieldPeer createTextField (TextField tf) { return new GtkTextFieldPeer (tf); } protected WindowPeer createWindow (Window w) { return new GtkWindowPeer (w); } public EmbeddedWindowPeer createEmbeddedWindow (EmbeddedWindow w) { return new GtkEmbeddedWindowPeer (w); } /** * @deprecated part of the older "logical font" system in earlier AWT * implementations. Our newer Font class uses getClasspathFontPeer. */ protected FontPeer getFontPeer (String name, int style) { // All fonts get a default size of 12 if size is not specified. return getFontPeer(name, style, 12); } /** * Private method that allows size to be set at initialization time. */ private FontPeer getFontPeer (String name, int style, int size) { Map attrs = new HashMap (); ClasspathFontPeer.copyStyleToAttrs (style, attrs); ClasspathFontPeer.copySizeToAttrs (size, attrs); return getClasspathFontPeer (name, attrs); } /** * Newer method to produce a peer for a Font object, even though Sun's * design claims Font should now be peerless, we do not agree with this * model, hence "ClasspathFontPeer". */ public ClasspathFontPeer getClasspathFontPeer (String name, Map attrs) { Map keyMap = new HashMap (attrs); // We don't know what kind of "name" the user requested (logical, face, // family), and we don't actually *need* to know here. The worst case // involves failure to consolidate fonts with the same backend in our // cache. This is harmless. keyMap.put ("GtkToolkit.RequestedFontName", name); if (fontCache.containsKey (keyMap)) return (ClasspathFontPeer) fontCache.get (keyMap); else { ClasspathFontPeer newPeer = new GdkFontPeer (name, attrs); fontCache.put (keyMap, newPeer); return newPeer; } } public ClasspathTextLayoutPeer getClasspathTextLayoutPeer (AttributedString str, FontRenderContext frc) { return new GdkTextLayout(str, frc); } protected EventQueue getSystemEventQueueImpl() { synchronized (GtkToolkit.class) { if (q == null) { q = new EventQueue(); GtkGenericPeer.enableQueue (q); } } return q; } protected native void loadSystemColors (int[] systemColors); public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e) { throw new Error("not implemented"); } public Map mapInputMethodHighlight(InputMethodHighlight highlight) { throw new Error("not implemented"); } public Rectangle getBounds() { int[] dims = new int[2]; getScreenSizeDimensions(dims); return new Rectangle(0, 0, dims[0], dims[1]); } // ClasspathToolkit methods public GraphicsEnvironment getLocalGraphicsEnvironment() { return new GdkGraphicsEnvironment(); } public Font createFont(int format, InputStream stream) { throw new UnsupportedOperationException(); } public RobotPeer createRobot (GraphicsDevice screen) throws AWTException { return new GdkRobotPeer (screen); } public void registerImageIOSpis(IIORegistry reg) { GdkPixbufDecoder.registerSpis(reg); } public static native void gtkMain();} // class GtkToolkit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -