public class NewtCanvasAWT extends Canvas implements WindowClosingProtocol, OffscreenLayerOption, AWTPrintLifecycle
Canvas
containing a NEWT Window
using native parenting.
setShallUseOffscreenLayer(true)
maybe called to use an offscreen drawable (FBO or PBuffer) allowing
the underlying JAWT mechanism to composite the image, if supported.Component.BaselineResizeBehavior
WindowClosingProtocol.WindowClosingMode
AWTPrintLifecycle.Context
Modifier and Type | Field and Description |
---|---|
static boolean |
DEBUG |
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
DEFAULT_PRINT_TILE_SIZE
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
NewtCanvasAWT()
Instantiates a NewtCanvas without a NEWT child.
|
NewtCanvasAWT(GraphicsConfiguration gc)
Instantiates a NewtCanvas without a NEWT child.
|
NewtCanvasAWT(GraphicsConfiguration gc,
Window child)
Instantiates a NewtCanvas with a NEWT child.
|
NewtCanvasAWT(Window child)
Instantiates a NewtCanvas with a NEWT child.
|
Modifier and Type | Method and Description |
---|---|
void |
addNotify() |
void |
destroy()
Destroys this resource:
Make the NEWT Child invisible
Disconnects the NEWT Child from this Canvas NativeWindow, reparent to NULL
Issues
destroy() on the NEWT Child
Remove reference to the NEWT Child
|
WindowClosingProtocol.WindowClosingMode |
getDefaultCloseOperation() |
GraphicsConfiguration |
getGraphicsConfiguration() |
NativeWindow |
getNativeWindow() |
Window |
getNEWTChild() |
boolean |
getShallUseOffscreenLayer()
Returns the property set by
OffscreenLayerOption.setShallUseOffscreenLayer(boolean) . |
boolean |
getSkipJAWTDestroy()
|
boolean |
isApplet()
Returns true if the AWT component is parented to an
Applet ,
otherwise false. |
boolean |
isAWTEventPassThrough()
Returns
true if Key and Mouse input events will be passed through AWT,
otherwise only the NEWT child will receive them. |
boolean |
isOffscreenLayerSurfaceEnabled()
Returns true if this instance uses an offscreen layer, otherwise false.
|
void |
paint(Graphics g) |
void |
print(Graphics graphics) |
void |
releasePrint()
Shall be called after
PrinterJob.print() . |
void |
removeNotify() |
void |
reshape(int x,
int y,
int width,
int height) |
WindowClosingProtocol.WindowClosingMode |
setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op) |
Window |
setNEWTChild(Window newChild)
Sets a new NEWT child, provoking reparenting.
|
void |
setShallUseOffscreenLayer(boolean v)
Request an offscreen layer, if supported.
|
void |
setSkipJAWTDestroy(boolean v)
Mitigates Bug 910 (IcedTea-Web), i.e.
|
void |
setupPrint(double scaleMatX,
double scaleMatY,
int numSamples,
int tileWidth,
int tileHeight)
Shall be called before
PrinterJob.print() . |
void |
update(Graphics g) |
createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, dispatchEvent, doLayout, enable, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, preferredSize, prepareImage, prepareImage, printAll, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocusInWindow, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
public NewtCanvasAWT()
public NewtCanvasAWT(GraphicsConfiguration gc)
public NewtCanvasAWT(Window child)
public NewtCanvasAWT(GraphicsConfiguration gc, Window child)
public void setShallUseOffscreenLayer(boolean v)
OffscreenLayerOption
Shall be called before the first NativeSurface.lockSurface()
,
and hence before realization.
setShallUseOffscreenLayer
in interface OffscreenLayerOption
OffscreenLayerOption.getShallUseOffscreenLayer()
,
OffscreenLayerOption.isOffscreenLayerSurfaceEnabled()
public final boolean getShallUseOffscreenLayer()
OffscreenLayerOption
OffscreenLayerOption.setShallUseOffscreenLayer(boolean)
.getShallUseOffscreenLayer
in interface OffscreenLayerOption
public final boolean isOffscreenLayerSurfaceEnabled()
OffscreenLayerOption
This instance is an offscreen layer, if setShallUseOffscreenLayer(true)
has been called before it's realization and first lock and the underlying implementation supports it.
NativeSurface.lockSurface()
.isOffscreenLayerSurfaceEnabled
in interface OffscreenLayerOption
OffscreenLayerOption.setShallUseOffscreenLayer(boolean)
public final boolean isApplet()
Applet
,
otherwise false. This information is valid only after addNotify()
is issued.public Window setNEWTChild(Window newChild)
A previously detached newChild
will be released to top-level status
and made invisible.
Note: When switching NEWT child's, detaching the previous first via setNEWTChild(null)
produced much cleaner visual results.
public Window getNEWTChild()
public NativeWindow getNativeWindow()
removeNotify()
has been called,
or addNotify()
hasn't been called yet.public WindowClosingProtocol.WindowClosingMode getDefaultCloseOperation()
getDefaultCloseOperation
in interface WindowClosingProtocol
WindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,
WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
public WindowClosingProtocol.WindowClosingMode setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op)
setDefaultCloseOperation
in interface WindowClosingProtocol
op
- the new close operation valueWindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,
WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
public final void setSkipJAWTDestroy(boolean v)
skipJAWTDestroy
defaults to false
.
Due to above IcedTea-Web issue the Applet
code needs to avoid JAWT destruction before
Applet.destroy()
is reached by setting skipJAWTDestroy
to true
.
Afterwards the value should be reset to false
and destroy()
needs to be called,
which finally will perform the pending JAWT destruction.
public final boolean getSkipJAWTDestroy()
public GraphicsConfiguration getGraphicsConfiguration()
Overridden to choose a GraphicsConfiguration
from a parent container's
GraphicsDevice
.
Method also intercepts GraphicsConfiguration
changes regarding to
its capabilities and its GraphicsDevice
. This may happen in case
the display changes its configuration or the component is moved to another screen.
getGraphicsConfiguration
in class Component
public void removeNotify()
removeNotify
in class Component
public final void destroy()
destroy()
on the NEWT ChildWindow.destroy()
public void reshape(int x, int y, int width, int height)
public void setupPrint(double scaleMatX, double scaleMatY, int numSamples, int tileWidth, int tileHeight)
AWTPrintLifecycle
PrinterJob.print()
.
See Usage.
setupPrint
in interface AWTPrintLifecycle
scaleMatX
- Graphics2D
scaling factor
, i.e. rendering 1/scaleMatX * width pixelsscaleMatY
- Graphics2D
scaling factor
, i.e. rendering 1/scaleMatY * height pixelsnumSamples
- multisampling value: < 0 turns off, == 0 leaves as-is, > 0 enables using given num samplestileWidth
- custom tile width for tile renderer
, pass -1 for default.tileHeight
- custom tile height for tile renderer
, pass -1 for default.
FIXME: Add border size !public void releasePrint()
AWTPrintLifecycle
PrinterJob.print()
.
See Usage.
releasePrint
in interface AWTPrintLifecycle
public final boolean isAWTEventPassThrough()
true
if Key and Mouse input events will be passed through AWT,
otherwise only the NEWT child
will receive them.
Normally only the NEWT child
will receive Key and Mouse input events.
In offscreen mode, e.g. OSX/CALayer, the AWT events will be received and translated into NEWT events
and delivered to the NEWT child window.
Note: AWT key events will consumed
in pass-through mode.
Copyright 2010 JogAmp Community.