| /* 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.gcj.xlib; |
| import gnu.gcj.RawData; |
| |
| /** |
| * |
| * Collection of attributes that can be applied to or read from an |
| * X11 window. |
| * |
| * <p>TODO: Split this class into two classes. One for the structure |
| * XSetWindowAttributes and one for the XWindowAttributes. However |
| * they should still share this common base class. |
| * |
| * @author Rolf W. Rasmussen <rolfwr@ii.uib.no> */ |
| public class WindowAttributes |
| { |
| // Must match definitions in X.h: |
| public final static long MASK_BUTTON_PRESS = 1L<< 2, |
| MASK_BUTTON_RELEASE = 1L<< 3, |
| MASK_EXPOSURE = 1L<<15, |
| MASK_STRUCTURE_NOTIFY = 1L<<17; |
| |
| public WindowAttributes() |
| { |
| init(null); |
| } |
| |
| public WindowAttributes(Window from) |
| { |
| initFromWindow(from); |
| } |
| |
| private native void initFromWindow(Window from); |
| private native void init(WindowAttributes copyFrom); |
| protected native void finalize(); |
| |
| public Object clone() |
| { |
| try |
| { |
| WindowAttributes attributes = (WindowAttributes) super.clone(); |
| // In case of an exception before the stucture is copied. |
| attributes.in = null; |
| attributes.out = null; |
| |
| // FIXME: do anything else? |
| |
| attributes.init(this); |
| return attributes; |
| } |
| catch (CloneNotSupportedException ex) |
| { |
| // This should never happen. |
| throw new InternalError (); |
| } |
| } |
| |
| public native void setBackground(long pixel); |
| public native void setBackground(Pixmap pixmap); |
| public native void setEventMask(long eventMask); |
| |
| public void setVisual(Visual visual) |
| { |
| this.visual = visual; |
| } |
| |
| /** |
| * Retrieve the visual. |
| * |
| * @return the visual that is or should be used by a window. null |
| * means CopyFormParent. |
| */ |
| public native Visual getVisual(); |
| |
| Display display; |
| |
| /** |
| * Reference to XWindowAttribute structure containing attributes |
| * read from a window. |
| */ |
| RawData in = null; |
| |
| /** |
| * Reference to XSetWindowAttribute structure containing attributes |
| * to be applied to a window. |
| */ |
| RawData out = null; |
| |
| long mask; |
| |
| /** null means CopyFromParent during window creation. */ |
| Visual visual = null; |
| |
| public native void apply(Window window); |
| |
| final RawData getXSetWindowAttributesStructure() |
| { |
| if (out == null) |
| initOut(); |
| return out; |
| } |
| |
| void initOut() |
| { |
| throw new UnsupportedOperationException("not implemented yet"); |
| } |
| } |