1 /*
   2  * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package sun.lwawt;
  27 
  28 import java.awt.*;
  29 
  30 import sun.java2d.SurfaceData;
  31 
  32 // TODO Is it worth to generify this interface, like that:
  33 //
  34 // public interface PlatformWindow<WindowType extends Window>
  35 //
  36 // ?
  37 
  38 public interface PlatformWindow {
  39 
  40     /*
  41      * Delegate initialization (create native window and all the
  42      * related resources).
  43      */
  44     public void initialize(Window target, LWWindowPeer peer, PlatformWindow owner);
  45 
  46     /*
  47      * Delegate shutdown (dispose native window and all the
  48      * related resources).
  49      */
  50     public void dispose();
  51 
  52     /*
  53      * Shows or hides the window.
  54      */
  55     public void setVisible(boolean visible);
  56 
  57     /*
  58      * Sets the window title
  59      */
  60     public void setTitle(String title);
  61 
  62     /*
  63      * Sets the window bounds. Called when user changes window bounds
  64      * with setSize/setLocation/setBounds/reshape methods.
  65      */
  66     public void setBounds(int x, int y, int w, int h);
  67 
  68     /*
  69      * Returns the screen number where the window is.
  70      */
  71     public int getScreenImOn();
  72 
  73     /*
  74      * Returns the location of the window.
  75      */
  76     public Point getLocationOnScreen();
  77 
  78     /*
  79      * Returns the window insets.
  80      */
  81     public Insets getInsets();
  82 
  83     /*
  84      * Returns the metrics for a given font.
  85      */
  86     public FontMetrics getFontMetrics(Font f);
  87 
  88     /*
  89      * Get the SurfaceData for the window.
  90      */
  91     public SurfaceData getScreenSurface();
  92 
  93     /*
  94      * Revalidates the window's current SurfaceData and returns
  95      * the newly created one.
  96      */
  97     public SurfaceData replaceSurfaceData();
  98 
  99     /*
 100      * Creates a new image to serve as a back buffer.
 101      */
 102     public Image createBackBuffer();
 103 
 104     /*
 105      * Move the given part of the back buffer to the front buffer.
 106      */
 107     public void flip(int x1, int y1, int x2, int y2,
 108                      BufferCapabilities.FlipContents flipAction);
 109 
 110     public void toFront();
 111 
 112     public void toBack();
 113 
 114     public void setMenuBar(MenuBar mb);
 115 
 116     public void setAlwaysOnTop(boolean value);
 117 
 118     public void updateFocusableWindowState();
 119 
 120     public boolean requestWindowFocus();
 121 
 122     /*
 123      * Returns true only when called on a frame/dialog when it's natively focused.
 124      */
 125     public boolean isActive();
 126 
 127     public void setResizable(boolean resizable);
 128 
 129     public void setMinimumSize(int width, int height);
 130 
 131     /**
 132      * Transforms the given Graphics object according to the native
 133      * implementation traits (insets, etc.).
 134      */
 135     public Graphics transformGraphics(Graphics g);
 136 
 137     /*
 138      * Installs the images for particular window.
 139      */
 140     public void updateIconImages();
 141 
 142     public void setOpacity(float opacity);
 143 
 144     public void setOpaque(boolean isOpaque);
 145 
 146     public void enterFullScreenMode();
 147 
 148     public void exitFullScreenMode();
 149 
 150     public void setWindowState(int windowState);
 151 
 152     public long getLayerPtr();
 153 
 154     public LWWindowPeer getPeer();
 155 }