aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt
diff options
context:
space:
mode:
Diffstat (limited to 'src/newt')
-rw-r--r--src/newt/classes/com/jogamp/newt/Display.java34
-rw-r--r--src/newt/classes/com/jogamp/newt/MonitorDevice.java49
-rw-r--r--src/newt/classes/com/jogamp/newt/MonitorMode.java92
-rw-r--r--src/newt/classes/com/jogamp/newt/NewtFactory.java25
-rw-r--r--src/newt/classes/com/jogamp/newt/NewtVersion.java10
-rw-r--r--src/newt/classes/com/jogamp/newt/Screen.java36
-rw-r--r--src/newt/classes/com/jogamp/newt/Window.java32
-rw-r--r--src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java171
-rw-r--r--src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.java28
-rw-r--r--src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java28
-rw-r--r--src/newt/classes/com/jogamp/newt/event/DoubleTapScrollGesture.java67
-rw-r--r--src/newt/classes/com/jogamp/newt/event/GestureHandler.java60
-rw-r--r--src/newt/classes/com/jogamp/newt/event/InputEvent.java58
-rw-r--r--src/newt/classes/com/jogamp/newt/event/KeyAdapter.java12
-rw-r--r--src/newt/classes/com/jogamp/newt/event/KeyEvent.java258
-rw-r--r--src/newt/classes/com/jogamp/newt/event/KeyListener.java22
-rw-r--r--src/newt/classes/com/jogamp/newt/event/MonitorEvent.java14
-rw-r--r--src/newt/classes/com/jogamp/newt/event/MouseAdapter.java18
-rw-r--r--src/newt/classes/com/jogamp/newt/event/MouseEvent.java166
-rw-r--r--src/newt/classes/com/jogamp/newt/event/MouseListener.java20
-rw-r--r--src/newt/classes/com/jogamp/newt/event/NEWTEvent.java31
-rw-r--r--src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java14
-rw-r--r--src/newt/classes/com/jogamp/newt/event/NEWTEventFiFo.java10
-rw-r--r--src/newt/classes/com/jogamp/newt/event/NEWTEventListener.java12
-rw-r--r--src/newt/classes/com/jogamp/newt/event/OutputEvent.java2
-rw-r--r--src/newt/classes/com/jogamp/newt/event/PinchToZoomGesture.java49
-rw-r--r--src/newt/classes/com/jogamp/newt/event/TraceKeyAdapter.java12
-rw-r--r--src/newt/classes/com/jogamp/newt/event/TraceMouseAdapter.java18
-rw-r--r--src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java17
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowAdapter.java17
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowEvent.java18
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowListener.java18
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java12
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java36
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java14
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java22
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java46
-rw-r--r--src/newt/classes/com/jogamp/newt/opengl/GLWindow.java40
-rw-r--r--src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java133
-rw-r--r--src/newt/classes/com/jogamp/newt/util/EDTUtil.java30
-rw-r--r--src/newt/classes/com/jogamp/newt/util/MainThread.java90
-rw-r--r--src/newt/classes/com/jogamp/newt/util/MonitorModeUtil.java18
-rw-r--r--src/newt/classes/jogamp/newt/Debug.java19
-rw-r--r--src/newt/classes/jogamp/newt/DefaultEDTUtil.java36
-rw-r--r--src/newt/classes/jogamp/newt/DisplayImpl.java75
-rw-r--r--src/newt/classes/jogamp/newt/MonitorDeviceImpl.java28
-rw-r--r--src/newt/classes/jogamp/newt/MonitorModeProps.java44
-rw-r--r--src/newt/classes/jogamp/newt/NEWTJNILibLoader.java17
-rw-r--r--src/newt/classes/jogamp/newt/OffscreenWindow.java35
-rw-r--r--src/newt/classes/jogamp/newt/ScreenImpl.java98
-rw-r--r--src/newt/classes/jogamp/newt/ScreenMonitorState.java18
-rw-r--r--src/newt/classes/jogamp/newt/WindowImpl.java570
-rw-r--r--src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java16
-rw-r--r--src/newt/classes/jogamp/newt/awt/event/AWTNewtEventFactory.java74
-rw-r--r--src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java31
-rw-r--r--src/newt/classes/jogamp/newt/driver/DriverClearFocus.java6
-rw-r--r--src/newt/classes/jogamp/newt/driver/DriverUpdatePosition.java8
-rw-r--r--src/newt/classes/jogamp/newt/driver/awt/AWTCanvas.java44
-rw-r--r--src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java33
-rw-r--r--src/newt/classes/jogamp/newt/driver/awt/DisplayDriver.java20
-rw-r--r--src/newt/classes/jogamp/newt/driver/awt/ScreenDriver.java31
-rw-r--r--src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java56
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/egl/DisplayDriver.java15
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/egl/ScreenDriver.java24
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/egl/WindowDriver.java28
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java13
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/vc/iv/ScreenDriver.java25
-rw-r--r--src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java36
-rw-r--r--src/newt/classes/jogamp/newt/driver/intel/gdl/DisplayDriver.java15
-rw-r--r--src/newt/classes/jogamp/newt/driver/intel/gdl/ScreenDriver.java26
-rw-r--r--src/newt/classes/jogamp/newt/driver/intel/gdl/WindowDriver.java24
-rw-r--r--src/newt/classes/jogamp/newt/driver/kd/DisplayDriver.java15
-rw-r--r--src/newt/classes/jogamp/newt/driver/kd/ScreenDriver.java30
-rw-r--r--src/newt/classes/jogamp/newt/driver/kd/WindowDriver.java28
-rw-r--r--src/newt/classes/jogamp/newt/driver/linux/LinuxEventDeviceTracker.java16
-rw-r--r--src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java46
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/DisplayDriver.java21
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/MacKeyUtil.java38
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/ScreenDriver.java35
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java138
-rw-r--r--src/newt/classes/jogamp/newt/driver/windows/DisplayDriver.java21
-rw-r--r--src/newt/classes/jogamp/newt/driver/windows/ScreenDriver.java28
-rw-r--r--src/newt/classes/jogamp/newt/driver/windows/WindowDriver.java99
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/DisplayDriver.java30
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/RandR.java22
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/RandR11.java66
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/RandR13.java60
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/ScreenDriver.java73
-rw-r--r--src/newt/classes/jogamp/newt/driver/x11/WindowDriver.java100
-rw-r--r--src/newt/classes/jogamp/newt/event/NEWTEventTask.java10
-rw-r--r--src/newt/classes/jogamp/newt/swt/SWTEDTUtil.java48
-rw-r--r--src/newt/classes/jogamp/newt/swt/event/SWTNewtEventFactory.java48
92 files changed, 2292 insertions, 2004 deletions
diff --git a/src/newt/classes/com/jogamp/newt/Display.java b/src/newt/classes/com/jogamp/newt/Display.java
index 382a5d583..a0a098481 100644
--- a/src/newt/classes/com/jogamp/newt/Display.java
+++ b/src/newt/classes/com/jogamp/newt/Display.java
@@ -41,9 +41,11 @@ public abstract class Display {
public static final boolean DEBUG = Debug.debug("Display");
/** return precomputed hashCode from FQN {@link #getFQName()} */
+ @Override
public abstract int hashCode();
/** return true if obj is of type Display and both FQN {@link #getFQName()} equals */
+ @Override
public boolean equals(Object obj) {
if (this == obj) { return true; }
if (obj instanceof Display) {
@@ -114,9 +116,9 @@ public abstract class Display {
*/
public abstract int removeReference();
- /**
- * Return the {@link AbstractGraphicsDevice} used for depending resources lifecycle,
- * i.e. {@link Screen} and {@link Window}, as well as the event dispatching (EDT). */
+ /**
+ * Return the {@link AbstractGraphicsDevice} used for depending resources lifecycle,
+ * i.e. {@link Screen} and {@link Window}, as well as the event dispatching (EDT). */
public abstract AbstractGraphicsDevice getGraphicsDevice();
/**
@@ -136,8 +138,8 @@ public abstract class Display {
public abstract int getId();
/**
- * @return This display connection name as defined at creation time.
- * The display connection name is a technical platform specific detail, see {@link AbstractGraphicsDevice#getConnection()}.
+ * @return This display connection name as defined at creation time.
+ * The display connection name is a technical platform specific detail, see {@link AbstractGraphicsDevice#getConnection()}.
*
* @see AbstractGraphicsDevice#getConnection()
*/
@@ -154,11 +156,11 @@ public abstract class Display {
/**
* Sets a new {@link EDTUtil} and returns the previous one.
* <p>
- * If <code>usrEDTUtil</code> is <code>null</code>,
+ * If <code>usrEDTUtil</code> is <code>null</code>,
* the device's default EDTUtil is created and used.
* </p>
* <p>
- * If a previous one exists and it differs from <code>usrEDTUtil</code>,
+ * If a previous one exists and it differs from <code>usrEDTUtil</code>,
* it's being stopped, wait-until-idle.
* </p>
* <p>
@@ -167,7 +169,7 @@ public abstract class Display {
* </p>
*/
public abstract EDTUtil setEDTUtil(EDTUtil usrEDTUtil);
-
+
public abstract EDTUtil getEDTUtil();
/**
@@ -176,7 +178,7 @@ public abstract class Display {
public abstract boolean isEDTRunning();
public abstract void dispatchMessages();
-
+
// Global Displays
protected static final ArrayList<WeakReference<Display>> displayList = new ArrayList<WeakReference<Display>>();
protected static int displaysActive = 0;
@@ -193,12 +195,12 @@ public abstract class Display {
}
/**
- *
+ *
* @param type
* @param name
* @param fromIndex start index, then increasing until found or end of list
- * @paran shared if true, only shared instances are found, otherwise also exclusive
- * @return
+ * @paran shared if true, only shared instances are found, otherwise also exclusive
+ * @return
*/
public static Display getFirstDisplayOf(String type, String name, int fromIndex, boolean shared) {
return getDisplayOfImpl(type, name, fromIndex, 1, shared);
@@ -209,7 +211,7 @@ public abstract class Display {
* @param type
* @param name
* @param fromIndex start index, then decreasing until found or end of list. -1 is interpreted as size - 1.
- * @paran shared if true, only shared instances are found, otherwise also exclusive
+ * @paran shared if true, only shared instances are found, otherwise also exclusive
* @return
*/
public static Display getLastDisplayOf(String type, String name, int fromIndex, boolean shared) {
@@ -231,7 +233,7 @@ public abstract class Display {
} else {
if( display.getType().equals(type) &&
display.getName().equals(name) &&
- ( !shared || shared && !display.isExclusive() )
+ ( !shared || shared && !display.isExclusive() )
) {
return display;
}
@@ -241,7 +243,7 @@ public abstract class Display {
}
return null;
}
-
+
protected static void addDisplay2List(Display display) {
synchronized(displayList) {
// GC before add
@@ -256,7 +258,7 @@ public abstract class Display {
displayList.add(new WeakReference<Display>(display));
}
}
-
+
/** Returns the global display collection */
public static Collection<Display> getAllDisplays() {
ArrayList<Display> list;
diff --git a/src/newt/classes/com/jogamp/newt/MonitorDevice.java b/src/newt/classes/com/jogamp/newt/MonitorDevice.java
index 42ac34240..28d9f53a1 100644
--- a/src/newt/classes/com/jogamp/newt/MonitorDevice.java
+++ b/src/newt/classes/com/jogamp/newt/MonitorDevice.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt;
import java.util.List;
@@ -36,7 +36,7 @@ import javax.media.nativewindow.util.RectangleImmutable;
import com.jogamp.common.util.ArrayHashSet;
-/**
+/**
* Visual output device, i.e. a CRT, LED ..consisting of it's components:<br>
* <ui>
* <li>Immutable
@@ -55,7 +55,7 @@ import com.jogamp.common.util.ArrayHashSet;
*/
public abstract class MonitorDevice {
protected final Screen screen; // backref
- protected final int nativeId; // unique monitor device ID
+ protected final int nativeId; // unique monitor device ID
protected final DimensionImmutable sizeMM; // in [mm]
protected final MonitorMode originalMode;
protected final ArrayHashSet<MonitorMode> supportedModes; // FIXME: May need to support mutable mode, i.e. adding modes on the fly!
@@ -73,20 +73,21 @@ public abstract class MonitorDevice {
this.viewport = viewport;
this.modeChanged = false;
}
-
+
/** Returns the {@link Screen} owning this monitor. */
public final Screen getScreen() {
return screen;
}
-
+
/**
- * Tests equality of two <code>MonitorDevice</code> objects
+ * Tests equality of two <code>MonitorDevice</code> objects
* by evaluating equality of it's components:<br>
* <ul>
* <li><code>nativeID</code></li>
* </ul>
* <br>
*/
+ @Override
public final boolean equals(Object obj) {
if (this == obj) { return true; }
if (obj instanceof MonitorDevice) {
@@ -102,13 +103,14 @@ public abstract class MonitorDevice {
* <li><code>nativeID</code></li>
* </ul>
*/
+ @Override
public final int hashCode() {
return nativeId;
}
-
+
/** @return the immutable unique native Id of this monitor device. */
public final int getId() { return nativeId; }
-
+
/**
* @return the immutable monitor size in millimeters.
*/
@@ -140,11 +142,11 @@ public abstract class MonitorDevice {
return supportedModes.getData();
}
- /** Returns the {@link RectangleImmutable rectangular} portion of the rotated virtual {@link Screen} size represented by this monitor. */
+ /** Returns the {@link RectangleImmutable rectangular} portion of the rotated virtual {@link Screen} size represented by this monitor. */
public final RectangleImmutable getViewport() {
return viewport;
}
-
+
/** Returns <code>true</code> if given coordinates are contained by this {@link #getViewport() viewport}, otherwise <code>false</code>. */
public final boolean contains(int x, int y) {
return x >= viewport.getX() &&
@@ -152,8 +154,8 @@ public abstract class MonitorDevice {
y >= viewport.getY() &&
y < viewport.getY() + viewport.getHeight() ;
}
-
- /**
+
+ /**
* Returns the coverage of given rectangle w/ this this {@link #getViewport() viewport}, i.e. between <code>0.0</code> and <code>1.0</code>.
* <p>
* Coverage is computed by:
@@ -161,12 +163,12 @@ public abstract class MonitorDevice {
* isect = viewport.intersection(r);
* coverage = area( isect ) / area( viewport ) ;
* </pre>
- * </p>
+ * </p>
*/
public final float coverage(RectangleImmutable r) {
return viewport.coverage(r);
}
-
+
/**
* Returns the union of the given monitor's {@link #getViewport() viewport}.
* @param result storage for result, will be returned
@@ -186,14 +188,14 @@ public abstract class MonitorDevice {
result.set(x1, y1, x2 - x1, y2 - y1);
return result;
}
-
+
public final boolean isOriginalMode() {
return currentMode.hashCode() == originalMode.hashCode();
}
-
+
/**
* Returns <code>true</true> if the {@link MonitorMode}
- * has been changed programmatic via this API <i>only</i>, otherwise <code>false</code>.
+ * has been changed programmatic via this API <i>only</i>, otherwise <code>false</code>.
* <p>
* Note: We cannot guarantee that we won't interfere w/ another running
* application's screen mode change or vice versa.
@@ -202,7 +204,7 @@ public abstract class MonitorDevice {
public final boolean isModeChangedByUs() {
return modeChanged && !isOriginalMode();
}
-
+
/**
* Returns the cached current {@link MonitorMode} w/o native query.
* <p>
@@ -212,7 +214,7 @@ public abstract class MonitorDevice {
public final MonitorMode getCurrentMode() {
return currentMode;
}
-
+
/**
* Returns the current {@link MonitorMode} resulting from a native query.
* <p>
@@ -228,6 +230,7 @@ public abstract class MonitorDevice {
*/
public abstract boolean setCurrentMode(MonitorMode mode);
+ @Override
public String toString() {
return "Monitor[Id "+Display.toHexString(nativeId)+", "+sizeMM+" mm, viewport "+viewport+ ", orig "+originalMode+", curr "+currentMode+
", modeChanged "+modeChanged+", modeCount "+supportedModes.size()+"]";
diff --git a/src/newt/classes/com/jogamp/newt/MonitorMode.java b/src/newt/classes/com/jogamp/newt/MonitorMode.java
index 218cd8bd5..59f28e791 100644
--- a/src/newt/classes/com/jogamp/newt/MonitorMode.java
+++ b/src/newt/classes/com/jogamp/newt/MonitorMode.java
@@ -37,7 +37,7 @@ import javax.media.nativewindow.util.SurfaceSize;
import com.jogamp.newt.util.MonitorModeUtil;
-/**
+/**
* Immutable MonitorMode Class, consisting of it's read only components:<br>
* <ul>
* <li>nativeId</li>
@@ -79,7 +79,7 @@ import com.jogamp.newt.util.MonitorModeUtil;
// Pick the monitor:
// Either the one used by a window ..
MonitorDevice monitor = window.getMainMonitor();
-
+
// Or arbitrary from the list ..
List<MonitorDevice> allMonitor = getMonitorDevices();
MonitorDevice monitor = allMonitor.get(0);
@@ -87,7 +87,7 @@ import com.jogamp.newt.util.MonitorModeUtil;
// Current and original modes ..
MonitorMode mmCurrent = monitor.queryCurrentMode();
MonitorMode mmOrig = monitor.getOriginalMode();
-
+
// Target resolution
Dimension res = new Dimension(800, 600);
@@ -102,7 +102,7 @@ import com.jogamp.newt.util.MonitorModeUtil;
monitorModes = MonitorModeUtil.filterByFlags(monitorModes, 0); // no interlace, double-scan etc
monitorModes = MonitorModeUtil.filterByRotation(monitorModes, rot);
monitorModes = MonitorModeUtil.filterByResolution(monitorModes, res);
- monitorModes = MonitorModeUtil.filterByRate(monitorModes, freq);
+ monitorModes = MonitorModeUtil.filterByRate(monitorModes, freq);
monitorModes = MonitorModeUtil.getHighestAvailableBpp(monitorModes);
// pick 1st one and set to current ..
@@ -111,20 +111,22 @@ import com.jogamp.newt.util.MonitorModeUtil;
* </pre>
*/
public class MonitorMode implements Comparable<MonitorMode> {
-
+
/** Comparator for 2 {@link MonitorMode}s, following comparison order as described in {@link MonitorMode#compareTo(MonitorMode)}, returning the ascending order. */
public static final Comparator<MonitorMode> monitorModeComparator = new Comparator<MonitorMode>() {
+ @Override
public int compare(MonitorMode mm1, MonitorMode mm2) {
return mm1.compareTo(mm2);
} };
-
+
/** Comparator for 2 {@link MonitorMode}s, following comparison order as described in {@link MonitorMode#compareTo(MonitorMode)}, returning the descending order. */
public static final Comparator<MonitorMode> monitorModeComparatorInv = new Comparator<MonitorMode>() {
+ @Override
public int compare(MonitorMode mm1, MonitorMode mm2) {
return mm2.compareTo(mm1);
} };
-
- /**
+
+ /**
* Immutable <i>surfaceSize, flags and refreshRate</i> Class, consisting of it's read only components:<br>
* <ul>
* <li>nativeId</li>
@@ -141,7 +143,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
/** Vertical refresh rate */
public final float refreshRate;
public final int hashCode;
-
+
public SizeAndRRate(SurfaceSize surfaceSize, float refreshRate, int flags) {
if(null==surfaceSize) {
throw new IllegalArgumentException("surfaceSize must be set ("+surfaceSize+")");
@@ -151,11 +153,11 @@ public class MonitorMode implements Comparable<MonitorMode> {
this.refreshRate=refreshRate;
this.hashCode = getHashCode();
}
-
+
private final static String STR_INTERLACE = "Interlace";
private final static String STR_DOUBLESCAN = "DoubleScan";
private final static String STR_SEP = ", ";
-
+
public static final StringBuilder flags2String(int flags) {
final StringBuilder sb = new StringBuilder();
boolean sp = false;
@@ -172,14 +174,15 @@ public class MonitorMode implements Comparable<MonitorMode> {
}
return sb;
}
+ @Override
public final String toString() {
return new String(surfaceSize+" @ "+refreshRate+" Hz, flags ["+flags2String(flags).toString()+"]");
}
-
+
/**
* <p>
* Compares {@link SurfaceSize#compareTo(SurfaceSize) surfaceSize} 1st, then {@link #flags}, then {@link #refreshRate}.
- * </p>
+ * </p>
* <p>
* Flags are compared as follows:
* <pre>
@@ -196,7 +199,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
final int rssz = surfaceSize.compareTo(sszr.surfaceSize);
if( 0 != rssz ) {
return rssz;
- }
+ }
final int tflags = 0 == flags ? Integer.MAX_VALUE : flags; // normalize NONE
final int xflags = 0 == sszr.flags ? Integer.MAX_VALUE : sszr.flags; // normalize NONE
if( tflags == xflags ) {
@@ -218,9 +221,9 @@ public class MonitorMode implements Comparable<MonitorMode> {
return 0;
}
}
-
+
/**
- * Tests equality of two {@link SizeAndRRate} objects
+ * Tests equality of two {@link SizeAndRRate} objects
* by evaluating equality of it's components:<br/>
* <ul>
* <li><code>surfaceSize</code></li>
@@ -228,6 +231,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
* <li><code>flags</code></li>
* </ul>
*/
+ @Override
public final boolean equals(Object obj) {
if (this == obj) { return true; }
if (obj instanceof SizeAndRRate) {
@@ -238,7 +242,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
}
return false;
}
-
+
/**
* Returns a combined hash code of it's elements:<br/>
* <ul>
@@ -247,18 +251,19 @@ public class MonitorMode implements Comparable<MonitorMode> {
* <li><code>refreshRate</code></li>
* </ul>
*/
+ @Override
public final int hashCode() {
return hashCode;
- }
+ }
private final int getHashCode() {
// 31 * x == (x << 5) - x
int hash = 31 + surfaceSize.hashCode();
hash = ((hash << 5) - hash) + flags;
hash = ((hash << 5) - hash) + (int)(refreshRate*100.0f);
return hash;
- }
+ }
}
-
+
/** zero rotation, compared to normal settings */
public static final int ROTATE_0 = 0;
@@ -270,15 +275,15 @@ public class MonitorMode implements Comparable<MonitorMode> {
/** 270 degrees CCW rotation */
public static final int ROTATE_270 = 270;
-
+
/** Frame is split into two fields. See {@link #getFlags()}. */
public static final int FLAG_INTERLACE = 1 << 0;
-
+
/** Lines are doubled. See {@link #getFlags()}. */
public static final int FLAG_DOUBLESCAN = 1 << 1;
/** The immutable native Id of this instance, which may not be unique. */
- private final int nativeId;
+ private final int nativeId;
private final SizeAndRRate sizeAndRRate;
private final int rotation;
private final int hashCode;
@@ -301,7 +306,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
this.rotation = rotation;
this.hashCode = getHashCode();
}
-
+
/**
* Creates a user instance w/o {@link #getId() identity} to filter our matching modes w/ identity.
* <p>
@@ -314,16 +319,16 @@ public class MonitorMode implements Comparable<MonitorMode> {
*/
public MonitorMode(SurfaceSize surfaceSize, float refreshRate, int flags, int rotation) {
this(0, new SizeAndRRate(surfaceSize, refreshRate, flags), rotation);
- }
+ }
/** @return the immutable native Id of this mode, may not be unique, may be 0. */
public final int getId() { return nativeId; }
-
+
/** Returns the <i>surfaceSize and refreshRate</i> instance. */
- public final SizeAndRRate getSizeAndRRate() {
+ public final SizeAndRRate getSizeAndRRate() {
return sizeAndRRate;
}
-
+
/** Returns the unrotated {@link SurfaceSize} */
public final SurfaceSize getSurfaceSize() {
return sizeAndRRate.surfaceSize;
@@ -338,28 +343,29 @@ public class MonitorMode implements Comparable<MonitorMode> {
public final int getFlags() {
return sizeAndRRate.flags;
}
-
+
/** Returns the CCW rotation of this mode */
public final int getRotation() {
return rotation;
}
-
- /** Returns the rotated screen width,
+
+ /** Returns the rotated screen width,
* derived from <code>getMonitorMode().getSurfaceSize().getResolution()</code>
- * and <code>getRotation()</code>
+ * and <code>getRotation()</code>
*/
public final int getRotatedWidth() {
return getRotatedWH(true);
}
-
- /** Returns the rotated screen height,
+
+ /** Returns the rotated screen height,
* derived from <code>getMonitorMode().getSurfaceSize().getResolution()</code>
- * and <code>getRotation()</code>
+ * and <code>getRotation()</code>
*/
public final int getRotatedHeight() {
return getRotatedWH(false);
}
+ @Override
public final String toString() {
return "[Id "+Display.toHexString(nativeId)+", " + sizeAndRRate + ", " + rotation + " degr]";
}
@@ -367,9 +373,9 @@ public class MonitorMode implements Comparable<MonitorMode> {
/**
* <p>
* Compares {@link SizeAndRRate#compareTo(SizeAndRRate) sizeAndRRate} 1st, then {@link #rotation}.
- * </p>
+ * </p>
* <p>
- * Rotation is compared inverted, i.e. <code>360 - rotation</code>,
+ * Rotation is compared inverted, i.e. <code>360 - rotation</code>,
* so the lowest rotation reflects a higher value.
* </p>
* <p>
@@ -380,7 +386,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
* <li>flags</li>
* <li>refresh rate</li>
* <li>rotation</li>
- * </ul>
+ * </ul>
* </p>
* {@inheritDoc}
*/
@@ -399,9 +405,9 @@ public class MonitorMode implements Comparable<MonitorMode> {
}
return 0;
}
-
+
/**
- * Tests equality of two {@link MonitorMode} objects
+ * Tests equality of two {@link MonitorMode} objects
* by evaluating equality of it's components:<br/>
* <ul>
* <li><code>nativeId</code></li>
@@ -409,6 +415,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
* <li><code>rotation</code></li>
* </ul>
*/
+ @Override
public final boolean equals(Object obj) {
if (this == obj) { return true; }
if (obj instanceof MonitorMode) {
@@ -428,6 +435,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
* <li><code>rotation</code></li>
* </ul>
*/
+ @Override
public final int hashCode() {
return hashCode;
}
@@ -438,7 +446,7 @@ public class MonitorMode implements Comparable<MonitorMode> {
hash = ((hash << 5) - hash) + getRotation();
return hash;
}
-
+
private final int getRotatedWH(boolean width) {
final DimensionImmutable d = sizeAndRRate.surfaceSize.getResolution();
final boolean swap = MonitorMode.ROTATE_90 == rotation || MonitorMode.ROTATE_270 == rotation ;
@@ -446,5 +454,5 @@ public class MonitorMode implements Comparable<MonitorMode> {
return d.getHeight();
}
return d.getWidth();
- }
+ }
}
diff --git a/src/newt/classes/com/jogamp/newt/NewtFactory.java b/src/newt/classes/com/jogamp/newt/NewtFactory.java
index e66b2f624..5ae3f3692 100644
--- a/src/newt/classes/com/jogamp/newt/NewtFactory.java
+++ b/src/newt/classes/com/jogamp/newt/NewtFactory.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt;
@@ -53,16 +53,17 @@ public class NewtFactory {
public static final boolean DEBUG_IMPLEMENTATION = Debug.debug("Window");
public static final String DRIVER_DEFAULT_ROOT_PACKAGE = "jogamp.newt.driver";
-
+
static {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ @Override
public Object run() {
NativeWindowFactory.initSingleton(); // last resort ..
-
+
// Work-around for initialization order problems on Mac OS X
// between native Newt and (apparently) Fmod
WindowImpl.init(NativeWindowFactory.getNativeWindowType(true));
-
+
return null;
} } );
}
@@ -75,7 +76,7 @@ public class NewtFactory {
clazzName = DRIVER_DEFAULT_ROOT_PACKAGE + packageName + "." + classBaseName ;
} else {
clazzName = packageName + "." + classBaseName ;
- }
+ }
try {
clazz = Class.forName(clazzName);
} catch (Throwable t) {
@@ -90,7 +91,7 @@ public class NewtFactory {
private static boolean useEDT = true;
- /**
+ /**
* Toggles the usage of an EventDispatchThread while creating a Display.<br>
* The default is enabled.<br>
* The EventDispatchThread is thread local to the Display instance.<br>
@@ -108,7 +109,7 @@ public class NewtFactory {
* Native creation is lazily done at usage, ie. {@link Display#addReference()}.
* </p>
* <p>
- * An already existing display connection of the same <code>name</code> will be reused.
+ * An already existing display connection of the same <code>name</code> will be reused.
* </p>
* @param name the display connection name which is a technical platform specific detail,
* see {@link AbstractGraphicsDevice#getConnection()}. Use <code>null</code> for default.
diff --git a/src/newt/classes/com/jogamp/newt/NewtVersion.java b/src/newt/classes/com/jogamp/newt/NewtVersion.java
index 9adb7aac5..e70d63f88 100644
--- a/src/newt/classes/com/jogamp/newt/NewtVersion.java
+++ b/src/newt/classes/com/jogamp/newt/NewtVersion.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt;
import com.jogamp.common.GlueGenVersion;
diff --git a/src/newt/classes/com/jogamp/newt/Screen.java b/src/newt/classes/com/jogamp/newt/Screen.java
index f56ee344b..ef62ec95d 100644
--- a/src/newt/classes/com/jogamp/newt/Screen.java
+++ b/src/newt/classes/com/jogamp/newt/Screen.java
@@ -39,7 +39,7 @@ import javax.media.nativewindow.NativeWindowException;
import javax.media.nativewindow.util.Rectangle;
import javax.media.nativewindow.util.RectangleImmutable;
-/**
+/**
* A screen may span multiple {@link MonitorDevice}s representing their combined virtual size.
*/
public abstract class Screen {
@@ -53,9 +53,11 @@ public abstract class Screen {
public static final boolean DEBUG = Debug.debug("Screen");
/** return precomputed hashCode from FQN {@link #getFQName()} */
+ @Override
public abstract int hashCode();
/** return true if obj is of type Display and both FQN {@link #getFQName()} equals */
+ @Override
public boolean equals(Object obj) {
if (this == obj) { return true; }
if (obj instanceof Screen) {
@@ -102,7 +104,7 @@ public abstract class Screen {
/**
* See {@link Display#addReference()}
- *
+ *
* @return number of references post operation
* @throws NativeWindowException if the native creation failed.
* @see #removeReference()
@@ -113,7 +115,7 @@ public abstract class Screen {
/**
* See {@link Display#removeReference()}
- *
+ *
* @return number of references post operation
* @see #addReference()
* @see #setDestroyWhenUnused(boolean)
@@ -132,12 +134,12 @@ public abstract class Screen {
* @return the x position of the virtual viewport's top-left origin.
*/
public abstract int getX();
-
+
/**
* @return the y position of the virtual viewport's top-left origin.
*/
public abstract int getY();
-
+
/**
* @return the <b>rotated</b> virtual viewport's width.
*/
@@ -152,19 +154,19 @@ public abstract class Screen {
* @return the <b>rotated</b> virtual viewport, i.e. origin and size.
*/
public abstract RectangleImmutable getViewport();
-
+
/**
* @return the associated Display
*/
public abstract Display getDisplay();
- /**
+ /**
* @return The screen fully qualified Screen name,
* which is a key of {@link com.jogamp.newt.Display#getFQName()} + {@link #getIndex()}.
*/
public abstract String getFQName();
- /**
+ /**
* Return a list of all {@link MonitorMode}s for all {@link MonitorDevice}s.
* <p>
* The list is ordered in descending order,
@@ -173,23 +175,23 @@ public abstract class Screen {
*/
public abstract List<MonitorMode> getMonitorModes();
- /**
+ /**
* Return a list of available {@link MonitorDevice}s.
*/
public abstract List<MonitorDevice> getMonitorDevices();
/**
- * Returns the {@link MonitorDevice} which {@link MonitorDevice#getViewport() viewport}
+ * Returns the {@link MonitorDevice} which {@link MonitorDevice#getViewport() viewport}
* {@link MonitorDevice#coverage(RectangleImmutable) covers} the given rectangle the most.
* <p>
- * If no coverage is detected the first {@link MonitorDevice} is returned.
+ * If no coverage is detected the first {@link MonitorDevice} is returned.
* </p>
*/
public final MonitorDevice getMainMonitor(RectangleImmutable r) {
MonitorDevice res = null;
float maxCoverage = Float.MIN_VALUE;
final List<MonitorDevice> monitors = getMonitorDevices();
- for(int i=monitors.size()-1; i>=0; i--) {
+ for(int i=monitors.size()-1; i>=0; i--) {
final MonitorDevice monitor = monitors.get(i);
final float coverage = monitor.coverage(r);
if( coverage > maxCoverage ) {
@@ -207,14 +209,14 @@ public abstract class Screen {
* Returns the union of all monitor's {@link MonitorDevice#getViewport() viewport}.
* <p>
* Should be equal to {@link #getX()}, {@link #getY()}, {@link #getWidth()} and {@link #getHeight()},
- * however, some native toolkits may choose a different virtual screen area.
+ * however, some native toolkits may choose a different virtual screen area.
* </p>
* @param result storage for result, will be returned
*/
public final Rectangle unionOfMonitorViewportSize(final Rectangle result) {
return MonitorDevice.unionOfViewports(result, getMonitorDevices());
}
-
+
/**
* @param sml {@link MonitorModeListener} to be added for {@link MonitorEvent}
*/
@@ -274,7 +276,7 @@ public abstract class Screen {
}
return null;
}
-
+
protected static void addScreen2List(Screen screen) {
synchronized(screenList) {
// GC before add
@@ -289,7 +291,7 @@ public abstract class Screen {
screenList.add(new WeakReference<Screen>(screen));
}
}
-
+
/** Returns the global screen collection */
public static Collection<Screen> getAllScreens() {
ArrayList<Screen> list;
@@ -308,7 +310,7 @@ public abstract class Screen {
}
return list;
}
-
+
public static int getActiveScreenNumber() {
synchronized(screenList) {
return screensActive;
diff --git a/src/newt/classes/com/jogamp/newt/Window.java b/src/newt/classes/com/jogamp/newt/Window.java
index 02727353f..04eb07a25 100644
--- a/src/newt/classes/com/jogamp/newt/Window.java
+++ b/src/newt/classes/com/jogamp/newt/Window.java
@@ -58,8 +58,8 @@ import javax.media.nativewindow.util.RectangleImmutable;
* <li>... and more</li>
* </ul>
* <p>
- * One use case is {@link com.jogamp.newt.opengl.GLWindow}, which delegates
- * window operation to an instance of this interface while providing OpenGL
+ * One use case is {@link com.jogamp.newt.opengl.GLWindow}, which delegates
+ * window operation to an instance of this interface while providing OpenGL
* functionality.
* </p>
*/
@@ -90,14 +90,14 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
Screen getScreen();
/**
- * Returns the {@link MonitorDevice} which {@link MonitorDevice#getViewport() viewport}
+ * Returns the {@link MonitorDevice} which {@link MonitorDevice#getViewport() viewport}
* {@link MonitorDevice#coverage(RectangleImmutable) covers} this window the most.
* <p>
- * If no coverage is detected the first {@link MonitorDevice} is returned.
+ * If no coverage is detected the first {@link MonitorDevice} is returned.
* </p>
*/
MonitorDevice getMainMonitor();
-
+
/**
* Set the CapabilitiesChooser to help determine the native visual type.
*
@@ -129,7 +129,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* Visibility is set to false.
* </p>
* <p>
- * Method sends out {@link WindowEvent#EVENT_WINDOW_DESTROY_NOTIFY pre-} and
+ * Method sends out {@link WindowEvent#EVENT_WINDOW_DESTROY_NOTIFY pre-} and
* {@link WindowEvent#EVENT_WINDOW_DESTROYED post-} destruction events
* to all of it's {@link WindowListener}.
* </p>
@@ -151,7 +151,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* Set a custom action handling destruction issued by a {@link WindowImpl#windowDestroyNotify(boolean) toolkit triggered window destroy}
* replacing the default {@link #destroy()} action.
* <p>
- * The custom action shall call {@link #destroy()}
+ * The custom action shall call {@link #destroy()}
* but may perform further tasks before and after.
* </p>
*/
@@ -369,7 +369,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* @param x new top-level position, use -1 for default position.
* @param y new top-level position, use -1 for default position.
* @param forceDestroyCreate if true, uses re-creation strategy for reparenting, default is <code>false</code>.
- *
+ *
* @return The issued reparent action type (strategy) as defined in Window.ReparentAction
* @see #reparentWindow(NativeWindow)
*/
@@ -378,7 +378,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
/**
* Enable or disable fullscreen mode for this window.
* <p>
- * Fullscreen mode is established on the {@link #getMainMonitor() main monitor}.
+ * Fullscreen mode is established on the {@link #getMainMonitor() main monitor}.
* </p>
* @param fullscreen enable or disable fullscreen mode
* @return success
@@ -393,14 +393,14 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* <p>
* Disable fullscreen via {@link #setFullscreen(boolean)}.
* </p>
- * @param monitors if <code>null</code> fullscreen will be spanned across all {@link MonitorDevice}s,
+ * @param monitors if <code>null</code> fullscreen will be spanned across all {@link MonitorDevice}s,
* otherwise across the given list of {@link MonitorDevice}.
* @return success
* @see #setFullscreen(boolean)
* @see #isFullscreen()
*/
boolean setFullscreen(List<MonitorDevice> monitors);
-
+
boolean isFullscreen();
static interface FocusRunnable {
@@ -429,7 +429,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* and to perform focus traversal with a 3rd party toolkit.
* </p>
* <p>
- * The {@link KeyListener} methods are not invoked for {@link KeyEvent#isAutoRepeat() auto-repeat} events.
+ * The {@link KeyListener} methods are not invoked for {@link KeyEvent#isAutoRepeat() auto-repeat} events.
* </p>
* @param l
*/
@@ -469,7 +469,7 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
/**
* Send a {@link WindowEvent} to all {@link WindowListener}.
- * @param eventType a {@link WindowEvent} type, e.g. {@link WindowEvent#EVENT_WINDOW_REPAINT}.
+ * @param eventType a {@link WindowEvent} type, e.g. {@link WindowEvent#EVENT_WINDOW_REPAINT}.
*/
public void sendWindowEvent(int eventType);
@@ -585,8 +585,8 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
* Returns all {@link MouseListener}
*/
MouseListener[] getMouseListeners();
-
- /** Enable or disable default {@link GestureHandler}. Default is enabled. */
+
+ /** Enable or disable default {@link GestureHandler}. Default is enabled. */
void setDefaultGesturesEnabled(boolean enable);
/** Return true if default {@link GestureHandler} are enabled. */
boolean areDefaultGesturesEnabled();
@@ -627,5 +627,5 @@ public interface Window extends NativeWindow, WindowClosingProtocol {
/**
* Removes the given {@link GestureHandler.GestureListener} from the list.
*/
- void removeGestureListener(GestureHandler.GestureListener gl);
+ void removeGestureListener(GestureHandler.GestureListener gl);
}
diff --git a/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java b/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
index 13affdf49..1f5c26f27 100644
--- a/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
+++ b/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.awt;
@@ -84,11 +84,11 @@ import com.jogamp.opengl.util.TileRenderer;
/**
* AWT {@link java.awt.Canvas Canvas} containing a NEWT {@link Window} using native parenting.
- *
+ *
* <h5><A NAME="java2dgl">Offscreen Layer Remarks</A></h5>
- *
+ *
* {@link OffscreenLayerOption#setShallUseOffscreenLayer(boolean) setShallUseOffscreenLayer(true)}
- * maybe called to use an offscreen drawable (FBO or PBuffer) allowing
+ * maybe called to use an offscreen drawable (FBO or PBuffer) allowing
* the underlying JAWT mechanism to composite the image, if supported.
*/
@SuppressWarnings("serial")
@@ -104,18 +104,20 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
private AWTParentWindowAdapter awtAdapter = null;
private AWTAdapter awtMouseAdapter = null;
private AWTAdapter awtKeyAdapter = null;
-
+
private AWTWindowClosingProtocol awtWindowClosingProtocol =
new AWTWindowClosingProtocol(this, new Runnable() {
+ @Override
public void run() {
NewtCanvasAWT.this.destroyImpl(false /* removeNotify */, true /* windowClosing */);
}
}, new Runnable() {
+ @Override
public void run() {
if( newtChild != null ) {
newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
}
- }
+ }
} );
/**
@@ -147,37 +149,41 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
super(gc);
setNEWTChild(child);
}
-
+
+ @Override
public void setShallUseOffscreenLayer(boolean v) {
shallUseOffscreenLayer = v;
}
-
+
+ @Override
public final boolean getShallUseOffscreenLayer() {
- return shallUseOffscreenLayer;
+ return shallUseOffscreenLayer;
}
-
- public final boolean isOffscreenLayerSurfaceEnabled() {
+
+ @Override
+ public final boolean isOffscreenLayerSurfaceEnabled() {
return jawtWindow.isOffscreenLayerSurfaceEnabled();
}
-
- /**
- * Returns true if the AWT component is parented to an {@link java.applet.Applet},
- * otherwise false. This information is valid only after {@link #addNotify()} is issued,
- * ie. before adding the component to the AWT tree and make it visible.
+
+ /**
+ * Returns true if the AWT component is parented to an {@link java.applet.Applet},
+ * otherwise false. This information is valid only after {@link #addNotify()} is issued,
+ * ie. before adding the component to the AWT tree and make it visible.
*/
public boolean isApplet() {
return jawtWindow.isApplet();
}
boolean isParent() {
- return null!=newtChild && jawtWindow == newtChild.getParent();
+ return null!=newtChild && jawtWindow == newtChild.getParent();
}
-
+
boolean isFullscreen() {
return null != newtChild && newtChild.isFullscreen();
}
-
+
class FocusAction implements Window.FocusRunnable {
+ @Override
public boolean run() {
final boolean isParent = isParent();
final boolean isFullscreen = isFullscreen();
@@ -199,7 +205,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
}
private FocusAction focusAction = new FocusAction();
-
+
WindowListener clearAWTMenusOnNewtFocus = new WindowAdapter() {
@Override
public void windowResized(WindowEvent e) {
@@ -214,25 +220,27 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
};
class FocusTraversalKeyListener implements KeyListener {
+ @Override
public void keyPressed(KeyEvent e) {
if( isParent() && !isFullscreen() ) {
handleKey(e, false);
}
}
+ @Override
public void keyReleased(KeyEvent e) {
if( isParent() && !isFullscreen() ) {
handleKey(e, true);
}
}
-
- void handleKey(KeyEvent evt, boolean onRelease) {
+
+ void handleKey(KeyEvent evt, boolean onRelease) {
if(null == keyboardFocusManager) {
throw new InternalError("XXX");
}
final AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke(evt.getKeyCode(), evt.getModifiers(), onRelease);
boolean suppress = false;
if(null != ks) {
- final Set<AWTKeyStroke> fwdKeys = keyboardFocusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
+ final Set<AWTKeyStroke> fwdKeys = keyboardFocusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
final Set<AWTKeyStroke> bwdKeys = keyboardFocusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
if(fwdKeys.contains(ks)) {
final Component nextFocus = AWTMisc.getNextFocus(NewtCanvasAWT.this, true /* forward */);
@@ -253,38 +261,39 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
}
if(suppress) {
- evt.setConsumed(true);
+ evt.setConsumed(true);
}
if(DEBUG) {
System.err.println("NewtCanvasAWT.focusKey: XXX: "+ks);
}
}
}
- private final FocusTraversalKeyListener newtFocusTraversalKeyListener = new FocusTraversalKeyListener();
+ private final FocusTraversalKeyListener newtFocusTraversalKeyListener = new FocusTraversalKeyListener();
class FocusPropertyChangeListener implements PropertyChangeListener {
+ @Override
public void propertyChange(PropertyChangeEvent evt) {
final Object oldF = evt.getOldValue();
final Object newF = evt.getNewValue();
final boolean isParent = isParent();
- final boolean isFullscreen = isFullscreen();
+ final boolean isFullscreen = isFullscreen();
if(DEBUG) {
System.err.println("NewtCanvasAWT.FocusProperty: "+evt.getPropertyName()+", src "+evt.getSource()+", "+oldF+" -> "+newF+", isParent "+isParent+", isFS "+isFullscreen);
}
if(isParent && !isFullscreen) {
if(newF == NewtCanvasAWT.this) {
- if(DEBUG) {
+ if(DEBUG) {
System.err.println("NewtCanvasAWT.FocusProperty: AWT focus -> NEWT focus traversal");
}
requestFocusNEWTChild();
} else if(oldF == NewtCanvasAWT.this && newF == null) {
// focus traversal to NEWT - NOP
- if(DEBUG) {
+ if(DEBUG) {
System.err.println("NewtCanvasAWT.FocusProperty: NEWT focus");
}
} else if(null != newF && newF != NewtCanvasAWT.this) {
// focus traversal to another AWT component
- if(DEBUG) {
+ if(DEBUG) {
System.err.println("NewtCanvasAWT.FocusProperty: lost focus - clear focus");
}
if(newtChild.getDelegatedWindow() instanceof DriverClearFocus) {
@@ -292,7 +301,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
}
}
- }
+ }
}
private final FocusPropertyChangeListener focusPropertyChangeListener = new FocusPropertyChangeListener();
private volatile KeyboardFocusManager keyboardFocusManager = null;
@@ -300,7 +309,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
private final void requestFocusNEWTChild() {
if(null!=newtChild) {
newtChild.setFocusAction(null);
- if(isOnscreen) {
+ if(isOnscreen) {
KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
}
newtChild.requestFocus();
@@ -308,17 +317,17 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
}
- /**
+ /**
* Sets a new NEWT child, provoking reparenting.
* <p>
* A previously detached <code>newChild</code> will be released to top-level status
- * and made invisible.
+ * and made invisible.
* </p>
* <p>
- * Note: When switching NEWT child's, detaching the previous first via <code>setNEWTChild(null)</code>
- * produced much cleaner visual results.
+ * Note: When switching NEWT child's, detaching the previous first via <code>setNEWTChild(null)</code>
+ * produced much cleaner visual results.
* </p>
- * @return the previous attached newt child.
+ * @return the previous attached newt child.
*/
public Window setNEWTChild(Window newChild) {
final Window prevChild = newtChild;
@@ -336,17 +345,17 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
updateLayoutSize();
// will be done later at paint/display/..: attachNewtChild(cont);
-
+
return prevChild;
}
-
+
private final void updateLayoutSize() {
if( null != newtChild ) {
// use NEWT child's size for min/pref size!
java.awt.Dimension minSize = new java.awt.Dimension(newtChild.getWidth(), newtChild.getHeight());
setMinimumSize(minSize);
setPreferredSize(minSize);
- }
+ }
}
/** @return the current NEWT child */
@@ -357,11 +366,13 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
/** @return this AWT Canvas NativeWindow representation, may be null in case {@link #removeNotify()} has been called,
* or {@link #addNotify()} hasn't been called yet.*/
public NativeWindow getNativeWindow() { return jawtWindow; }
-
+
+ @Override
public WindowClosingMode getDefaultCloseOperation() {
return awtWindowClosingProtocol.getDefaultCloseOperation();
}
+ @Override
public WindowClosingMode setDefaultCloseOperation(WindowClosingMode op) {
return awtWindowClosingProtocol.setDefaultCloseOperation(op);
}
@@ -373,16 +384,16 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
} else {
// before native peer is valid: X11
disableBackgroundErase();
-
+
// creates the native peer
super.addNotify();
-
+
// after native peer is valid: Windows
disableBackgroundErase();
-
- jawtWindow = NewtFactoryAWT.getNativeWindow(this, null != newtChild ? newtChild.getRequestedCapabilities() : null);
+
+ jawtWindow = NewtFactoryAWT.getNativeWindow(this, null != newtChild ? newtChild.getRequestedCapabilities() : null);
jawtWindow.setShallUseOffscreenLayer(shallUseOffscreenLayer);
-
+
if(DEBUG) {
// if ( isShowing() == false ) -> Container was not visible yet.
// if ( isShowing() == true ) -> Container is already visible.
@@ -397,7 +408,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
@Override
public void removeNotify() {
awtWindowClosingProtocol.removeClosingListener();
-
+
if( Beans.isDesignTime() ) {
super.removeNotify();
} else {
@@ -419,7 +430,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
public final void destroy() {
destroyImpl(false /* removeNotify */, false /* windowClosing */);
}
-
+
private final void destroyImpl(boolean removeNotify, boolean windowClosing) {
if( null !=newtChild ) {
java.awt.Container cont = AWTMisc.getContainer(this);
@@ -427,7 +438,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
System.err.println("NewtCanvasAWT.destroy(removeNotify "+removeNotify+", windowClosing "+windowClosing+"): nw "+newtWinHandleToHexString(newtChild)+", from "+cont);
}
detachNewtChild(cont);
-
+
if( !removeNotify ) {
final Window cWin = newtChild;
final Window dWin = cWin.getDelegatedWindow();
@@ -437,14 +448,14 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
} else {
cWin.destroy();
}
- }
+ }
}
if( ( removeNotify || windowClosing ) && null!=jawtWindow ) {
NewtFactoryAWT.destroyNativeWindow(jawtWindow);
jawtWindow=null;
- }
+ }
}
-
+
@Override
public void paint(Graphics g) {
if( validateComponent(true) && !printActive ) {
@@ -469,9 +480,9 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
}
}
-
+
private volatile boolean printActive = false;
- private GLAnimatorControl printAnimator = null;
+ private GLAnimatorControl printAnimator = null;
private GLAutoDrawable printGLAD = null;
private AWTTilePainter printAWTTiles = null;
@@ -481,15 +492,15 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
return null;
}
-
+
@Override
public void setupPrint(double scaleMatX, double scaleMatY, int numSamples, int tileWidth, int tileHeight) {
- printActive = true;
+ printActive = true;
final int componentCount = isOpaque() ? 3 : 4;
final TileRenderer printRenderer = new TileRenderer();
printAWTTiles = new AWTTilePainter(printRenderer, componentCount, scaleMatX, scaleMatY, numSamples, tileWidth, tileHeight, DEBUG);
AWTEDTExecutor.singleton.invoke(getTreeLock(), true /* allowOnNonEDT */, true /* wait */, setupPrintOnEDT);
- }
+ }
private final Runnable setupPrintOnEDT = new Runnable() {
@Override
public void run() {
@@ -497,14 +508,14 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
if(DEBUG) {
System.err.println(getThreadName()+": Info: NewtCanvasAWT setupPrint - skipped GL render, drawable not valid yet");
}
- printActive = false;
+ printActive = false;
return; // not yet available ..
}
if( !isVisible() ) {
if(DEBUG) {
System.err.println(getThreadName()+": Info: NewtCanvasAWT setupPrint - skipped GL render, drawable visible");
}
- printActive = false;
+ printActive = false;
return; // not yet available ..
}
final GLAutoDrawable glad = getGLAD();
@@ -512,14 +523,14 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
if( DEBUG ) {
System.err.println("AWT print.setup exit, newtChild not a GLAutoDrawable: "+newtChild);
}
- printActive = false;
+ printActive = false;
return;
}
printAnimator = glad.getAnimator();
if( null != printAnimator ) {
printAnimator.remove(glad);
}
- printGLAD = glad; // _not_ default, shall be replaced by offscreen GLAD
+ printGLAD = glad; // _not_ default, shall be replaced by offscreen GLAD
final GLCapabilities caps = (GLCapabilities)glad.getChosenGLCapabilities().cloneMutable();
final int printNumSamples = printAWTTiles.getNumSamples(caps);
GLDrawable printDrawable = printGLAD.getDelegatedDrawable();
@@ -527,7 +538,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
final boolean reqNewGLADSize = printAWTTiles.customTileWidth != -1 && printAWTTiles.customTileWidth != printDrawable.getWidth() ||
printAWTTiles.customTileHeight != -1 && printAWTTiles.customTileHeight != printDrawable.getHeight();
final boolean reqNewGLADOnscrn = caps.isOnscreen();
-
+
// It is desired to use a new offscreen GLAD, however Bug 830 forbids this for AA onscreen context.
// Bug 830: swapGLContextAndAllGLEventListener and onscreen MSAA w/ NV/GLX
final boolean reqNewGLAD = !caps.getSampleBuffers() && ( reqNewGLADOnscrn || reqNewGLADSamples || reqNewGLADSize );
@@ -546,8 +557,8 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
caps.setNumSamples(printNumSamples);
}
final GLDrawableFactory factory = GLDrawableFactory.getFactory(caps.getGLProfile());
- printGLAD = factory.createOffscreenAutoDrawable(null, caps, null,
- printAWTTiles.customTileWidth != -1 ? printAWTTiles.customTileWidth : DEFAULT_PRINT_TILE_SIZE,
+ printGLAD = factory.createOffscreenAutoDrawable(null, caps, null,
+ printAWTTiles.customTileWidth != -1 ? printAWTTiles.customTileWidth : DEFAULT_PRINT_TILE_SIZE,
printAWTTiles.customTileHeight != -1 ? printAWTTiles.customTileHeight : DEFAULT_PRINT_TILE_SIZE,
null);
GLDrawableUtil.swapGLContextAndAllGLEventListener(glad, printGLAD);
@@ -634,7 +645,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
System.err.println("AWT print.X: "+printAWTTiles);
}
}
-
+
private final boolean validateComponent(boolean attachNewtChild) {
if( Beans.isDesignTime() || !isDisplayable() ) {
return false;
@@ -645,14 +656,14 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
if( 0 >= getWidth() || 0 >= getHeight() ) {
return false;
}
-
+
if( attachNewtChild && !newtChildAttached && null != newtChild ) {
attachNewtChild();
}
return true;
}
-
+
private final void configureNewtChild(boolean attach) {
if(null!=awtAdapter) {
awtAdapter.removeFrom(this);
@@ -670,13 +681,13 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
keyboardFocusManager.removePropertyChangeListener("focusOwner", focusPropertyChangeListener);
keyboardFocusManager = null;
}
-
+
if( null != newtChild ) {
newtChild.setKeyboardFocusHandler(null);
if(attach) {
if(null == jawtWindow.getGraphicsConfiguration()) {
throw new InternalError("XXX");
- }
+ }
isOnscreen = jawtWindow.getGraphicsConfiguration().getChosenCapabilities().isOnscreen();
awtAdapter = (AWTParentWindowAdapter) new AWTParentWindowAdapter(jawtWindow, newtChild).addTo(this);
awtAdapter.removeWindowClosingFrom(this); // we utilize AWTWindowClosingProtocol triggered destruction!
@@ -733,18 +744,19 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
newtChild.reparentWindow(jawtWindow);
newtChild.addSurfaceUpdatedListener(jawtWindow);
if( jawtWindow.isOffscreenLayerSurfaceEnabled() &&
- 0 != ( JAWTUtil.JAWT_OSX_CALAYER_QUIRK_POSITION & JAWTUtil.getOSXCALayerQuirks() ) ) {
+ 0 != ( JAWTUtil.JAWT_OSX_CALAYER_QUIRK_POSITION & JAWTUtil.getOSXCALayerQuirks() ) ) {
AWTEDTExecutor.singleton.invoke(false, forceRelayout);
}
newtChild.setVisible(true);
configureNewtChild(true);
newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener
-
+
if(DEBUG) {
System.err.println("NewtCanvasAWT.attachNewtChild.X: win "+newtWinHandleToHexString(newtChild)+", EDTUtil: cur "+newtChild.getScreen().getDisplay().getEDTUtil()+", comp "+this);
}
}
private final Runnable forceRelayout = new Runnable() {
+ @Override
public void run() {
if(DEBUG) {
System.err.println("NewtCanvasAWT.forceRelayout.0");
@@ -759,7 +771,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
System.err.println("NewtCanvasAWT.forceRelayout.X");
}
} };
-
+
private final void detachNewtChild(java.awt.Container cont) {
if( null == newtChild || null == jawtWindow || !newtChildAttached ) {
return; // nop
@@ -773,14 +785,14 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
", cont "+cont);
}
- newtChild.removeSurfaceUpdatedListener(jawtWindow);
+ newtChild.removeSurfaceUpdatedListener(jawtWindow);
newtChildAttached = false;
newtChild.setFocusAction(null); // no AWT focus traversal ..
configureNewtChild(false);
newtChild.setVisible(false);
-
+
newtChild.reparentWindow(null); // will destroy context (offscreen -> onscreen) and implicit detachSurfaceLayer
-
+
if(DEBUG) {
System.err.println("NewtCanvasAWT.detachNewtChild.X: win "+newtWinHandleToHexString(newtChild)+", EDTUtil: cur "+newtChild.getScreen().getDisplay().getEDTUtil()+", comp "+this);
}
@@ -797,6 +809,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
if (!disableBackgroundEraseInitialized) {
try {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ @Override
public Object run() {
try {
Class<?> clazz = getToolkit().getClass();
@@ -837,7 +850,7 @@ public class NewtCanvasAWT extends java.awt.Canvas implements WindowClosingProto
}
protected static String getThreadName() { return Thread.currentThread().getName(); }
-
+
static String newtWinHandleToHexString(Window w) {
return null != w ? toHexString(w.getWindowHandle()) : "nil";
}
diff --git a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.java b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.java
index c7153840f..409f78307 100644
--- a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.java
+++ b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.java
@@ -47,12 +47,12 @@ import jogamp.nativewindow.jawt.JAWTUtil;
import com.jogamp.newt.awt.NewtCanvasAWT;
import com.jogamp.newt.opengl.GLWindow;
-/**
+/**
* Simple GLEventListener deployment as an applet using JOGL. This demo must be
* referenced from a web page via an &lt;applet&gt; tag.
- *
+ *
* <p>
- * Example of an applet tag using GearsES2 within the applet area (normal case):
+ * Example of an applet tag using GearsES2 within the applet area (normal case):
* <pre>
&lt;applet width=100 height=100&gt;
&lt;param name="java_arguments" value="-Dsun.java2d.noddraw=true"&gt;
@@ -65,9 +65,9 @@ import com.jogamp.newt.opengl.GLWindow;
&lt;/applet&gt;Hello Gears !
* </pre>
* </p>
- *
+ *
* <p>
- * Example of an applet tag using GearsES2 in an undecorated, translucent, closeable and always-on-top window:
+ * Example of an applet tag using GearsES2 in an undecorated, translucent, closeable and always-on-top window:
* <pre>
&lt;applet width=1 height=1&gt;
&lt;param name="java_arguments" value="-Dsun.java2d.noddraw=true"&gt;
@@ -95,13 +95,14 @@ import com.jogamp.newt.opengl.GLWindow;
@SuppressWarnings("serial")
public class JOGLNewtApplet1Run extends Applet {
public static final boolean DEBUG = JOGLNewtAppletBase.DEBUG;
-
+
GLWindow glWindow = null;
NewtCanvasAWT newtCanvasAWT = null;
JOGLNewtAppletBase base = null;
/** if valid glStandalone:=true (own window) ! */
- int glXd=Integer.MAX_VALUE, glYd=Integer.MAX_VALUE, glWidth=Integer.MAX_VALUE, glHeight=Integer.MAX_VALUE;
+ int glXd=Integer.MAX_VALUE, glYd=Integer.MAX_VALUE, glWidth=Integer.MAX_VALUE, glHeight=Integer.MAX_VALUE;
+ @Override
public void init() {
if(DEBUG) {
System.err.println("JOGLNewtApplet1Run.init() START");
@@ -135,7 +136,7 @@ public class JOGLNewtApplet1Run extends Applet {
glCloseable = JOGLNewtAppletBase.str2Bool(getParameter("gl_closeable"), glCloseable);
glOpaque = JOGLNewtAppletBase.str2Bool(getParameter("gl_opaque"), glOpaque);
glAlphaBits = JOGLNewtAppletBase.str2Int(getParameter("gl_alpha"), glAlphaBits);
- glNumMultisampleBuffer = JOGLNewtAppletBase.str2Int(getParameter("gl_multisamplebuffer"), glNumMultisampleBuffer);
+ glNumMultisampleBuffer = JOGLNewtAppletBase.str2Int(getParameter("gl_multisamplebuffer"), glNumMultisampleBuffer);
glXd = JOGLNewtAppletBase.str2Int(getParameter("gl_dx"), glXd);
glYd = JOGLNewtAppletBase.str2Int(getParameter("gl_dy"), glYd);
glWidth = JOGLNewtAppletBase.str2Int(getParameter("gl_width"), glWidth);
@@ -168,8 +169,8 @@ public class JOGLNewtApplet1Run extends Applet {
System.err.println("glNumMultisampleBuffer: "+glNumMultisampleBuffer);
System.err.println("glNoDefaultKeyListener: "+glNoDefaultKeyListener);
}
-
- base = new JOGLNewtAppletBase(glEventListenerClazzName,
+
+ base = new JOGLNewtAppletBase(glEventListenerClazzName,
glSwapInterval,
glNoDefaultKeyListener,
glCloseable,
@@ -223,6 +224,7 @@ public class JOGLNewtApplet1Run extends Applet {
}
}
+ @Override
public void start() {
if(DEBUG) {
System.err.println("JOGLNewtApplet1Run.start() START (isVisible "+isVisible()+", isDisplayable "+isDisplayable()+")");
@@ -252,9 +254,9 @@ public class JOGLNewtApplet1Run extends Applet {
System.err.println("GLWindow: "+glWindow);
}
base.start();
- if( null != newtCanvasAWT &&
+ if( null != newtCanvasAWT &&
newtCanvasAWT.isOffscreenLayerSurfaceEnabled() &&
- 0 != ( JAWTUtil.JAWT_OSX_CALAYER_QUIRK_POSITION & JAWTUtil.getOSXCALayerQuirks() ) ) {
+ 0 != ( JAWTUtil.JAWT_OSX_CALAYER_QUIRK_POSITION & JAWTUtil.getOSXCALayerQuirks() ) ) {
// force relayout
final int cW = newtCanvasAWT.getWidth();
final int cH = newtCanvasAWT.getHeight();
@@ -266,6 +268,7 @@ public class JOGLNewtApplet1Run extends Applet {
}
}
+ @Override
public void stop() {
if(DEBUG) {
System.err.println("JOGLNewtApplet1Run.stop() START");
@@ -276,6 +279,7 @@ public class JOGLNewtApplet1Run extends Applet {
}
}
+ @Override
public void destroy() {
if(DEBUG) {
System.err.println("JOGLNewtApplet1Run.destroy() START");
diff --git a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java
index 1004adb8e..d17d2e77c 100644
--- a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java
+++ b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java
@@ -57,7 +57,7 @@ import com.jogamp.opengl.util.Animator;
public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
public static final boolean DEBUG = Debug.debug("Applet");
-
+
String glEventListenerClazzName;
int glSwapInterval;
boolean noDefaultKeyListener;
@@ -71,13 +71,13 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
boolean isValid = false;
NativeWindow awtParent;
- public JOGLNewtAppletBase(String glEventListenerClazzName,
+ public JOGLNewtAppletBase(String glEventListenerClazzName,
int glSwapInterval,
boolean noDefaultKeyListener,
boolean glClosable,
boolean glDebug,
boolean glTrace) {
-
+
this.glEventListenerClazzName=glEventListenerClazzName;
this.glSwapInterval=glSwapInterval;
this.noDefaultKeyListener = noDefaultKeyListener;
@@ -112,6 +112,7 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
try {
final Class<?> clazz = AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
+ @Override
public Class<?> run() {
final ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class<?> clazz = null;
@@ -169,13 +170,14 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
if(null == glWindow.getParent()) {
// we may be called directly by the native EDT
new Thread(new Runnable() {
+ @Override
public void run() {
if( glWindow.isNativeValid() ) {
glWindow.reparentWindow(awtParent);
}
}
- }).start();
- }
+ }).start();
+ }
}
} } );
@@ -203,7 +205,7 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
if(glEventListener instanceof KeyListener) {
glWindow.addKeyListener((KeyListener)glEventListener);
}
-
+
if(!noDefaultKeyListener) {
glWindow.addKeyListener(this);
}
@@ -216,7 +218,7 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
glAnimator.setThreadGroup(tg);
glAnimator.add(glWindow);
glAnimator.setUpdateFPSFrames(FPSCounter.DEFAULT_FRAMES_PER_INTERVAL, null);
-
+
} catch (Throwable t) {
throw new RuntimeException(t);
}
@@ -256,30 +258,34 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
// ***********************************************************************************
// ***********************************************************************************
+ @Override
public void init(GLAutoDrawable drawable) {
GL _gl = drawable.getGL();
if(glDebug) {
try {
_gl = _gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Debug", null, _gl, null) );
- } catch (Exception e) {e.printStackTrace();}
+ } catch (Exception e) {e.printStackTrace();}
}
if(glTrace) {
try {
// Trace ..
_gl = _gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Trace", null, _gl, new Object[] { System.err } ) );
- } catch (Exception e) {e.printStackTrace();}
+ } catch (Exception e) {e.printStackTrace();}
}
if(glSwapInterval>=0) {
_gl.setSwapInterval(glSwapInterval);
}
}
+ @Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
}
+ @Override
public void display(GLAutoDrawable drawable) {
}
+ @Override
public void dispose(GLAutoDrawable drawable) {
}
@@ -317,9 +323,9 @@ public class JOGLNewtAppletBase implements KeyListener, GLEventListener {
}
}
}
-
+
@Override
- public void keyReleased(KeyEvent e) {
+ public void keyReleased(KeyEvent e) {
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/DoubleTapScrollGesture.java b/src/newt/classes/com/jogamp/newt/event/DoubleTapScrollGesture.java
index bc67cbee6..edb2429bb 100644
--- a/src/newt/classes/com/jogamp/newt/event/DoubleTapScrollGesture.java
+++ b/src/newt/classes/com/jogamp/newt/event/DoubleTapScrollGesture.java
@@ -41,15 +41,15 @@ import jogamp.newt.Debug;
*
* - touchSlop (scaled in pixels):
* - Min. movement w/ 2 pointer within ScaledDoubleTapSlop starting 'scroll' mode
- *
+ *
* - Avoid computation if not within gesture, especially for MOVE/DRAG
- *
+ *
* - Only allow gesture to start with PRESS
- *
- * - Leave gesture completely with RELEASE of both/all fingers, or dist-diff exceeds doubleTapSlop
- *
+ *
+ * - Leave gesture completely with RELEASE of both/all fingers, or dist-diff exceeds doubleTapSlop
+ *
* - Tolerate temporary lift 1 of 2 pointer
- *
+ *
* - Always validate pointer-id
* </pre>
* </p>
@@ -74,27 +74,27 @@ public class DoubleTapScrollGesture implements GestureHandler {
public static final int SCROLL_SLOP_PIXEL;
/** Two pointer 'double tap' slop in pixels (fallback), defaults to 104 pixels. Can be overriden by integer property <code>newt.event.double_tap_slop_pixel</code>.*/
public static final int DOUBLE_TAP_SLOP_PIXEL;
-
+
/** Scroll threshold in millimeter, defaults to 3 mm. Can be overriden by integer property <code>newt.event.scroll_slop_mm</code>.*/
public static final float SCROLL_SLOP_MM;
/** Two pointer 'double tap' slop in millimeter, defaults to 20 mm. Can be overriden by integer property <code>newt.event.double_tap_slop_mm</code>.*/
public static final float DOUBLE_TAP_SLOP_MM;
-
+
static {
Debug.initSingleton();
-
+
SCROLL_SLOP_PIXEL = Debug.getIntProperty("newt.event.scroll_slop_pixel", true, 16);
DOUBLE_TAP_SLOP_PIXEL = Debug.getIntProperty("newt.event.double_tap_slop_pixel", true, 104);
SCROLL_SLOP_MM = Debug.getIntProperty("newt.event.scroll_slop_mm", true, 3);
DOUBLE_TAP_SLOP_MM = Debug.getIntProperty("newt.event.double_tap_slop_mm", true, 20);
}
-
+
private static final int ST_NONE = 0;
private static final int ST_1PRESS = 1;
private static final int ST_2PRESS_T = 2;
private static final int ST_2PRESS_C = 3;
private static final int ST_SCROLL = 4;
-
+
private final int scrollSlop, scrollSlopSquare, doubleTapSlop, doubleTapSlopSquare;
private final float[] scrollDistance = new float[] { 0f, 0f };
private int[] pIds = new int[] { -1, -1 };
@@ -104,18 +104,18 @@ public class DoubleTapScrollGesture implements GestureHandler {
private int lastX, lastY;
private int pointerDownCount;
private MouseEvent hitGestureEvent;
-
+
private static final int getSquareDistance(float x1, float y1, float x2, float y2) {
final int deltaX = (int) x1 - (int) x2;
final int deltaY = (int) y1 - (int) y2;
return deltaX * deltaX + deltaY * deltaY;
}
-
+
private int gesturePointers(final MouseEvent e, final int excludeIndex) {
- int j = 0;
+ int j = 0;
for(int i=e.getPointerCount()-1; i>=0; i--) {
if( excludeIndex != i ) {
- final int id = e.getPointerId(i);
+ final int id = e.getPointerId(i);
if( pIds[0] == id || pIds[1] == id ) {
j++;
}
@@ -123,10 +123,10 @@ public class DoubleTapScrollGesture implements GestureHandler {
}
return j;
}
-
+
/**
* scaledScrollSlop < scaledDoubleTapSlop
- * @param scaledScrollSlop Distance a pointer can wander before we think the user is scrolling in <i>pixels</i>.
+ * @param scaledScrollSlop Distance a pointer can wander before we think the user is scrolling in <i>pixels</i>.
* @param scaledDoubleTapSlop Distance in <i>pixels</i> between the first touch and second touch to still be considered a double tap.
*/
public DoubleTapScrollGesture(int scaledScrollSlop, int scaledDoubleTapSlop) {
@@ -137,11 +137,12 @@ public class DoubleTapScrollGesture implements GestureHandler {
pointerDownCount = 0;
clear(true);
if(DEBUG) {
- System.err.println("DoubleTapScroll scrollSlop (scaled) "+scrollSlop);
- System.err.println("DoubleTapScroll doubleTapSlop (scaled) "+doubleTapSlop);
- }
+ System.err.println("DoubleTapScroll scrollSlop (scaled) "+scrollSlop);
+ System.err.println("DoubleTapScroll doubleTapSlop (scaled) "+doubleTapSlop);
+ }
}
+ @Override
public String toString() {
return "DoubleTapScroll[state "+gestureState+", in "+isWithinGesture()+", has "+(null!=hitGestureEvent)+", pc "+pointerDownCount+"]";
}
@@ -160,17 +161,17 @@ public class DoubleTapScrollGesture implements GestureHandler {
lastY = 0;
}
}
-
+
@Override
public boolean isWithinGesture() {
return ST_2PRESS_C <= gestureState;
}
-
+
@Override
public boolean hasGesture() {
return null != hitGestureEvent;
}
-
+
@Override
public InputEvent getGestureEvent() {
if( null != hitGestureEvent ) {
@@ -184,17 +185,17 @@ public class DoubleTapScrollGesture implements GestureHandler {
modifiers |= com.jogamp.newt.event.InputEvent.SHIFT_MASK;
}
return new MouseEvent(MouseEvent.EVENT_MOUSE_WHEEL_MOVED, ge.getSource(), ge.getWhen(), modifiers,
- ge.getAllPointerTypes(), ge.getAllPointerIDs(),
- ge.getAllX(), ge.getAllY(), ge.getAllPressures(), ge.getMaxPressure(),
+ ge.getAllPointerTypes(), ge.getAllPointerIDs(),
+ ge.getAllX(), ge.getAllY(), ge.getAllPressures(), ge.getMaxPressure(),
ge.getButton(), ge.getClickCount(), rotationXYZ, scrollSlop);
}
return null;
}
-
+
public final float[] getScrollDistanceXY() {
return scrollDistance;
}
-
+
@Override
public boolean process(final InputEvent in) {
if( null != hitGestureEvent || !(in instanceof MouseEvent) ) {
@@ -220,7 +221,7 @@ public class DoubleTapScrollGesture implements GestureHandler {
final int y1 = pe.getY(1);
final int xm = (x0+x1)/2;
final int ym = (y0+y1)/2;
-
+
if( ST_1PRESS == gestureState ) {
final int sqDist = getSquareDistance(x0, y0, x1, y1);
final boolean isDistWithinDoubleTapSlop = sqDist < doubleTapSlopSquare;
@@ -254,7 +255,7 @@ public class DoubleTapScrollGesture implements GestureHandler {
System.err.println(this+".pressed: gPtr "+gPtr+", this "+lastX+"/"+lastY+", "+pe);
}
} break;
-
+
case MouseEvent.EVENT_MOUSE_RELEASED: {
pointerDownCount--; // lifted
final int gPtr = gesturePointers(pe, 0); // w/o lifted pointer
@@ -269,7 +270,7 @@ public class DoubleTapScrollGesture implements GestureHandler {
System.err.println(this+".released: gPtr "+gPtr+", "+pe);
}
} break;
-
+
case MouseEvent.EVENT_MOUSE_DRAGGED: {
if( 2 == pointerDownCount && ST_1PRESS < gestureState ) {
final int gPtr = gesturePointers(pe, -1);
@@ -289,11 +290,11 @@ public class DoubleTapScrollGesture implements GestureHandler {
gestureState = ST_SCROLL;
}
} break;
-
+
case ST_2PRESS_C:
gestureState = ST_SCROLL;
break;
-
+
case ST_SCROLL:
scrollDistance[0] = lastX - xm;
scrollDistance[1] = lastY - ym;
@@ -338,7 +339,7 @@ public class DoubleTapScrollGesture implements GestureHandler {
}
}
} break;
-
+
default:
}
return null != hitGestureEvent;
diff --git a/src/newt/classes/com/jogamp/newt/event/GestureHandler.java b/src/newt/classes/com/jogamp/newt/event/GestureHandler.java
index 2c8f29bb7..2e98a8a01 100644
--- a/src/newt/classes/com/jogamp/newt/event/GestureHandler.java
+++ b/src/newt/classes/com/jogamp/newt/event/GestureHandler.java
@@ -30,7 +30,7 @@ package com.jogamp.newt.event;
import jogamp.newt.Debug;
/**
- * Generic gesture handler interface designed to allow pass-through
+ * Generic gesture handler interface designed to allow pass-through
* filtering of {@link InputEvent}s.
* <p>
* To avoid negative impact on event processing,
@@ -44,18 +44,18 @@ import jogamp.newt.Debug;
*/
public interface GestureHandler {
public static final boolean DEBUG = Debug.debug("Window.MouseEvent");
-
+
/** A custom gesture event */
@SuppressWarnings("serial")
public static class GestureEvent extends InputEvent {
/** A gesture has been detected. */
public static final short EVENT_GESTURE_DETECTED = 400;
-
+
private final GestureHandler handler;
-
+
/**
* Creates a gesture event with default type {@link #EVENT_GESTURE_DETECTED}.
- *
+ *
* @param source
* @param when
* @param modifiers
@@ -65,7 +65,7 @@ public interface GestureHandler {
super(EVENT_GESTURE_DETECTED, source, when, modifiers);
this.handler = handler;
}
-
+
/**
* Creates a gesture event with custom <i>event_type</i> !
* @param event_type must lie within [400..599]
@@ -78,14 +78,14 @@ public interface GestureHandler {
super(event_type, source, when, modifiers);
this.handler = handler;
}
-
+
/** Return the {@link GestureHandler}, which produced the event. */
public final GestureHandler getHandler() { return handler; }
}
-
+
/**
* Listener for {@link GestureEvent}s.
- *
+ *
* @see GestureEvent
*/
public static interface GestureListener extends NEWTEventListener
@@ -93,50 +93,50 @@ public interface GestureHandler {
/** {@link GestureHandler} {@link GestureHandler#hasGesture() has detected} the gesture. */
public void gestureDetected(GestureEvent gh);
}
-
- /**
- * Clears state of handler, i.e. resets all states incl. previous detected gesture.
+
+ /**
+ * Clears state of handler, i.e. resets all states incl. previous detected gesture.
* @param clearStarted if true, also clears {@link #isWithinGesture() started} state,
* otherwise stay within gesture - if appropriate.
- * Staying within a gesture allows fluent continuous gesture sequence,
- * e.g. for scrolling.
+ * Staying within a gesture allows fluent continuous gesture sequence,
+ * e.g. for scrolling.
*/
public void clear(boolean clearStarted);
-
- /**
+
+ /**
* Returns true if a previous {@link #process(InputEvent)} command produced a gesture,
- * which has not been {@link #clear(boolean) cleared}.
+ * which has not been {@link #clear(boolean) cleared}.
* Otherwise returns false.
- */
+ */
public boolean hasGesture();
-
- /**
+
+ /**
* Returns the corresponding {@link InputEvent} for the gesture as detected by
* a previous {@link #process(InputEvent)}, which has not been {@link #clear(boolean) cleared}.
* Otherwise returns null.
* <p>
* Only implemented for gestures mapping to {@link InputEvent}s.
- * </p>
- */
+ * </p>
+ */
public InputEvent getGestureEvent();
-
- /**
+
+ /**
* Returns true if within a gesture as detected by a previous {@link #process(InputEvent)} command,
- * which has not been {@link #clear(boolean) cleared}.
+ * which has not been {@link #clear(boolean) cleared}.
* Otherwise returns false.
- */
+ */
public boolean isWithinGesture();
/**
* Process the given {@link InputEvent} and returns true if it produced the gesture.
* Otherwise returns false.
* <p>
- * If a gesture was already detected previously and has not been cleared,
- * method does not process the event and returns true.
+ * If a gesture was already detected previously and has not been cleared,
+ * method does not process the event and returns true.
* </p>
* <p>
- * Besides validation of the event's details,
- * the handler may also validate the {@link InputEvent.InputClass} and/or {@link InputEvent.InputType}.
+ * Besides validation of the event's details,
+ * the handler may also validate the {@link InputEvent.InputClass} and/or {@link InputEvent.InputType}.
* </p>
*/
public boolean process(InputEvent e);
diff --git a/src/newt/classes/com/jogamp/newt/event/InputEvent.java b/src/newt/classes/com/jogamp/newt/event/InputEvent.java
index 1bd67efa5..f29b632e8 100644
--- a/src/newt/classes/com/jogamp/newt/event/InputEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/InputEvent.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -43,17 +43,17 @@ public abstract class InputEvent extends NEWTEvent
/** Interface marking class of input types */
public static interface InputClass {
}
-
+
/** Interface marking type of input devices */
public static interface InputType {
}
-
+
public static final int SHIFT_MASK = 1 << 0;
public static final int CTRL_MASK = 1 << 1;
public static final int META_MASK = 1 << 2;
public static final int ALT_MASK = 1 << 3;
public static final int ALT_GRAPH_MASK = 1 << 4;
-
+
public static final int BUTTON1_MASK = 1 << 5;
public static final int BUTTON2_MASK = 1 << 6;
public static final int BUTTON3_MASK = 1 << 7;
@@ -63,23 +63,23 @@ public abstract class InputEvent extends NEWTEvent
public static final int BUTTON7_MASK = 1 << 11;
public static final int BUTTON8_MASK = 1 << 12;
public static final int BUTTON9_MASK = 1 << 13;
-
+
public static final int BUTTONLAST_MASK = 1 << 20; // 16 buttons
public static final int BUTTONALL_MASK = 0xffff << 5 ; // 16 buttons
-
+
/** Event is caused by auto-repeat. */
public static final int AUTOREPEAT_MASK = 1 << 29;
-
+
/** Pointer is confined, see {@link Window#confinePointer(boolean)}. */
public static final int CONFINED_MASK = 1 << 30;
-
+
/** Pointer is invisible, see {@link Window#setPointerVisible(boolean)}. */
public static final int INVISIBLE_MASK = 1 << 31;
- /**
+ /**
* Returns the corresponding button mask for the given button.
* <p>
- * In case the given button lies outside
+ * In case the given button lies outside
* of the valid range [{@link MouseEvent#BUTTON1} .. {@link MouseEvent#BUTTON_COUNT}],
* null is returned.
* </p>
@@ -90,7 +90,7 @@ public abstract class InputEvent extends NEWTEvent
}
return 0;
}
-
+
protected InputEvent(short eventType, Object source, long when, int modifiers) {
super(eventType, source, when);
this.modifiers=modifiers;
@@ -128,11 +128,11 @@ public abstract class InputEvent extends NEWTEvent
public boolean isConfined() {
return (modifiers&CONFINED_MASK)!=0;
}
- /** {@link #getModifiers()} contains {@link #INVISIBLE_MASK}. Pointer is invisible, see {@link Window#setPointerVisible(boolean)}. */
+ /** {@link #getModifiers()} contains {@link #INVISIBLE_MASK}. Pointer is invisible, see {@link Window#setPointerVisible(boolean)}. */
public boolean isInvisible() {
return (modifiers&INVISIBLE_MASK)!=0;
}
-
+
public StringBuilder getModifiersString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
@@ -141,7 +141,7 @@ public abstract class InputEvent extends NEWTEvent
boolean isFirst = true;
if(isShiftDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("shift"); }
if(isControlDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("ctrl"); }
- if(isMetaDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("meta"); }
+ if(isMetaDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("meta"); }
if(isAltDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("alt"); }
if(isAltGraphDown()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("altgr"); }
if(isAutoRepeat()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("repeat"); }
@@ -151,18 +151,18 @@ public abstract class InputEvent extends NEWTEvent
if(isConfined()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("confined"); }
if(isInvisible()) { if(!isFirst) { sb.append(", "); } isFirst = false; sb.append("invisible"); }
sb.append("]");
-
+
return sb;
}
/**
* See also {@link MouseEvent}'s section about <i>Multiple-Pointer Events</i>.
- * @return Array of pressed mouse buttons [{@link MouseEvent#BUTTON1} .. {@link MouseEvent#BUTTON6}].
+ * @return Array of pressed mouse buttons [{@link MouseEvent#BUTTON1} .. {@link MouseEvent#BUTTON6}].
* If none is down, the resulting array is of length 0.
*/
public final short[] getButtonsDown() {
final int len = getButtonDownCount();
-
+
final short[] res = new short[len];
int j = 0;
for(int i=1; i<=MouseEvent.BUTTON_COUNT; i++) {
@@ -174,13 +174,13 @@ public abstract class InputEvent extends NEWTEvent
/**
* See also {@link MouseEvent}'s section about <i>Multiple-Pointer Events</i>.
* @param button the button to test
- * @return true if the given button is down
+ * @return true if the given button is down
*/
public final boolean isButtonDown(int button) {
return ( modifiers & getButtonMask(button) ) != 0;
}
- /**
+ /**
* Returns the number of pressed buttons by counting the set bits:
* <pre>
* getBitCount(modifiers & BUTTONALL_MASK);
@@ -194,8 +194,8 @@ public abstract class InputEvent extends NEWTEvent
public final int getButtonDownCount() {
return IntBitfield.getBitCount(modifiers & BUTTONALL_MASK);
}
-
- /**
+
+ /**
* Returns true if at least one button is pressed, otherwise false:
* <pre>
* 0 != ( modifiers & BUTTONALL_MASK )
@@ -209,11 +209,13 @@ public abstract class InputEvent extends NEWTEvent
public final boolean isAnyButtonDown() {
return 0 != ( modifiers & BUTTONALL_MASK );
}
-
+
+ @Override
public String toString() {
return toString(null).toString();
}
-
+
+ @Override
public StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
diff --git a/src/newt/classes/com/jogamp/newt/event/KeyAdapter.java b/src/newt/classes/com/jogamp/newt/event/KeyAdapter.java
index 42ebea722..5cef734bb 100644
--- a/src/newt/classes/com/jogamp/newt/event/KeyAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/KeyAdapter.java
@@ -4,14 +4,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -21,18 +21,20 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public abstract class KeyAdapter implements KeyListener
{
+ @Override
public void keyPressed(KeyEvent e) {
}
+ @Override
public void keyReleased(KeyEvent e) {
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/KeyEvent.java b/src/newt/classes/com/jogamp/newt/event/KeyEvent.java
index 085f598dc..49aa4e054 100644
--- a/src/newt/classes/com/jogamp/newt/event/KeyEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/KeyEvent.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -37,8 +37,8 @@ package com.jogamp.newt.event;
import com.jogamp.common.util.IntBitfield;
/**
- * <a name="eventDelivery"><h5>KeyEvent Delivery</h5></a>
- *
+ * <a name="eventDelivery"><h5>KeyEvent Delivery</h5></a>
+ *
* Key events are delivered in the following order:
* <p>
* <table border="0">
@@ -48,10 +48,10 @@ import com.jogamp.common.util.IntBitfield;
* </table>
* </p>
* In case the native platform does not
- * deliver keyboard events in the above order or skip events,
- * the NEWT driver will reorder and inject synthetic events if required.
+ * deliver keyboard events in the above order or skip events,
+ * the NEWT driver will reorder and inject synthetic events if required.
* <p>
- * Besides regular modifiers like {@link InputEvent#SHIFT_MASK} etc.,
+ * Besides regular modifiers like {@link InputEvent#SHIFT_MASK} etc.,
* the {@link InputEvent#AUTOREPEAT_MASK} bit is added if repetition is detected, following above constraints.
* </p>
* <p>
@@ -60,38 +60,38 @@ import com.jogamp.common.util.IntBitfield;
P = pressed, R = released
0 = normal, 1 = auto-repeat
- P(0), [ R(1), P(1), R(1), ..], R(0)
+ P(0), [ R(1), P(1), R(1), ..], R(0)
* </pre>
* The idea is if you mask out auto-repeat in your event listener
* you just get one long pressed P/R tuple for {@link #isPrintableKey() printable} and {@link #isActionKey() Action} keys.
* </p>
* <p>
- * {@link #isActionKey() Action} keys will produce {@link #EVENT_KEY_PRESSED pressed}
+ * {@link #isActionKey() Action} keys will produce {@link #EVENT_KEY_PRESSED pressed}
* and {@link #EVENT_KEY_RELEASED released} events including {@link #isAutoRepeat() auto-repeat}.
* </p>
* <p>
* {@link #isPrintableKey() Printable} keys will produce {@link #EVENT_KEY_PRESSED pressed} and {@link #EVENT_KEY_RELEASED released} events.
* </p>
* <p>
- * {@link #isModifierKey() Modifier} keys will produce {@link #EVENT_KEY_PRESSED pressed} and {@link #EVENT_KEY_RELEASED released} events
+ * {@link #isModifierKey() Modifier} keys will produce {@link #EVENT_KEY_PRESSED pressed} and {@link #EVENT_KEY_RELEASED released} events
* excluding {@link #isAutoRepeat() auto-repeat}.
* They will also influence subsequent event's {@link #getModifiers() modifier} bits while pressed.
* </p>
- *
+ *
* <a name="unicodeMapping"><h5>Unicode Mapping</h5></a>
* <p>
- * {@link #getKeyChar() Key-chars}, as well as
+ * {@link #getKeyChar() Key-chars}, as well as
* {@link #isPrintableKey() printable} {@link #getKeyCode() key-codes} and {@link #getKeySymbol() key-symbols}
- * use the UTF-16 unicode space w/o collision.
- *
+ * use the UTF-16 unicode space w/o collision.
+ *
* </p>
* <p>
- * Non-{@link #isPrintableKey() printable} {@link #getKeyCode() key-codes} and {@link #getKeySymbol() key-symbols},
+ * Non-{@link #isPrintableKey() printable} {@link #getKeyCode() key-codes} and {@link #getKeySymbol() key-symbols},
* i.e. {@link #isModifierKey() modifier-} and {@link #isActionKey() action-}keys,
* are mapped to unicode's control and private range and do not collide w/ {@link #isPrintableKey() printable} unicode values
* with the following exception.
* </p>
- *
+ *
* <a name="unicodeCollision"><h5>Unicode Collision</h5></a>
* <p>
* The following {@link #getKeyCode() Key-code}s and {@link #getKeySymbol() key-symbol}s collide w/ unicode space:<br/>
@@ -103,9 +103,9 @@ import com.jogamp.common.util.IntBitfield;
* <p>
* Collision was chosen for {@link #getKeyCode() Key-code} and {@link #getKeySymbol() key-symbol} mapping
* to allow a minimal code range, i.e. <code>[0..255]</code>.
- * The reduced code range in turn allows the implementation to utilize fast and small lookup tables,
- * e.g. to implement a key-press state tracker.
- * </p>
+ * The reduced code range in turn allows the implementation to utilize fast and small lookup tables,
+ * e.g. to implement a key-press state tracker.
+ * </p>
* <pre>
* http://www.utf8-chartable.de/unicode-utf8-table.pl
* http://www.unicode.org/Public/5.1.0/ucd/PropList.txt
@@ -136,7 +136,7 @@ public class KeyEvent extends InputEvent
}
}
flags = _flags;
-
+
//
// Validate flags
//
@@ -147,12 +147,12 @@ public class KeyEvent extends InputEvent
}
}
}
-
+
public static KeyEvent create(short eventType, Object source, long when, int modifiers, short keyCode, short keySym, char keyChar) {
return new KeyEvent(eventType, source, when, modifiers, keyCode, keySym, getModifierMask(keySym), keyChar);
}
- /**
+ /**
* Returns the <i>UTF-16</i> character reflecting the {@link #getKeySymbol() key symbol}
* incl. active {@link #isModifierKey() modifiers}.
* @see #getKeySymbol()
@@ -162,12 +162,12 @@ public class KeyEvent extends InputEvent
return keyChar;
}
- /**
+ /**
* Returns the virtual <i>key symbol</i> reflecting the current <i>keyboard layout</i>.
* <p>
* For {@link #isPrintableKey() printable keys}, the <i>key symbol</i> is the {@link #isModifierKey() unmodified}
- * representation of the UTF-16 {@link #getKeyChar() key char}.<br/>
- * E.g. symbol [{@link #VK_A}, 'A'] for char 'a'.
+ * representation of the UTF-16 {@link #getKeyChar() key char}.<br/>
+ * E.g. symbol [{@link #VK_A}, 'A'] for char 'a'.
* </p>
* @see #isPrintableKey()
* @see #getKeyChar()
@@ -176,18 +176,18 @@ public class KeyEvent extends InputEvent
public final short getKeySymbol() {
return keySym;
}
-
- /**
+
+ /**
* Returns the virtual <i>key code</i> using a fixed mapping to the <i>US keyboard layout</i>.
* <p>
- * In contrast to {@link #getKeySymbol() key symbol}, <i>key code</i>
- * uses a fixed <i>US keyboard layout</i> and therefore is keyboard layout independent.
+ * In contrast to {@link #getKeySymbol() key symbol}, <i>key code</i>
+ * uses a fixed <i>US keyboard layout</i> and therefore is keyboard layout independent.
* </p>
* <p>
- * E.g. <i>virtual key code</i> {@link #VK_Y} denotes the same physical key
- * regardless whether <i>keyboard layout</i> <code>QWERTY</code> or
+ * E.g. <i>virtual key code</i> {@link #VK_Y} denotes the same physical key
+ * regardless whether <i>keyboard layout</i> <code>QWERTY</code> or
* <code>QWERTZ</code> is active. The {@link #getKeySymbol() key symbol} of the former is
- * {@link #VK_Y}, where the latter produces {@link #VK_Y}.
+ * {@link #VK_Y}, where the latter produces {@link #VK_Y}.
* </p>
* @see #getKeyChar()
* @see #getKeySymbol()
@@ -196,10 +196,12 @@ public class KeyEvent extends InputEvent
return keyCode;
}
+ @Override
public final String toString() {
return toString(null).toString();
}
+ @Override
public final StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
@@ -228,9 +230,9 @@ public class KeyEvent extends InputEvent
}
return (short) keyChar;
}
-
- /**
- * Returns <code>true</code> if the given <code>virtualKey</code> represents a modifier key, otherwise <code>false</code>.
+
+ /**
+ * Returns <code>true</code> if the given <code>virtualKey</code> represents a modifier key, otherwise <code>false</code>.
* <p>
* A modifier key is one of {@link #VK_SHIFT}, {@link #VK_CONTROL}, {@link #VK_ALT}, {@link #VK_ALT_GRAPH}, {@link #VK_META}.
* </p>
@@ -247,10 +249,10 @@ public class KeyEvent extends InputEvent
return false;
}
}
-
+
/**
* If <code>vKey</code> is a {@link #isModifierKey() modifier key}, method returns the corresponding modifier mask,
- * otherwise 0.
+ * otherwise 0.
*/
public static int getModifierMask(short vKey) {
switch (vKey) {
@@ -266,10 +268,10 @@ public class KeyEvent extends InputEvent
}
return 0;
}
-
- /**
+
+ /**
* Returns <code>true</code> if {@link #getKeySymbol() key symbol} represents a modifier key,
- * otherwise <code>false</code>.
+ * otherwise <code>false</code>.
* <p>
* See {@link #isModifierKey(short)} for details.
* </p>
@@ -280,8 +282,8 @@ public class KeyEvent extends InputEvent
public final boolean isModifierKey() {
return 0 != ( F_MODIFIER_MASK & flags ) ;
}
-
- /**
+
+ /**
* Returns <code>true</code> if {@link #getKeySymbol() key symbol} represents a non-printable and
* non-{@link #isModifierKey(short) modifier} action key, otherwise <code>false</code>.
* <p>
@@ -289,12 +291,12 @@ public class KeyEvent extends InputEvent
* <code> A = U - ( P + M ) </code>
* </p>
* @see #isPrintableKey()
- * @see #isModifierKey()
+ * @see #isModifierKey()
*/
public final boolean isActionKey() {
return 0 != ( F_ACTION_MASK & flags ) ;
}
-
+
/**
* Returns <code>true</code> if given <code>uniChar</code> represents a printable character,
* i.e. a value other than {@link #VK_UNDEFINED} and not a control or non-printable private code.
@@ -307,7 +309,7 @@ public class KeyEvent extends InputEvent
* <p>
* Distinction of key character and virtual key code is made due to <a href="#unicodeCollision">unicode collision</a>.
* </p>
- *
+ *
* @param uniChar the UTF-16 unicode value, which maybe a virtual key code or key character.
* @param isKeyChar true if <code>uniChar</code> is a key character, otherwise a virtual key code
*/
@@ -333,9 +335,9 @@ public class KeyEvent extends InputEvent
return VK_UNDEFINED != uniChar;
}
- /**
- * Returns <code>true</code> if {@link #getKeySymbol() key symbol} and {@link #getKeyChar() key char}
- * represents a printable character, i.e. a value other than {@link #VK_UNDEFINED}
+ /**
+ * Returns <code>true</code> if {@link #getKeySymbol() key symbol} and {@link #getKeyChar() key char}
+ * represents a printable character, i.e. a value other than {@link #VK_UNDEFINED}
* and not a control or non-printable private code.
* <p>
* A printable character is neither a {@link #isModifierKey(short) modifier key}, nor an {@link #isActionKey(short) action key}.
@@ -347,7 +349,7 @@ public class KeyEvent extends InputEvent
public final boolean isPrintableKey() {
return 0 != ( F_PRINTABLE_MASK & flags ) ;
}
-
+
private final short keyCode;
private final short keySym;
private final char keyChar;
@@ -370,7 +372,7 @@ public class KeyEvent extends InputEvent
public static class NonPrintableRange {
/** min. unicode value, inclusive */
- public short min;
+ public short min;
/** max. unicode value, inclusive */
public short max;
/** true if valid for keyChar values as well, otherwise only valid for keyCode and keySym due to collision. */
@@ -381,7 +383,7 @@ public class KeyEvent extends InputEvent
this.inclKeyChar = inclKeyChar;
}
};
- /**
+ /**
* Non printable key ranges, currently fixed to an array of size 4.
* <p>
* Not included, queried upfront:
@@ -390,98 +392,98 @@ public class KeyEvent extends InputEvent
* <li>{@link #VK_TAB}</li>
* <li>{@link #VK_ENTER}</li>
* </ul>
- * </p>
+ * </p>
*/
- public final static NonPrintableRange[] nonPrintableKeys = {
+ public final static NonPrintableRange[] nonPrintableKeys = {
new NonPrintableRange( (short)0x0000, (short)0x001F, true ), // Unicode: Non printable controls: [0x00 - 0x1F], see exclusion above
new NonPrintableRange( (short)0x0061, (short)0x0078, false), // Small 'a' thru 'z' (0x61 - 0x7a) - Not used for keyCode / keySym - Re-used for Fn (collision)
- new NonPrintableRange( (short)0x008F, (short)0x009F, true ), // Unicode: Non printable controls: [0x7F - 0x9F], Numpad keys [0x7F - 0x8E] are printable!
+ new NonPrintableRange( (short)0x008F, (short)0x009F, true ), // Unicode: Non printable controls: [0x7F - 0x9F], Numpad keys [0x7F - 0x8E] are printable!
new NonPrintableRange( (short)0xE000, (short)0xF8FF, true ) // Unicode: Private 0xE000 - 0xF8FF (Marked Non-Printable)
};
-
+
//
// Unicode: Non printable controls: [0x00 - 0x1F]
//
-
+
/**
* This value, {@value}, is used to indicate that the keyCode is unknown.
*/
public static final short VK_UNDEFINED = (short) 0x0;
-
+
static final short VK_FREE01 = (short) 0x01;
-
+
/** Constant for the HOME function key. ASCII: Start Of Text. */
public static final short VK_HOME = (short) 0x02;
-
+
/** Constant for the END function key. ASCII: End Of Text. */
public static final short VK_END = (short) 0x03;
-
+
/** Constant for the END function key. ASCII: End Of Transmission. */
public static final short VK_FINAL = (short) 0x04;
/** Constant for the PRINT function key. ASCII: Enquiry. */
public static final short VK_PRINTSCREEN = (short) 0x05;
-
+
static final short VK_FREE06 = (short) 0x06;
static final short VK_FREE07 = (short) 0x07;
-
+
/** Constant for the BACK SPACE key "\b", matching ASCII. Printable! */
public static final short VK_BACK_SPACE = (short) 0x08;
-
+
/** Constant for the HORIZ TAB key "\t", matching ASCII. Printable! */
public static final short VK_TAB = (short) 0x09;
-
+
/** LINE_FEED "\n", matching ASCII, n/a on keyboard. */
static final short VK_FREE0A = (short) 0x0A;
-
+
/** Constant for the PAGE DOWN function key. ASCII: Vertical Tabulation. */
public static final short VK_PAGE_DOWN = (short) 0x0B;
-
+
/** Constant for the CLEAR key, i.e. FORM FEED, matching ASCII. */
public static final short VK_CLEAR = (short) 0x0C;
-
+
/** Constant for the ENTER key, i.e. CARRIAGE RETURN, matching ASCII. Printable! */
public static final short VK_ENTER = (short) 0x0D;
-
+
static final short VK_FREE0E = (short) 0x0E;
-
+
/** Constant for the CTRL function key. ASCII: shift-in. */
public static final short VK_SHIFT = (short) 0x0F;
/** Constant for the PAGE UP function key. ASCII: Data Link Escape. */
public static final short VK_PAGE_UP = (short) 0x10;
-
+
/** Constant for the CTRL function key. ASCII: device-ctrl-one. */
public static final short VK_CONTROL = (short) 0x11;
-
+
/** Constant for the left ALT function key. ASCII: device-ctrl-two. */
public static final short VK_ALT = (short) 0x12;
-
+
/** Constant for the ALT_GRAPH function key, i.e. right ALT key. ASCII: device-ctrl-three. */
public static final short VK_ALT_GRAPH = (short) 0x13;
-
+
/** Constant for the CAPS LOCK function key. ASCII: device-ctrl-four. */
public static final short VK_CAPS_LOCK = (short) 0x14;
-
+
static final short VK_FREE15 = (short) 0x15;
-
+
/** Constant for the PAUSE function key. ASCII: sync-idle. */
public static final short VK_PAUSE = (short) 0x16;
-
+
/** <b>scroll lock</b> key. ASCII: End Of Transmission Block. */
public static final short VK_SCROLL_LOCK = (short) 0x17;
-
+
/** Constant for the CANCEL function key. ASCII: Cancel. */
public static final short VK_CANCEL = (short) 0x18;
-
+
static final short VK_FREE19 = (short) 0x19;
-
+
/** Constant for the INSERT function key. ASCII: Substitute. */
public static final short VK_INSERT = (short) 0x1A;
-
+
/** Constant for the ESCAPE function key. ASCII: Escape. */
public static final short VK_ESCAPE = (short) 0x1B;
-
+
/** Constant for the Convert function key, Japanese "henkan". ASCII: File Separator. */
public static final short VK_CONVERT = (short) 0x1C;
@@ -496,48 +498,48 @@ public class KeyEvent extends InputEvent
//
// Unicode: Printable [0x20 - 0x7E]
- // NOTE: Collision of 'a' - 'x' [0x61 .. 0x78], used for keyCode/keySym Fn function keys
+ // NOTE: Collision of 'a' - 'x' [0x61 .. 0x78], used for keyCode/keySym Fn function keys
//
-
+
/** Constant for the SPACE function key. ASCII: SPACE. */
public static final short VK_SPACE = (short) 0x20;
-
+
/** Constant for the "!" key. */
public static final short VK_EXCLAMATION_MARK = (short) 0x21;
/** Constant for the """ key. */
public static final short VK_QUOTEDBL = (short) 0x22;
-
+
/** Constant for the "#" key. */
public static final short VK_NUMBER_SIGN = (short) 0x23;
/** Constant for the "$" key. */
public static final short VK_DOLLAR = (short) 0x24;
-
+
/** Constant for the "%" key. */
public static final short VK_PERCENT = (short) 0x25;
-
+
/** Constant for the "&" key. */
public static final short VK_AMPERSAND = (short) 0x26;
-
+
/** Constant for the "'" key. */
public static final short VK_QUOTE = (short) 0x27;
-
+
/** Constant for the "(" key. */
public static final short VK_LEFT_PARENTHESIS = (short) 0x28;
-
+
/** Constant for the ")" key. */
public static final short VK_RIGHT_PARENTHESIS = (short) 0x29;
-
+
/** Constant for the "*" key */
public static final short VK_ASTERISK = (short) 0x2A;
-
+
/** Constant for the "+" key. */
public static final short VK_PLUS = (short) 0x2B;
-
+
/** Constant for the comma key, "," */
public static final short VK_COMMA = (short) 0x2C;
-
+
/** Constant for the minus key, "-" */
public static final short VK_MINUS = (short) 0x2D;
@@ -582,13 +584,13 @@ public class KeyEvent extends InputEvent
/** Constant for the equals key, ">" */
public static final short VK_GREATER = (short) 0x3E;
-
+
/** Constant for the equals key, "?" */
public static final short VK_QUESTIONMARK = (short) 0x3F;
-
+
/** Constant for the equals key, "@" */
public static final short VK_AT = (short) 0x40;
-
+
/** VK_A thru VK_Z are the same as Capital UTF16/ASCII 'A' thru 'Z' (0x41 - 0x5A) */
public static final short VK_A = (short) 0x41;
/** See {@link #VK_A}. */
@@ -656,17 +658,17 @@ public class KeyEvent extends InputEvent
/** Constant for the "_" key */
public static final short VK_UNDERSCORE = (short) 0x5F;
-
+
/** Constant for the "`" key */
public static final short VK_BACK_QUOTE = (short) 0x60;
-
+
/** Small UTF/ASCII 'a' thru 'z' (0x61 - 0x7a) - Not used for keyCode / keySym. */
-
- /**
- * Constant for the F<i>n</i> function keys.
+
+ /**
+ * Constant for the F<i>n</i> function keys.
* <p>
* F1..F24, i.e. F<i>n</i>, are mapped from on <code>0x60+n</code> -> <code>[0x61 .. 0x78]</code>.
- * </p>
+ * </p>
* <p>
* <b>Warning:</b> The F<i>n</i> function keys <b>do collide</b> with unicode characters small 'a' thru 'x'!<br/>
* See <a href="#unicodeCollision">Unicode Collision</a> for details.
@@ -743,26 +745,26 @@ public class KeyEvent extends InputEvent
/** Constant for the F24 function key. See {@link #VK_F1}. */
public static final short VK_F24 = (short) ( 0x60+24 );
-
+
/** Constant for the "{" key */
public static final short VK_LEFT_BRACE = (short) 0x7B;
/** Constant for the "|" key */
public static final short VK_PIPE = (short) 0x7C;
/** Constant for the "}" key */
public static final short VK_RIGHT_BRACE = (short) 0x7D;
-
+
/** Constant for the "~" key, matching ASCII */
public static final short VK_TILDE = (short) 0x7E;
-
+
//
// Unicode: Non printable controls: [0x7F - 0x9F]
//
// Numpad keys [0x7F - 0x8E] are printable
//
-
+
/** Numeric keypad <b>decimal separator</b> key. Non printable UTF control. */
public static final short VK_SEPARATOR = (short) 0x7F;
-
+
/** Numeric keypad VK_NUMPAD0 thru VK_NUMPAD9 are mapped to UTF control (0x80 - 0x89). Non printable UTF control. */
public static final short VK_NUMPAD0 = (short) 0x80;
/** See {@link #VK_NUMPAD0}. */
@@ -783,28 +785,28 @@ public class KeyEvent extends InputEvent
public static final short VK_NUMPAD8 = (short) 0x88;
/** See {@link #VK_NUMPAD0}. */
public static final short VK_NUMPAD9 = (short) 0x89;
-
+
/** Numeric keypad <b>decimal separator</b> key. Non printable UTF control. */
public static final short VK_DECIMAL = (short) 0x8A;
-
+
/** Numeric keypad <b>add</b> key. Non printable UTF control. */
public static final short VK_ADD = (short) 0x8B;
/** Numeric keypad <b>subtract</b> key. Non printable UTF control. */
public static final short VK_SUBTRACT = (short) 0x8C;
-
+
/** Numeric keypad <b>multiply</b> key. Non printable UTF control. */
public static final short VK_MULTIPLY = (short) 0x8D;
-
+
/** Numeric keypad <b>divide</b> key. Non printable UTF control. */
public static final short VK_DIVIDE = (short) 0x8E;
-
+
/** Constant for the DEL key, matching ASCII. Non printable UTF control. */
public static final short VK_DELETE = (short) 0x93;
-
+
/** Numeric keypad <b>num lock</b> key. Non printable UTF control. */
public static final short VK_NUM_LOCK = (short) 0x94;
-
+
/** Constant for the cursor- or numerical-pad <b>left</b> arrow key. Non printable UTF control. */
public static final short VK_LEFT = (short) 0x95;
@@ -816,22 +818,22 @@ public class KeyEvent extends InputEvent
/** Constant for the cursor- or numerical pad <b>down</b> arrow key. Non printable UTF control. */
public static final short VK_DOWN = (short) 0x98;
-
+
/** Constant for the Context Menu key. Non printable UTF control. */
public static final short VK_CONTEXT_MENU = (short) 0x99;
/**
* Constant for the MS "Windows" function key.
- * It is used for both the left and right version of the key.
+ * It is used for both the left and right version of the key.
*/
public static final short VK_WINDOWS = (short) 0x9A;
/** Constant for the Meta function key. */
public static final short VK_META = (short) 0x9B;
-
+
/** Constant for the Help function key. */
public static final short VK_HELP = (short) 0x9C;
-
+
/** Constant for the Compose function key. */
public static final short VK_COMPOSE = (short) 0x9D;
@@ -840,21 +842,21 @@ public class KeyEvent extends InputEvent
/** Constant for the Stop function key. */
public static final short VK_STOP = (short) 0x9F;
-
+
//
// Unicode: Printable [0x00A0 - 0xDFFF]
//
-
+
/** Constant for the inverted exclamation mark key. */
public static final short VK_INVERTED_EXCLAMATION_MARK = (short) 0xA1;
-
+
/** Constant for the Euro currency sign key. */
public static final short VK_EURO_SIGN = (short) 0x20AC;
//
// Unicode: Private 0xE000 - 0xF8FF (Marked Non-Printable)
//
-
+
/* for Sun keyboards */
public static final short VK_CUT = (short) 0xF879;
public static final short VK_COPY = (short) 0xF87A;
@@ -871,7 +873,7 @@ public class KeyEvent extends InputEvent
*/
/* Japanese PC 106 keyboard: kanji. Japanese Solaris keyboard: nihongo */
public static final short VK_INPUT_METHOD_ON_OFF = (short) 0xF890;
-
+
/**
* Constant for the Code Input function key.
*/
diff --git a/src/newt/classes/com/jogamp/newt/event/KeyListener.java b/src/newt/classes/com/jogamp/newt/event/KeyListener.java
index b3927d81a..4b16ab61e 100644
--- a/src/newt/classes/com/jogamp/newt/event/KeyListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/KeyListener.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,22 +29,22 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
/**
* Listener for {@link KeyEvent}s.
- *
+ *
* @see KeyEvent
*/
public interface KeyListener extends NEWTEventListener
{
/** A key has been {@link KeyEvent#EVENT_KEY_PRESSED pressed}, excluding {@link #isAutoRepeat() auto-repeat} {@link #isModifierKey() modifier} keys. See {@link KeyEvent}. */
public void keyPressed(KeyEvent e);
-
- /**
+
+ /**
* A key has been {@link KeyEvent#EVENT_KEY_RELEASED released}, excluding {@link #isAutoRepeat() auto-repeat} {@link #isModifierKey() modifier} keys. See {@link KeyEvent}.
* <p>
* To simulated the removed <code>keyTyped(KeyEvent e)</code> semantics,
@@ -52,9 +52,9 @@ public interface KeyListener extends NEWTEventListener
* <pre>
if( !e.isPrintableKey() || e.isAutoRepeat() ) {
return;
- }
+ }
* </pre>
- * </p>
+ * </p>
*/
public void keyReleased(KeyEvent e);
}
diff --git a/src/newt/classes/com/jogamp/newt/event/MonitorEvent.java b/src/newt/classes/com/jogamp/newt/event/MonitorEvent.java
index c47936a7a..03242e147 100644
--- a/src/newt/classes/com/jogamp/newt/event/MonitorEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/MonitorEvent.java
@@ -35,19 +35,19 @@ import com.jogamp.newt.MonitorMode;
public class MonitorEvent extends OutputEvent {
public static final short EVENT_MONITOR_MODE_CHANGE_NOTIFY = 600;
public static final short EVENT_MONITOR_MODE_CHANGED = 601;
-
+
private final MonitorMode mode;
-
+
public MonitorEvent (short eventType, MonitorDevice source, long when, MonitorMode mode) {
super(eventType, source, when);
this.mode = mode;
}
-
+
/** Returns the {@link #getSource() source}, which is a {@link MonitorDevice}. */
public final MonitorDevice getMonitor() { return (MonitorDevice)source; }
-
+
public final MonitorMode getMode() { return mode; }
-
+
public static String getEventTypeString(short type) {
switch(type) {
case EVENT_MONITOR_MODE_CHANGE_NOTIFY: return "EVENT_MONITOR_MODE_CHANGE_NOTIFY";
@@ -55,11 +55,13 @@ public class MonitorEvent extends OutputEvent {
default: return "unknown (" + type + ")";
}
}
-
+
+ @Override
public final String toString() {
return toString(null).toString();
}
+ @Override
public final StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
diff --git a/src/newt/classes/com/jogamp/newt/event/MouseAdapter.java b/src/newt/classes/com/jogamp/newt/event/MouseAdapter.java
index 3607ae634..98252fe14 100644
--- a/src/newt/classes/com/jogamp/newt/event/MouseAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/MouseAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,30 +20,38 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public abstract class MouseAdapter implements MouseListener
{
+ @Override
public void mouseClicked(MouseEvent e) {
}
+ @Override
public void mouseEntered(MouseEvent e) {
}
+ @Override
public void mouseExited(MouseEvent e) {
}
+ @Override
public void mousePressed(MouseEvent e) {
}
+ @Override
public void mouseReleased(MouseEvent e) {
}
+ @Override
public void mouseMoved(MouseEvent e) {
}
+ @Override
public void mouseDragged(MouseEvent e) {
}
+ @Override
public void mouseWheelMoved(MouseEvent e) {
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/MouseEvent.java b/src/newt/classes/com/jogamp/newt/event/MouseEvent.java
index 57dd7e68c..635bdba52 100644
--- a/src/newt/classes/com/jogamp/newt/event/MouseEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/MouseEvent.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -37,12 +37,12 @@ package com.jogamp.newt.event;
/**
* Pointer event of type {@link PointerType}.
* <p>
- * The historical misleading class name may change in the future to <code>PointerEvent</code>.
+ * The historical misleading class name may change in the future to <code>PointerEvent</code>.
* </p>
* <p>
* http://www.w3.org/Submission/pointer-events/#pointerevent-interface
* </p>
- * <a name="multiPtrEvent"><h5>Multiple-Pointer Events</h5></a>
+ * <a name="multiPtrEvent"><h5>Multiple-Pointer Events</h5></a>
* <p>
* In case an instance represents a multiple-pointer event, i.e. {@link #getPointerCount()} is &gt; 1,
* the first data element of the multiple-pointer fields represents the pointer triggering this event.<br/>
@@ -62,10 +62,10 @@ package com.jogamp.newt.event;
* </p>
* <p>
* If representing a multiple-pointer event, the {@link #getButton() button number} is mapped to the <i>first {@link #getPointerId(int) pointer ID}</i>
- * triggering the event and the {@link InputEvent#BUTTON1_MASK button mask bits} in the {@link #getModifiers() modifiers}
+ * triggering the event and the {@link InputEvent#BUTTON1_MASK button mask bits} in the {@link #getModifiers() modifiers}
* field represent the pressed pointer IDs.<br>
* Hence users can query the pressed button count as well as the pressed pointer count via {@link InputEvent#getButtonDownCount()}
- * or use the simple query {@link InputEvent#isAnyButtonDown()}.
+ * or use the simple query {@link InputEvent#isAnyButtonDown()}.
* </p>
*/
@SuppressWarnings("serial")
@@ -75,7 +75,7 @@ public class MouseEvent extends InputEvent
public static enum PointerClass implements InputEvent.InputClass {
Offscreen, Onscreen, Undefined;
}
-
+
/** Type of pointer devices */
public static enum PointerType implements InputEvent.InputType {
/** {@link PointerClass#Offscreen} mouse. Ordinal 0. */
@@ -88,10 +88,10 @@ public class MouseEvent extends InputEvent
Pen(PointerClass.Onscreen),
/** {@link PointerClass#Undefined} ?. Ordinal 4. */
Undefined(PointerClass.Undefined);
-
+
public PointerClass getPointerClass() { return pc; }
-
- /**
+
+ /**
* Returns the matching PointerType value corresponding to the given PointerType's integer ordinal.
* <pre>
* given:
@@ -108,8 +108,8 @@ public class MouseEvent extends InputEvent
}
throw new IllegalArgumentException("Ordinal "+ordinal+" out of range of PointerType.values()[0.."+(all.length-1)+"]");
}
-
- /**
+
+ /**
* Returns the PointerType array of matching PointerType values corresponding to the given PointerType's integer ordinal values.
* <p>
* See {@link #valueOf(int)}.
@@ -124,13 +124,13 @@ public class MouseEvent extends InputEvent
}
return types;
}
-
+
private PointerType(PointerClass pc) {
this.pc = pc;
}
PointerClass pc;
}
-
+
/** ID for button 1, value <code>1</code> */
public static final short BUTTON1 = 1;
/** ID for button 2, value <code>2</code> */
@@ -149,17 +149,17 @@ public class MouseEvent extends InputEvent
public static final short BUTTON8 = 8;
/** ID for button 6, value <code>9</code> */
public static final short BUTTON9 = 9;
-
+
/** Maximum number of buttons, value <code>16</code> */
public static final short BUTTON_COUNT = 16;
- /**
+ /**
* Maximum number of buttons, value <code>16</code>.
* @deprecated Use {@link #BUTTON_COUNT} .. semantics.
*/
public static final short BUTTON_NUMBER = 16;
-
- /** Returns the 3-axis XYZ rotation array by given rotation on Y axis or X axis (if SHIFT_MASK is given in mods). */
+
+ /** Returns the 3-axis XYZ rotation array by given rotation on Y axis or X axis (if SHIFT_MASK is given in mods). */
public static final float[] getRotationXYZ(final float rotationXorY, final int mods) {
final float[] rotationXYZ = new float[] { 0f, 0f, 0f };
if( 0 != ( mods & InputEvent.SHIFT_MASK ) ) {
@@ -169,14 +169,14 @@ public class MouseEvent extends InputEvent
}
return rotationXYZ;
}
-
- public static final short getClickTimeout() {
- return 300;
+
+ public static final short getClickTimeout() {
+ return 300;
}
-
- /**
+
+ /**
* Constructor for traditional one-pointer event.
- *
+ *
* @param eventType
* @param source
* @param when
@@ -193,7 +193,7 @@ public class MouseEvent extends InputEvent
int modifiers, int x, int y, short clickCount, short button,
float[] rotationXYZ, float rotationScale)
{
- super(eventType, source, when, modifiers);
+ super(eventType, source, when, modifiers);
this.x = new int[]{x};
this.y = new int[]{y};
switch(eventType) {
@@ -214,15 +214,15 @@ public class MouseEvent extends InputEvent
this.pointerType = constMousePointerTypes;
}
- /**
+ /**
* Constructor for a multiple-pointer event.
* <p>
* First element of multiple-pointer arrays represents the pointer which triggered the event!
* </p>
- * <p>
+ * <p>
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* </p>
- *
+ *
* @param eventType
* @param source
* @param when
@@ -239,12 +239,12 @@ public class MouseEvent extends InputEvent
* @param rotationXYZ Rotation of all axis
* @param rotationScale Rotation scale
*/
- public MouseEvent(short eventType, Object source, long when, int modifiers,
- PointerType pointerType[], short[] pointerID,
- int[] x, int[] y, float[] pressure, float maxPressure,
+ public MouseEvent(short eventType, Object source, long when, int modifiers,
+ PointerType pointerType[], short[] pointerID,
+ int[] x, int[] y, float[] pressure, float maxPressure,
short button, short clickCount, float[] rotationXYZ, float rotationScale)
{
- super(eventType, source, when, modifiers);
+ super(eventType, source, when, modifiers);
this.x = x;
this.y = y;
final int pointerCount = pointerType.length;
@@ -266,12 +266,12 @@ public class MouseEvent extends InputEvent
this.rotationScale = rotationScale;
this.pointerType = pointerType;
}
-
+
public MouseEvent createVariant(short newEventType) {
return new MouseEvent(newEventType, source, getWhen(), getModifiers(), pointerType, pointerID,
x, y, pressure, maxPressure, button, clickCount, rotationXYZ, rotationScale);
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return the count of pointers involved in this event
@@ -279,7 +279,7 @@ public class MouseEvent extends InputEvent
public final int getPointerCount() {
return pointerType.length;
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return the {@link PointerType} for the data at index or null if index not available.
@@ -290,7 +290,7 @@ public class MouseEvent extends InputEvent
}
return pointerType[index];
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return array of all {@link PointerType}s for all pointers
@@ -298,10 +298,10 @@ public class MouseEvent extends InputEvent
public final PointerType[] getAllPointerTypes() {
return pointerType;
}
-
+
/**
* Return the pointer id for the given index or -1 if index not available.
- * <p>
+ * <p>
* IDs start w/ 0 and are consecutive numbers.
* </p>
* <p>
@@ -317,7 +317,7 @@ public class MouseEvent extends InputEvent
}
return pointerID[index];
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return the pointer index for the given pointer id or -1 if id not available.
@@ -332,7 +332,7 @@ public class MouseEvent extends InputEvent
}
return -1;
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return array of all pointer IDs for all pointers. IDs start w/ 0 and are consecutive numbers.
@@ -340,15 +340,15 @@ public class MouseEvent extends InputEvent
public final short[] getAllPointerIDs() {
return pointerID;
}
-
- /**
+
+ /**
* Returns the button number, e.g. [{@link #BUTTON1}..{@link #BUTTON_COUNT}-1].
* <p>
* A button value of <code>0</code> denotes no button activity, i.e. {@link PointerType#Mouse} move.
* </p>
* <p>
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
- * </p>
+ * </p>
*/
public final short getButton() {
return button;
@@ -357,16 +357,16 @@ public class MouseEvent extends InputEvent
public final short getClickCount() {
return clickCount;
}
-
+
public final int getX() {
return x[0];
}
-
+
public final int getY() {
return y[0];
}
- /**
+ /**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @param index pointer-index within [0 .. {@link #getPointerCount()}-1]
* @return X-Coord associated with the pointer-index.
@@ -376,7 +376,7 @@ public class MouseEvent extends InputEvent
return x[index];
}
- /**
+ /**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @param index pointer-index within [0 .. {@link #getPointerCount()}-1]
* @return Y-Coord associated with the pointer-index.
@@ -385,7 +385,7 @@ public class MouseEvent extends InputEvent
public final int getY(int index) {
return y[index];
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return array of all X-Coords for all pointers
@@ -393,7 +393,7 @@ public class MouseEvent extends InputEvent
public final int[] getAllX() {
return x;
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return array of all Y-Coords for all pointers
@@ -401,9 +401,9 @@ public class MouseEvent extends InputEvent
public final int[] getAllY() {
return y;
}
-
+
/**
- * @param normalized if true, method returns the normalized pressure, i.e. <code>pressure / maxPressure</code>
+ * @param normalized if true, method returns the normalized pressure, i.e. <code>pressure / maxPressure</code>
* @return The pressure associated with the pointer-index 0.
* The value of zero is return if not available.
* @see #getMaxPressure()
@@ -411,11 +411,11 @@ public class MouseEvent extends InputEvent
public final float getPressure(boolean normalized){
return normalized ? pressure[0] / maxPressure : pressure[0];
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @param index pointer-index within [0 .. {@link #getPointerCount()}-1]
- * @param normalized if true, method returns the normalized pressure, i.e. <code>pressure / maxPressure</code>
+ * @param normalized if true, method returns the normalized pressure, i.e. <code>pressure / maxPressure</code>
* @return The pressure associated with the pointer-index.
* The value of zero is return if not available.
* @see #getMaxPressure()
@@ -423,7 +423,7 @@ public class MouseEvent extends InputEvent
public final float getPressure(int index, boolean normalized){
return normalized ? pressure[index] / maxPressure : pressure[index];
}
-
+
/**
* See details for <a href="#multiPtrEvent">multiple-pointer events</a>.
* @return array of all raw, un-normalized pressures for all pointers
@@ -431,12 +431,12 @@ public class MouseEvent extends InputEvent
public final float[] getAllPressures() {
return pressure;
}
-
- /**
+
+ /**
* Returns the maximum pressure known for the input device generating this event.
* <p>
* This value may be self calibrating on devices/OS, where no known maximum pressure is known.
- * Hence subsequent events may return a higher value.
+ * Hence subsequent events may return a higher value.
* </p>
* <p>
* Self calibrating maximum pressure is performed on:
@@ -448,25 +448,25 @@ public class MouseEvent extends InputEvent
public final float getMaxPressure() {
return maxPressure;
}
-
+
/**
* Returns a 3-component float array filled with the values of the rotational axis
* in the following order: horizontal-, vertical- and z-axis.
- * <p>
+ * <p>
* A vertical rotation of <b>&gt; 0.0f is up</b> and <b>&lt; 0.0f is down</b>.
* </p>
* <p>
- * A horizontal rotation of <b>&gt; 0.0f is left</b> and <b>&lt; 0.0f is right</b>.
+ * A horizontal rotation of <b>&gt; 0.0f is left</b> and <b>&lt; 0.0f is right</b>.
* </p>
* <p>
- * A z-axis rotation of <b>&gt; 0.0f is back</b> and <b>&lt; 0.0f is front</b>.
+ * A z-axis rotation of <b>&gt; 0.0f is back</b> and <b>&lt; 0.0f is front</b>.
* </p>
* <p>
* <i>However</i>, on some OS this might be flipped due to the OS <i>default</i> behavior.
* The latter is true for OS X 10.7 (Lion) for example.
* </p>
* <p>
- * On PointerClass {@link PointerClass#Onscreen onscreen} devices, i.e. {@link PointerType#TouchScreen touch screens},
+ * On PointerClass {@link PointerClass#Onscreen onscreen} devices, i.e. {@link PointerType#TouchScreen touch screens},
* rotation events are usually produced by a 2-finger movement, where horizontal and vertical rotation values are filled.
* </p>
* <p>
@@ -475,13 +475,13 @@ public class MouseEvent extends InputEvent
* </p>
* <p>
* The {@link InputEvent#SHIFT_MASK} modifier is set in case <b>|horizontal| &gt; |vertical|</b> value.<br/>
- * This can be utilized to implement only one 2d rotation direction, you may use {@link #isShiftDown()} to query it.
+ * This can be utilized to implement only one 2d rotation direction, you may use {@link #isShiftDown()} to query it.
* </p>
* <p>
* In case the pointer type is {@link PointerType#Mouse mouse},
* events are usually send in steps of one, ie. <i>-1.0f</i> and <i>1.0f</i>.
* Higher values may result due to fast scrolling.
- * Fractional values may result due to slow scrolling with high resolution devices.<br/>
+ * Fractional values may result due to slow scrolling with high resolution devices.<br/>
* Here the button number refers to the wheel number.
* </p>
* <p>
@@ -492,28 +492,30 @@ public class MouseEvent extends InputEvent
public final float[] getRotation() {
return rotationXYZ;
}
-
- /**
+
+ /**
* Returns the scale used to determine the {@link #getRotation() rotation value},
* which semantics depends on the {@link #getPointerType() pointer type's} {@link PointerClass}.
* <p>
* For {@link PointerClass#Offscreen}, the scale is usually <code>1.0f</code> and denominates
* an abstract value without association to a physical value.
- * </p>
+ * </p>
* <p>
* For {@link PointerClass#Onscreen}, the scale varies and denominates
- * the divisor of the distance the finger[s] have moved on the screen.
- * Hence <code>scale * rotation</code> reproduces the screen distance in pixels the finger[s] have moved.
- * </p>
+ * the divisor of the distance the finger[s] have moved on the screen.
+ * Hence <code>scale * rotation</code> reproduces the screen distance in pixels the finger[s] have moved.
+ * </p>
*/
public final float getRotationScale() {
return rotationScale;
}
-
+
+ @Override
public final String toString() {
return toString(null).toString();
}
+ @Override
public final StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
@@ -533,7 +535,7 @@ public class MouseEvent extends InputEvent
.append("p[").append(pressure[i]).append("/").append(maxPressure).append("=").append(pressure[i]/maxPressure).append("]");
}
sb.append("]");
- }
+ }
sb.append(", ");
return super.toString(sb).append("]");
}
@@ -551,14 +553,14 @@ public class MouseEvent extends InputEvent
default: return "unknown (" + type + ")";
}
}
-
+
/** PointerType for each pointer (multiple pointer) */
private final PointerType pointerType[];
- /**
+ /**
* Pointer-ID for each pointer (multiple pointer). IDs start w/ 0 and are consecutive numbers.
- * <p>
+ * <p>
* A pointer-ID of -1 may also denote no pointer/button activity, i.e. {@link PointerType#Mouse} move.
- * </p>
+ * </p>
*/
private final short pointerID[];
/** X-axis for each pointer (multiple pointer) */
@@ -581,11 +583,11 @@ public class MouseEvent extends InputEvent
/** Rotation scale */
private final float rotationScale;
private final float maxPressure;
-
+
private static final float[] constMousePressure0 = new float[]{0f};
private static final float[] constMousePressure1 = new float[]{1f};
private static final PointerType[] constMousePointerTypes = new PointerType[] { PointerType.Mouse };
-
+
public static final short EVENT_MOUSE_CLICKED = 200;
public static final short EVENT_MOUSE_ENTERED = 201;
public static final short EVENT_MOUSE_EXITED = 202;
diff --git a/src/newt/classes/com/jogamp/newt/event/MouseListener.java b/src/newt/classes/com/jogamp/newt/event/MouseListener.java
index ce6796081..5378080b9 100644
--- a/src/newt/classes/com/jogamp/newt/event/MouseListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/MouseListener.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -38,7 +38,7 @@ import com.jogamp.newt.event.MouseEvent.PointerType;
/**
* Listener for {@link MouseEvent}s.
- *
+ *
* @see MouseEvent
*/
public interface MouseListener extends NEWTEventListener
@@ -50,13 +50,13 @@ public interface MouseListener extends NEWTEventListener
public void mouseReleased(MouseEvent e);
public void mouseMoved(MouseEvent e);
public void mouseDragged(MouseEvent e);
-
+
/**
* Traditional event name originally produced by a {@link PointerType#Mouse mouse} pointer type.
* <p>
* Triggered for any rotational pointer events, see
- * {@link MouseEvent#getRotation()} and {@link MouseEvent#getRotationScale()}.
- * </p>
+ * {@link MouseEvent#getRotation()} and {@link MouseEvent#getRotationScale()}.
+ * </p>
*/
public void mouseWheelMoved(MouseEvent e);
}
diff --git a/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java b/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
index 02bb4f929..af800e61e 100644
--- a/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -50,7 +50,7 @@ package com.jogamp.newt.event;
*/
@SuppressWarnings("serial")
public class NEWTEvent extends java.util.EventObject {
- /**
+ /**
* See {@link #setConsumed(boolean)} for description.
*/
public static final Object consumedTag = new Object();
@@ -78,11 +78,11 @@ public class NEWTEvent extends java.util.EventObject {
return when;
}
- /**
+ /**
* Attach the passed object to this event.<br>
* If an object was previously attached, it will be replaced.<br>
* Attachments to NEWT events allow users to pass on information
- * from one custom listener to another, ie custom listener to listener
+ * from one custom listener to another, ie custom listener to listener
* communication.
* @param attachment User application specific object
*/
@@ -90,14 +90,14 @@ public class NEWTEvent extends java.util.EventObject {
this.attachment = attachment;
}
- /**
+ /**
* @return The user application specific attachment, or null
*/
public final Object getAttachment() {
return attachment;
}
-
- /**
+
+ /**
* Returns <code>true</code> if this events has been {@link #setConsumed(boolean) consumed},
* otherwise <code>false</code>.
* @see #setConsumed(boolean)
@@ -105,8 +105,8 @@ public class NEWTEvent extends java.util.EventObject {
public final boolean isConsumed() {
return consumedTag == attachment;
}
-
- /**
+
+ /**
* If <code>consumed</code> is <code>true</code>, this event is marked as consumed,
* ie. the event will not be propagated any further to potential <i>other</i> event listener.
* Otherwise the event will be propagated to other event listener, the default.
@@ -130,7 +130,8 @@ public class NEWTEvent extends java.util.EventObject {
setAttachment( null );
}
}
-
+
+ @Override
public String toString() {
return toString(null).toString();
}
diff --git a/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java b/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java
index 6aa19e5f8..14fba6742 100644
--- a/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,18 +20,18 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public interface NEWTEventConsumer {
- /**
- * Consume the event
+ /**
+ * Consume the event
*
* @return true if the event has been consumed,
* otherwise it returns false for later propagation.
diff --git a/src/newt/classes/com/jogamp/newt/event/NEWTEventFiFo.java b/src/newt/classes/com/jogamp/newt/event/NEWTEventFiFo.java
index fe224bba6..7dd56ad1e 100644
--- a/src/newt/classes/com/jogamp/newt/event/NEWTEventFiFo.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEventFiFo.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
import java.util.LinkedList;
diff --git a/src/newt/classes/com/jogamp/newt/event/NEWTEventListener.java b/src/newt/classes/com/jogamp/newt/event/NEWTEventListener.java
index 677136573..f7ee3d739 100644
--- a/src/newt/classes/com/jogamp/newt/event/NEWTEventListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEventListener.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
diff --git a/src/newt/classes/com/jogamp/newt/event/OutputEvent.java b/src/newt/classes/com/jogamp/newt/event/OutputEvent.java
index 86fa95877..80c7780f8 100644
--- a/src/newt/classes/com/jogamp/newt/event/OutputEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/OutputEvent.java
@@ -39,7 +39,7 @@ public abstract class OutputEvent extends NEWTEvent
public String toString() {
return toString(null).toString();
}
-
+
public StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
diff --git a/src/newt/classes/com/jogamp/newt/event/PinchToZoomGesture.java b/src/newt/classes/com/jogamp/newt/event/PinchToZoomGesture.java
index eceea053d..b4e1341da 100644
--- a/src/newt/classes/com/jogamp/newt/event/PinchToZoomGesture.java
+++ b/src/newt/classes/com/jogamp/newt/event/PinchToZoomGesture.java
@@ -35,7 +35,7 @@ import jogamp.newt.Debug;
* 2 pointer zoom, a.k.a. <i>pinch to zoom</i>, gesture handler processing {@link MouseEvent}s
* while producing {@link ZoomEvent}s if gesture is completed.
* <p>
- * Zoom value lies within [0..2], with 1 as <i>1:1</i>.
+ * Zoom value lies within [0..2], with 1 as <i>1:1</i>.
* </p>
* <pre>
* - choosing the smallest surface edge (width/height -> x/y)
@@ -44,7 +44,7 @@ import jogamp.newt.Debug;
*/
public class PinchToZoomGesture implements GestureHandler {
public static final boolean DEBUG = Debug.debug("Window.MouseEvent");
-
+
/** A {@link GestureHandler.GestureEvent} denominating zoom. */
@SuppressWarnings("serial")
public static class ZoomEvent extends GestureEvent {
@@ -57,10 +57,10 @@ public class PinchToZoomGesture implements GestureHandler {
}
/** Triggering {@link MouseEvent} */
public final MouseEvent getTrigger() { return pe; }
- /** Zoom value lies within [0..2], with 1 as <i>1:1</i>. */
+ /** Zoom value lies within [0..2], with 1 as <i>1:1</i>. */
public final float getZoom() { return zoom; }
}
-
+
private final NativeSurface surface;
private float zoom;
private int zoomLastEdgeDist;
@@ -68,22 +68,23 @@ public class PinchToZoomGesture implements GestureHandler {
private boolean zoomMode;
private ZoomEvent zoomEvent;
private short[] pIds = new short[] { -1, -1 };
-
+
public PinchToZoomGesture(NativeSurface surface) {
clear(true);
this.surface = surface;
this.zoom = 1f;
}
+ @Override
public String toString() {
return "PinchZoom[1stTouch "+zoomFirstTouch+", in "+isWithinGesture()+", has "+(null!=zoomEvent)+", zoom "+zoom+"]";
}
private int gesturePointers(final MouseEvent e, final int excludeIndex) {
- int j = 0;
+ int j = 0;
for(int i=e.getPointerCount()-1; i>=0; i--) {
if( excludeIndex != i ) {
- final int id = e.getPointerId(i);
+ final int id = e.getPointerId(i);
if( pIds[0] == id || pIds[1] == id ) {
j++;
}
@@ -91,7 +92,7 @@ public class PinchToZoomGesture implements GestureHandler {
}
return j;
}
-
+
@Override
public void clear(boolean clearStarted) {
zoomEvent = null;
@@ -103,31 +104,31 @@ public class PinchToZoomGesture implements GestureHandler {
pIds[1] = -1;
}
}
-
+
@Override
public boolean isWithinGesture() {
return zoomMode;
}
-
+
@Override
public boolean hasGesture() {
return null != zoomEvent;
}
-
+
@Override
public InputEvent getGestureEvent() {
return zoomEvent;
}
-
- /** Zoom value lies within [0..2], with 1 as <i>1:1</i>. */
+
+ /** Zoom value lies within [0..2], with 1 as <i>1:1</i>. */
public final float getZoom() {
return zoom;
}
- /** Set zoom value within [0..2], with 1 as <i>1:1</i>. */
+ /** Set zoom value within [0..2], with 1 as <i>1:1</i>. */
public final void setZoom(float zoom) {
this.zoom=zoom;
}
-
+
@Override
public boolean process(final InputEvent in) {
if( null != zoomEvent || !(in instanceof MouseEvent) ) {
@@ -137,15 +138,15 @@ public class PinchToZoomGesture implements GestureHandler {
if( pe.getPointerType(0).getPointerClass() != MouseEvent.PointerClass.Onscreen ) {
return false;
}
-
+
final int pointerDownCount = pe.getPointerCount();
final int eventType = pe.getEventType();
final boolean useY = surface.getWidth() >= surface.getHeight(); // use smallest dimension
switch ( eventType ) {
case MouseEvent.EVENT_MOUSE_PRESSED: {
if( 1 == pointerDownCount ) {
- pIds[0] = pe.getPointerId(0);
- pIds[1] = -1;
+ pIds[0] = pe.getPointerId(0);
+ pIds[1] = -1;
} else if ( 2 <= pointerDownCount ) { // && 1 == gesturePointers(pe, 0) /* w/o pressed pointer */) {
pIds[0] = pe.getPointerId(0);
pIds[1] = pe.getPointerId(1);
@@ -155,13 +156,13 @@ public class PinchToZoomGesture implements GestureHandler {
System.err.println(this+".pressed: down "+pointerDownCount+", gPtr "+gesturePointers(pe, -1)+", event "+pe);
}
} break;
-
+
case MouseEvent.EVENT_MOUSE_RELEASED: {
final int gPtr = gesturePointers(pe, 0); // w/o lifted pointer
if ( 1 == gPtr ) {
zoomFirstTouch = true;
zoomMode = false;
- } else if( 0 == gPtr ) {
+ } else if( 0 == gPtr ) {
// all lifted
clear(true);
}
@@ -169,7 +170,7 @@ public class PinchToZoomGesture implements GestureHandler {
System.err.println(this+".released: down "+pointerDownCount+", gPtr "+gPtr+", event "+pe);
}
} break;
-
+
case MouseEvent.EVENT_MOUSE_DRAGGED: {
if( 2 <= pointerDownCount ) {
final int gPtr = gesturePointers(pe, -1);
@@ -187,13 +188,13 @@ public class PinchToZoomGesture implements GestureHandler {
zoomMode = true;
} else if( zoomMode ) {
final int d = Math.abs(edge0-edge1);
- final int dd = d - zoomLastEdgeDist;
+ final int dd = d - zoomLastEdgeDist;
final float screenEdge = useY ? surface.getHeight() : surface.getWidth();
final float incr = (float)dd / screenEdge; // [-1..1]
if(DEBUG) {
System.err.println("XXX2: id0 "+pIds[0]+" -> idx0 "+p0Idx+", id1 "+pIds[1]+" -> idx1 "+p1Idx);
System.err.println("XXX3: d "+d+", ld "+zoomLastEdgeDist+", dd "+dd+", screen "+screenEdge+" -> incr "+incr+", zoom "+zoom+" -> "+(zoom+incr));
- }
+ }
zoom += incr;
// clip value
if( 2f < zoom ) {
@@ -211,7 +212,7 @@ public class PinchToZoomGesture implements GestureHandler {
}
}
} break;
-
+
default:
}
return null != zoomEvent;
diff --git a/src/newt/classes/com/jogamp/newt/event/TraceKeyAdapter.java b/src/newt/classes/com/jogamp/newt/event/TraceKeyAdapter.java
index 629dc50d7..bbc170958 100644
--- a/src/newt/classes/com/jogamp/newt/event/TraceKeyAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/TraceKeyAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public class TraceKeyAdapter implements KeyListener {
@@ -40,10 +40,12 @@ public class TraceKeyAdapter implements KeyListener {
this.downstream = downstream;
}
+ @Override
public void keyPressed(KeyEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.keyPressed(e); }
}
+ @Override
public void keyReleased(KeyEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.keyReleased(e); }
diff --git a/src/newt/classes/com/jogamp/newt/event/TraceMouseAdapter.java b/src/newt/classes/com/jogamp/newt/event/TraceMouseAdapter.java
index 14ee633a0..db8376034 100644
--- a/src/newt/classes/com/jogamp/newt/event/TraceMouseAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/TraceMouseAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public class TraceMouseAdapter implements MouseListener {
@@ -40,34 +40,42 @@ public class TraceMouseAdapter implements MouseListener {
this.downstream = downstream;
}
+ @Override
public void mouseClicked(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseClicked(e); }
}
+ @Override
public void mouseEntered(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseEntered(e); }
}
+ @Override
public void mouseExited(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseExited(e); }
}
+ @Override
public void mousePressed(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mousePressed(e); }
}
+ @Override
public void mouseReleased(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseReleased(e); }
}
+ @Override
public void mouseMoved(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseMoved(e); }
}
+ @Override
public void mouseDragged(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseDragged(e); }
}
+ @Override
public void mouseWheelMoved(MouseEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.mouseWheelMoved(e); }
diff --git a/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
index 8542820c4..7b844f059 100644
--- a/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public class TraceWindowAdapter implements WindowListener {
@@ -40,30 +40,37 @@ public class TraceWindowAdapter implements WindowListener {
this.downstream = downstream;
}
+ @Override
public void windowResized(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowResized(e); }
}
+ @Override
public void windowMoved(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowMoved(e); }
}
+ @Override
public void windowDestroyNotify(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowDestroyNotify(e); }
}
+ @Override
public void windowDestroyed(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowDestroyed(e); }
}
+ @Override
public void windowGainedFocus(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowGainedFocus(e); }
}
+ @Override
public void windowLostFocus(WindowEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowLostFocus(e); }
}
+ @Override
public void windowRepaint(WindowUpdateEvent e) {
System.err.println(e);
if(null!=downstream) { downstream.windowRepaint(e); }
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
index b9e487e9b..ccc627444 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,28 +20,35 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
public abstract class WindowAdapter implements WindowListener
{
+ @Override
public void windowResized(WindowEvent e) {
}
+ @Override
public void windowMoved(WindowEvent e) {
}
+ @Override
public void windowDestroyNotify(WindowEvent e) {
}
+ @Override
public void windowDestroyed(WindowEvent e) {
}
+ @Override
public void windowGainedFocus(WindowEvent e) {
}
+ @Override
public void windowLostFocus(WindowEvent e) {
}
+ @Override
public void windowRepaint(WindowUpdateEvent e) {
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowEvent.java b/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
index 24b3b380a..2841fd0f6 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -42,7 +42,7 @@ package com.jogamp.newt.event;
@SuppressWarnings("serial")
public class WindowEvent extends NEWTEvent {
public static final short EVENT_WINDOW_RESIZED = 100;
- public static final short EVENT_WINDOW_MOVED = 101;
+ public static final short EVENT_WINDOW_MOVED = 101;
public static final short EVENT_WINDOW_DESTROY_NOTIFY = 102;
public static final short EVENT_WINDOW_GAINED_FOCUS = 103;
public static final short EVENT_WINDOW_LOST_FOCUS = 104;
@@ -65,11 +65,13 @@ public class WindowEvent extends NEWTEvent {
default: return "unknown (" + type + ")";
}
}
-
+
+ @Override
public String toString() {
return toString(null).toString();
}
+ @Override
public StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowListener.java b/src/newt/classes/com/jogamp/newt/event/WindowListener.java
index dde182510..e097edf23 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowListener.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package com.jogamp.newt.event;
@@ -44,17 +44,17 @@ public interface WindowListener extends NEWTEventListener {
/** Window has been moved. */
public void windowMoved(WindowEvent e);
- /**
+ /**
* Window destruction has been requested.
* <p>
* Depending on the {@link WindowClosingProtocol#getDefaultCloseOperation() default close operation},
* the window maybe destroyed or not.
* </p>
- * In case the window will be destroyed (see above), release of resources is recommended.
+ * In case the window will be destroyed (see above), release of resources is recommended.
**/
public void windowDestroyNotify(WindowEvent e);
- /**
+ /**
* Window has been destroyed.
*/
public void windowDestroyed(WindowEvent e);
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java b/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java
index a0f6e2cb4..9044517b5 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event;
import javax.media.nativewindow.util.Rectangle;
@@ -44,10 +44,12 @@ public class WindowUpdateEvent extends WindowEvent {
return bounds;
}
+ @Override
public String toString() {
return toString(null).toString();
}
+ @Override
public StringBuilder toString(StringBuilder sb) {
if(null == sb) {
sb = new StringBuilder();
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
index 6de2eee45..e3bf18448 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event.awt;
import jogamp.newt.Debug;
@@ -48,10 +48,10 @@ import jogamp.newt.Debug;
* Common:<br>
* <pre>
// your demo/render code
- javax.media.opengl.GLEvenListener demo1 = new javax.media.opengl.GLEvenListener() { ... } ;
+ javax.media.opengl.GLEvenListener demo1 = new javax.media.opengl.GLEvenListener() { ... } ;
// your AWT agnostic NEWT mouse listener code
- com.jogamp.newt.event.MouseListener mouseListener = new com.jogamp.newt.event.MouseAdapter() { ... } ;
+ com.jogamp.newt.event.MouseListener mouseListener = new com.jogamp.newt.event.MouseAdapter() { ... } ;
* </pre> </p>
* <p>
* Default NEWT use case, without using the AWTAdapter:<br>
@@ -96,7 +96,7 @@ import jogamp.newt.Debug;
<br>
new AWTMouseAdapter(mouseListener, glWindow).addTo(comp);<br>
* </pre> </p>
- *
+ *
* Last but not least, the AWTAdapter maybe used as a general AWT event forwarder to NEWT.<br>
*
* <p>
@@ -108,7 +108,7 @@ import jogamp.newt.Debug;
<br>
new AWTMouseAdapter(glWindow).addTo(comp); // forward all AWT events to glWindow, as NEWT events<br>
* </pre> </p>
- *
+ *
* @see #attachTo
*/
public abstract class AWTAdapter implements java.util.EventListener
@@ -118,7 +118,7 @@ public abstract class AWTAdapter implements java.util.EventListener
com.jogamp.newt.event.NEWTEventListener newtListener;
com.jogamp.newt.Window newtWindow;
- /**
+ /**
* Simply wrap aroung a NEWT EventListener, exposed as an AWT EventListener.<br>
* The NEWT EventListener will be called when an event happens.<br>
*/
@@ -130,7 +130,7 @@ public abstract class AWTAdapter implements java.util.EventListener
this.newtWindow = null;
}
- /**
+ /**
* Wrap aroung a NEWT EventListener, exposed as an AWT EventListener,<br>
* where the given NEWT Window impersonates as the event's source.
* The NEWT EventListener will be called when an event happens.<br>
@@ -146,7 +146,7 @@ public abstract class AWTAdapter implements java.util.EventListener
this.newtWindow = newtProxy;
}
- /**
+ /**
* Create a pipeline adapter, AWT EventListener.<br>
* Once attached to an AWT component, it sends the converted AWT events to the NEWT downstream window.<br>
* This is only supported with EDT enabled!
@@ -162,15 +162,15 @@ public abstract class AWTAdapter implements java.util.EventListener
}
}
- public final com.jogamp.newt.Window getNewtWindow() {
- return newtWindow;
+ public final com.jogamp.newt.Window getNewtWindow() {
+ return newtWindow;
}
-
+
public final com.jogamp.newt.event.NEWTEventListener getNewtEventListener() {
- return newtListener;
+ return newtListener;
}
-
- /**
+
+ /**
* Due to the fact that some NEWT {@link com.jogamp.newt.event.NEWTEventListener}
* are mapped to more than one {@link java.util.EventListener},
* this method is for your convenience to use this Adapter as a listener for all types.<br>
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
index bef2e5d0f..f6f11b81f 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,18 +20,18 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event.awt;
import jogamp.newt.awt.event.AWTNewtEventFactory;
/**
- * AWT:
+ * AWT:
* printable: PRESSED (t0), TYPED (t0), RELEASED (t1)
* non-printable: PRESSED (t0), RELEASED (t1)
*/
@@ -49,11 +49,13 @@ public class AWTKeyAdapter extends AWTAdapter implements java.awt.event.KeyListe
super(downstream);
}
+ @Override
public AWTAdapter addTo(java.awt.Component awtComponent) {
awtComponent.addKeyListener(this);
return this;
}
+ @Override
public AWTAdapter removeFrom(java.awt.Component awtComponent) {
awtComponent.removeKeyListener(this);
return this;
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
index 115743a0d..73a02c9fc 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,17 +20,17 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event.awt;
import jogamp.newt.awt.event.AWTNewtEventFactory;
-public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseListener,
+public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseListener,
java.awt.event.MouseMotionListener,
java.awt.event.MouseWheelListener
{
@@ -46,6 +46,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
super(downstream);
}
+ @Override
public AWTAdapter addTo(java.awt.Component awtComponent) {
awtComponent.addMouseListener(this);
awtComponent.addMouseMotionListener(this);
@@ -53,6 +54,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
return this;
}
+ @Override
public AWTAdapter removeFrom(java.awt.Component awtComponent) {
awtComponent.removeMouseListener(this);
awtComponent.removeMouseMotionListener(this);
@@ -60,6 +62,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
return this;
}
+ @Override
public void mouseClicked(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -69,6 +72,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseEntered(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -78,6 +82,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseExited(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -87,6 +92,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mousePressed(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -96,6 +102,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseReleased(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -105,6 +112,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseDragged(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -114,6 +122,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseMoved(java.awt.event.MouseEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
@@ -123,6 +132,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
}
}
+ @Override
public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) {
com.jogamp.newt.event.MouseEvent event = AWTNewtEventFactory.createMouseEvent(e, newtWindow);
if(null!=newtListener) {
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
index e91bb2f82..8a9a2a49f 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,20 +20,20 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package com.jogamp.newt.event.awt;
import java.awt.Dimension;
import jogamp.newt.awt.event.AWTNewtEventFactory;
-public class AWTWindowAdapter
- extends AWTAdapter
+public class AWTWindowAdapter
+ extends AWTAdapter
implements java.awt.event.ComponentListener, java.awt.event.WindowListener, java.awt.event.FocusListener
{
WindowClosingListener windowClosingListener;
@@ -50,6 +50,7 @@ public class AWTWindowAdapter
super(downstream);
}
+ @Override
public AWTAdapter addTo(java.awt.Component awtComponent) {
java.awt.Window win = getWindow(awtComponent);
awtComponent.addComponentListener(this);
@@ -63,17 +64,18 @@ public class AWTWindowAdapter
if(awtComponent instanceof java.awt.Window) {
((java.awt.Window)awtComponent).addWindowListener(this);
}
- return this;
+ return this;
}
-
+
public AWTAdapter removeWindowClosingFrom(java.awt.Component awtComponent) {
java.awt.Window win = getWindow(awtComponent);
if( null != win && null != windowClosingListener ) {
win.removeWindowListener(windowClosingListener);
}
- return this;
+ return this;
}
-
+
+ @Override
public AWTAdapter removeFrom(java.awt.Component awtComponent) {
awtComponent.removeFocusListener(this);
awtComponent.removeComponentListener(this);
@@ -94,6 +96,7 @@ public class AWTWindowAdapter
return null;
}
+ @Override
public void focusGained(java.awt.event.FocusEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(DEBUG_IMPLEMENTATION) {
@@ -106,6 +109,7 @@ public class AWTWindowAdapter
}
}
+ @Override
public void focusLost(java.awt.event.FocusEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(DEBUG_IMPLEMENTATION) {
@@ -118,6 +122,7 @@ public class AWTWindowAdapter
}
}
+ @Override
public void componentResized(java.awt.event.ComponentEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(DEBUG_IMPLEMENTATION) {
@@ -142,6 +147,7 @@ public class AWTWindowAdapter
}
}
+ @Override
public void componentMoved(java.awt.event.ComponentEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(DEBUG_IMPLEMENTATION) {
@@ -154,6 +160,7 @@ public class AWTWindowAdapter
}
}
+ @Override
public void componentShown(java.awt.event.ComponentEvent e) {
final java.awt.Component comp = e.getComponent();
if(DEBUG_IMPLEMENTATION) {
@@ -171,6 +178,7 @@ public class AWTWindowAdapter
}*/
}
+ @Override
public void componentHidden(java.awt.event.ComponentEvent e) {
final java.awt.Component comp = e.getComponent();
if(DEBUG_IMPLEMENTATION) {
@@ -188,6 +196,7 @@ public class AWTWindowAdapter
}*/
}
+ @Override
public void windowActivated(java.awt.event.WindowEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(null!=newtListener) {
@@ -197,10 +206,13 @@ public class AWTWindowAdapter
}
}
+ @Override
public void windowClosed(java.awt.event.WindowEvent e) { }
+ @Override
public void windowClosing(java.awt.event.WindowEvent e) { }
+ @Override
public void windowDeactivated(java.awt.event.WindowEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(null!=newtListener) {
@@ -210,13 +222,17 @@ public class AWTWindowAdapter
}
}
+ @Override
public void windowDeiconified(java.awt.event.WindowEvent e) { }
+ @Override
public void windowIconified(java.awt.event.WindowEvent e) { }
+ @Override
public void windowOpened(java.awt.event.WindowEvent e) { }
class WindowClosingListener implements java.awt.event.WindowListener {
+ @Override
public void windowClosing(java.awt.event.WindowEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(null!=newtListener) {
@@ -225,7 +241,8 @@ public class AWTWindowAdapter
enqueueEvent(true, event);
}
}
- public void windowClosed(java.awt.event.WindowEvent e) {
+ @Override
+ public void windowClosed(java.awt.event.WindowEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(null!=newtListener) {
((com.jogamp.newt.event.WindowListener)newtListener).windowDestroyed(event);
@@ -234,10 +251,15 @@ public class AWTWindowAdapter
}
}
+ @Override
public void windowActivated(java.awt.event.WindowEvent e) { }
+ @Override
public void windowDeactivated(java.awt.event.WindowEvent e) { }
+ @Override
public void windowDeiconified(java.awt.event.WindowEvent e) { }
+ @Override
public void windowIconified(java.awt.event.WindowEvent e) { }
+ @Override
public void windowOpened(java.awt.event.WindowEvent e) { }
}
}
diff --git a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
index cae1a06a2..8c1110ed3 100644
--- a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
+++ b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
@@ -117,6 +117,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
super(null, null, false /* always handle device lifecycle ourselves */);
this.window = (WindowImpl) window;
this.window.setWindowDestroyNotifyAction( new Runnable() {
+ @Override
public void run() {
defaultWindowDestroyNotifyOp();
} } );
@@ -127,7 +128,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
}
@Override
- public void windowResized(WindowEvent e) {
+ public void windowResized(WindowEvent e) {
defaultWindowResizedOp(getWidth(), getHeight());
}
@@ -139,7 +140,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final Object getUpstreamWidget() {
return window;
}
-
+
/**
* Creates a new GLWindow attaching a new Window referencing a
* new default Screen and default Display with the given GLCapabilities.
@@ -218,7 +219,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
@Override
public final CapabilitiesImmutable getChosenCapabilities() {
final GLDrawable _drawable = drawable;
- return null != _drawable ? _drawable.getChosenGLCapabilities() : window.getChosenCapabilities();
+ return null != _drawable ? _drawable.getChosenGLCapabilities() : window.getChosenCapabilities();
}
@Override
@@ -339,7 +340,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final int getY() {
return window.getY();
}
-
+
@Override
public final int getWidth() {
return window.getWidth();
@@ -349,7 +350,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final int getHeight() {
return window.getHeight();
}
-
+
@Override
public final void setPosition(int x, int y) {
window.setPosition(x, y);
@@ -363,7 +364,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final boolean setFullscreen(boolean fullscreen) {
return window.setFullscreen(fullscreen);
}
-
+
@Override
public boolean setFullscreen(List<MonitorDevice> monitors) {
return window.setFullscreen(monitors);
@@ -418,7 +419,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public void setWindowDestroyNotifyAction(Runnable r) {
window.setWindowDestroyNotifyAction(r);
}
-
+
@Override
public final void setVisible(boolean visible) {
window.setVisible(visible);
@@ -450,7 +451,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public void preserveGLStateAtDestroy(boolean value) {
GLWindow.this.preserveGLStateAtDestroy(value);
}
-
+
@Override
public synchronized void destroyActionPreLock() {
// nop
@@ -464,7 +465,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
//Exception e1 = new Exception(msg);
//e1.printStackTrace();
}
-
+
destroyImplInLock();
if(Window.DEBUG_IMPLEMENTATION) {
@@ -493,7 +494,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
} else {
t0 = 0;
}
-
+
if (null == drawable && visible && 0 != window.getWindowHandle() && 0<getWidth()*getHeight()) {
if( ( null != context ) ) {
throw new InternalError("GLWindow.LifecycleHook.setVisiblePost: "+WindowImpl.getThreadName()+" - Null drawable, but valid context - "+GLWindow.this);
@@ -509,7 +510,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
}
drawable = (GLDrawableImpl) factory.createGLDrawable(ns);
drawable.setRealized(true);
-
+
if( !GLWindow.this.pushGLEventListenerState() ) {
context = (GLContextImpl) drawable.createContext(sharedContext);
context.setContextCreationFlags(additionalCtxCreationFlags);
@@ -538,7 +539,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
savedAnimator.resume();
}
}
-
+
@SuppressWarnings("deprecation")
@Override
public void shutdownRenderingAction() {
@@ -549,6 +550,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
anim.stop(); // on anim thread, non-blocking
} else {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ @Override
public Object run() {
if( anim.isAnimating() && null != animThread ) {
try {
@@ -572,12 +574,12 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
//
private GLContext sharedContext = null;
-
+
@Override
protected final RecursiveLock getLock() {
return window.getLock();
}
-
+
/**
* Specifies an {@link javax.media.opengl.GLContext OpenGL context} to share with.<br>
* At native creation, {@link #setVisible(boolean) setVisible(true)},
@@ -619,7 +621,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
setVisible(true);
}
}
-
+
/**
* {@inheritDoc}
* <p>
@@ -643,7 +645,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final void swapBuffers() throws GLException {
defaultSwapBuffers();
}
-
+
//----------------------------------------------------------------------
// NEWTEventConsumer
//
@@ -807,7 +809,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
public final void removeGestureListener(GestureHandler.GestureListener gl) {
window.removeGestureListener(gl);
}
-
+
//----------------------------------------------------------------------
// NativeWindow completion
//
@@ -893,7 +895,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
_forceGL3 = true;
} else if(args[i].equals("-gl4es3")) {
_forceGL4ES3 = true;
- }
+ }
}
}
forceES2 = _forceES2;
@@ -905,7 +907,7 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind
System.err.println("forceES3 "+forceES3);
System.err.println("forceGL3 "+forceGL3);
System.err.println("forceGL4ES3 "+forceGL4ES3);
-
+
System.err.println(VersionUtil.getPlatformInfo());
System.err.println(GlueGenVersion.getInstance());
System.err.println(JoglVersion.getInstance());
diff --git a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
index a2135273b..e63a53524 100644
--- a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
+++ b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -71,9 +71,9 @@ import com.jogamp.newt.util.EDTUtil;
public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
private static final boolean DEBUG = Debug.debug("Window");
private static final boolean isOSX = NativeWindowFactory.TYPE_MACOSX == NativeWindowFactory.getNativeWindowType(false);
-
- private final AbstractGraphicsScreen screen;
-
+
+ private final AbstractGraphicsScreen screen;
+
private WindowClosingMode newtChildCloseOp = WindowClosingMode.DISPOSE_ON_CLOSE;
private volatile Rectangle clientArea;
@@ -82,45 +82,46 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
private volatile boolean newtChildReady = false; // ready if SWTEDTUtil is set and newtChild parented
private volatile boolean postSetSize = false; // pending resize
- /**
- * Creates an instance using {@link #NewtCanvasSWT(Composite, int, Window)}
+ /**
+ * Creates an instance using {@link #NewtCanvasSWT(Composite, int, Window)}
* on the SWT thread.
- *
+ *
* <p>
* Note: The NEWT child {@link Display}'s {@link EDTUtil} is being set to an SWT conform implementation
- * via {@link Display#setEDTUtil(EDTUtil)}.
+ * via {@link Display#setEDTUtil(EDTUtil)}.
* </p>
- *
+ *
* @param parent the SWT composite
- * @param style additional styles to SWT#NO_BACKGROUND
- * @param child optional preassigned {@link #Window}, maybe null
+ * @param style additional styles to SWT#NO_BACKGROUND
+ * @param child optional preassigned {@link #Window}, maybe null
* @return a new instance
*/
public static NewtCanvasSWT create(final Composite parent, final int style, final Window child) {
- final NewtCanvasSWT[] res = new NewtCanvasSWT[] { null };
+ final NewtCanvasSWT[] res = new NewtCanvasSWT[] { null };
parent.getDisplay().syncExec( new Runnable() {
+ @Override
public void run() {
res[0] = new NewtCanvasSWT( parent, style, child);
}
});
return res[0];
}
-
+
/**
* Instantiates a NewtCanvas with a NEWT child.
- *
+ *
* <p>
* Note: The NEWT child {@link Display}'s {@link EDTUtil} is being set to an SWT conform implementation
- * via {@link Display#setEDTUtil(EDTUtil)}.
+ * via {@link Display#setEDTUtil(EDTUtil)}.
* </p>
- *
+ *
* @param parent the SWT composite
- * @param style additional styles to SWT#NO_BACKGROUND
- * @param child optional preassigned {@link #Window}, maybe null
+ * @param style additional styles to SWT#NO_BACKGROUND
+ * @param child optional preassigned {@link #Window}, maybe null
*/
public NewtCanvasSWT(final Composite parent, final int style, Window child) {
super(parent, style | SWT.NO_BACKGROUND);
-
+
SWTAccessor.setRealized(this, true);
clientArea = getClientArea();
@@ -128,7 +129,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
final AbstractGraphicsDevice device = SWTAccessor.getDevice(this);
screen = SWTAccessor.getScreen(device, -1 /* default */);
nativeWindow = null;
-
+
if(null != child) {
setNEWTChild(child);
}
@@ -161,12 +162,12 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
addListener (SWT.Paint, listener);
addListener (SWT.Dispose, listener);
}
-
+
/** assumes nativeWindow == null ! */
protected final boolean validateNative() {
updateSizeCheck();
final Rectangle nClientArea = clientArea;
- if(0 >= nClientArea.width || 0 >= nClientArea.height) {
+ if(0 >= nClientArea.width || 0 >= nClientArea.height) {
return false;
}
screen.getDevice().open();
@@ -177,9 +178,9 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
final boolean visualIDValid = NativeWindowFactory.isNativeVisualIDValidForProcessing(visualID);
if(DEBUG) {
System.err.println("NewtCanvasSWT.validateNative() windowHandle 0x"+Long.toHexString(nativeWindowHandle)+", visualID 0x"+Integer.toHexString(visualID)+", valid "+visualIDValid);
- }
+ }
if( visualIDValid ) {
- /* Get the nativewindow-Graphics Device associated with this control (which is determined by the parent Composite).
+ /* Get the nativewindow-Graphics Device associated with this control (which is determined by the parent Composite).
* Note: SWT is owner of the native handle, hence no closing operation will be a NOP. */
final CapabilitiesImmutable caps = new Capabilities();
final GraphicsConfigurationFactory factory = GraphicsConfigurationFactory.getFactory(screen.getDevice(), caps);
@@ -187,7 +188,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
if(DEBUG) {
System.err.println("NewtCanvasSWT.validateNative() factory: "+factory+", windowHandle 0x"+Long.toHexString(nativeWindowHandle)+", visualID 0x"+Integer.toHexString(visualID)+", chosen config: "+config);
// Thread.dumpStack();
- }
+ }
if (null == config) {
throw new NativeWindowException("Error choosing GraphicsConfiguration creating window: "+this);
}
@@ -198,11 +199,11 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
return null != nativeWindow;
}
-
+
protected final void updateSizeCheck() {
final Rectangle oClientArea = clientArea;
final Rectangle nClientArea = getClientArea();
- if ( nClientArea != null &&
+ if ( nClientArea != null &&
( nClientArea.width != oClientArea.width || nClientArea.height != oClientArea.height )
) {
clientArea = nClientArea; // write back new value
@@ -217,12 +218,12 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
}
}
}
-
+
@Override
public void update() {
// don't paint background etc .. nop avoids flickering
}
-
+
/**
* Destroys this resource:
* <ul>
@@ -248,44 +249,46 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
}
screen.getDevice().close();
nativeWindow = null;
- super.dispose();
+ super.dispose();
}
-
+
/** @return this SWT Canvas NativeWindow representation, may be null in case it has not been realized. */
public NativeWindow getNativeWindow() { return nativeWindow; }
-
+
+ @Override
public WindowClosingMode getDefaultCloseOperation() {
return newtChildCloseOp; // TODO: implement ?!
}
+ @Override
public WindowClosingMode setDefaultCloseOperation(WindowClosingMode op) {
return newtChildCloseOp = op; // TODO: implement ?!
}
boolean isParent() {
- return null!=newtChild ;
+ return null!=newtChild ;
}
boolean isFullscreen() {
return null != newtChild && newtChild.isFullscreen();
}
- /**
+ /**
* Sets a new NEWT child, provoking reparenting.
* <p>
* A previously detached <code>newChild</code> will be released to top-level status
- * and made invisible.
+ * and made invisible.
* </p>
* <p>
- * Note: When switching NEWT child's, detaching the previous first via <code>setNEWTChild(null)</code>
- * produced much cleaner visual results.
+ * Note: When switching NEWT child's, detaching the previous first via <code>setNEWTChild(null)</code>
+ * produced much cleaner visual results.
* </p>
* <p>
* Note: The NEWT child {@link Display}'s {@link EDTUtil} is being set to an SWT conform implementation
- * via {@link Display#setEDTUtil(EDTUtil)}.
+ * via {@link Display#setEDTUtil(EDTUtil)}.
* </p>
- * @return the previous attached newt child.
+ * @return the previous attached newt child.
*/
public Window setNEWTChild(final Window newChild) {
final Window prevChild = newtChild;
@@ -302,14 +305,14 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
if(null != nativeWindow && null != newChild) {
reparentWindow( true );
}
- return prevChild;
+ return prevChild;
}
-
+
/** @return the current NEWT child */
public Window getNEWTChild() {
return newtChild;
}
-
+
@Override
public boolean setParent(Composite parent) {
return super.setParent(parent);
@@ -319,11 +322,11 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
newtChildReady = attach;
if( null != newtChild ) {
newtChild.setKeyboardFocusHandler(null);
- if(attach) {
- newtChildCloseOp = newtChild.setDefaultCloseOperation(WindowClosingMode.DO_NOTHING_ON_CLOSE);
+ if(attach) {
+ newtChildCloseOp = newtChild.setDefaultCloseOperation(WindowClosingMode.DO_NOTHING_ON_CLOSE);
} else {
newtChild.setFocusAction(null);
- newtChild.setDefaultCloseOperation(newtChildCloseOp);
+ newtChild.setDefaultCloseOperation(newtChildCloseOp);
}
}
}
@@ -335,13 +338,13 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
if(DEBUG) {
System.err.println("NewtCanvasSWT.reparentWindow.0: add="+add+", win "+newtWinHandleToHexString(newtChild)+", EDTUtil: cur "+newtChild.getScreen().getDisplay().getEDTUtil());
}
-
+
newtChild.setFocusAction(null); // no AWT focus traversal ..
if(add) {
updateSizeCheck();
final int w = clientArea.width;
final int h = clientArea.height;
-
+
// set SWT EDT and start it
{
final Display newtDisplay = newtChild.getScreen().getDisplay();
@@ -349,14 +352,14 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
edtUtil.start();
newtDisplay.setEDTUtil( edtUtil );
}
-
- newtChild.setSize(w, h);
+
+ newtChild.setSize(w, h);
newtChild.reparentWindow(nativeWindow);
newtChild.setVisible(true);
- configureNewtChild(true);
+ configureNewtChild(true);
newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener
-
- // force this SWT Canvas to be focus-able,
+
+ // force this SWT Canvas to be focus-able,
// since it is completely covered by the newtChild (z-order).
setEnabled(true);
} else {
@@ -375,19 +378,19 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
newtChild.requestFocus();
}
}
-
+
@Override
public boolean forceFocus() {
final boolean res = NewtCanvasSWT.super.forceFocus();
requestFocusNEWTChild();
- return res;
+ return res;
}
-
+
private class SWTNativeWindow implements NativeWindow {
private final AbstractGraphicsConfiguration config;
private final long nativeWindowHandle;
private final InsetsImmutable insets; // only required to allow proper client position calculation on OSX
-
+
public SWTNativeWindow(AbstractGraphicsConfiguration config, long nativeWindowHandle) {
this.config = config;
this.nativeWindowHandle = nativeWindowHandle;
@@ -397,7 +400,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
this.insets = new Insets(0, 0, 0, 0);
}
}
-
+
@Override
public int lockSurface() throws NativeWindowException, RuntimeException {
return NativeSurface.LOCK_SUCCESS;
@@ -432,7 +435,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
public void removeSurfaceUpdatedListener(SurfaceUpdatedListener l) { }
@Override
- public long getSurfaceHandle() {
+ public long getSurfaceHandle() {
return 0;
}
@@ -462,7 +465,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
}
@Override
- public void surfaceUpdated(Object updater, NativeSurface ns, long when) { }
+ public void surfaceUpdated(Object updater, NativeSurface ns, long when) { }
@Override
public void destroy() { }
@@ -497,7 +500,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
if( isOSX ) {
final Point los = OSXUtil.GetLocationOnScreen(nativeWindowHandle, false, 0, 0);
// top-level position -> client window position
- los.set(los.getX() + insets.getLeftWidth(), los.getY() + insets.getTopHeight());
+ los.set(los.getX() + insets.getLeftWidth(), los.getY() + insets.getTopHeight());
if(null!=point) {
return point.translate(los);
} else {
@@ -506,7 +509,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
} else {
// client position on 'normal' windowing systems is 0/0
if(null == point) {
- point = new Point(0, 0);
+ point = new Point(0, 0);
}
return point;
}
@@ -515,7 +518,7 @@ public class NewtCanvasSWT extends Canvas implements WindowClosingProtocol {
@Override
public boolean hasFocus() {
return isFocusControl();
- }
+ }
};
static String newtWinHandleToHexString(Window w) {
diff --git a/src/newt/classes/com/jogamp/newt/util/EDTUtil.java b/src/newt/classes/com/jogamp/newt/util/EDTUtil.java
index 52ca95682..582dc3e1f 100644
--- a/src/newt/classes/com/jogamp/newt/util/EDTUtil.java
+++ b/src/newt/classes/com/jogamp/newt/util/EDTUtil.java
@@ -63,17 +63,17 @@ public interface EDTUtil {
* @param ms poll period in milliseconds
*/
public void setPollPeriod(long ms);
-
+
/**
* Starts the EDT after it's creation or after {@link #invokeStop(boolean, Runnable) stopping}.
* <p>
* If the EDT is running, it must be {@link #invokeStop(boolean, Runnable) stopped} first
* and the caller should wait {@link #waitUntilStopped() until it's stopped}.
* </p>
- *
+ *
* @return true if EDT has been successfully restarted, otherwise false
* @throws IllegalStateException if EDT is running and not subject to be stopped, i.e. {@link #isRunning()} returns true
- *
+ *
* @see #invokeStop(boolean, java.lang.Runnable)
* @see #waitUntilStopped()
*/
@@ -82,11 +82,11 @@ public interface EDTUtil {
/**
* Returns true if the current thread is the event dispatch thread (EDT).
* <p>
- * The EDT is the platform specific thread dispatching toolkit-events
+ * The EDT is the platform specific thread dispatching toolkit-events
* and executing toolkit-tasks enqueued via {@link #invoke(boolean, Runnable)}.
* </p>
* <p>
- * Usually it is the same thread as used to dequeue informal {@link NEWTEvent}s (NEDT), see {@link #isCurrentThreadNEDT()},
+ * Usually it is the same thread as used to dequeue informal {@link NEWTEvent}s (NEDT), see {@link #isCurrentThreadNEDT()},
* however, this may differ, e.g. SWT and AWT implementation.
* </p>
*/
@@ -95,28 +95,28 @@ public interface EDTUtil {
/**
* Returns true if the current thread is the internal NEWT event dequeue thread (NEDT).
* <p>
- * The NEDT is the NEWT thread used to dequeue informal {@link NEWTEvent}s enqueued internally
+ * The NEDT is the NEWT thread used to dequeue informal {@link NEWTEvent}s enqueued internally
* via {@link DisplayImpl#enqueueEvent(boolean, NEWTEvent)}.
* </p>
* <p>
- * Usually it is the same thread as the EDT, see {@link #isCurrentThreadEDT()},
+ * Usually it is the same thread as the EDT, see {@link #isCurrentThreadEDT()},
* however, this may differ, e.g. SWT and AWT implementation.
* </p>
*/
public boolean isCurrentThreadNEDT();
-
+
/**
* Returns <code>true</code> if either {@link #isCurrentThreadEDT()} or {@link #isCurrentThreadNEDT()} is <code>true</code>,
* otherwise <code>false</code>.
*/
public boolean isCurrentThreadEDTorNEDT();
-
+
/**
* @return True if EDT is running and not subject to be stopped.
*/
public boolean isRunning();
- /**
+ /**
* Append the final task to the EDT task queue,
* signals EDT to stop.
* <p>
@@ -133,22 +133,22 @@ public interface EDTUtil {
* <li>{@link #start()} may follow immediately, ie creating a new EDT</li>
* </ul>
* </p>
- * @return true if <code>task</code> has been executed or queued for later execution, otherwise false
+ * @return true if <code>task</code> has been executed or queued for later execution, otherwise false
*/
public boolean invokeStop(boolean wait, Runnable finalTask);
- /**
+ /**
* Appends task to the EDT task queue if current thread is not EDT,
- * otherwise execute task immediately.
+ * otherwise execute task immediately.
* <p>
* Wait until execution is finished if <code>wait == true</code>.
* </p>
* Can be issued from within EDT, ie from within an enqueued task.<br>
- * @return true if <code>task</code> has been executed or queued for later execution, otherwise false
+ * @return true if <code>task</code> has been executed or queued for later execution, otherwise false
*/
public boolean invoke(boolean wait, Runnable task);
- /**
+ /**
* Wait until the EDT task queue is empty.<br>
* The last task may still be in execution when this method returns.
* @return true if waited for idle, otherwise false, i.e. in case of current thread is EDT or NEDT
diff --git a/src/newt/classes/com/jogamp/newt/util/MainThread.java b/src/newt/classes/com/jogamp/newt/util/MainThread.java
index 5e79e9b49..049320b21 100644
--- a/src/newt/classes/com/jogamp/newt/util/MainThread.java
+++ b/src/newt/classes/com/jogamp/newt/util/MainThread.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
* You acknowledge that this software is not designed or intended for use
* in the design, construction, operation or maintenance of any nuclear
* facility.
@@ -54,13 +54,13 @@ import jogamp.newt.NEWTJNILibLoader;
* NEWT Utility class MainThread<P>
*
* <p>
- * FIXME: Update this documentation!
+ * FIXME: Update this documentation!
* This class just provides a main-thread utility, forking of a main java class
* on another thread while being able to continue doing platform specific things
* on the main-thread. The latter is essential for eg. MacOSX, where we continue
* to run NSApp.run().
* </p>
- *
+ *
* This class provides a startup singleton <i>main thread</i>,
* from which a new thread with the users main class is launched.<br>
*
@@ -72,17 +72,17 @@ import jogamp.newt.NEWTJNILibLoader;
* use a NEWT multithreaded application with window handling within the different threads,
* even on these restricted platforms.<br>
*
- * To support your NEWT Window platform,
+ * To support your NEWT Window platform,
* you have to pass your <i>main thread</i> actions to {@link #invoke invoke(..)},
* have a look at the {@link jogamp.newt.driver.macosx.WindowDriver NEWT Mac OSX Window} driver implementation.<br>
- * <i>TODO</i>: Some hardcoded dependencies exist in this implementation,
+ * <i>TODO</i>: Some hardcoded dependencies exist in this implementation,
* where you have to patch this code or factor it out. <P>
- *
+ *
* If your platform is not Mac OS X, but you want to test your code without modifying
* this class, you have to set the system property <code>newt.MainThread.force</code> to <code>true</code>.<P>
*
* The code is compatible with all other platform, which support multithreaded windowing handling.
- * Since those platforms won't trigger the <i>main thread</i> serialization, the main method
+ * Since those platforms won't trigger the <i>main thread</i> serialization, the main method
* will be simply executed, in case you haven't set <code>newt.MainThread.force</code> to <code>true</code>.<P>
*
* Test case on Mac OS X (or any other platform):
@@ -96,35 +96,35 @@ public class MainThread {
private static final Platform.OSType osType;
private static final boolean isMacOSX;
private static final ThreadGroup rootThreadGroup;
-
+
/** if true, use the main thread EDT, otherwise AWT's EDT */
public static final boolean HINT_USE_MAIN_THREAD;
-
+
static {
NativeWindowFactory.initSingleton();
NEWTJNILibLoader.loadNEWT();
- HINT_USE_MAIN_THREAD = !NativeWindowFactory.isAWTAvailable() ||
+ HINT_USE_MAIN_THREAD = !NativeWindowFactory.isAWTAvailable() ||
Debug.getBooleanProperty("newt.MainThread.force", true);
osType = Platform.getOSType();
isMacOSX = osType == Platform.OSType.MACOS;
rootThreadGroup = getRootThreadGroup();
}
-
+
public static boolean useMainThread = false;
-
+
protected static final boolean DEBUG = Debug.debug("MainThread");
private static final MainThread singletonMainThread = new MainThread(); // one singleton MainThread
-
+
private static final ThreadGroup getRootThreadGroup() {
ThreadGroup rootGroup = Thread.currentThread( ).getThreadGroup( );
ThreadGroup parentGroup;
while ( ( parentGroup = rootGroup.getParent() ) != null ) {
rootGroup = parentGroup;
}
- return rootGroup;
+ return rootGroup;
}
-
+
private static final Thread[] getAllThreads(int[] count) {
int tn;
Thread[] threads = new Thread[ rootThreadGroup.activeCount() ];
@@ -149,17 +149,17 @@ public class MainThread {
t.printStackTrace();
}
}
- return res;
+ return res;
}
private static final int getNonDaemonThreadCount(List<Thread> ignoreThreads) {
int res = 0;
int[] tn = { 0 };
Thread[] threads = getAllThreads(tn);
-
+
for(int i = tn[0] - 1; i >= 0; i--) {
final Thread thread = threads[i];
try {
- if(thread.isAlive() && !thread.isDaemon() && !ignoreThreads.contains(thread)) {
+ if(thread.isAlive() && !thread.isDaemon() && !ignoreThreads.contains(thread)) {
res++;
if(DEBUG) System.err.println("MainAction.run(): non daemon thread: "+thread);
}
@@ -167,9 +167,9 @@ public class MainThread {
t.printStackTrace();
}
}
- return res;
+ return res;
}
-
+
static class UserApp extends Thread {
private final String mainClassNameShort;
private final String mainClassName;
@@ -181,7 +181,7 @@ public class MainThread {
super();
this.mainClassName=mainClassName;
this.mainClassArgs=mainClassArgs;
-
+
final Class<?> mainClass = ReflectionUtil.getClass(mainClassName, true, getClass().getClassLoader());
if(null==mainClass) {
throw new ClassNotFoundException("MainAction couldn't find main class "+mainClassName);
@@ -192,7 +192,7 @@ public class MainThread {
setName(getName()+"-UserApp-"+mainClassNameShort);
setDaemon(false);
-
+
if(DEBUG) System.err.println("MainAction(): instantiated: "+getName()+", is daemon "+isDaemon()+", main-class: "+mainClass.getName());
}
@@ -230,32 +230,32 @@ public class MainThread {
if(isMacOSX) {
try {
if(DEBUG) {
- System.err.println("MainAction.main(): "+Thread.currentThread()+" MainAction fin - stopNSApp.0");
+ System.err.println("MainAction.main(): "+Thread.currentThread()+" MainAction fin - stopNSApp.0");
}
- ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "stopNSApplication",
+ ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "stopNSApplication",
null, null, MainThread.class.getClassLoader());
if(DEBUG) {
- System.err.println("MainAction.main(): "+Thread.currentThread()+" MainAction fin - stopNSApp.X");
+ System.err.println("MainAction.main(): "+Thread.currentThread()+" MainAction fin - stopNSApp.X");
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
if(DEBUG) System.err.println("MainAction.run(): "+Thread.currentThread().getName()+" MainAction fin - System.exit(0)");
- System.exit(0);
- }
+ System.exit(0);
+ }
}
}
}
private static UserApp mainAction;
- /** Your new java application main entry, which pipelines your application
- * @throws ClassNotFoundException
- * @throws NoSuchMethodException
+ /** Your new java application main entry, which pipelines your application
+ * @throws ClassNotFoundException
+ * @throws NoSuchMethodException
* @throws SecurityException */
public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException {
final Thread cur = Thread.currentThread();
-
+
useMainThread = HINT_USE_MAIN_THREAD;
if(DEBUG) {
@@ -268,7 +268,7 @@ public class MainThread {
if(!useMainThread && !NativeWindowFactory.isAWTAvailable()) {
throw new RuntimeException("!USE_MAIN_THREAD and no AWT available");
}
-
+
if(args.length==0) {
return;
}
@@ -282,7 +282,7 @@ public class MainThread {
mainAction = new UserApp(mainClassName, mainClassArgs);
if(isMacOSX) {
- ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "initSingleton",
+ ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "initSingleton",
null, null, MainThread.class.getClassLoader());
}
@@ -290,24 +290,24 @@ public class MainThread {
try {
cur.setName(cur.getName()+"-MainThread");
} catch (Exception e) {}
-
+
// dispatch user's main thread ..
mainAction.start();
-
+
if(isMacOSX) {
try {
if(DEBUG) {
- System.err.println("MainThread.main(): "+cur.getName()+"- runNSApp");
+ System.err.println("MainThread.main(): "+cur.getName()+"- runNSApp");
}
- ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "runNSApplication",
+ ReflectionUtil.callStaticMethod(MACOSXDisplayClassName, "runNSApplication",
null, null, MainThread.class.getClassLoader());
} catch (Exception e) {
e.printStackTrace();
}
- }
- if(DEBUG) { System.err.println("MainThread - wait until last non daemon thread ends ..."); }
+ }
+ if(DEBUG) { System.err.println("MainThread - wait until last non daemon thread ends ..."); }
} else {
- // run user's main in this thread
+ // run user's main in this thread
mainAction.run();
}
}
diff --git a/src/newt/classes/com/jogamp/newt/util/MonitorModeUtil.java b/src/newt/classes/com/jogamp/newt/util/MonitorModeUtil.java
index c30b427d6..fdd7985fe 100644
--- a/src/newt/classes/com/jogamp/newt/util/MonitorModeUtil.java
+++ b/src/newt/classes/com/jogamp/newt/util/MonitorModeUtil.java
@@ -42,7 +42,7 @@ import javax.media.nativewindow.util.SurfaceSize;
* filters etc.
*/
public class MonitorModeUtil {
-
+
public static int getIndex(List<MonitorMode> monitorModes, MonitorMode search) {
return monitorModes.indexOf(search);
}
@@ -69,7 +69,7 @@ public class MonitorModeUtil {
}
return null;
}
-
+
/** Sort the given {@link MonitorMode} collection w/ {@link MonitorMode#compareTo(MonitorMode)} function. */
public static void sort(List<MonitorMode> monitorModes, boolean ascendingOrder) {
if( ascendingOrder ) {
@@ -78,9 +78,9 @@ public class MonitorModeUtil {
Collections.sort(monitorModes, MonitorMode.monitorModeComparatorInv);
}
}
-
+
/**
- *
+ *
* @param monitorModes
* @param surfaceSize
* @return modes with exact {@link SurfaceSize}. May return zero sized list for non.
@@ -99,7 +99,7 @@ public class MonitorModeUtil {
}
/**
- *
+ *
* @param monitorModes
* @param rotation
* @return modes with exact rotation. May return zero sized list for non.
@@ -118,7 +118,7 @@ public class MonitorModeUtil {
}
/**
- *
+ *
* @param monitorModes
* @param bitsPerPixel
* @return modes with exact bpp. May return zero sized list for non.
@@ -137,7 +137,7 @@ public class MonitorModeUtil {
}
/**
- *
+ *
* @param monitorModes
* @param flags
* @return modes with exact flags. May return zero sized list for non.
@@ -165,7 +165,7 @@ public class MonitorModeUtil {
if( null!=monitorModes && monitorModes.size()>0 ) {
final int resolution_sq = resolution.getHeight()*resolution.getWidth();
int mode_dsq=Integer.MAX_VALUE, mode_dsq_idx=0;
-
+
for (int i=0; null!=monitorModes && i<monitorModes.size(); i++) {
final MonitorMode mode = monitorModes.get(i);
final DimensionImmutable res = mode.getSurfaceSize().getResolution();
@@ -236,7 +236,7 @@ public class MonitorModeUtil {
}
/**
- *
+ *
* @param monitorModes
* @return modes with highest available refresh rate. May return zero sized list for non.
*/
diff --git a/src/newt/classes/jogamp/newt/Debug.java b/src/newt/classes/jogamp/newt/Debug.java
index 4b0a98216..7ef2d7ffc 100644
--- a/src/newt/classes/jogamp/newt/Debug.java
+++ b/src/newt/classes/jogamp/newt/Debug.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,11 +29,11 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
* You acknowledge that this software is not designed or intended for use
* in the design, construction, operation or maintenance of any nuclear
* facility.
- *
+ *
* Sun gratefully acknowledges that this software was originally authored
* and developed by Kenneth Bradley Russell and Christopher John Kline.
*/
@@ -51,14 +51,15 @@ public class Debug extends PropertyAccess {
// Some common properties
private static final boolean verbose;
private static final boolean debugAll;
-
+
static {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ @Override
public Object run() {
PropertyAccess.addTrustedPrefix("newt.");
return null;
} } );
-
+
verbose = isPropertyDefined("newt.verbose", true);
debugAll = isPropertyDefined("newt.debug", true);
if (verbose) {
diff --git a/src/newt/classes/jogamp/newt/DefaultEDTUtil.java b/src/newt/classes/jogamp/newt/DefaultEDTUtil.java
index 3d1037ad5..f33b4744e 100644
--- a/src/newt/classes/jogamp/newt/DefaultEDTUtil.java
+++ b/src/newt/classes/jogamp/newt/DefaultEDTUtil.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
* You acknowledge that this software is not designed or intended for use
* in the design, construction, operation or maintenance of any nuclear
* facility.
@@ -51,7 +51,7 @@ public class DefaultEDTUtil implements EDTUtil {
public static final boolean DEBUG = Debug.debug("EDT");
private final Object edtLock = new Object(); // locking the EDT start/stop state
- private /* final */ ThreadGroup threadGroup;
+ private /* final */ ThreadGroup threadGroup;
private final String name;
private final Runnable dispatchMessages;
private NEDT edt = null;
@@ -75,7 +75,7 @@ public class DefaultEDTUtil implements EDTUtil {
final public void setPollPeriod(long ms) {
pollPeriod = ms;
}
-
+
@Override
public final boolean start() throws IllegalStateException {
synchronized(edtLock) {
@@ -117,7 +117,7 @@ public class DefaultEDTUtil implements EDTUtil {
public final boolean isCurrentThreadEDT() {
return edt == Thread.currentThread(); // EDT == NEDT
}
-
+
@Override
public final boolean isCurrentThreadNEDT() {
return edt == Thread.currentThread(); // EDT == NEDT
@@ -126,8 +126,8 @@ public class DefaultEDTUtil implements EDTUtil {
@Override
public final boolean isCurrentThreadEDTorNEDT() {
return edt == Thread.currentThread(); // EDT == NEDT
- }
-
+ }
+
@Override
public final boolean isRunning() {
return edt.isRunning() ;
@@ -149,9 +149,9 @@ public class DefaultEDTUtil implements EDTUtil {
private static Runnable nullTask = new Runnable() {
@Override
- public void run() { }
+ public void run() { }
};
-
+
private final boolean invokeImpl(boolean wait, Runnable task, boolean stop) {
Throwable throwable = null;
RunnableTask rTask = null;
@@ -201,7 +201,7 @@ public class DefaultEDTUtil implements EDTUtil {
synchronized(edt.tasks) {
rTask = new RunnableTask(task,
wait ? rTaskLock : null,
- true /* always catch and report Exceptions, don't disturb EDT */,
+ true /* always catch and report Exceptions, don't disturb EDT */,
wait ? null : System.err);
if(stop) {
rTask.setAttachment(new Boolean(true)); // mark final task, will imply shouldStop:=true
@@ -305,8 +305,8 @@ public class DefaultEDTUtil implements EDTUtil {
throw new InternalError("XXX");
}
}
-
- /**
+
+ /**
* Utilizing locking only on tasks and its execution,
* not for event dispatching.
*/
@@ -315,7 +315,7 @@ public class DefaultEDTUtil implements EDTUtil {
if(DEBUG) {
System.err.println(getName()+": Default-EDT run() START "+ getName());
}
- if(Lock.DEBUG) {
+ if(Lock.DEBUG) {
validateNoRecursiveLocksHold();
}
RuntimeException error = null;
@@ -368,7 +368,7 @@ public class DefaultEDTUtil implements EDTUtil {
} finally {
if(DEBUG) {
RunnableTask rt = ( tasks.size() > 0 ) ? tasks.get(0) : null ;
- System.err.println(getName()+": Default-EDT run() END "+ getName()+", tasks: "+tasks.size()+", "+rt+", "+error);
+ System.err.println(getName()+": Default-EDT run() END "+ getName()+", tasks: "+tasks.size()+", "+rt+", "+error);
}
synchronized(edtLock) {
isRunning = false;
diff --git a/src/newt/classes/jogamp/newt/DisplayImpl.java b/src/newt/classes/jogamp/newt/DisplayImpl.java
index 0f47c87a0..0c29d772a 100644
--- a/src/newt/classes/jogamp/newt/DisplayImpl.java
+++ b/src/newt/classes/jogamp/newt/DisplayImpl.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt;
@@ -53,6 +53,7 @@ public abstract class DisplayImpl extends Display {
static {
NativeWindowFactory.addCustomShutdownHook(true /* head */, new Runnable() {
+ @Override
public void run() {
WindowImpl.shutdownAll();
ScreenImpl.shutdownAll();
@@ -60,16 +61,16 @@ public abstract class DisplayImpl extends Display {
}
});
}
-
+
/** Ensure static init has been run. */
/* pp */static void initSingleton() { }
-
- private static Class<?> getDisplayClass(String type)
- throws ClassNotFoundException
+
+ private static Class<?> getDisplayClass(String type)
+ throws ClassNotFoundException
{
final Class<?> displayClass = NewtFactory.getCustomClass(type, "DisplayDriver");
if(null==displayClass) {
- throw new ClassNotFoundException("Failed to find NEWT Display Class <"+type+".DisplayDriver>");
+ throw new ClassNotFoundException("Failed to find NEWT Display Class <"+type+".DisplayDriver>");
}
return displayClass;
}
@@ -100,7 +101,7 @@ public abstract class DisplayImpl extends Display {
display.setEDTUtil( display.edtUtil ); // device's default if EDT is used, or null
Display.addDisplay2List(display);
}
-
+
if(DEBUG) {
System.err.println("Display.create() NEW: "+display+" "+getThreadName());
}
@@ -109,7 +110,7 @@ public abstract class DisplayImpl extends Display {
throw new RuntimeException(e);
}
}
-
+
@Override
public boolean equals(Object obj) {
if (obj == null) {
@@ -147,6 +148,7 @@ public abstract class DisplayImpl extends Display {
final DisplayImpl f_dpy = this;
try {
runOnEDTIfAvail(true, new Runnable() {
+ @Override
public void run() {
f_dpy.createNativeImpl();
}});
@@ -168,7 +170,7 @@ public abstract class DisplayImpl extends Display {
protected EDTUtil createEDTUtil() {
final EDTUtil def;
if(NewtFactory.useEDT()) {
- def = new DefaultEDTUtil(Thread.currentThread().getThreadGroup(), "Display-"+getFQName(), dispatchMessagesRunnable);
+ def = new DefaultEDTUtil(Thread.currentThread().getThreadGroup(), "Display-"+getFQName(), dispatchMessagesRunnable);
if(DEBUG) {
System.err.println("Display.createEDTUtil("+getFQName()+"): "+def.getClass().getName());
}
@@ -244,6 +246,7 @@ public abstract class DisplayImpl extends Display {
task.run();
}
+ @Override
public boolean validateEDTStopped() {
if( 0==refCount && null == aDevice ) {
final EDTUtil _edtUtil = edtUtil;
@@ -271,12 +274,13 @@ public abstract class DisplayImpl extends Display {
if(DEBUG) {
System.err.println("Display.destroy(): "+this+", active "+displaysActive+" "+getThreadName());
}
- }
+ }
final DisplayImpl f_dpy = this;
final AbstractGraphicsDevice f_aDevice = aDevice;
aDevice = null;
refCount=0;
stopEDT( edtUtil, new Runnable() { // blocks!
+ @Override
public void run() {
if ( null != f_aDevice ) {
f_dpy.closeNativeImpl(f_aDevice);
@@ -287,10 +291,10 @@ public abstract class DisplayImpl extends Display {
dumpDisplayList("Display.destroy("+getFQName()+") END");
}
}
-
+
/** May be utilized at a shutdown hook, impl. does not block. */
/* pp */ static final void shutdownAll() {
- final int dCount = displayList.size();
+ final int dCount = displayList.size();
if(DEBUG) {
dumpDisplayList("Display.shutdownAll "+dCount+" instances, on thread "+getThreadName());
}
@@ -306,8 +310,9 @@ public abstract class DisplayImpl extends Display {
final EDTUtil edtUtil = d.getEDTUtil();
final AbstractGraphicsDevice f_aDevice = d.aDevice;
d.aDevice = null;
- d.refCount=0;
+ d.refCount=0;
final Runnable closeNativeTask = new Runnable() {
+ @Override
public void run() {
if ( null != d.getGraphicsDevice() ) {
d.closeNativeImpl(f_aDevice);
@@ -329,6 +334,7 @@ public abstract class DisplayImpl extends Display {
}
}
+ @Override
public synchronized final int addReference() {
if(DEBUG) {
System.err.println("Display.addReference() ("+DisplayImpl.getThreadName()+"): "+refCount+" -> "+(refCount+1));
@@ -343,6 +349,7 @@ public abstract class DisplayImpl extends Display {
}
+ @Override
public synchronized final int removeReference() {
if(DEBUG) {
System.err.println("Display.removeReference() ("+DisplayImpl.getThreadName()+"): "+refCount+" -> "+(refCount-1));
@@ -355,6 +362,7 @@ public abstract class DisplayImpl extends Display {
return refCount;
}
+ @Override
public synchronized final int getReferenceCount() {
return refCount;
}
@@ -381,7 +389,7 @@ public abstract class DisplayImpl extends Display {
public final String getFQName() {
return fqname;
}
-
+
@Override
public final boolean isExclusive() {
return exclusive;
@@ -438,7 +446,7 @@ public abstract class DisplayImpl extends Display {
@Override
public String toString() {
final EDTUtil _edtUtil = edtUtil;
- final boolean _edtUtilRunning = ( null != _edtUtil ) ? _edtUtil.isRunning() : false;
+ final boolean _edtUtilRunning = ( null != _edtUtil ) ? _edtUtil.isRunning() : false;
return "NEWT-Display["+getFQName()+", excl "+exclusive+", refCount "+refCount+", hasEDT "+(null!=_edtUtil)+", edtRunning "+_edtUtilRunning+", "+aDevice+"]";
}
@@ -450,13 +458,14 @@ public abstract class DisplayImpl extends Display {
private volatile boolean haveEvents = false;
final protected Runnable dispatchMessagesRunnable = new Runnable() {
+ @Override
public void run() {
DisplayImpl.this.dispatchMessages();
} };
final void dispatchMessage(final NEWTEvent event) {
- try {
- final Object source = event.getSource();
+ try {
+ final Object source = event.getSource();
if(source instanceof NEWTEventConsumer) {
final NEWTEventConsumer consumer = (NEWTEventConsumer) source ;
if(!consumer.consumeEvent(event)) {
@@ -476,10 +485,10 @@ public abstract class DisplayImpl extends Display {
throw re;
}
}
-
+
final void dispatchMessage(final NEWTEventTask eventTask) {
final NEWTEvent event = eventTask.get();
- try {
+ try {
if(null == event) {
// Ooops ?
System.err.println("Warning: event of eventTask is NULL");
@@ -495,15 +504,15 @@ public abstract class DisplayImpl extends Display {
throw re;
}
}
- eventTask.notifyCaller();
+ eventTask.notifyCaller();
}
-
+
@Override
public void dispatchMessages() {
// System.err.println("Display.dispatchMessages() 0 "+this+" "+getThreadName());
- if(0==refCount || // no screens
+ if(0==refCount || // no screens
null==getGraphicsDevice() // no native device
- )
+ )
{
return;
}
@@ -541,13 +550,13 @@ public abstract class DisplayImpl extends Display {
}
return;
}
-
+
// can't wait if we are on EDT or NEDT -> consume right away
if(wait && _edtUtil.isCurrentThreadEDTorNEDT() ) {
dispatchMessage(e);
return;
}
-
+
final Object lock = new Object();
final NEWTEventTask eTask = new NEWTEventTask(e, wait?lock:null);
synchronized(lock) {
@@ -565,13 +574,13 @@ public abstract class DisplayImpl extends Display {
if( null != eTask.getException() ) {
throw eTask.getException();
}
- }
+ }
}
}
public interface DisplayRunnable<T> {
T run(long dpy);
- }
+ }
public static final <T> T runWithLockedDevice(AbstractGraphicsDevice device, DisplayRunnable<T> action) {
T res;
device.lock();
@@ -589,7 +598,7 @@ public abstract class DisplayImpl extends Display {
}
return runWithLockedDevice(device, action);
}
-
+
protected volatile EDTUtil edtUtil = null;
protected int id;
protected String name;
diff --git a/src/newt/classes/jogamp/newt/MonitorDeviceImpl.java b/src/newt/classes/jogamp/newt/MonitorDeviceImpl.java
index 43d558515..9e10879c4 100644
--- a/src/newt/classes/jogamp/newt/MonitorDeviceImpl.java
+++ b/src/newt/classes/jogamp/newt/MonitorDeviceImpl.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt;
import javax.media.nativewindow.util.DimensionImmutable;
@@ -41,7 +41,7 @@ public class MonitorDeviceImpl extends MonitorDevice {
public MonitorDeviceImpl(ScreenImpl screen, int nativeId, DimensionImmutable sizeMM, Rectangle viewport, MonitorMode currentMode, ArrayHashSet<MonitorMode> supportedModes) {
super(screen, nativeId, sizeMM, viewport, currentMode, supportedModes);
}
-
+
@Override
public final MonitorMode queryCurrentMode() {
final ScreenImpl screenImpl = (ScreenImpl)screen;
@@ -54,7 +54,7 @@ public class MonitorDeviceImpl extends MonitorDevice {
}
MonitorMode mmU = supportedModes.get(mm0); // unified instance
if( null == mmU ) {
- // add new mode avoiding exception!
+ // add new mode avoiding exception!
mmU = sms.getMonitorModes().getOrAdd(mm0);
mmU = supportedModes.getOrAdd(mmU);
if( Screen.DEBUG ) {
@@ -89,21 +89,21 @@ public class MonitorDeviceImpl extends MonitorDevice {
if( mmU.equals( mmC ) ) {
if(Screen.DEBUG) {
System.err.println("Screen.setCurrentMode: 0.0 is-current (skip) "+mmU+" == "+mmC);
- }
+ }
return true;
}
final long tStart;
if(Screen.DEBUG) {
- tStart = System.currentTimeMillis();
+ tStart = System.currentTimeMillis();
} else {
tStart = 0;
}
-
+
sms.fireMonitorModeChangeNotify(this, mmU);
if(Screen.DEBUG) {
System.err.println("Screen.setCurrentMode ("+(System.currentTimeMillis()-tStart)+"ms): fireModeChangeNotify() "+mmU);
}
-
+
boolean success = screenImpl.setCurrentMonitorModeImpl(this, mmU);
if(success) {
if(Screen.DEBUG) {
@@ -135,13 +135,13 @@ public class MonitorDeviceImpl extends MonitorDevice {
private final void setCurrentModeValue(MonitorMode currentMode) {
this.currentMode = currentMode;
}
-
+
/* pp */ final void setViewportValue(Rectangle viewport) {
this.viewport = viewport;
}
-
+
/* pp */ ArrayHashSet<MonitorMode> getSupportedModesImpl() {
return supportedModes;
}
-
+
}
diff --git a/src/newt/classes/jogamp/newt/MonitorModeProps.java b/src/newt/classes/jogamp/newt/MonitorModeProps.java
index 820807e15..9d8f4919c 100644
--- a/src/newt/classes/jogamp/newt/MonitorModeProps.java
+++ b/src/newt/classes/jogamp/newt/MonitorModeProps.java
@@ -54,12 +54,12 @@ public class MonitorModeProps {
* 1: bpp
*/
public static final int NUM_SURFACE_SIZE_PROPERTIES = 1;
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation
* 2: refresh-rate (Hz*100), flags
*/
public static final int NUM_SIZEANDRATE_PROPERTIES = 2;
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation
* 2: id, rotation
*/
@@ -69,7 +69,7 @@ public class MonitorModeProps {
* count + all the above
*/
public static final int NUM_MONITOR_MODE_PROPERTIES_ALL = 8;
-
+
public static final int IDX_MONITOR_MODE_BPP = 1 // count
+ MonitorModeProps.NUM_RESOLUTION_PROPERTIES
;
@@ -79,7 +79,7 @@ public class MonitorModeProps {
+ MonitorModeProps.NUM_SIZEANDRATE_PROPERTIES
+ 1 // id of MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES
;
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation
* 10: count + id, ScreenSizeMM[width, height], rotated Viewport[x, y, width, height], currentMonitorModeId, rotation, supportedModeId+
*/
@@ -89,15 +89,15 @@ public class MonitorModeProps {
+ 1 // native mode
+ MonitorModeProps.NUM_RESOLUTION_PROPERTIES // sizeMM
;
-
+
public static class Cache {
public final ArrayHashSet<DimensionImmutable> resolutions = new ArrayHashSet<DimensionImmutable>();
public final ArrayHashSet<SurfaceSize> surfaceSizes = new ArrayHashSet<SurfaceSize>();
- public final ArrayHashSet<MonitorMode.SizeAndRRate> sizeAndRates = new ArrayHashSet<MonitorMode.SizeAndRRate>();
+ public final ArrayHashSet<MonitorMode.SizeAndRRate> sizeAndRates = new ArrayHashSet<MonitorMode.SizeAndRRate>();
public final ArrayHashSet<MonitorMode> monitorModes = new ArrayHashSet<MonitorMode>();
public final ArrayHashSet<MonitorDevice> monitorDevices = new ArrayHashSet<MonitorDevice>();
}
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation */
private static DimensionImmutable streamInResolution(int[] resolutionProperties, int offset) {
Dimension resolution = new Dimension(resolutionProperties[offset++], resolutionProperties[offset++]);
@@ -116,7 +116,7 @@ public class MonitorModeProps {
final int flags = sizeAndRRateProperties[offset++];
return new MonitorMode.SizeAndRRate(surfaceSize, refreshRate, flags);
}
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation */
private static MonitorMode streamInMonitorMode0(MonitorMode.SizeAndRRate sizeAndRate, int[] modeProperties, int offset) {
final int id = modeProperties[offset++];
@@ -161,7 +161,7 @@ public class MonitorModeProps {
if(null!=cache) {
sizeAndRate = cache.sizeAndRates.getOrAdd(sizeAndRate);
}
-
+
MonitorMode monitorMode = MonitorModeProps.streamInMonitorMode0(sizeAndRate, modeProperties, offset);
if(null!=cache) {
monitorMode = cache.monitorModes.getOrAdd(monitorMode);
@@ -193,12 +193,12 @@ public class MonitorModeProps {
}
return data;
}
-
- /**
+
+ /**
* WARNING: must be synchronized with ScreenMode.h, native implementation
* <p>
* Note: This variant only works for impl. w/ a unique mode key pair <i>modeId, rotation</i>.
- * </p>
+ * </p>
* @param mode_idx if not null, returns the index of resulting {@link MonitorDevice} within {@link Cache#monitorDevices}.
* @param cache hash arrays of unique {@link MonitorMode} components and {@link MonitorDevice}s, allowing to avoid duplicates
* @param modeProperties the input data
@@ -218,7 +218,7 @@ public class MonitorModeProps {
if(count > monitorProperties.length-offset) {
throw new RuntimeException("properties array too short (count), should be >= "+count+", is "+(monitorProperties.length-offset));
}
- final int limit = offset + count;
+ final int limit = offset + count;
offset++;
final List<MonitorMode> allMonitorModes = cache.monitorModes.getData();
final int id = monitorProperties[offset++];
@@ -252,7 +252,7 @@ public class MonitorModeProps {
monitor_idx[0] = _monitorIdx;
}
return monitorDevice;
- }
+ }
private static MonitorMode getByNativeIdAndRotation(List<MonitorMode> monitorModes, int modeId, int rotation) {
if( null!=monitorModes && monitorModes.size()>0 ) {
for (int i=0; i<monitorModes.size(); i++) {
@@ -264,12 +264,12 @@ public class MonitorModeProps {
}
return null;
}
-
- /**
+
+ /**
* WARNING: must be synchronized with ScreenMode.h, native implementation
* <p>
* This variant expects <code>count</code> to be <code>{@link MIN_MONITOR_DEVICE_PROPERTIES} - 1 - {@link NUM_MONITOR_MODE_PROPERTIES}</code>,
- * due to lack of supported mode and current mode.
+ * due to lack of supported mode and current mode.
* </p>
*
* @param mode_idx if not null, returns the index of resulting {@link MonitorDevice} within {@link Cache#monitorDevices}.
@@ -310,7 +310,7 @@ public class MonitorModeProps {
}
return monitorDevice;
}
-
+
/** WARNING: must be synchronized with ScreenMode.h, native implementation */
public static int[] streamOutMonitorDevice (MonitorDevice monitorDevice) {
// min 11: count, id, ScreenSizeMM[width, height], Viewport[x, y, width, height], currentMonitorModeId, rotation, supportedModeId+
@@ -339,7 +339,7 @@ public class MonitorModeProps {
}
return data;
}
-
+
public final void swapRotatePair(int rotation, int[] pairs, int offset, int numPairs) {
if( MonitorMode.ROTATE_0 == rotation || MonitorMode.ROTATE_180 == rotation ) {
// nop
@@ -347,9 +347,9 @@ public class MonitorModeProps {
}
for(int i=0; i<numPairs; i++, offset+=2) {
final int tmp = pairs[offset];
- pairs[offset] = pairs[offset+1];
+ pairs[offset] = pairs[offset+1];
pairs[offset+1] = tmp;
}
- }
-
+ }
+
}
diff --git a/src/newt/classes/jogamp/newt/NEWTJNILibLoader.java b/src/newt/classes/jogamp/newt/NEWTJNILibLoader.java
index bc12bf3ee..9364ada30 100644
--- a/src/newt/classes/jogamp/newt/NEWTJNILibLoader.java
+++ b/src/newt/classes/jogamp/newt/NEWTJNILibLoader.java
@@ -1,21 +1,21 @@
/*
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -28,11 +28,11 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
* You acknowledge that this software is not designed or intended for use
* in the design, construction, operation or maintenance of any nuclear
* facility.
- *
+ *
* Sun gratefully acknowledges that this software was originally authored
* and developed by Kenneth Bradley Russell and Christopher John Kline.
*/
@@ -48,9 +48,10 @@ import com.jogamp.common.jvm.JNILibLoaderBase;
import com.jogamp.common.os.Platform;
import com.jogamp.common.util.cache.TempJarCache;
-public class NEWTJNILibLoader extends JNILibLoaderBase {
+public class NEWTJNILibLoader extends JNILibLoaderBase {
public static boolean loadNEWT() {
return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
+ @Override
public Boolean run() {
Platform.initSingleton();
final String libName = "newt";
diff --git a/src/newt/classes/jogamp/newt/OffscreenWindow.java b/src/newt/classes/jogamp/newt/OffscreenWindow.java
index 0a302d76b..2478b1e5d 100644
--- a/src/newt/classes/jogamp/newt/OffscreenWindow.java
+++ b/src/newt/classes/jogamp/newt/OffscreenWindow.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt;
@@ -50,13 +50,14 @@ import com.jogamp.newt.MonitorDevice;
public class OffscreenWindow extends WindowImpl implements MutableSurface {
long surfaceHandle;
-
+
public OffscreenWindow() {
surfaceHandle = 0;
}
static long nextWindowHandle = 0x100; // start here - a marker
+ @Override
protected void createNativeImpl() {
if(capsRequested.isOnscreen()) {
throw new NativeWindowException("Capabilities is onscreen");
@@ -72,9 +73,10 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
synchronized(OffscreenWindow.class) {
setWindowHandle(nextWindowHandle++);
}
- visibleChanged(false, true);
+ visibleChanged(false, true);
}
+ @Override
protected void closeNativeImpl() {
// nop
}
@@ -85,6 +87,7 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
surfaceHandle = 0;
}
+ @Override
public void setSurfaceHandle(long handle) {
surfaceHandle = handle ;
}
@@ -92,8 +95,9 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
@Override
public long getSurfaceHandle() {
return surfaceHandle;
- }
+ }
+ @Override
protected void requestFocusImpl(boolean reparented) {
}
@@ -101,7 +105,7 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
public void setPosition(int x, int y) {
// nop
}
-
+
@Override
public boolean setFullscreen(boolean fullscreen) {
return false; // nop
@@ -112,7 +116,8 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
return false; // nop
}
-
+
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
sizeChanged(false, width, height, false);
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
@@ -137,13 +142,15 @@ public class OffscreenWindow extends WindowImpl implements MutableSurface {
}
return new Point(0,0);
}
-
+
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return new Point(x,y);
}
-
+
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop ..
+ // nop ..
}
}
diff --git a/src/newt/classes/jogamp/newt/ScreenImpl.java b/src/newt/classes/jogamp/newt/ScreenImpl.java
index 7068d7464..d7e6c641c 100644
--- a/src/newt/classes/jogamp/newt/ScreenImpl.java
+++ b/src/newt/classes/jogamp/newt/ScreenImpl.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt;
@@ -56,7 +56,7 @@ import com.jogamp.newt.util.MonitorModeUtil;
public abstract class ScreenImpl extends Screen implements MonitorModeListener {
protected static final boolean DEBUG_TEST_SCREENMODE_DISABLED;
-
+
static {
Debug.initSingleton();
DEBUG_TEST_SCREENMODE_DISABLED = Debug.isPropertyDefined("newt.test.Screen.disableScreenMode", true);
@@ -67,14 +67,14 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
public static final int default_sm_heightmm = 324;
public static final int default_sm_rate = 60;
public static final int default_sm_rotation = 0;
-
+
static {
DisplayImpl.initSingleton();
}
-
+
/** Ensure static init has been run. */
/* pp */static void initSingleton() { }
-
+
protected DisplayImpl display;
protected int screen_idx;
protected String fqname;
@@ -85,14 +85,14 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
protected static Dimension usrSize = null; // property values: newt.ws.swidth and newt.ws.sheight
protected static volatile boolean usrSizeQueried = false;
private ArrayList<MonitorModeListener> refMonitorModeListener = new ArrayList<MonitorModeListener>();
-
+
private long tCreated; // creationTime
- private static Class<?> getScreenClass(String type) throws ClassNotFoundException
+ private static Class<?> getScreenClass(String type) throws ClassNotFoundException
{
final Class<?> screenClass = NewtFactory.getCustomClass(type, "ScreenDriver");
if(null==screenClass) {
- throw new ClassNotFoundException("Failed to find NEWT Screen Class <"+type+".ScreenDriver>");
+ throw new ClassNotFoundException("Failed to find NEWT Screen Class <"+type+".ScreenDriver>");
}
return screenClass;
}
@@ -104,7 +104,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
if(!usrSizeQueried) {
usrSizeQueried = true;
final int w = Debug.getIntProperty("newt.ws.swidth", true, 0);
- final int h = Debug.getIntProperty("newt.ws.sheight", true, 0);
+ final int h = Debug.getIntProperty("newt.ws.sheight", true, 0);
if(w>0 && h>0) {
usrSize = new Dimension(w, h);
System.err.println("User screen size "+usrSize);
@@ -135,7 +135,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
System.err.println("Screen.create() NEW: "+screen+" "+Display.getThreadName());
}
return screen;
- }
+ }
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -167,16 +167,16 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
@Override
public synchronized final void createNative()
throws NativeWindowException
- {
+ {
if(null == aScreen) {
if(DEBUG) {
tCreated = System.nanoTime();
System.err.println("Screen.createNative() START ("+DisplayImpl.getThreadName()+", "+this+")");
} else {
tCreated = 0;
- }
+ }
display.addReference();
-
+
createNativeImpl();
if(null == aScreen) {
throw new NativeWindowException("Screen.createNative() failed to instanciate an AbstractGraphicsScreen");
@@ -249,7 +249,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
protected abstract void createNativeImpl();
protected abstract void closeNativeImpl();
-
+
/**
* Returns the validated screen index, which is either the passed <code>idx</code>
* value or <code>0</code>.
@@ -258,23 +258,23 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
* </p>
*/
protected abstract int validateScreenIndex(int idx);
-
+
/**
* Stores the virtual origin and virtual <b>rotated</b> screen size.
* <p>
- * This method is called after the MonitorMode has been set or changed,
+ * This method is called after the MonitorMode has been set or changed,
* hence you may utilize it.
* </p>
* <p>
* Default implementation uses the union of all monitor's viewport,
- * calculated via {@link #unionOfMonitorViewportSize()}.
+ * calculated via {@link #unionOfMonitorViewportSize()}.
* </p>
* @param vOriginSize storage for result
*/
- protected void calcVirtualScreenOriginAndSize(final Rectangle vOriginSize) {
+ protected void calcVirtualScreenOriginAndSize(final Rectangle vOriginSize) {
unionOfMonitorViewportSize(vOriginSize);
}
-
+
@Override
public final String getFQName() {
return fqname;
@@ -335,15 +335,15 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
}
//
- // MonitorDevice and MonitorMode
+ // MonitorDevice and MonitorMode
//
-
+
/**
* To be implemented by the native specification.<br>
* Is called within a thread safe environment.<br>
* Is called only to collect the {@link MonitorMode}s and {@link MonitorDevice}s, usually at startup setting up modes.<br>
* <br>
- * <b>WARNING</b>: must be synchronized with
+ * <b>WARNING</b>: must be synchronized with
* <ul>
* <li>{@link MonitorModeProps#NUM_SCREEN_MODE_PROPERTIES} and </li>
* <li>{@link MonitorModeProps#MIN_MONITOR_DEVICE_PROPERTIES}</li>
@@ -356,19 +356,19 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
* @param cache memory pool caching the result
*/
protected abstract void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache);
-
+
protected Rectangle getNativeMonitorDeviceViewportImpl(MonitorDevice monitor) { return null; }
-
+
/**
* To be implemented by the native specification.<br>
* Is called within a thread safe environment.<br>
* <p>
- * Implementation shall not unify the result w/ monitor's supported modes or a locally
+ * Implementation shall not unify the result w/ monitor's supported modes or a locally
* saved {@link MonitorModeProps.Cache}, since caller will perform such tasks.
* </p>
*/
protected abstract MonitorMode queryCurrentMonitorModeImpl(MonitorDevice monitor);
-
+
/**
* To be implemented by the native specification.<br>
* Is called within a thread safe environment.<br>
@@ -378,13 +378,13 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
@Override
public final List<MonitorMode> getMonitorModes() {
final ScreenMonitorState sms = getScreenMonitorStatus(false);
- return null != sms ? sms.getMonitorModes().getData() : null;
+ return null != sms ? sms.getMonitorModes().getData() : null;
}
-
+
@Override
public final List<MonitorDevice> getMonitorDevices() {
final ScreenMonitorState sms = getScreenMonitorStatus(false);
- return null != sms ? sms.getMonitorDevices().getData() : null;
+ return null != sms ? sms.getMonitorDevices().getData() : null;
}
final ScreenMonitorState getScreenMonitorStatus(boolean throwException) {
@@ -395,7 +395,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
}
return res;
}
-
+
@Override
public void monitorModeChangeNotify(MonitorEvent me) {
if(DEBUG) {
@@ -417,9 +417,9 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
if( null != newViewport ) {
monitor.setViewportValue(newViewport);
}
- }
+ }
}
-
+
@Override
public void monitorModeChanged(MonitorEvent me, boolean success) {
if(success) {
@@ -443,9 +443,9 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
public synchronized final void removeMonitorModeListener(MonitorModeListener sml) {
refMonitorModeListener.remove(sml);
}
-
+
/**
- *
+ *
* @param cache optional ..
* @param modeId
* @return
@@ -468,7 +468,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
}
/**
- *
+ *
* @param cache mandatory !
* @param monitorId
* @param currentMode
@@ -493,7 +493,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
}
return MonitorModeProps.streamInMonitorDevice(null, cache, this, props, 0);
}
-
+
/**
* Utilizes {@link #getCurrentMonitorModeImpl()}, if the latter returns null it uses
* the current screen size and dummy values.
@@ -530,7 +530,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
sms = ScreenMonitorState.getScreenMonitorState(this.getFQName());
if(null==sms) {
final MonitorModeProps.Cache cache = new MonitorModeProps.Cache();
- if( 0 >= collectNativeMonitorModes(cache) ) {
+ if( 0 >= collectNativeMonitorModes(cache) ) {
updateVirtualScreenOriginAndSize();
vScrnSizeUpdated = true;
final MonitorMode mode = getVirtualMonitorMode(cache, 0);
@@ -557,7 +557,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
System.err.println("["+i+"]["+j+"]: "+iMode.next());
}
}
- }
+ }
sms = new ScreenMonitorState(cache.monitorDevices, cache.monitorModes);
ScreenMonitorState.mapScreenMonitorState(this.getFQName(), sms);
}
@@ -580,7 +580,7 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
* Collects {@link MonitorDevice}s and {@link MonitorMode}s within the given cache.
* </p>
*/
- private final int collectNativeMonitorModes(MonitorModeProps.Cache cache) {
+ private final int collectNativeMonitorModes(MonitorModeProps.Cache cache) {
if(!DEBUG_TEST_SCREENMODE_DISABLED) {
collectNativeMonitorModesAndDevicesImpl(cache);
}
@@ -639,12 +639,12 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
} finally {
sms.unlock();
}
- }
+ }
} finally {
ScreenMonitorState.unlockScreenMonitorState();
}
}
-
+
private final void shutdown() {
ScreenMonitorState sms = ScreenMonitorState.getScreenMonitorStateUnlocked(getFQName());
if(null != sms) {
@@ -661,11 +661,11 @@ public abstract class ScreenImpl extends Screen implements MonitorModeListener {
}
}
ScreenMonitorState.unmapScreenMonitorStateUnlocked(getFQName());
- }
+ }
}
-
+
/** pp */ static final void shutdownAll() {
- final int sCount = screenList.size();
+ final int sCount = screenList.size();
if(DEBUG) {
System.err.println("Screen.shutdownAll "+sCount+" instances, on thread "+Display.getThreadName());
}
diff --git a/src/newt/classes/jogamp/newt/ScreenMonitorState.java b/src/newt/classes/jogamp/newt/ScreenMonitorState.java
index 66e75be16..01e6cfee9 100644
--- a/src/newt/classes/jogamp/newt/ScreenMonitorState.java
+++ b/src/newt/classes/jogamp/newt/ScreenMonitorState.java
@@ -42,7 +42,7 @@ import java.util.HashMap;
public class ScreenMonitorState {
private static boolean DEBUG = Screen.DEBUG;
-
+
private final RecursiveLock lock = LockFactory.createRecursiveLock();
private final ArrayHashSet<MonitorDevice> allMonitors;
private final ArrayHashSet<MonitorMode> allMonitorModes;
@@ -105,21 +105,21 @@ public class ScreenMonitorState {
protected static void unlockScreenMonitorState() {
screen2ScreenMonitorState.unlock();
}
-
+
public ScreenMonitorState(ArrayHashSet<MonitorDevice> allMonitors,
ArrayHashSet<MonitorMode> allMonitorModes) {
- this.allMonitors = allMonitors;
+ this.allMonitors = allMonitors;
this.allMonitorModes = allMonitorModes;
}
- protected ArrayHashSet<MonitorDevice> getMonitorDevices() {
+ protected ArrayHashSet<MonitorDevice> getMonitorDevices() {
return allMonitors;
}
-
- protected ArrayHashSet<MonitorMode> getMonitorModes() {
+
+ protected ArrayHashSet<MonitorMode> getMonitorModes() {
return allMonitorModes;
}
-
+
protected final int addListener(MonitorModeListener l) {
lock();
try {
@@ -151,14 +151,14 @@ public class ScreenMonitorState {
protected final MonitorDevice getMonitor(MonitorDevice monitor) {
return allMonitors.get(monitor);
}
-
+
protected final void validateMonitor(MonitorDevice monitor) {
final MonitorDevice md = allMonitors.get(monitor);
if( null == md ) {
throw new InternalError("Monitor unknown: "+monitor);
}
}
-
+
protected final void fireMonitorModeChangeNotify(MonitorDevice monitor, MonitorMode desiredMode) {
lock();
try {
diff --git a/src/newt/classes/jogamp/newt/WindowImpl.java b/src/newt/classes/jogamp/newt/WindowImpl.java
index a35d89408..5102fd26d 100644
--- a/src/newt/classes/jogamp/newt/WindowImpl.java
+++ b/src/newt/classes/jogamp/newt/WindowImpl.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt;
@@ -87,19 +87,19 @@ import jogamp.nativewindow.SurfaceUpdatedHelper;
public abstract class WindowImpl implements Window, NEWTEventConsumer
{
public static final boolean DEBUG_TEST_REPARENT_INCOMPATIBLE;
-
+
static {
Debug.initSingleton();
DEBUG_TEST_REPARENT_INCOMPATIBLE = Debug.isPropertyDefined("newt.test.Window.reparent.incompatible", true);
-
+
ScreenImpl.initSingleton();
}
-
- protected static final ArrayList<WeakReference<WindowImpl>> windowList = new ArrayList<WeakReference<WindowImpl>>();
-
+
+ protected static final ArrayList<WeakReference<WindowImpl>> windowList = new ArrayList<WeakReference<WindowImpl>>();
+
/** Maybe utilized at a shutdown hook, impl. does not block. */
public static final void shutdownAll() {
- final int wCount = windowList.size();
+ final int wCount = windowList.size();
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.shutdownAll "+wCount+" instances, on thread "+getThreadName());
}
@@ -132,25 +132,25 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
}
-
+
/** Timeout of queued events (repaint and resize) */
- static final long QUEUED_EVENT_TO = 1200; // ms
+ static final long QUEUED_EVENT_TO = 1200; // ms
private static final PointerType[] constMousePointerTypes = new PointerType[] { PointerType.Mouse };
-
+
//
// Volatile: Multithread Mutable Access
- //
+ //
private volatile long windowHandle = 0; // lifecycle critical
private volatile boolean visible = false; // lifecycle critical
- private volatile boolean hasFocus = false;
+ private volatile boolean hasFocus = false;
private volatile int width = 128, height = 128; // client-area size w/o insets, default: may be overwritten by user
private volatile int x = 64, y = 64; // client-area pos w/o insets
private volatile Insets insets = new Insets(); // insets of decoration (if top-level && decorated)
-
+
private RecursiveLock windowLock = LockFactory.createRecursiveLock(); // Window instance wide lock
private int surfaceLockCount = 0; // surface lock recursion count
-
+
private ScreenImpl screen; // never null after create - may change reference though (reparent)
private boolean screenReferenceAdded = false;
private NativeWindow parentWindow = null;
@@ -162,7 +162,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
private List<MonitorDevice> fullscreenMonitors = null;
private boolean fullscreenUseMainMonitor = true;
private boolean autoPosition = true; // default: true (allow WM to choose top-level position, if not set by user)
-
+
private int nfs_width, nfs_height, nfs_x, nfs_y; // non fullscreen client-area size/pos w/o insets
private NativeWindow nfs_parent = null; // non fullscreen parent, in case explicit reparenting is performed (offscreen)
private String title = "Newt Window";
@@ -178,26 +178,26 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
private KeyListener keyboardFocusHandler = null;
private SurfaceUpdatedHelper surfaceUpdatedHelper = new SurfaceUpdatedHelper();
-
+
private Object childWindowsLock = new Object();
private ArrayList<NativeWindow> childWindows = new ArrayList<NativeWindow>();
private ArrayList<MouseListener> mouseListeners = new ArrayList<MouseListener>();
-
+
/** from event passing: {@link WindowImpl#consumePointerEvent(MouseEvent)}. */
private static class PointerState0 {
/** mouse entered window - is inside the window (may be synthetic) */
boolean insideWindow = false;
-
+
/** last time when a mouse button was pressed */
long lastButtonPressTime = 0;
-
+
void clearButton() {
lastButtonPressTime = 0;
}
}
private PointerState0 pState0 = new PointerState0();
-
+
/** from direct input: {@link WindowImpl#doPointerEvent(boolean, boolean, int[], short, int, int, boolean, short[], int[], int[], float[], float, float[], float)}. */
private static class PointerState1 extends PointerState0 {
/** current pressed mouse button number */
@@ -206,15 +206,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
int buttonPressedMask = 0;
/** last mouse button click count */
short lastButtonClickCount = (short)0;
-
+
+ @Override
final void clearButton() {
super.clearButton();
lastButtonPressTime = 0;
- lastButtonClickCount = (short)0;
+ lastButtonClickCount = (short)0;
buttonPressed = 0;
- buttonPressedMask = 0;
+ buttonPressedMask = 0;
}
-
+
/** last pointer-move position for 8 touch-down pointers */
final Point[] movePositions = new Point[] {
new Point(), new Point(), new Point(), new Point(),
@@ -227,16 +228,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
private PointerState1 pState1 = new PointerState1();
-
+
/** pointer names -> pointer ID (consecutive index, starting w/ 0) */
private final ArrayHashSet<Integer> pName2pID = new ArrayHashSet<Integer>();
-
+
private boolean defaultGestureHandlerEnabled = true;
private DoubleTapScrollGesture gesture2PtrTouchScroll = null;
private ArrayList<GestureHandler> pointerGestureHandler = new ArrayList<GestureHandler>();
-
+
private ArrayList<GestureHandler.GestureListener> gestureListeners = new ArrayList<GestureHandler.GestureListener>();
-
+
private ArrayList<KeyListener> keyListeners = new ArrayList<KeyListener>();
private ArrayList<WindowListener> windowListeners = new ArrayList<WindowListener>();
@@ -267,7 +268,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
{
final Class<?> windowClass = NewtFactory.getCustomClass(type, "WindowDriver");
if(null==windowClass) {
- throw new ClassNotFoundException("Failed to find NEWT Window Class <"+type+".WindowDriver>");
+ throw new ClassNotFoundException("Failed to find NEWT Window Class <"+type+".WindowDriver>");
}
return windowClass;
}
@@ -293,7 +294,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
throw new NativeWindowException(t);
}
}
-
+
public static WindowImpl create(Object[] cstrArguments, Screen screen, CapabilitiesImmutable caps) {
try {
Class<?> windowClass = getWindowClass(screen.getDisplay().getType());
@@ -329,11 +330,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
hasFocus = false;
parentWindowHandle = 0;
}
-
+
protected final void setGraphicsConfiguration(AbstractGraphicsConfiguration cfg) {
config = cfg;
}
-
+
public static interface LifecycleHook {
/**
* Reset of internal state counter, ie totalFrames, etc.
@@ -341,8 +342,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
*/
public abstract void resetCounter();
- /**
- * Invoked after Window setVisible,
+ /**
+ * Invoked after Window setVisible,
* allows allocating resources depending on the native Window.
* Called from EDT while window is locked.
*/
@@ -354,9 +355,9 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @param value <code>true</code> to set the one-shot preservation if supported, otherwise clears it.
*/
void preserveGLStateAtDestroy(boolean value);
-
- /**
- * Invoked before Window destroy action,
+
+ /**
+ * Invoked before Window destroy action,
* allows releasing of resources depending on the native Window.<br>
* Surface not locked yet.<br>
* Called not necessarily from EDT.
@@ -388,12 +389,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @see #pauseRenderingAction()
*/
void resumeRenderingAction();
-
+
/**
* Shutdown rendering action (thread) abnormally.
* <p>
* Should be called only at shutdown, if necessary.
- * </p>
+ * </p>
*/
void shutdownRenderingAction();
}
@@ -406,14 +407,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
} else {
tStart = 0;
}
-
- if( null != parentWindow &&
+
+ if( null != parentWindow &&
NativeSurface.LOCK_SURFACE_NOT_READY >= parentWindow.lockSurface() ) {
throw new NativeWindowException("Parent surface lock: not ready: "+parentWindow);
}
-
+
// child window: position defaults to 0/0, no auto position, no negative position
- if( null != parentWindow && ( autoPosition || 0>getX() || 0>getY() ) ) {
+ if( null != parentWindow && ( autoPosition || 0>getX() || 0>getY() ) ) {
definePosition(0, 0);
}
boolean postParentlockFocus = false;
@@ -536,12 +537,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
private Object closingListenerLock = new Object();
private WindowClosingMode defaultCloseOperation = WindowClosingMode.DISPOSE_ON_CLOSE;
+ @Override
public WindowClosingMode getDefaultCloseOperation() {
synchronized (closingListenerLock) {
return defaultCloseOperation;
}
}
+ @Override
public WindowClosingMode setDefaultCloseOperation(WindowClosingMode op) {
synchronized (closingListenerLock) {
WindowClosingMode _op = defaultCloseOperation;
@@ -556,28 +559,28 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
/**
* Notifies the driver impl. that the instantiation is finished,
- * ie. instance created and all fields set.
+ * ie. instance created and all fields set.
*/
protected void instantiationFinished() {
// nop
}
-
+
protected boolean canCreateNativeImpl() {
return true; // default: always able to be created
}
-
- /**
+
+ /**
* The native implementation must set the native windowHandle.<br>
*
* <p>
* The implementation shall respect the states {@link #isAlwaysOnTop()}/{@link #FLAG_IS_ALWAYSONTOP} and
* {@link #isUndecorated()}/{@link #FLAG_IS_UNDECORATED}, ie. the created window shall reflect those settings.
* </p>
- *
+ *
* <p>
* The implementation should invoke the referenced java state callbacks
* to notify this Java object of state changes.</p>
- *
+ *
* @see #windowDestroyNotify(boolean)
* @see #focusChanged(boolean, boolean)
* @see #visibleChanged(boolean, boolean)
@@ -589,16 +592,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
protected abstract void closeNativeImpl();
- /**
+ /**
* Async request which shall be performed within {@link #TIMEOUT_NATIVEWINDOW}.
* <p>
- * If if <code>force == false</code> the native implementation
+ * If if <code>force == false</code> the native implementation
* may only request focus if not yet owner.</p>
* <p>
* {@link #focusChanged(boolean, boolean)} should be called
- * to notify about the focus traversal.
- * </p>
- *
+ * to notify about the focus traversal.
+ * </p>
+ *
* @param force if true, bypass {@link #focusChanged(boolean, boolean)} and force focus request
*/
protected abstract void requestFocusImpl(boolean force);
@@ -608,7 +611,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public static final int FLAG_CHANGE_FULLSCREEN = 1 << 2;
public static final int FLAG_CHANGE_ALWAYSONTOP = 1 << 3;
public static final int FLAG_CHANGE_VISIBILITY = 1 << 4;
-
+
public static final int FLAG_HAS_PARENT = 1 << 8;
public static final int FLAG_IS_UNDECORATED = 1 << 9;
public static final int FLAG_IS_FULLSCREEN = 1 << 10;
@@ -619,12 +622,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
/**
* The native implementation should invoke the referenced java state callbacks
* to notify this Java object of state changes.
- *
+ *
* <p>
* Implementations shall set x/y to 0, in case it's negative. This could happen due
* to insets and positioning a decorated window to 0/0, which would place the frame
* outside of the screen.</p>
- *
+ *
* @param x client-area position, or <0 if unchanged
* @param y client-area position, or <0 if unchanged
* @param width client-area size, or <=0 if unchanged
@@ -635,12 +638,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @see #positionChanged(boolean,int, int)
*/
protected abstract boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags);
-
- /**
+
+ /**
* Tests whether a single reconfigure flag is supported by implementation.
* <p>
* Default is all but {@link #FLAG_IS_FULLSCREEN_SPAN}
- * </p>
+ * </p>
*/
protected boolean isReconfigureFlagSupported(int changeFlags) {
return 0 == ( changeFlags & FLAG_IS_FULLSCREEN_SPAN );
@@ -656,14 +659,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
protected static String getReconfigureFlagsAsString(StringBuilder sb, int flags) {
if(null == sb) { sb = new StringBuilder(); }
sb.append("[");
-
+
if( 0 != ( FLAG_CHANGE_PARENTING & flags) ) {
sb.append("*");
}
sb.append("PARENT_");
sb.append(0 != ( FLAG_HAS_PARENT & flags));
sb.append(", ");
-
+
if( 0 != ( FLAG_CHANGE_FULLSCREEN & flags) ) {
sb.append("*");
}
@@ -679,24 +682,24 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
sb.append("UNDECOR_");
sb.append(0 != ( FLAG_IS_UNDECORATED & flags));
sb.append(", ");
-
+
if( 0 != ( FLAG_CHANGE_ALWAYSONTOP & flags) ) {
sb.append("*");
}
sb.append("ALWAYSONTOP_");
sb.append(0 != ( FLAG_IS_ALWAYSONTOP & flags));
sb.append(", ");
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
sb.append("*");
}
sb.append("VISIBLE_");
sb.append(0 != ( FLAG_IS_VISIBLE & flags));
-
+
sb.append("]");
return sb.toString();
}
-
+
protected void setTitleImpl(String title) {}
/**
@@ -713,11 +716,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @return if not null, the screen location of the given coordinates
*/
protected abstract Point getLocationOnScreenImpl(int x, int y);
-
+
/** Triggered by user via {@link #getInsets()}.<br>
- * Implementations may implement this hook to update the insets.<br>
+ * Implementations may implement this hook to update the insets.<br>
* However, they may prefer the event driven path via {@link #insetsChanged(boolean, int, int, int, int)}.
- *
+ *
* @see #getInsets()
* @see #insetsChanged(boolean, int, int, int, int)
*/
@@ -726,7 +729,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
protected boolean setPointerVisibleImpl(boolean pointerVisible) { return false; }
protected boolean confinePointerImpl(boolean confine) { return false; }
protected void warpPointerImpl(int x, int y) { }
-
+
//----------------------------------------------------------------------
// NativeSurface
//
@@ -791,7 +794,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final RecursiveLock getLock() {
return windowLock;
}
-
+
@Override
public long getSurfaceHandle() {
return windowHandle; // default: return window handle
@@ -810,7 +813,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
@Override
public final long getDisplayHandle() {
return config.getNativeGraphicsConfiguration().getScreen().getDevice().getHandle();
- }
+ }
@Override
public final int getScreenIndex() {
@@ -879,19 +882,19 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final Screen getScreen() {
return screen;
}
-
+
@Override
public final MonitorDevice getMainMonitor() {
return screen.getMainMonitor(new Rectangle(getX(), getY(), getWidth(), getHeight()));
}
-
+
protected final void setVisibleImpl(boolean visible, int x, int y, int width, int height) {
- reconfigureWindowImpl(x, y, width, height, getReconfigureFlags(FLAG_CHANGE_VISIBILITY, visible));
- }
+ reconfigureWindowImpl(x, y, width, height, getReconfigureFlags(FLAG_CHANGE_VISIBILITY, visible));
+ }
final void setVisibleActionImpl(boolean visible) {
boolean nativeWindowCreated = false;
boolean madeVisible = false;
-
+
final RecursiveLock _lock = windowLock;
_lock.lock();
try {
@@ -911,7 +914,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
madeVisible = nativeWindowCreated;
}
// always flag visible, allowing a retry ..
- WindowImpl.this.visible = true;
+ WindowImpl.this.visible = true;
} else if(WindowImpl.this.visible != visible) {
if(isNativeValid()) {
setVisibleImpl(visible, getX(), getY(), getWidth(), getHeight());
@@ -956,6 +959,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.visible = visible;
}
+ @Override
public final void run() {
setVisibleActionImpl(visible);
}
@@ -965,14 +969,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window setVisible: START ("+getThreadName()+") "+getX()+"/"+getY()+" "+getWidth()+"x"+getHeight()+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle)+", visible: "+this.visible+" -> "+visible+", parentWindowHandle "+toHexString(parentWindowHandle)+", parentWindow "+(null!=parentWindow));
}
- runOnEDTIfAvail(wait, new VisibleAction(visible));
+ runOnEDTIfAvail(wait, new VisibleAction(visible));
}
@Override
public void setVisible(boolean visible) {
setVisible(true, visible);
}
-
+
private class SetSizeAction implements Runnable {
int width, height;
boolean disregardFS;
@@ -983,6 +987,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.disregardFS = disregardFS;
}
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1024,17 +1029,18 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
private void setFullscreenSize(int width, int height) {
runOnEDTIfAvail(true, new SetSizeAction(width, height, true));
- }
+ }
@Override
public void setSize(int width, int height) {
runOnEDTIfAvail(true, new SetSizeAction(width, height, false));
- }
+ }
@Override
public void setTopLevelSize(int width, int height) {
setSize(width - getInsets().getTotalWidth(), height - getInsets().getTotalHeight());
}
private class DestroyAction implements Runnable {
+ @Override
public final void run() {
boolean animatorPaused = false;
if(null!=lifecycleHook) {
@@ -1049,10 +1055,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window DestroyAction() hasScreen "+(null != screen)+", isNativeValid "+isNativeValid()+" - "+getThreadName());
}
-
+
// send synced destroy-notify notification
sendWindowEvent(WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
-
+
// Childs first ..
synchronized(childWindowsLock) {
if(childWindows.size()>0) {
@@ -1111,30 +1117,30 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(animatorPaused) {
lifecycleHook.resumeRenderingAction();
}
-
+
// these refs shall be kept alive - resurrection via setVisible(true)
/**
if(null!=parentWindow && parentWindow instanceof Window) {
((Window)parentWindow).removeChild(WindowImpl.this);
- }
+ }
childWindows = null;
surfaceUpdatedListeners = null;
mouseListeners = null;
keyListeners = null;
capsRequested = null;
lifecycleHook = null;
-
- screen = null;
+
+ screen = null;
windowListeners = null;
parentWindow = null;
- */
+ */
}
}
private final DestroyAction destroyAction = new DestroyAction();
@Override
public void destroy() {
- visible = false; // Immediately mark synchronized visibility flag, avoiding possible recreation
+ visible = false; // Immediately mark synchronized visibility flag, avoiding possible recreation
runOnEDTIfAvail(true, destroyAction);
}
@@ -1144,15 +1150,15 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
destroy();
}
-
+
/**
* @param cWin child window, must not be null
* @param pWin parent window, may be null
- * @return true if at least one of both window's configurations is offscreen
+ * @return true if at least one of both window's configurations is offscreen
*/
protected static boolean isOffscreenInstance(NativeWindow cWin, NativeWindow pWin) {
boolean ofs = false;
- final AbstractGraphicsConfiguration cWinCfg = cWin.getGraphicsConfiguration();
+ final AbstractGraphicsConfiguration cWinCfg = cWin.getGraphicsConfiguration();
if( null != cWinCfg ) {
ofs = !cWinCfg.getChosenCapabilities().isOnscreen();
}
@@ -1164,7 +1170,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return ofs;
}
-
+
private class ReparentAction implements Runnable {
final NativeWindow newParentWindow;
final int topLevelX, topLevelY;
@@ -1187,7 +1193,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
removeScreenReference();
screen = newScreen;
}
-
+
+ @Override
public final void run() {
boolean animatorPaused = false;
if(null!=lifecycleHook) {
@@ -1198,7 +1205,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
lifecycleHook.resumeRenderingAction();
}
}
-
+
private void reparent() {
// mirror pos/size so native change notification can get overwritten
final int oldX = getX();
@@ -1209,7 +1216,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
int width = oldWidth;
int height = oldHeight;
boolean wasVisible;
-
+
final RecursiveLock _lock = windowLock;
_lock.lock();
try {
@@ -1217,7 +1224,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
// force recreation if offscreen, since it may become onscreen
forceDestroyCreate |= isOffscreenInstance(WindowImpl.this, newParentWindow);
}
-
+
wasVisible = isVisible();
Window newParentWindowNEWT = null;
@@ -1233,7 +1240,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(null!=newParentWindow) {
// REPARENT TO CHILD WINDOW
-
+
// reset position to 0/0 within parent space
x = 0;
y = 0;
@@ -1278,7 +1285,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
operation = ReparentOperation.ACTION_NATIVE_CREATION_PENDING;
}
} else if ( forceDestroyCreate || !NewtFactory.isScreenCompatible(newParentWindow, screen) ) {
- // Destroy this window, may create a new compatible Screen/Display, while trying to preserve resources if becoming visible again.
+ // Destroy this window, may create a new compatible Screen/Display, while trying to preserve resources if becoming visible again.
destroy( wasVisible );
if(null!=newParentWindowNEWT) {
setScreen( (ScreenImpl) newParentWindowNEWT.getScreen() );
@@ -1333,11 +1340,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if ( ReparentOperation.ACTION_INVALID == operation ) {
throw new NativeWindowException("Internal Error: reparentAction not set");
}
-
+
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.reparent: ACTION ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+" new parentWindowHandle "+toHexString(newParentWindowHandle)+", reparentAction "+operation+", pos/size "+x+"/"+y+" "+width+"x"+height+", visible "+wasVisible);
}
-
+
if( ReparentOperation.ACTION_NOP == operation ) {
return;
}
@@ -1401,18 +1408,18 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
if(ok) {
requestFocusInt( 0 == parentWindowHandle /* skipFocusAction if top-level */);
- display.dispatchMessagesNative(); // status up2date
+ display.dispatchMessagesNative(); // status up2date
}
}
}
if(!ok || !wasVisible) {
- // make size and position persistent manual,
+ // make size and position persistent manual,
// since we don't have a WM feedback (invisible or recreation)
definePosition(x, y);
defineSize(width, height);
}
-
+
if(!ok) {
// native reparent failed -> try creation, while trying to preserve resources if becoming visible again.
if(DEBUG_IMPLEMENTATION) {
@@ -1430,7 +1437,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
definePosition(x, y);
defineSize(width, height);
}
-
+
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.reparent: END-1 ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+", visible: "+visible+", parentWindowHandle "+toHexString(parentWindowHandle)+", parentWindow "+ Display.hashCodeNullSafe(parentWindow)+" "+getX()+"/"+getY()+" "+getWidth()+"x"+getHeight());
}
@@ -1451,7 +1458,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
// This may run on the new Display/Screen connection, hence a new EDT task
runOnEDTIfAvail(true, reparentActionRecreate);
break;
-
+
default:
}
}
@@ -1462,6 +1469,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
private class ReparentActionRecreate implements Runnable {
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1514,6 +1522,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.undecorated = undecorated;
}
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1559,6 +1568,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.alwaysOnTop = alwaysOnTop;
}
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1566,7 +1576,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(WindowImpl.this.alwaysOnTop != alwaysOnTop) {
// set current state
WindowImpl.this.alwaysOnTop = alwaysOnTop;
-
+
if( isNativeValid() ) {
// Mirror pos/size so native change notification can get overwritten
final int x = getX();
@@ -1591,12 +1601,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final void setAlwaysOnTop(boolean value) {
runOnEDTIfAvail(true, new AlwaysOnTopAction(value));
}
-
+
@Override
public final boolean isAlwaysOnTop() {
return alwaysOnTop;
}
-
+
@Override
public String getTitle() {
return title;
@@ -1624,7 +1634,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
setVal = setPointerVisibleImpl(pointerVisible);
}
if(setVal) {
- this.pointerVisible = pointerVisible;
+ this.pointerVisible = pointerVisible;
}
}
}
@@ -1632,7 +1642,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public boolean isPointerConfined() {
return pointerConfined;
}
-
+
@Override
public void confinePointer(boolean confine) {
if(this.pointerConfined != confine) {
@@ -1652,18 +1662,18 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
if(setVal) {
- this.pointerConfined = confine;
+ this.pointerConfined = confine;
}
- }
+ }
}
-
+
@Override
public void warpPointer(int x, int y) {
if(0 != getWindowHandle()) {
warpPointerImpl(x, y);
}
}
-
+
@Override
public final InsetsImmutable getInsets() {
if(isUndecorated()) {
@@ -1672,7 +1682,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
updateInsetsImpl(insets);
return insets;
}
-
+
@Override
public final int getWidth() {
return width;
@@ -1694,8 +1704,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
protected final boolean autoPosition() { return autoPosition; }
-
- /** Sets the position fields {@link #x} and {@link #y} to the given values and {@link #autoPosition} to false. */
+
+ /** Sets the position fields {@link #x} and {@link #y} to the given values and {@link #autoPosition} to false. */
protected final void definePosition(int x, int y) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("definePosition: "+this.x+"/"+this.y+" -> "+x+"/"+y);
@@ -1705,7 +1715,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.x = x; this.y = y;
}
- /** Sets the size fields {@link #width} and {@link #height} to the given values. */
+ /** Sets the size fields {@link #width} and {@link #height} to the given values. */
protected final void defineSize(int width, int height) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("defineSize: "+this.width+"x"+this.height+" -> "+width+"x"+height);
@@ -1713,7 +1723,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
this.width = width; this.height = height;
}
-
+
@Override
public final boolean isVisible() {
return visible;
@@ -1732,7 +1742,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final Window getDelegatedWindow() {
return this;
}
-
+
//----------------------------------------------------------------------
// WindowImpl
//
@@ -1755,8 +1765,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
return old;
}
- /**
- * If this Window actually wraps a {@link NativeSurface} from another instance or toolkit,
+ /**
+ * If this Window actually wraps a {@link NativeSurface} from another instance or toolkit,
* it will return such reference. Otherwise returns null.
*/
public NativeSurface getWrappedSurface() {
@@ -1768,13 +1778,13 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
windowDestroyNotifyAction = r;
}
- /**
- * Returns the non delegated {@link AbstractGraphicsConfiguration},
+ /**
+ * Returns the non delegated {@link AbstractGraphicsConfiguration},
* see {@link #getGraphicsConfiguration()}. */
public final AbstractGraphicsConfiguration getPrivateGraphicsConfiguration() {
return config;
}
-
+
protected final long getParentWindowHandle() {
return isFullscreen() ? 0 : parentWindowHandle;
}
@@ -1834,6 +1844,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
private final Runnable requestFocusAction = new Runnable() {
+ @Override
public final void run() {
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.RequestFocusAction: force 0 - ("+getThreadName()+"): "+hasFocus+" -> true - windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle));
@@ -1842,6 +1853,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
};
private final Runnable requestFocusActionForced = new Runnable() {
+ @Override
public final void run() {
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.RequestFocusAction: force 1 - ("+getThreadName()+"): "+hasFocus+" -> true - windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle));
@@ -1864,7 +1876,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public void requestFocus(boolean wait) {
requestFocus(wait /* wait */, false /* skipFocusAction */, brokenFocusChange /* force */);
}
-
+
private void requestFocus(boolean wait, boolean skipFocusAction, boolean force) {
if( isNativeValid() &&
( force || !hasFocus() ) &&
@@ -1872,7 +1884,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
runOnEDTIfAvail(wait, force ? requestFocusActionForced : requestFocusAction);
}
}
-
+
/** Internally forcing request focus on current thread */
private void requestFocusInt(boolean skipFocusAction) {
if( skipFocusAction || !focusAction() ) {
@@ -1880,14 +1892,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
System.err.println("Window.RequestFocusInt: forcing - ("+getThreadName()+"): skipFocusAction "+skipFocusAction+", focus "+hasFocus+" -> true - windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle));
}
requestFocusImpl(true);
- }
+ }
}
-
+
@Override
public void setFocusAction(FocusRunnable focusAction) {
this.focusAction = focusAction;
}
-
+
private boolean focusAction() {
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.focusAction() START - "+getThreadName()+", focusAction: "+focusAction+" - windowHandle "+toHexString(getWindowHandle()));
@@ -1903,16 +1915,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return res;
}
-
+
protected void setBrokenFocusChange(boolean v) {
brokenFocusChange = v;
}
-
+
@Override
public void setKeyboardFocusHandler(KeyListener l) {
keyboardFocusHandler = l;
}
-
+
private class SetPositionAction implements Runnable {
int x, y;
@@ -1921,6 +1933,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
this.y = y;
}
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1932,7 +1945,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(isNativeValid()) {
// this.x/this.y will be set by sizeChanged, triggered by windowing event system
reconfigureWindowImpl(x, y, getWidth(), getHeight(), getReconfigureFlags(0, isVisible()));
-
+
// Wait until custom position is reached within tolerances
waitForPosition(true, x, y, Window.TIMEOUT_NATIVEWINDOW);
} else {
@@ -1950,16 +1963,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
autoPosition = false;
runOnEDTIfAvail(true, new SetPositionAction(x, y));
}
-
+
@Override
public void setTopLevelPosition(int x, int y) {
setPosition(x + getInsets().getLeftWidth(), y + getInsets().getTopHeight());
}
-
+
private class FullScreenAction implements Runnable {
boolean fullscreen;
- private boolean init(boolean fullscreen) {
+ private boolean init(boolean fullscreen) {
if(isNativeValid()) {
this.fullscreen = fullscreen;
return isFullscreen() != fullscreen;
@@ -1967,9 +1980,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
WindowImpl.this.fullscreen = fullscreen; // set current state for createNative(..)
return false;
}
- }
+ }
public boolean fsOn() { return fullscreen; }
+ @Override
public final void run() {
final RecursiveLock _lock = windowLock;
_lock.lock();
@@ -1981,9 +1995,9 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
final int oldY = getY();
final int oldWidth = getWidth();
final int oldHeight = getHeight();
-
+
int x,y,w,h;
-
+
final RectangleImmutable sviewport = screen.getViewport();
final RectangleImmutable viewport;
final int fs_span_flag;
@@ -2007,7 +2021,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
nfs_y = oldY;
nfs_width = oldWidth;
nfs_height = oldHeight;
- x = viewport.getX();
+ x = viewport.getX();
y = viewport.getY();
w = viewport.getWidth();
h = viewport.getHeight();
@@ -2020,12 +2034,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
y = nfs_y;
w = nfs_width;
h = nfs_height;
-
+
if(null!=parentWindow) {
// reset position to 0/0 within parent space
x = 0;
y = 0;
-
+
// refit if size is bigger than parent
if( w > parentWindow.getWidth() ) {
w = parentWindow.getWidth();
@@ -2044,7 +2058,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
final DisplayImpl display = (DisplayImpl) screen.getDisplay();
display.dispatchMessagesNative(); // status up2date
final boolean wasVisible = isVisible();
-
+
// Lock parentWindow only during reparenting (attempt)
final NativeWindow parentWindowLocked;
if( null != parentWindow ) {
@@ -2065,8 +2079,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
parentWindowLocked = null;
}
try {
- reconfigureWindowImpl(x, y, w, h,
- getReconfigureFlags( ( ( null != parentWindowLocked ) ? FLAG_CHANGE_PARENTING : 0 ) |
+ reconfigureWindowImpl(x, y, w, h,
+ getReconfigureFlags( ( ( null != parentWindowLocked ) ? FLAG_CHANGE_PARENTING : 0 ) |
fs_span_flag | FLAG_CHANGE_FULLSCREEN | FLAG_CHANGE_DECORATION, isVisible()) );
} finally {
if(null!=parentWindowLocked) {
@@ -2074,7 +2088,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
display.dispatchMessagesNative(); // status up2date
-
+
if(wasVisible) {
setVisibleImpl(true, x, y, w, h);
boolean ok = 0 <= WindowImpl.this.waitForVisible(true, false);
@@ -2086,7 +2100,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
if(ok) {
requestFocusInt(fullscreen /* skipFocusAction if fullscreen */);
- display.dispatchMessagesNative(); // status up2date
+ display.dispatchMessagesNative(); // status up2date
}
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window fs done: ok " + ok + ", " + WindowImpl.this);
@@ -2098,24 +2112,24 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout and repaint to listener
}
}
- private final FullScreenAction fullScreenAction = new FullScreenAction();
+ private final FullScreenAction fullScreenAction = new FullScreenAction();
@Override
public boolean setFullscreen(boolean fullscreen) {
return setFullscreenImpl(fullscreen, true, null);
}
-
+
@Override
public boolean setFullscreen(List<MonitorDevice> monitors) {
return setFullscreenImpl(true, false, monitors);
}
-
+
private boolean setFullscreenImpl(boolean fullscreen, boolean useMainMonitor, List<MonitorDevice> monitors) {
synchronized(fullScreenAction) {
fullscreenMonitors = monitors;
fullscreenUseMainMonitor = useMainMonitor;
if( fullScreenAction.init(fullscreen) ) {
- if(fullScreenAction.fsOn() && isOffscreenInstance(WindowImpl.this, parentWindow)) {
+ if(fullScreenAction.fsOn() && isOffscreenInstance(WindowImpl.this, parentWindow)) {
// enable fullscreen on offscreen instance
if(null != parentWindow) {
nfs_parent = parentWindow;
@@ -2124,19 +2138,19 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
throw new InternalError("Offscreen instance w/o parent unhandled");
}
}
-
+
runOnEDTIfAvail(true, fullScreenAction);
-
+
if(!fullScreenAction.fsOn() && null != nfs_parent) {
// disable fullscreen on offscreen instance
reparentWindow(nfs_parent, -1, -1, true /* forceDestroyCreate */);
nfs_parent = null;
}
}
- return this.fullscreen;
+ return this.fullscreen;
}
}
-
+
private class MonitorModeListenerImpl implements MonitorModeListener {
boolean animatorPaused = false;
boolean hadFocus = false;
@@ -2144,6 +2158,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
List<MonitorDevice> _fullscreenMonitors = null;
boolean _fullscreenUseMainMonitor = true;
+ @Override
public void monitorModeChangeNotify(MonitorEvent me) {
hadFocus = hasFocus();
if(DEBUG_IMPLEMENTATION) {
@@ -2164,6 +2179,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
+ @Override
public void monitorModeChanged(MonitorEvent me, boolean success) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.monitorModeChanged: hadFocus "+hadFocus+", "+me+", success: "+success+" @ "+Thread.currentThread().getName());
@@ -2226,7 +2242,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
//----------------------------------------------------------------------
// Child Window Management
- //
+ //
@Override
public final boolean removeChild(NativeWindow win) {
@@ -2282,7 +2298,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.consumeEvent: REPAINT "+Thread.currentThread().getName()+" - queued "+e+", discard-to "+discardTO);
// Thread.dumpStack();
- }
+ }
return discardTO; // discardTO:=true -> consumed
}
return true;
@@ -2343,11 +2359,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
//
// MouseListener/Event Support
//
-
+
//
// Native MouseEvents pre-processed to be enqueued or consumed directly
//
-
+
public final void sendMouseEvent(short eventType, int modifiers,
int x, int y, short button, float rotation) {
doMouseEvent(false, false, eventType, modifiers, x, y, button, MouseEvent.getRotationXYZ(rotation, modifiers), 1f);
@@ -2369,11 +2385,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
int x, int y, short button, float[] rotationXYZ, float rotationScale) {
doMouseEvent(true, wait, eventType, modifiers, x, y, button, rotationXYZ, rotationScale);
} */
-
+
/**
* Send mouse event (one-pointer) either to be directly consumed or to be enqueued
- *
- * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
+ *
+ * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
* otherwise {@link #consumeEvent(NEWTEvent) consumed} directly.
* @param wait if true wait until {@link #consumeEvent(NEWTEvent) consumed}.
*/
@@ -2383,7 +2399,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
throw new NativeWindowException("Invalid mouse button number" + button);
}
doPointerEvent(enqueue, wait, constMousePointerTypes, eventType, modifiers,
- 0 /*actionIdx*/, new short[] { (short)(button-1) },
+ 0 /*actionIdx*/, new short[] { (short)(button-1) },
new int[]{x}, new int[]{y}, new float[]{0f} /*pressure*/,
1f /*maxPressure*/, rotationXYZ, rotationScale);
}
@@ -2396,11 +2412,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* </p>
* <p>
* The given pointer names, <code>pNames</code>, are mapped to consecutive pointer IDs starting w/ 0
- * using a hash-map if <code>normalPNames</code> is <code>false</code>.
- * Otherwise a simple <code>int</code> to <code>short</code> type cast is performed.
+ * using a hash-map if <code>normalPNames</code> is <code>false</code>.
+ * Otherwise a simple <code>int</code> to <code>short</code> type cast is performed.
* </p>
- *
- * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
+ *
+ * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
* otherwise {@link #consumeEvent(NEWTEvent) consumed} directly.
* @param wait if true wait until {@link #consumeEvent(NEWTEvent) consumed}.
* @param pTypes {@link MouseEvent.PointerType} for each pointer (multiple pointer)
@@ -2410,14 +2426,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @param normalPNames see pName below.
* @param pNames Pointer name for each pointer (multiple pointer).
* We assume consecutive pointer names starting w/ 0 if <code>normalPIDs</code> is <code>true</code>.
- * Otherwise we hash-map the values during state pressed to retrieve the normal ID.
+ * Otherwise we hash-map the values during state pressed to retrieve the normal ID.
* @param pX X-axis for each pointer (multiple pointer)
* @param pY Y-axis for each pointer (multiple pointer)
* @param pPressure Pressure for each pointer (multiple pointer)
* @param maxPressure Maximum pointer pressure for all pointer
*/
public final void doPointerEvent(boolean enqueue, boolean wait,
- final PointerType[] pTypes, short eventType, int modifiers,
+ final PointerType[] pTypes, short eventType, int modifiers,
int actionIdx, boolean normalPNames, final int[] pNames,
final int[] pX, final int[] pY, float[] pPressure,
float maxPressure, final float[] rotationXYZ, final float rotationScale) {
@@ -2447,25 +2463,25 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
pIDs[i] = (short)pNames[i];
}
}
- doPointerEvent(enqueue, wait, pTypes, eventType, modifiers, actionIdx, pIDs,
+ doPointerEvent(enqueue, wait, pTypes, eventType, modifiers, actionIdx, pIDs,
pX, pY, pPressure, maxPressure, rotationXYZ, rotationScale);
}
-
+
/**
* Send multiple-pointer event either to be directly consumed or to be enqueued
* <p>
* The index for the element of multiple-pointer arrays represents the pointer which triggered the event
* is passed via <i>actionIdx</i>.
- * </p>
- *
- * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
+ * </p>
+ *
+ * @param enqueue if true, event will be {@link #enqueueEvent(boolean, NEWTEvent) enqueued},
* otherwise {@link #consumeEvent(NEWTEvent) consumed} directly.
* @param wait if true wait until {@link #consumeEvent(NEWTEvent) consumed}.
* @param pTypes {@link MouseEvent.PointerType} for each pointer (multiple pointer)
* @param eventType
* @param modifiers
* @param pActionIdx index of multiple-pointer arrays representing the pointer which triggered the event
- * @param pID Pointer ID for each pointer (multiple pointer). We assume consecutive pointerIDs starting w/ 0.
+ * @param pID Pointer ID for each pointer (multiple pointer). We assume consecutive pointerIDs starting w/ 0.
* A pointer-ID of -1 may also denote no pointer/button activity, i.e. {@link PointerType#Mouse} move.
* @param pX X-axis for each pointer (multiple pointer)
* @param pY Y-axis for each pointer (multiple pointer)
@@ -2473,14 +2489,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* @param maxPressure Maximum pointer pressure for all pointer
*/
public final void doPointerEvent(boolean enqueue, boolean wait,
- final PointerType[] pTypes, short eventType, int modifiers,
+ final PointerType[] pTypes, short eventType, int modifiers,
int pActionIdx, final short[] pID, final int[] pX, final int[] pY, final float[] pPressure,
float maxPressure, final float[] rotationXYZ, float rotationScale) {
final long when = System.currentTimeMillis();
final int pCount = pTypes.length;
-
+
if( 0 > pActionIdx || pActionIdx >= pCount) {
- throw new IllegalArgumentException("actionIdx out of bounds [0.."+(pCount-1)+"]");
+ throw new IllegalArgumentException("actionIdx out of bounds [0.."+(pCount-1)+"]");
}
if( 0 < pActionIdx ) {
// swap values to make idx 0 the triggering pointer
@@ -2518,11 +2534,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
button = com.jogamp.newt.event.MouseEvent.BUTTON1;
}
}
-
+
//
// - Determine ENTERED/EXITED state
// - Remove redundant move/drag events
- // - Reset states if applicable
+ // - Reset states if applicable
//
int x = pX[0];
int y = pY[0];
@@ -2537,7 +2553,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
movePositionP0.set(0, 0);
}
// Fall through intended!
-
+
case MouseEvent.EVENT_MOUSE_ENTERED:
// clip coordinates to window dimension
x = Math.min(Math.max(x, 0), getWidth()-1);
@@ -2545,11 +2561,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
pState1.insideWindow = eventType == MouseEvent.EVENT_MOUSE_ENTERED;
pState1.clearButton();
break;
-
+
case MouseEvent.EVENT_MOUSE_MOVED:
case MouseEvent.EVENT_MOUSE_DRAGGED:
if( null != movePositionP0 ) {
- if( pState1.insideWindow && movePositionP0.getX() == x && movePositionP0.getY() == y ) {
+ if( pState1.insideWindow && movePositionP0.getX() == x && movePositionP0.getY() == y ) {
if(DEBUG_MOUSE_EVENT) {
System.err.println("doPointerEvent: skip "+MouseEvent.getEventTypeString(eventType)+" w/ same position: "+movePositionP0);
}
@@ -2557,16 +2573,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
movePositionP0.set(x, y);
}
-
+
// Fall through intended !
-
+
default:
if(!pState1.insideWindow) {
- pState1.insideWindow = true;
+ pState1.insideWindow = true;
pState1.clearButton();
}
}
-
+
if( x < 0 || y < 0 || x >= getWidth() || y >= getHeight() ) {
if(DEBUG_MOUSE_EVENT) {
System.err.println("doPointerEvent: drop: "+MouseEvent.getEventTypeString(eventType)+
@@ -2582,29 +2598,29 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
final int buttonMask = InputEvent.getButtonMask(button);
modifiers |= buttonMask; // Always add current button to modifier mask (Bug 571)
modifiers |= pState1.buttonPressedMask; // Always add currently pressed mouse buttons to modifier mask
-
+
if( isPointerConfined() ) {
modifiers |= InputEvent.CONFINED_MASK;
}
if( !isPointerVisible() ) {
modifiers |= InputEvent.INVISIBLE_MASK;
}
-
+
pX[0] = x;
pY[0] = y;
-
+
//
// - Determine CLICK COUNT
// - Ignore sent CLICKED
// - Track buttonPressed incl. buttonPressedMask
// - Fix MOVED/DRAGGED event
//
- final MouseEvent e;
+ final MouseEvent e;
switch( eventType ) {
case MouseEvent.EVENT_MOUSE_CLICKED:
e = null;
break;
-
+
case MouseEvent.EVENT_MOUSE_PRESSED:
if( 0 >= pPressure[0] ) {
pPressure[0] = maxPressure;
@@ -2618,16 +2634,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
pState1.lastButtonPressTime = when;
pState1.buttonPressed = button;
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, pState1.lastButtonClickCount, rotationXYZ, rotationScale);
} else {
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, (short)1, rotationXYZ, rotationScale);
}
break;
case MouseEvent.EVENT_MOUSE_RELEASED:
if( 1 == pCount ) {
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, pState1.lastButtonClickCount, rotationXYZ, rotationScale);
if( when - pState1.lastButtonPressTime >= MouseEvent.getClickTimeout() ) {
pState1.lastButtonClickCount = (short)0;
@@ -2635,7 +2651,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
pState1.buttonPressed = 0;
} else {
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, (short)1, rotationXYZ, rotationScale);
}
pState1.buttonPressedMask &= ~buttonMask;
@@ -2645,10 +2661,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
break;
case MouseEvent.EVENT_MOUSE_MOVED:
if ( 0 != pState1.buttonPressedMask ) { // any button or pointer move -> drag
- e = new MouseEvent(MouseEvent.EVENT_MOUSE_DRAGGED, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(MouseEvent.EVENT_MOUSE_DRAGGED, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, pState1.buttonPressed, (short)1, rotationXYZ, rotationScale);
} else {
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, (short)0, rotationXYZ, rotationScale);
}
break;
@@ -2658,12 +2674,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
// Fall through intended!
default:
- e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
+ e = new MouseEvent(eventType, this, when, modifiers, pTypes, pID,
pX, pY, pPressure, maxPressure, button, (short)0, rotationXYZ, rotationScale);
}
doEvent(enqueue, wait, e); // actual mouse event
}
-
+
@Override
public final void addMouseListener(MouseListener l) {
addMouseListener(-1, l);
@@ -2676,8 +2692,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@SuppressWarnings("unchecked")
ArrayList<MouseListener> clonedListeners = (ArrayList<MouseListener>) mouseListeners.clone();
- if(0>index) {
- index = clonedListeners.size();
+ if(0>index) {
+ index = clonedListeners.size();
}
clonedListeners.add(index, l);
mouseListeners = clonedListeners;
@@ -2698,8 +2714,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final MouseListener getMouseListener(int index) {
@SuppressWarnings("unchecked")
ArrayList<MouseListener> clonedListeners = (ArrayList<MouseListener>) mouseListeners.clone();
- if(0>index) {
- index = clonedListeners.size()-1;
+ if(0>index) {
+ index = clonedListeners.size()-1;
}
return clonedListeners.get(index);
}
@@ -2717,7 +2733,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final boolean areDefaultGesturesEnabled() {
return defaultGestureHandlerEnabled;
}
-
+
@Override
public final void addGestureHandler(GestureHandler gh) {
addGestureHandler(-1, gh);
@@ -2729,7 +2745,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@SuppressWarnings("unchecked")
ArrayList<GestureHandler> cloned = (ArrayList<GestureHandler>) pointerGestureHandler.clone();
- if(0>index) {
+ if(0>index) {
index = cloned.size();
}
cloned.add(index, gh);
@@ -2756,7 +2772,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@SuppressWarnings("unchecked")
ArrayList<GestureHandler.GestureListener> cloned = (ArrayList<GestureHandler.GestureListener>) gestureListeners.clone();
- if(0>index) {
+ if(0>index) {
index = cloned.size();
}
cloned.add(index, gl);
@@ -2772,11 +2788,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
cloned.remove(gl);
gestureListeners= cloned;
}
-
+
private static int step(int lower, int edge, int value) {
return value < edge ? lower : value;
}
-
+
/**
* Consume the {@link MouseEvent}, i.e.
* <pre>
@@ -2786,18 +2802,18 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
* - dispatch event to listener
* </pre>
*/
- protected void consumePointerEvent(MouseEvent pe) {
+ protected void consumePointerEvent(MouseEvent pe) {
int x = pe.getX();
int y = pe.getY();
-
+
if(DEBUG_MOUSE_EVENT) {
System.err.println("consumePointerEvent.in: "+pe);
}
-
+
//
// - Determine ENTERED/EXITED state
// - Synthesize ENTERED event
- // - Reset states if applicable
+ // - Reset states if applicable
//
final long when = pe.getWhen();
int eventType = pe.getEventType();
@@ -2812,7 +2828,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
pState0.clearButton();
eEntered = null;
break;
-
+
default:
if(!pState0.insideWindow) {
pState0.insideWindow = true;
@@ -2833,12 +2849,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return; // .. invalid ..
}
-
+
//
// Handle Default Gestures
//
if( defaultGestureHandlerEnabled &&
- pe.getPointerType(0).getPointerClass() == MouseEvent.PointerClass.Onscreen )
+ pe.getPointerType(0).getPointerClass() == MouseEvent.PointerClass.Onscreen )
{
if( null == gesture2PtrTouchScroll ) {
final int scaledScrollSlop;
@@ -2849,16 +2865,16 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
final float pixWPerMM = (float)monitor.getCurrentMode().getRotatedWidth() / (float)mm.getWidth();
final float pixHPerMM = (float)monitor.getCurrentMode().getRotatedHeight() / (float)mm.getHeight();
final float pixPerMM = Math.min(pixHPerMM, pixWPerMM);
- scaledScrollSlop = Math.round(DoubleTapScrollGesture.SCROLL_SLOP_MM * pixPerMM);
- scaledDoubleTapSlop = Math.round(DoubleTapScrollGesture.DOUBLE_TAP_SLOP_MM * pixPerMM);
+ scaledScrollSlop = Math.round(DoubleTapScrollGesture.SCROLL_SLOP_MM * pixPerMM);
+ scaledDoubleTapSlop = Math.round(DoubleTapScrollGesture.DOUBLE_TAP_SLOP_MM * pixPerMM);
if(DEBUG_MOUSE_EVENT) {
System.err.println("consumePointerEvent.gscroll: scrollSlop "+scaledScrollSlop+", doubleTapSlop "+scaledDoubleTapSlop+", pixPerMM "+pixPerMM+", "+monitor);
}
} else {
scaledScrollSlop = DoubleTapScrollGesture.SCROLL_SLOP_PIXEL;
- scaledDoubleTapSlop = DoubleTapScrollGesture.DOUBLE_TAP_SLOP_PIXEL;
+ scaledDoubleTapSlop = DoubleTapScrollGesture.DOUBLE_TAP_SLOP_PIXEL;
}
- gesture2PtrTouchScroll = new DoubleTapScrollGesture(step(DoubleTapScrollGesture.SCROLL_SLOP_PIXEL, DoubleTapScrollGesture.SCROLL_SLOP_PIXEL/2, scaledScrollSlop),
+ gesture2PtrTouchScroll = new DoubleTapScrollGesture(step(DoubleTapScrollGesture.SCROLL_SLOP_PIXEL, DoubleTapScrollGesture.SCROLL_SLOP_PIXEL/2, scaledScrollSlop),
step(DoubleTapScrollGesture.DOUBLE_TAP_SLOP_PIXEL, DoubleTapScrollGesture.DOUBLE_TAP_SLOP_PIXEL/2, scaledDoubleTapSlop));
}
if( gesture2PtrTouchScroll.process(pe) ) {
@@ -2903,11 +2919,11 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
}
-
+
//
// - Synthesize mouse CLICKED
// - Ignore sent CLICKED
- //
+ //
final MouseEvent eClicked;
switch( eventType ) {
case MouseEvent.EVENT_MOUSE_PRESSED:
@@ -2921,7 +2937,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
eClicked = pe.createVariant(MouseEvent.EVENT_MOUSE_CLICKED);
} else {
eClicked = null;
- pState0.lastButtonPressTime = 0;
+ pState0.lastButtonPressTime = 0;
}
break;
case MouseEvent.EVENT_MOUSE_CLICKED:
@@ -2935,7 +2951,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
default:
eClicked = null;
}
-
+
if( null != pe ) {
if(DEBUG_MOUSE_EVENT) {
System.err.println("consumePointerEvent.send.1: "+pe);
@@ -2949,7 +2965,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
dispatchMouseEvent(eClicked);
}
}
-
+
private final void dispatchMouseEvent(MouseEvent e) {
for(int i = 0; !e.isConsumed() && i < mouseListeners.size(); i++ ) {
MouseListener l = mouseListeners.get(i);
@@ -2989,15 +3005,15 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
//
private static final int keyTrackingRange = 255;
private final IntBitfield keyPressedState = new IntBitfield( keyTrackingRange + 1 );
-
+
protected final boolean isKeyCodeTracked(final short keyCode) {
return ( 0xFFFF & (int)keyCode ) <= keyTrackingRange;
}
-
+
/**
* @param keyCode the keyCode to set pressed state
* @param pressed true if pressed, otherwise false
- * @return the previus pressed value
+ * @return the previus pressed value
*/
protected final boolean setKeyPressed(short keyCode, boolean pressed) {
final int v = 0xFFFF & (int)keyCode;
@@ -3008,7 +3024,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
/**
* @param keyCode the keyCode to test pressed state
- * @return true if pressed, otherwise false
+ * @return true if pressed, otherwise false
*/
protected final boolean isKeyPressed(short keyCode) {
final int v = 0xFFFF & (int)keyCode;
@@ -3017,7 +3033,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return false;
}
-
+
public void sendKeyEvent(short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
// Always add currently pressed mouse buttons to modifier mask
consumeKeyEvent( KeyEvent.create(eventType, this, System.currentTimeMillis(), modifiers | pState1.buttonPressedMask, keyCode, keySym, keyChar) );
@@ -3027,12 +3043,12 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
// Always add currently pressed mouse buttons to modifier mask
enqueueEvent(wait, KeyEvent.create(eventType, this, System.currentTimeMillis(), modifiers | pState1.buttonPressedMask, keyCode, keySym, keyChar) );
}
-
+
@Override
public final void setKeyboardVisible(boolean visible) {
if(isNativeValid()) {
// We don't skip the impl. if it seems that there is no state change,
- // since we cannot assume the impl. reliably gives us it's current state.
+ // since we cannot assume the impl. reliably gives us it's current state.
final boolean ok = setKeyboardVisibleImpl(visible);
if(DEBUG_IMPLEMENTATION || DEBUG_KEY_EVENT) {
System.err.println("setKeyboardVisible(native): visible "+keyboardVisible+" -- op[visible:"+visible +", ok "+ok+"] -> "+(visible && ok));
@@ -3046,13 +3062,13 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public final boolean isKeyboardVisible() {
return keyboardVisible;
}
- /**
+ /**
* Returns <code>true</code> if operation was successful, otherwise <code>false</code>.
* <p>
* We assume that a failed invisible operation is due to an already invisible keyboard,
- * hence even if an invisible operation failed, the keyboard is considered invisible!
- * </p>
- */
+ * hence even if an invisible operation failed, the keyboard is considered invisible!
+ * </p>
+ */
protected boolean setKeyboardVisibleImpl(boolean visible) {
return false; // nop
}
@@ -3066,7 +3082,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
protected boolean keyboardVisible = false;
-
+
@Override
public void addKeyListener(KeyListener l) {
addKeyListener(-1, l);
@@ -3079,7 +3095,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@SuppressWarnings("unchecked")
ArrayList<KeyListener> clonedListeners = (ArrayList<KeyListener>) keyListeners.clone();
- if(0>index) {
+ if(0>index) {
index = clonedListeners.size();
}
clonedListeners.add(index, l);
@@ -3101,7 +3117,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public KeyListener getKeyListener(int index) {
@SuppressWarnings("unchecked")
ArrayList<KeyListener> clonedListeners = (ArrayList<KeyListener>) keyListeners.clone();
- if(0>index) {
+ if(0>index) {
index = clonedListeners.size()-1;
}
return clonedListeners.get(index);
@@ -3125,7 +3141,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return e.isConsumed();
}
-
+
protected void consumeKeyEvent(KeyEvent e) {
boolean consumedE = false;
if( null != keyboardFocusHandler && !e.isAutoRepeat() ) {
@@ -3164,7 +3180,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@Override
- public void addWindowListener(int index, WindowListener l)
+ public void addWindowListener(int index, WindowListener l)
throws IndexOutOfBoundsException
{
if(l == null) {
@@ -3172,8 +3188,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
@SuppressWarnings("unchecked")
ArrayList<WindowListener> clonedListeners = (ArrayList<WindowListener>) windowListeners.clone();
- if(0>index) {
- index = clonedListeners.size();
+ if(0>index) {
+ index = clonedListeners.size();
}
clonedListeners.add(index, l);
windowListeners = clonedListeners;
@@ -3194,8 +3210,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
public WindowListener getWindowListener(int index) {
@SuppressWarnings("unchecked")
ArrayList<WindowListener> clonedListeners = (ArrayList<WindowListener>) windowListeners.clone();
- if(0>index) {
- index = clonedListeners.size()-1;
+ if(0>index) {
+ index = clonedListeners.size()-1;
}
return clonedListeners.get(index);
}
@@ -3234,7 +3250,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
l.windowRepaint((WindowUpdateEvent)e);
break;
default:
- throw
+ throw
new NativeWindowException("Unexpected window event type "
+ e.getEventType());
}
@@ -3248,7 +3264,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
System.err.println("Window.focusChanged: ("+getThreadName()+"): (defer: "+defer+") "+this.hasFocus+" -> "+focusGained+" - windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle));
}
hasFocus = focusGained;
- final int evt = focusGained ? WindowEvent.EVENT_WINDOW_GAINED_FOCUS : WindowEvent.EVENT_WINDOW_LOST_FOCUS ;
+ final int evt = focusGained ? WindowEvent.EVENT_WINDOW_GAINED_FOCUS : WindowEvent.EVENT_WINDOW_LOST_FOCUS ;
if(!defer) {
sendWindowEvent(evt);
} else {
@@ -3256,7 +3272,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
}
-
+
/** Triggered by implementation's WM events to update the visibility state. */
protected void visibleChanged(boolean defer, boolean visible) {
if(this.visible != visible) {
@@ -3282,7 +3298,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
display.dispatchMessagesNative(); // status up2date
}
if(this.visible != visible) {
- final String msg = "Visibility not reached as requested within "+timeOut+"ms : requested "+visible+", is "+this.visible;
+ final String msg = "Visibility not reached as requested within "+timeOut+"ms : requested "+visible+", is "+this.visible;
if(failFast) {
throw new NativeWindowException(msg);
} else if (DEBUG_IMPLEMENTATION) {
@@ -3297,7 +3313,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
- /** Triggered by implementation's WM events to update the client-area size w/o insets/decorations. */
+ /** Triggered by implementation's WM events to update the client-area size w/o insets/decorations. */
protected void sizeChanged(boolean defer, int newWidth, int newHeight, boolean force) {
if(force || getWidth() != newWidth || getHeight() != newHeight) {
if(DEBUG_IMPLEMENTATION) {
@@ -3316,7 +3332,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
}
-
+
private boolean waitForSize(int w, int h, boolean failFast, long timeOut) {
final DisplayImpl display = (DisplayImpl) screen.getDisplay();
display.dispatchMessagesNative(); // status up2date
@@ -3338,8 +3354,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
return true;
}
}
-
- /** Triggered by implementation's WM events to update the position. */
+
+ /** Triggered by implementation's WM events to update the position. */
protected void positionChanged(boolean defer, int newX, int newY) {
if ( getX() != newX || getY() != newY ) {
if(DEBUG_IMPLEMENTATION) {
@@ -3352,7 +3368,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
enqueueWindowEvent(false, WindowEvent.EVENT_WINDOW_MOVED);
}
} else {
- autoPosition = false; // ensure it's off even w/ same position
+ autoPosition = false; // ensure it's off even w/ same position
}
}
@@ -3396,10 +3412,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
return ok;
}
-
+
/**
- * Triggered by implementation's WM events to update the insets.
- *
+ * Triggered by implementation's WM events to update the insets.
+ *
* @see #getInsets()
* @see #updateInsetsImpl(Insets)
*/
@@ -3409,7 +3425,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.insetsChanged: skip insets change for undecoration mode");
}
- } else if ( (left != insets.getLeftWidth() || right != insets.getRightWidth() ||
+ } else if ( (left != insets.getLeftWidth() || right != insets.getRightWidth() ||
top != insets.getTopHeight() || bottom != insets.getBottomHeight() )
) {
insets.set(left, right, top, bottom);
@@ -3419,10 +3435,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
}
}
}
-
+
/**
* Triggered by implementation's WM events or programmatic while respecting {@link #getDefaultCloseOperation()}.
- *
+ *
* @param force if true, overrides {@link #setDefaultCloseOperation(WindowClosingMode)} with {@link WindowClosingProtocol#DISPOSE_ON_CLOSE}
* and hence force destruction. Otherwise is follows the user settings.
* @return true if this window is no more valid and hence has been destroyed, otherwise false.
@@ -3434,9 +3450,9 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
System.err.println("Window.windowDestroyNotify(isNativeValid: "+isNativeValid()+", force: "+force+", mode "+defMode+" -> "+mode+") "+getThreadName()+": "+this);
// Thread.dumpStack();
}
-
+
final boolean destroyed;
-
+
if( isNativeValid() ) {
if( WindowClosingMode.DISPOSE_ON_CLOSE == mode ) {
if(force) {
@@ -3457,7 +3473,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
// send synced destroy notifications
sendWindowEvent(WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
}
-
+
destroyed = !isNativeValid();
} else {
destroyed = true;
@@ -3465,19 +3481,19 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
if(DEBUG_IMPLEMENTATION) {
System.err.println("Window.windowDestroyNotify(isNativeValid: "+isNativeValid()+", force: "+force+", mode "+mode+") END "+getThreadName()+": destroyed "+destroyed+", "+this);
- }
-
+ }
+
return destroyed;
}
@Override
public void windowRepaint(int x, int y, int width, int height) {
- windowRepaint(false, x, y, width, height);
+ windowRepaint(false, x, y, width, height);
}
-
+
/**
* Triggered by implementation's WM events to update the content
- */
+ */
protected void windowRepaint(boolean defer, int x, int y, int width, int height) {
width = ( 0 >= width ) ? getWidth() : width;
height = ( 0 >= height ) ? getHeight() : height;
@@ -3542,7 +3558,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer
protected final void shouldNotCallThis() {
throw new NativeWindowException("Should not call this");
}
-
+
public static String getThreadName() {
return Display.getThreadName();
}
diff --git a/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java b/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java
index 861a6d6be..2ba5b3460 100644
--- a/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java
+++ b/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt.awt;
import javax.media.nativewindow.AbstractGraphicsConfiguration;
@@ -76,12 +76,12 @@ public class NewtFactoryAWT extends NewtFactory {
}
return (JAWTWindow)nw;
}
-
+
public static void destroyNativeWindow(JAWTWindow jawtWindow) {
final AbstractGraphicsConfiguration config = jawtWindow.getGraphicsConfiguration();
jawtWindow.destroy();
- config.getScreen().getDevice().close();
+ config.getScreen().getDevice().close();
}
-
+
}
diff --git a/src/newt/classes/jogamp/newt/awt/event/AWTNewtEventFactory.java b/src/newt/classes/jogamp/newt/awt/event/AWTNewtEventFactory.java
index d71ad175b..0ee3cc0cd 100644
--- a/src/newt/classes/jogamp/newt/awt/event/AWTNewtEventFactory.java
+++ b/src/newt/classes/jogamp/newt/awt/event/AWTNewtEventFactory.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,26 +20,26 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt.awt.event;
import com.jogamp.newt.event.MouseEvent;
/**
*
- * <a name="AWTEventModifierMapping"><h5>AWT Event Modifier Mapping</h5></a>
+ * <a name="AWTEventModifierMapping"><h5>AWT Event Modifier Mapping</h5></a>
* <pre>
Modifier AWT Constant AWT Bit AWT Ex NEWT Constant NEWT Bit
------------- ------------------------------- ------- ------ ------------------------- --------
- Shift Event.SHIFT_MASK 0
- Ctrl Event.CTRL_MASK 1
- Meta Event.META_MASK 2
- Alt Event.ALT_MASK 3
+ Shift Event.SHIFT_MASK 0
+ Ctrl Event.CTRL_MASK 1
+ Meta Event.META_MASK 2
+ Alt Event.ALT_MASK 3
Button1 InputEvent.BUTTON1_MASK 4
Button2 InputEvent.BUTTON2_MASK 3
Button3 InputEvent.BUTTON3_MASK 2
@@ -88,10 +88,10 @@ public class AWTNewtEventFactory {
Method _getMaskForButtonMethod = null;
try {
_getMaskForButtonMethod = ReflectionUtil.getMethod(java.awt.event.InputEvent.class, "getMaskForButton", int.class);
- } catch(Throwable t) {}
+ } catch(Throwable t) {}
getMaskForButtonMethod = _getMaskForButtonMethod;
} */
-
+
awtButtonDownMasks = new int[com.jogamp.newt.event.MouseEvent.BUTTON_COUNT] ; // java.awt.MouseInfo.getNumberOfButtons() ;
for (int n = 0 ; n < awtButtonDownMasks.length ; ++n) {
awtButtonDownMasks[n] = getAWTButtonDownMaskImpl(n+1);
@@ -112,12 +112,12 @@ public class AWTNewtEventFactory {
case java.awt.event.WindowEvent.WINDOW_LOST_FOCUS: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_LOST_FOCUS;
case java.awt.event.FocusEvent.FOCUS_LOST: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_LOST_FOCUS;
// n/a case java.awt.event.WindowEvent.WINDOW_STATE_CHANGED: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_STATE_CHANGED;
-
+
case java.awt.event.ComponentEvent.COMPONENT_MOVED: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_MOVED;
case java.awt.event.ComponentEvent.COMPONENT_RESIZED: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_RESIZED;
// n/a case java.awt.event.ComponentEvent.COMPONENT_SHOWN: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_SHOWN;
// n/a case java.awt.event.ComponentEvent.COMPONENT_HIDDEN: return com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_HIDDEN;
-
+
case java.awt.event.MouseEvent.MOUSE_CLICKED: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_CLICKED;
case java.awt.event.MouseEvent.MOUSE_PRESSED: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_PRESSED;
case java.awt.event.MouseEvent.MOUSE_RELEASED: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_RELEASED;
@@ -126,17 +126,17 @@ public class AWTNewtEventFactory {
case java.awt.event.MouseEvent.MOUSE_EXITED: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_EXITED;
case java.awt.event.MouseEvent.MOUSE_DRAGGED: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_DRAGGED;
case java.awt.event.MouseEvent.MOUSE_WHEEL: return com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_WHEEL_MOVED;
-
+
case java.awt.event.KeyEvent.KEY_PRESSED: return com.jogamp.newt.event.KeyEvent.EVENT_KEY_PRESSED;
case java.awt.event.KeyEvent.KEY_RELEASED: return com.jogamp.newt.event.KeyEvent.EVENT_KEY_RELEASED;
}
return (short)0;
}
-
+
private static int getAWTButtonDownMaskImpl(int button) {
/**
* java.awt.event.InputEvent.getMaskForButton(button);
- *
+ *
if(null != getMaskForButtonMethod) {
Object r=null;
try {
@@ -157,16 +157,16 @@ public class AWTNewtEventFactory {
m = 1 << ( 10 + button ) ; // b4 = 1<<14, b5 = 1<<15, etc
} else {
m = 0;
- }
+ }
}
return m;
}
-
+
/**
* <p>
* See <a href="#AWTEventModifierMapping"> AWT event modifier mapping details</a>.
* </p>
- *
+ *
* @param button
* @return
*/
@@ -175,9 +175,9 @@ public class AWTNewtEventFactory {
return awtButtonDownMasks[button-1];
} else {
return 0;
- }
+ }
}
-
+
public static final short awtButton2Newt(int awtButton) {
if( 0 < awtButton && awtButton <= com.jogamp.newt.event.MouseEvent.BUTTON_COUNT ) {
return (short)awtButton;
@@ -185,32 +185,32 @@ public class AWTNewtEventFactory {
return (short)0;
}
}
-
+
/**
* Converts the specified set of AWT event modifiers and extended event
* modifiers to the equivalent NEWT event modifiers.
- *
+ *
* <p>
* See <a href="#AWTEventModifierMapping"> AWT event modifier mapping details</a>.
* </p>
- *
+ *
* @param awtMods
* The AWT event modifiers.
- *
+ *
* @param awtModsEx
* The AWT extended event modifiers.
* AWT passes mouse button specific bits here and are the preferred way check the mouse button state.
*/
public static final int awtModifiers2Newt(final int awtMods, final int awtModsEx) {
int newtMods = 0;
-
+
/** Redundant old modifiers ..
if ((awtMods & java.awt.event.InputEvent.SHIFT_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.SHIFT_MASK;
if ((awtMods & java.awt.event.InputEvent.CTRL_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.CTRL_MASK;
if ((awtMods & java.awt.event.InputEvent.META_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.META_MASK;
if ((awtMods & java.awt.event.InputEvent.ALT_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.ALT_MASK;
if ((awtMods & java.awt.event.InputEvent.ALT_GRAPH_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.ALT_GRAPH_MASK; */
-
+
if ((awtModsEx & java.awt.event.InputEvent.SHIFT_DOWN_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.SHIFT_MASK;
if ((awtModsEx & java.awt.event.InputEvent.CTRL_DOWN_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.CTRL_MASK;
if ((awtModsEx & java.awt.event.InputEvent.META_DOWN_MASK) != 0) newtMods |= com.jogamp.newt.event.InputEvent.META_MASK;
@@ -221,7 +221,7 @@ public class AWTNewtEventFactory {
// being ignored intentionally. The AWT docs say that the
// BUTTON1_DOWN_MASK etc bits in the extended modifiers are
// the preferred place to check current button state.
-
+
if( 0 != awtModsEx ) {
for (int n = 0 ; n < awtButtonDownMasks.length ; ++n) {
if ( (awtModsEx & awtButtonDownMasks[n]) != 0 ) {
@@ -232,7 +232,7 @@ public class AWTNewtEventFactory {
return newtMods;
}
-
+
public static short awtKeyCode2NewtKeyCode(final int awtKeyCode) {
final short defNEWTKeyCode = (short)awtKeyCode;
switch (awtKeyCode) {
@@ -371,7 +371,7 @@ public class AWTNewtEventFactory {
case java.awt.event.KeyEvent.VK_MULTIPLY : return com.jogamp.newt.event.KeyEvent.VK_MULTIPLY;
case java.awt.event.KeyEvent.VK_DIVIDE : return com.jogamp.newt.event.KeyEvent.VK_DIVIDE;
case java.awt.event.KeyEvent.VK_NUM_LOCK : return com.jogamp.newt.event.KeyEvent.VK_NUM_LOCK;
- case java.awt.event.KeyEvent.VK_KP_LEFT : /** Fall through intended .. */
+ case java.awt.event.KeyEvent.VK_KP_LEFT : /** Fall through intended .. */
case java.awt.event.KeyEvent.VK_LEFT : return com.jogamp.newt.event.KeyEvent.VK_LEFT;
case java.awt.event.KeyEvent.VK_KP_UP : /** Fall through intended .. */
case java.awt.event.KeyEvent.VK_UP : return com.jogamp.newt.event.KeyEvent.VK_UP;
@@ -381,7 +381,7 @@ public class AWTNewtEventFactory {
case java.awt.event.KeyEvent.VK_DOWN : return com.jogamp.newt.event.KeyEvent.VK_DOWN;
case java.awt.event.KeyEvent.VK_CONTEXT_MENU : return com.jogamp.newt.event.KeyEvent.VK_CONTEXT_MENU;
case java.awt.event.KeyEvent.VK_WINDOWS : return com.jogamp.newt.event.KeyEvent.VK_WINDOWS;
- case java.awt.event.KeyEvent.VK_META : return com.jogamp.newt.event.KeyEvent.VK_META;
+ case java.awt.event.KeyEvent.VK_META : return com.jogamp.newt.event.KeyEvent.VK_META;
case java.awt.event.KeyEvent.VK_HELP : return com.jogamp.newt.event.KeyEvent.VK_HELP;
case java.awt.event.KeyEvent.VK_COMPOSE : return com.jogamp.newt.event.KeyEvent.VK_COMPOSE;
case java.awt.event.KeyEvent.VK_BEGIN : return com.jogamp.newt.event.KeyEvent.VK_BEGIN;
@@ -558,7 +558,7 @@ public class AWTNewtEventFactory {
case com.jogamp.newt.event.KeyEvent.VK_DOWN : return java.awt.event.KeyEvent.VK_DOWN;
case com.jogamp.newt.event.KeyEvent.VK_CONTEXT_MENU : return java.awt.event.KeyEvent.VK_CONTEXT_MENU;
case com.jogamp.newt.event.KeyEvent.VK_WINDOWS : return java.awt.event.KeyEvent.VK_WINDOWS;
- case com.jogamp.newt.event.KeyEvent.VK_META : return java.awt.event.KeyEvent.VK_META;
+ case com.jogamp.newt.event.KeyEvent.VK_META : return java.awt.event.KeyEvent.VK_META;
case com.jogamp.newt.event.KeyEvent.VK_HELP : return java.awt.event.KeyEvent.VK_HELP;
case com.jogamp.newt.event.KeyEvent.VK_COMPOSE : return java.awt.event.KeyEvent.VK_COMPOSE;
case com.jogamp.newt.event.KeyEvent.VK_BEGIN : return java.awt.event.KeyEvent.VK_BEGIN;
@@ -636,7 +636,7 @@ public class AWTNewtEventFactory {
}
return new com.jogamp.newt.event.MouseEvent(
newtType, (null==newtSource)?(Object)event.getComponent():(Object)newtSource, event.getWhen(),
- mods, event.getX(), event.getY(), (short)event.getClickCount(),
+ mods, event.getX(), event.getY(), (short)event.getClickCount(),
newtButton, MouseEvent.getRotationXYZ(rotation, mods), 1f);
}
return null; // no mapping ..
@@ -650,11 +650,11 @@ public class AWTNewtEventFactory {
if( (short)0 != newtType ) {
final short newtKeyCode = awtKeyCode2NewtKeyCode( event.getKeyCode() );
return com.jogamp.newt.event.KeyEvent.create(
- newtType, (null==newtSource)?(Object)event.getComponent():(Object)newtSource, event.getWhen(),
- awtModifiers2Newt(event.getModifiers(), event.getModifiersEx()),
+ newtType, (null==newtSource)?(Object)event.getComponent():(Object)newtSource, event.getWhen(),
+ awtModifiers2Newt(event.getModifiers(), event.getModifiersEx()),
newtKeyCode, newtKeyCode, event.getKeyChar());
}
return null; // no mapping ..
}
-
+
}
diff --git a/src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java b/src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java
index fa494adca..4bcb0fc82 100644
--- a/src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java
+++ b/src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt.awt.event;
import java.awt.KeyboardFocusManager;
@@ -45,22 +45,25 @@ import com.jogamp.newt.event.awt.AWTWindowAdapter;
public class AWTParentWindowAdapter extends AWTWindowAdapter implements java.awt.event.HierarchyListener
{
NativeWindow downstreamParent;
-
+
public AWTParentWindowAdapter(NativeWindow downstreamParent, com.jogamp.newt.Window downstream) {
super(downstream);
this.downstreamParent = downstreamParent;
}
+ @Override
public AWTAdapter addTo(java.awt.Component awtComponent) {
awtComponent.addHierarchyListener(this);
return super.addTo(awtComponent);
}
+ @Override
public AWTAdapter removeFrom(java.awt.Component awtComponent) {
awtComponent.removeHierarchyListener(this);
return super.removeFrom(awtComponent);
}
+ @Override
public void focusGained(java.awt.event.FocusEvent e) {
// forward focus to NEWT child
final com.jogamp.newt.Window newtChild = getNewtWindow();
@@ -78,12 +81,14 @@ public class AWTParentWindowAdapter extends AWTWindowAdapter implements java.awt
}
}
+ @Override
public void focusLost(java.awt.event.FocusEvent e) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("AWT: focusLost: "+ e);
}
}
+ @Override
public void componentResized(java.awt.event.ComponentEvent e) {
// Need to resize the NEWT child window
// the resized event will be send via the native window feedback.
@@ -93,6 +98,7 @@ public class AWTParentWindowAdapter extends AWTWindowAdapter implements java.awt
}
final Window newtWindow = getNewtWindow();
newtWindow.runOnEDTIfAvail(false, new Runnable() {
+ @Override
public void run() {
int cw = comp.getWidth();
int ch = comp.getHeight();
@@ -109,40 +115,45 @@ public class AWTParentWindowAdapter extends AWTWindowAdapter implements java.awt
}});
}
+ @Override
public void componentMoved(java.awt.event.ComponentEvent e) {
if(DEBUG_IMPLEMENTATION) {
- System.err.println("AWT: componentMoved: "+e);
+ System.err.println("AWT: componentMoved: "+e);
}
final Window newtWindow = getNewtWindow();
if(newtWindow.getDelegatedWindow() instanceof DriverUpdatePosition) {
((DriverUpdatePosition)newtWindow.getDelegatedWindow()).updatePosition(0, 0);
- }
+ }
}
+ @Override
public void windowActivated(java.awt.event.WindowEvent e) {
// no propagation to NEWT child window
}
+ @Override
public void windowDeactivated(java.awt.event.WindowEvent e) {
// no propagation to NEWT child window
}
+ @Override
public void hierarchyChanged(java.awt.event.HierarchyEvent e) {
if( null == getNewtEventListener() ) {
long bits = e.getChangeFlags();
- final java.awt.Component changed = e.getChanged();
+ final java.awt.Component changed = e.getChanged();
if( 0 != ( java.awt.event.HierarchyEvent.SHOWING_CHANGED & bits ) ) {
final boolean showing = changed.isShowing();
if(DEBUG_IMPLEMENTATION) {
System.err.println("AWT: hierarchyChanged SHOWING_CHANGED: showing "+showing+", "+changed+", source "+e.getComponent());
}
getNewtWindow().runOnEDTIfAvail(false, new Runnable() {
+ @Override
public void run() {
if(getNewtWindow().isVisible() != showing) {
getNewtWindow().setVisible(showing);
}
}});
- }
+ }
if(DEBUG_IMPLEMENTATION) {
if( 0 != ( java.awt.event.HierarchyEvent.DISPLAYABILITY_CHANGED & bits ) ) {
final boolean displayability = changed.isDisplayable();
diff --git a/src/newt/classes/jogamp/newt/driver/DriverClearFocus.java b/src/newt/classes/jogamp/newt/driver/DriverClearFocus.java
index 0a824e83b..0ff86fe93 100644
--- a/src/newt/classes/jogamp/newt/driver/DriverClearFocus.java
+++ b/src/newt/classes/jogamp/newt/driver/DriverClearFocus.java
@@ -1,10 +1,10 @@
package jogamp.newt.driver;
-/**
+/**
* Interface tagging driver requirement of clearing the focus.
* <p>
- * Some drivers require a programmatic {@link #clearFocus()} when traversing the focus.
- * </p>
+ * Some drivers require a programmatic {@link #clearFocus()} when traversing the focus.
+ * </p>
*/
public interface DriverClearFocus {
/** Programmatic clear the focus */
diff --git a/src/newt/classes/jogamp/newt/driver/DriverUpdatePosition.java b/src/newt/classes/jogamp/newt/driver/DriverUpdatePosition.java
index 2ec327187..e5f9b6a68 100644
--- a/src/newt/classes/jogamp/newt/driver/DriverUpdatePosition.java
+++ b/src/newt/classes/jogamp/newt/driver/DriverUpdatePosition.java
@@ -1,14 +1,14 @@
package jogamp.newt.driver;
-/**
+/**
* Interface tagging driver requirement of absolute positioning, ie. depend on parent position.
*/
public interface DriverUpdatePosition {
- /**
+ /**
* Programmatic update the top-left corner
* of the client area relative to it's parent.
- *
- * @param x x-component
+ *
+ * @param x x-component
* @param y y-component
**/
void updatePosition(int x, int y);
diff --git a/src/newt/classes/jogamp/newt/driver/awt/AWTCanvas.java b/src/newt/classes/jogamp/newt/driver/awt/AWTCanvas.java
index 9a1632130..f7722c91c 100644
--- a/src/newt/classes/jogamp/newt/driver/awt/AWTCanvas.java
+++ b/src/newt/classes/jogamp/newt/driver/awt/AWTCanvas.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.awt;
@@ -100,13 +100,14 @@ public class AWTCanvas extends Canvas {
@Override
public void paint(Graphics g) {
}
-
+
public boolean hasDeviceChanged() {
boolean res = displayConfigChanged;
displayConfigChanged=false;
return res;
}
+ @Override
public void addNotify() {
/**
@@ -154,12 +155,13 @@ public class AWTCanvas extends Canvas {
public NativeWindow getNativeWindow() {
final JAWTWindow _jawtWindow = jawtWindow;
return (null != _jawtWindow) ? _jawtWindow : null;
- }
-
+ }
+
public boolean isOffscreenLayerSurfaceEnabled() {
- return null != jawtWindow ? jawtWindow.isOffscreenLayerSurfaceEnabled() : false;
+ return null != jawtWindow ? jawtWindow.isOffscreenLayerSurfaceEnabled() : false;
}
-
+
+ @Override
public void removeNotify() {
try {
dispose();
@@ -188,19 +190,20 @@ public class AWTCanvas extends Canvas {
}
}
}
-
+
private String getThreadName() { return Thread.currentThread().getName(); }
/**
* Overridden to choose a GraphicsConfiguration on a parent container's
* GraphicsDevice because both devices
*/
+ @Override
public GraphicsConfiguration getGraphicsConfiguration() {
/*
* Workaround for problems with Xinerama and java.awt.Component.checkGD
* when adding to a container on a different graphics device than the
* one that this Canvas is associated with.
- *
+ *
* GC will be null unless:
* - A native peer has assigned it. This means we have a native
* peer, and are already comitted to a graphics configuration.
@@ -214,7 +217,7 @@ public class AWTCanvas extends Canvas {
* chosen is only non-null on platforms where the GLDrawableFactory
* returns a non-null GraphicsConfiguration (in the GLCanvas
* constructor).
- *
+ *
* if gc is from this Canvas' native peer then it should equal chosen,
* otherwise it is from an ancestor component that this Canvas is being
* added to, and we go into this block.
@@ -224,21 +227,21 @@ public class AWTCanvas extends Canvas {
* Check for compatibility with gc. If they differ by only the
* device then return a new GCconfig with the super-class' GDevice
* (and presumably the same visual ID in Xinerama).
- *
+ *
*/
if (!chosen.getDevice().getIDstring().equals(gc.getDevice().getIDstring())) {
/*
* Here we select a GraphicsConfiguration on the alternate
* device that is presumably identical to the chosen
* configuration, but on the other device.
- *
+ *
* Should really check to ensure that we select a configuration
* with the same X visual ID for Xinerama screens, otherwise the
* GLDrawable may have the wrong visual ID (I don't think this
* ever gets updated). May need to add a method to
* X11GLDrawableFactory to do this in a platform specific
* manner.
- *
+ *
* However, on platforms where we can actually get into this
* block, both devices should have the same visual list, and the
* same configuration should be selected here.
@@ -265,7 +268,7 @@ public class AWTCanvas extends Canvas {
chosen = compatible;
if( !config.getChosenCapabilities().equals(awtConfig.getChosenCapabilities())) {
displayConfigChanged=true;
- }
+ }
awtConfig = config;
}
}
@@ -275,7 +278,7 @@ public class AWTCanvas extends Canvas {
* return the GC that was selected in the constructor (and might
* cause an exception in Component.checkGD when adding to a
* container, but in this case that would be the desired behavior).
- *
+ *
*/
return chosen;
} else if (gc == null) {
@@ -299,7 +302,7 @@ public class AWTCanvas extends Canvas {
CapabilitiesImmutable capsRequested,
CapabilitiesChooser chooser,
GraphicsDevice device) {
- final AbstractGraphicsScreen aScreen = null != device ?
+ final AbstractGraphicsScreen aScreen = null != device ?
AWTGraphicsScreen.createScreenDevice(device, AbstractGraphicsDevice.DEFAULT_UNIT):
AWTGraphicsScreen.createDefault();
AWTGraphicsConfiguration config = (AWTGraphicsConfiguration)
@@ -324,6 +327,7 @@ public class AWTCanvas extends Canvas {
if (!disableBackgroundEraseInitialized) {
try {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ @Override
public Object run() {
try {
Class<?> clazz = getToolkit().getClass();
diff --git a/src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java b/src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java
index 02f4be0cd..4a7193306 100644
--- a/src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java
+++ b/src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java
@@ -40,9 +40,9 @@ import jogamp.newt.Debug;
public class AWTEDTUtil implements EDTUtil {
public static final boolean DEBUG = Debug.debug("EDT");
-
+
private final Object edtLock = new Object(); // locking the EDT start/stop state
- private final ThreadGroup threadGroup;
+ private final ThreadGroup threadGroup;
private final String name;
private final Runnable dispatchMessages;
private NEDT nedt = null;
@@ -66,7 +66,7 @@ public class AWTEDTUtil implements EDTUtil {
final public void setPollPeriod(long ms) {
pollPeriod = ms;
}
-
+
@Override
public final boolean start() throws IllegalStateException {
synchronized(edtLock) {
@@ -107,12 +107,12 @@ public class AWTEDTUtil implements EDTUtil {
public final boolean isCurrentThreadNEDT() {
return nedt == Thread.currentThread();
}
-
+
@Override
public final boolean isCurrentThreadEDTorNEDT() {
- return EventQueue.isDispatchThread() || nedt == Thread.currentThread();
+ return EventQueue.isDispatchThread() || nedt == Thread.currentThread();
}
-
+
@Override
final public boolean isRunning() {
return nedt.isRunning() ;
@@ -127,12 +127,12 @@ public class AWTEDTUtil implements EDTUtil {
public final boolean invoke(boolean wait, Runnable task) {
return invokeImpl(wait, task, false);
}
-
+
private static Runnable nullTask = new Runnable() {
@Override
- public void run() { }
+ public void run() { }
};
-
+
private final boolean invokeImpl(boolean wait, Runnable task, boolean stop) {
Throwable throwable = null;
RunnableTask rTask = null;
@@ -145,7 +145,7 @@ public class AWTEDTUtil implements EDTUtil {
if(DEBUG) {
Thread.dumpStack();
}
- return false;
+ return false;
}
if( isCurrentThreadEDT() ) {
if(null != task) {
@@ -181,7 +181,7 @@ public class AWTEDTUtil implements EDTUtil {
if(null != task) {
rTask = new RunnableTask(task,
wait ? rTaskLock : null,
- true /* always catch and report Exceptions, don't disturb EDT */,
+ true /* always catch and report Exceptions, don't disturb EDT */,
wait ? null : System.err);
AWTEDTExecutor.singleton.invoke(false, rTask);
}
@@ -205,7 +205,7 @@ public class AWTEDTUtil implements EDTUtil {
}
return true;
}
- }
+ }
@Override
final public boolean waitUntilIdle() {
@@ -218,6 +218,7 @@ public class AWTEDTUtil implements EDTUtil {
}
try {
AWTEDTExecutor.singleton.invoke(true, new Runnable() {
+ @Override
public void run() { }
});
} catch (Exception e) { }
@@ -241,7 +242,7 @@ public class AWTEDTUtil implements EDTUtil {
}
}
}
-
+
class NEDT extends Thread {
volatile boolean shouldStop = false;
volatile boolean isRunning = false;
@@ -261,7 +262,7 @@ public class AWTEDTUtil implements EDTUtil {
super.start();
}
- /**
+ /**
* Utilizing locking only on tasks and its execution,
* not for event dispatching.
*/
@@ -302,7 +303,7 @@ public class AWTEDTUtil implements EDTUtil {
}
} finally {
if(DEBUG) {
- System.err.println(getName()+": AWT-EDT run() END "+ getName()+", "+error);
+ System.err.println(getName()+": AWT-EDT run() END "+ getName()+", "+error);
}
synchronized(edtLock) {
isRunning = false;
@@ -317,7 +318,7 @@ public class AWTEDTUtil implements EDTUtil {
} // finally
} // run()
} // EventDispatchThread
-
+
}
diff --git a/src/newt/classes/jogamp/newt/driver/awt/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/awt/DisplayDriver.java
index 30449f9bc..d9a4a48e5 100644
--- a/src/newt/classes/jogamp/newt/driver/awt/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/awt/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.awt;
@@ -46,6 +46,7 @@ public class DisplayDriver extends DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
aDevice = AWTGraphicsDevice.createDefault();
}
@@ -54,10 +55,11 @@ public class DisplayDriver extends DisplayImpl {
aDevice = d;
}
+ @Override
protected EDTUtil createEDTUtil() {
final EDTUtil def;
if(NewtFactory.useEDT()) {
- def = new AWTEDTUtil(Thread.currentThread().getThreadGroup(), "AWTDisplay-"+getFQName(), dispatchMessagesRunnable);
+ def = new AWTEDTUtil(Thread.currentThread().getThreadGroup(), "AWTDisplay-"+getFQName(), dispatchMessagesRunnable);
if(DEBUG) {
System.err.println("Display.createNative("+getFQName()+") Create EDTUtil: "+def.getClass().getName());
}
@@ -67,10 +69,12 @@ public class DisplayDriver extends DisplayImpl {
return def;
}
- protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
+ @Override
+ protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() { /* nop */ }
}
diff --git a/src/newt/classes/jogamp/newt/driver/awt/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/awt/ScreenDriver.java
index 126143e1e..a4356707e 100644
--- a/src/newt/classes/jogamp/newt/driver/awt/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/awt/ScreenDriver.java
@@ -1,21 +1,21 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -28,7 +28,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.awt;
@@ -49,6 +49,7 @@ public class ScreenDriver extends ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
aScreen = new AWTGraphicsScreen((AWTGraphicsDevice)display.getGraphicsDevice());
}
@@ -65,11 +66,13 @@ public class ScreenDriver extends ScreenImpl {
super.updateVirtualScreenOriginAndSize();
}
+ @Override
protected void closeNativeImpl() { }
-
+
+ @Override
protected int validateScreenIndex(int idx) {
- return idx; // pass through ...
- }
+ return idx; // pass through ...
+ }
private static MonitorMode getModeProps(Cache cache, DisplayMode mode) {
int rate = mode.getRefreshRate();
@@ -90,16 +93,16 @@ public class ScreenDriver extends ScreenImpl {
props[i++] = 0; // flags
props[i++] = 0; // mode_idx
props[i++] = 0; // rotation
- return MonitorModeProps.streamInMonitorMode(null, cache, props, 0);
+ return MonitorModeProps.streamInMonitorMode(null, cache, props, 0);
}
-
+
@Override
protected void collectNativeMonitorModesAndDevicesImpl(Cache cache) {
final GraphicsDevice awtGD = ((AWTGraphicsDevice)getDisplay().getGraphicsDevice()).getGraphicsDevice();
final DisplayMode[] awtModes = awtGD.getDisplayModes();
for(int i=0; i<awtModes.length; i++) {
getModeProps(cache, awtModes[i]);
- }
+ }
final MonitorMode currentMode = getModeProps(cache, awtGD.getDisplayMode());
int[] props = new int[MonitorModeProps.MIN_MONITOR_DEVICE_PROPERTIES - 1 - MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES];
@@ -116,7 +119,7 @@ public class ScreenDriver extends ScreenImpl {
}
@Override
- protected MonitorMode queryCurrentMonitorModeImpl(MonitorDevice monitor) {
+ protected MonitorMode queryCurrentMonitorModeImpl(MonitorDevice monitor) {
return null;
}
@@ -124,5 +127,5 @@ public class ScreenDriver extends ScreenImpl {
protected boolean setCurrentMonitorModeImpl(MonitorDevice monitor, MonitorMode mode) {
return false;
}
-
+
}
diff --git a/src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java
index 77daa556f..9854524d9 100644
--- a/src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.awt;
@@ -86,6 +86,7 @@ public class WindowDriver extends WindowImpl {
private Frame awtFrame = null;
private AWTCanvas awtCanvas;
+ @Override
protected void requestFocusImpl(boolean reparented) {
awtContainer.requestFocus();
}
@@ -97,6 +98,7 @@ public class WindowDriver extends WindowImpl {
}
}
+ @Override
protected void createNativeImpl() {
if(0!=getParentWindowHandle()) {
throw new RuntimeException("Window parenting not supported in AWT, use AWTWindow(Frame) cstr for wrapping instead");
@@ -109,37 +111,38 @@ public class WindowDriver extends WindowImpl {
} else {
owningFrame=false;
defineSize(awtContainer.getWidth(), awtContainer.getHeight());
- definePosition(awtContainer.getX(), awtContainer.getY());
+ definePosition(awtContainer.getX(), awtContainer.getY());
}
if(null!=awtFrame) {
awtFrame.setTitle(getTitle());
}
awtContainer.setLayout(new BorderLayout());
-
+
if( null == awtCanvas ) {
awtCanvas = new AWTCanvas(capsRequested, WindowDriver.this.capabilitiesChooser);
// canvas.addComponentListener(listener);
awtContainer.add(awtCanvas, BorderLayout.CENTER);
-
+
// via EDT ..
new AWTMouseAdapter(this).addTo(awtCanvas); // fwd all AWT Mouse events to here
new AWTKeyAdapter(this).addTo(awtCanvas); // fwd all AWT Key events to here
-
+
// direct w/o EDT
new AWTWindowAdapter(new LocalWindowListener(), this).addTo(awtCanvas); // fwd all AWT Window events to here
}
reconfigureWindowImpl(getX(), getY(), getWidth(), getHeight(), getReconfigureFlags(FLAG_CHANGE_VISIBILITY | FLAG_CHANGE_DECORATION, true));
// throws exception if failed ..
-
+
final NativeWindow nw = awtCanvas.getNativeWindow();
if( null != nw ) {
- setGraphicsConfiguration( awtCanvas.getAWTGraphicsConfiguration() );
+ setGraphicsConfiguration( awtCanvas.getAWTGraphicsConfiguration() );
setWindowHandle( nw.getWindowHandle() );
}
}
+ @Override
protected void closeNativeImpl() {
setWindowHandle(0);
if(null!=awtContainer) {
@@ -153,7 +156,7 @@ public class WindowDriver extends WindowImpl {
owningFrame=false;
}
awtCanvas = null;
- awtFrame = null;
+ awtFrame = null;
awtContainer = null;
}
@@ -166,16 +169,17 @@ public class WindowDriver extends WindowImpl {
throw new NativeWindowException("Error Device change null GraphicsConfiguration: "+this);
}
setGraphicsConfiguration(cfg);
-
+
// propagate new info ..
((ScreenDriver)getScreen()).setAWTGraphicsScreen((AWTGraphicsScreen)cfg.getScreen());
((DisplayDriver)getScreen().getDisplay()).setAWTGraphicsDevice((AWTGraphicsDevice)cfg.getScreen().getDevice());
-
+
((ScreenDriver)getScreen()).updateVirtualScreenOriginAndSize();
}
return res;
}
+ @Override
protected void updateInsetsImpl(javax.media.nativewindow.util.Insets insets) {
final Insets contInsets = awtContainer.getInsets();
insets.set(contInsets.left, contInsets.right, contInsets.top, contInsets.bottom);
@@ -213,7 +217,8 @@ public class WindowDriver extends WindowImpl {
awtCanvas.invalidate();
awtContainer.validate();
}
-
+
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("AWTWindow reconfig: "+x+"/"+y+" "+width+"x"+height+", "+
@@ -228,7 +233,7 @@ public class WindowDriver extends WindowImpl {
}
}
}
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
if( 0 != ( FLAG_IS_VISIBLE & flags) ) {
setCanvasSizeImpl(width, height);
@@ -244,15 +249,15 @@ public class WindowDriver extends WindowImpl {
}
}
defineSize(width, height); // we are on AWT-EDT .. change values immediately
-
+
if( awtContainer.getX() != x || awtContainer.getY() != y ) {
awtContainer.setLocation(x, y);
}
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
if( 0 != ( FLAG_IS_VISIBLE & flags ) ) {
if( !hasDeviceChanged() ) {
- // oops ??
+ // oops ??
final AWTGraphicsConfiguration cfg = awtCanvas.getAWTGraphicsConfiguration();
if(null == cfg) {
throw new NativeWindowException("Error: !hasDeviceChanged && null == GraphicsConfiguration: "+this);
@@ -262,22 +267,23 @@ public class WindowDriver extends WindowImpl {
}
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
return true;
}
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
java.awt.Point ap = awtCanvas.getLocationOnScreen();
ap.translate(x, y);
return new Point((int)(ap.getX()+0.5),(int)(ap.getY()+0.5));
}
-
+
@Override
public NativeSurface getWrappedSurface() {
return ( null != awtCanvas ) ? awtCanvas.getNativeWindow() : null;
}
- class LocalWindowListener implements com.jogamp.newt.event.WindowListener {
+ class LocalWindowListener implements com.jogamp.newt.event.WindowListener {
@Override
public void windowMoved(com.jogamp.newt.event.WindowEvent e) {
if(null!=awtContainer) {
@@ -304,11 +310,11 @@ public class WindowDriver extends WindowImpl {
}
@Override
public void windowGainedFocus(WindowEvent e) {
- WindowDriver.this.focusChanged(false, true);
+ WindowDriver.this.focusChanged(false, true);
}
@Override
public void windowLostFocus(WindowEvent e) {
- WindowDriver.this.focusChanged(false, false);
+ WindowDriver.this.focusChanged(false, false);
}
@Override
public void windowRepaint(WindowUpdateEvent e) {
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/egl/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/egl/DisplayDriver.java
index 112be2b04..9da671d37 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/egl/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/egl/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.bcm.egl;
@@ -61,6 +61,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
final long handle = CreateDisplay(ScreenDriver.fixedWidth, ScreenDriver.fixedHeight);
if (handle == EGL.EGL_NO_DISPLAY) {
@@ -69,6 +70,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
aDevice = new EGLGraphicsDevice(EGL.EGL_DEFAULT_DISPLAY, handle, AbstractGraphicsDevice.DEFAULT_CONNECTION, AbstractGraphicsDevice.DEFAULT_UNIT, null);
}
+ @Override
protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
if (aDevice.getHandle() != EGL.EGL_NO_DISPLAY) {
DestroyDisplay(aDevice.getHandle());
@@ -76,6 +78,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() {
// n/a .. DispatchMessages();
}
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/egl/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/egl/ScreenDriver.java
index abe2908b0..d3231557f 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/egl/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/egl/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.bcm.egl;
@@ -53,16 +53,19 @@ public class ScreenDriver extends jogamp.newt.ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), screen_idx);
}
+ @Override
protected void closeNativeImpl() { }
+ @Override
protected int validateScreenIndex(int idx) {
- return 0; // only one screen available
+ return 0; // only one screen available
}
-
+
@Override
protected final void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache) {
int[] props = new int[ MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES_ALL ];
@@ -99,11 +102,12 @@ public class ScreenDriver extends jogamp.newt.ScreenImpl {
protected boolean setCurrentMonitorModeImpl(final MonitorDevice monitor, final MonitorMode mode) {
return false;
}
-
+
+ @Override
protected void calcVirtualScreenOriginAndSize(Rectangle vOriginSize) {
vOriginSize.set(0, 0, fixedWidth, fixedHeight); // FIXME
}
-
+
//----------------------------------------------------------------------
// Internals only
//
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/egl/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/egl/WindowDriver.java
index 49d3d98ba..39f168e0f 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/egl/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/egl/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.bcm.egl;
@@ -52,11 +52,12 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
public WindowDriver() {
}
+ @Override
protected void createNativeImpl() {
if(0!=getParentWindowHandle()) {
throw new RuntimeException("Window parenting not supported (yet)");
}
- // query a good configuration, however chose the final one by the native queried egl-cfg-id
+ // query a good configuration, however chose the final one by the native queried egl-cfg-id
// after creation at {@link #windowCreated(int, int, int)}.
final AbstractGraphicsConfiguration cfg = GraphicsConfigurationFactory.getFactory(getScreen().getDisplay().getGraphicsDevice(), capsRequested).chooseGraphicsConfiguration(
capsRequested, capsRequested, capabilitiesChooser, getScreen().getGraphicsScreen(), VisualIDHolder.VID_UNDEFINED);
@@ -72,12 +73,14 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
}
}
+ @Override
protected void closeNativeImpl() {
if(0!=windowHandleClose) {
CloseWindow(getDisplayHandle(), windowHandleClose);
}
}
+ @Override
protected void requestFocusImpl(boolean reparented) { }
protected void setSizeImpl(int width, int height) {
@@ -89,8 +92,9 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
}
}
- protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
- if(0!=getWindowHandle()) {
+ @Override
+ protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
+ if(0!=getWindowHandle()) {
if(0 != ( FLAG_CHANGE_FULLSCREEN & flags)) {
if( 0 != ( FLAG_IS_FULLSCREEN & flags) ) {
// n/a in BroadcomEGL
@@ -110,19 +114,21 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
if(x>=0 || y>=0) {
System.err.println("BCEGL Window.setPositionImpl n/a in BroadcomEGL");
}
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
return true;
}
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return new Point(x,y);
}
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop ..
+ // nop ..
}
@Override
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java
index 4872a9071..d8d93f123 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/DisplayDriver.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -59,20 +59,23 @@ public class DisplayDriver extends DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
// FIXME: map name to EGL_*_DISPLAY
aDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(EGL.EGL_DEFAULT_DISPLAY, AbstractGraphicsDevice.DEFAULT_CONNECTION, AbstractGraphicsDevice.DEFAULT_UNIT);
}
+ @Override
protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() {
DispatchMessages();
}
- protected static native boolean initIDs();
+ protected static native boolean initIDs();
private native void DispatchMessages();
}
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/ScreenDriver.java
index be99052d7..dc2a8459a 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/ScreenDriver.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -45,17 +45,20 @@ public class ScreenDriver extends ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), screen_idx);
initNative();
}
+ @Override
protected void closeNativeImpl() { }
+ @Override
protected int validateScreenIndex(int idx) {
- return 0; // only one screen available
- }
-
+ return 0; // only one screen available
+ }
+
@Override
protected final void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache) {
int[] props = new int[ MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES_ALL ];
@@ -92,20 +95,20 @@ public class ScreenDriver extends ScreenImpl {
protected boolean setCurrentMonitorModeImpl(final MonitorDevice monitor, final MonitorMode mode) {
return false;
}
-
+
@Override
protected void calcVirtualScreenOriginAndSize(Rectangle vOriginSize) {
vOriginSize.set(0, 0, cachedWidth, cachedHeight);
}
-
+
/** Called from {@link #initNative()}. */
protected void setScreenSize(int width, int height) {
cachedWidth = width;
cachedHeight = height;
}
-
+
private static int cachedWidth = 0;
- private static int cachedHeight = 0;
+ private static int cachedHeight = 0;
protected static native boolean initIDs();
protected native void initNative();
diff --git a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java
index e820439d0..4d4977776 100644
--- a/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/bcm/vc/iv/WindowDriver.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -55,6 +55,7 @@ public class WindowDriver extends WindowImpl {
public WindowDriver() {
}
+ @Override
protected void createNativeImpl() {
if(0!=getParentWindowHandle()) {
throw new RuntimeException("Window parenting not supported (yet)");
@@ -65,7 +66,7 @@ public class WindowDriver extends WindowImpl {
final EGLGraphicsDevice aDevice = (EGLGraphicsDevice) aScreen.getDevice();
final EGLGraphicsDevice eglDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(aDevice.getNativeDisplayID(), aDevice.getConnection(), aDevice.getUnitID());
final DefaultGraphicsScreen eglScreen = new DefaultGraphicsScreen(eglDevice, aScreen.getIndex());
-
+
final AbstractGraphicsConfiguration cfg = GraphicsConfigurationFactory.getFactory(getScreen().getDisplay().getGraphicsDevice(), capsRequested).chooseGraphicsConfiguration(
capsRequested, capsRequested, capabilitiesChooser, eglScreen, VisualIDHolder.VID_UNDEFINED);
if (null == cfg) {
@@ -89,33 +90,36 @@ public class WindowDriver extends WindowImpl {
windowHandleClose = nativeWindowHandle;
addWindowListener(LinuxMouseTracker.getSingleton());
addWindowListener(LinuxEventDeviceTracker.getSingleton());
- focusChanged(false, true);
+ focusChanged(false, true);
}
+ @Override
protected void closeNativeImpl() {
final EGLGraphicsDevice eglDevice = (EGLGraphicsDevice) getGraphicsConfiguration().getScreen().getDevice();
-
+
removeWindowListener(LinuxMouseTracker.getSingleton());
removeWindowListener(LinuxEventDeviceTracker.getSingleton());
-
+
if(0!=windowHandleClose) {
CloseWindow(windowHandleClose, windowUserData);
windowUserData=0;
}
-
+
eglDevice.close();
}
- protected void requestFocusImpl(boolean reparented) {
+ @Override
+ protected void requestFocusImpl(boolean reparented) {
focusChanged(false, true);
}
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
setVisible0(nativeWindowHandle, 0 != ( FLAG_IS_VISIBLE & flags));
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
if(0!=nativeWindowHandle) {
if(0 != ( FLAG_CHANGE_FULLSCREEN & flags)) {
final boolean fs = 0 != ( FLAG_IS_FULLSCREEN & flags) ;
@@ -135,22 +139,24 @@ public class WindowDriver extends WindowImpl {
System.err.println("setPosition n/a in KD");
}
}
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
return true;
}
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return new Point(x,y);
}
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop ..
+ // nop ..
}
-
+
//----------------------------------------------------------------------
// Internals only
//
diff --git a/src/newt/classes/jogamp/newt/driver/intel/gdl/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/intel/gdl/DisplayDriver.java
index ee93eb932..cc435540f 100644
--- a/src/newt/classes/jogamp/newt/driver/intel/gdl/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/intel/gdl/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.intel.gdl;
@@ -59,6 +59,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
synchronized(DisplayDriver.class) {
if(0==initCounter) {
@@ -72,6 +73,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
aDevice = new DefaultGraphicsDevice(NativeWindowFactory.TYPE_DEFAULT, AbstractGraphicsDevice.DEFAULT_CONNECTION, AbstractGraphicsDevice.DEFAULT_UNIT, displayHandle);
}
+ @Override
protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
if(0==displayHandle) {
throw new NativeWindowException("displayHandle null; initCnt "+initCounter);
@@ -87,6 +89,7 @@ public class DisplayDriver extends jogamp.newt.DisplayImpl {
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() {
if(0!=displayHandle) {
DispatchMessages(displayHandle, focusedWindow);
diff --git a/src/newt/classes/jogamp/newt/driver/intel/gdl/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/intel/gdl/ScreenDriver.java
index 27b776562..44802e348 100644
--- a/src/newt/classes/jogamp/newt/driver/intel/gdl/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/intel/gdl/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.intel.gdl;
@@ -53,18 +53,21 @@ public class ScreenDriver extends jogamp.newt.ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
AbstractGraphicsDevice adevice = getDisplay().getGraphicsDevice();
GetScreenInfo(adevice.getHandle(), screen_idx);
aScreen = new DefaultGraphicsScreen(adevice, screen_idx);
}
+ @Override
protected void closeNativeImpl() { }
+ @Override
protected int validateScreenIndex(int idx) {
- return 0; // only one screen available
+ return 0; // only one screen available
}
-
+
@Override
protected final void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache) {
int[] props = new int[ MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES_ALL ];
@@ -101,11 +104,12 @@ public class ScreenDriver extends jogamp.newt.ScreenImpl {
protected boolean setCurrentMonitorModeImpl(final MonitorDevice monitor, final MonitorMode mode) {
return false;
}
-
+
+ @Override
protected void calcVirtualScreenOriginAndSize(Rectangle vOriginSize) {
vOriginSize.set(0, 0, cachedWidth, cachedHeight);
}
-
+
//----------------------------------------------------------------------
// Internals only
//
@@ -118,7 +122,7 @@ public class ScreenDriver extends jogamp.newt.ScreenImpl {
cachedWidth = width;
cachedHeight = height;
}
-
+
private static int cachedWidth = 0;
private static int cachedHeight = 0;
}
diff --git a/src/newt/classes/jogamp/newt/driver/intel/gdl/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/intel/gdl/WindowDriver.java
index 98335f192..0e96c65d0 100644
--- a/src/newt/classes/jogamp/newt/driver/intel/gdl/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/intel/gdl/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.intel.gdl;
@@ -48,6 +48,7 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
static long nextWindowHandle = 1;
+ @Override
protected void createNativeImpl() {
if(0!=getParentWindowHandle()) {
throw new NativeWindowException("GDL Window does not support window parenting");
@@ -72,6 +73,7 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
}
}
+ @Override
protected void closeNativeImpl() {
if(0!=surfaceHandle) {
synchronized(WindowDriver.class) {
@@ -82,6 +84,7 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
}
}
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
ScreenDriver screen = (ScreenDriver) getScreen();
@@ -108,10 +111,11 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
}
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
return true;
}
+ @Override
protected void requestFocusImpl(boolean reparented) {
((DisplayDriver)getScreen().getDisplay()).setFocus(this);
}
@@ -121,14 +125,16 @@ public class WindowDriver extends jogamp.newt.WindowImpl {
return surfaceHandle;
}
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return new Point(x,y);
}
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop ..
+ // nop ..
}
-
+
//----------------------------------------------------------------------
// Internals only
//
diff --git a/src/newt/classes/jogamp/newt/driver/kd/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/kd/DisplayDriver.java
index 3cd72e971..929688b11 100644
--- a/src/newt/classes/jogamp/newt/driver/kd/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/kd/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.kd;
@@ -59,15 +59,18 @@ public class DisplayDriver extends DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
// FIXME: map name to EGL_*_DISPLAY
aDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(EGL.EGL_DEFAULT_DISPLAY, AbstractGraphicsDevice.DEFAULT_CONNECTION, AbstractGraphicsDevice.DEFAULT_UNIT);
}
+ @Override
protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() {
DispatchMessages();
}
diff --git a/src/newt/classes/jogamp/newt/driver/kd/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/kd/ScreenDriver.java
index f893275ca..9ebe2629a 100644
--- a/src/newt/classes/jogamp/newt/driver/kd/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/kd/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.kd;
@@ -51,16 +51,19 @@ public class ScreenDriver extends ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), screen_idx);
}
+ @Override
protected void closeNativeImpl() { }
+ @Override
protected int validateScreenIndex(int idx) {
- return 0; // only one screen available
- }
-
+ return 0; // only one screen available
+ }
+
@Override
protected final void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache) {
int[] props = new int[ MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES_ALL ];
@@ -97,16 +100,17 @@ public class ScreenDriver extends ScreenImpl {
protected boolean setCurrentMonitorModeImpl(final MonitorDevice monitor, final MonitorMode mode) {
return false;
}
-
+
+ @Override
protected void calcVirtualScreenOriginAndSize(Rectangle vOriginSize) {
vOriginSize.set(0, 0, cachedWidth, cachedHeight);
}
-
+
protected void sizeChanged(int w, int h) {
cachedWidth = w;
cachedHeight = h;
}
-
+
private static int cachedWidth = 0;
- private static int cachedHeight = 0;
+ private static int cachedHeight = 0;
}
diff --git a/src/newt/classes/jogamp/newt/driver/kd/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/kd/WindowDriver.java
index c733a3e94..158e6ab2f 100644
--- a/src/newt/classes/jogamp/newt/driver/kd/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/kd/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.kd;
@@ -56,6 +56,7 @@ public class WindowDriver extends WindowImpl {
public WindowDriver() {
}
+ @Override
protected void createNativeImpl() {
if(0!=getParentWindowHandle()) {
throw new RuntimeException("Window parenting not supported (yet)");
@@ -83,6 +84,7 @@ public class WindowDriver extends WindowImpl {
windowHandleClose = eglWindowHandle;
}
+ @Override
protected void closeNativeImpl() {
if(0!=windowHandleClose) {
CloseWindow(windowHandleClose, windowUserData);
@@ -90,14 +92,16 @@ public class WindowDriver extends WindowImpl {
}
}
+ @Override
protected void requestFocusImpl(boolean reparented) { }
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
setVisible0(eglWindowHandle, 0 != ( FLAG_IS_VISIBLE & flags));
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
if(0!=eglWindowHandle) {
if(0 != ( FLAG_CHANGE_FULLSCREEN & flags)) {
final boolean fs = 0 != ( FLAG_IS_FULLSCREEN & flags) ;
@@ -117,22 +121,24 @@ public class WindowDriver extends WindowImpl {
System.err.println("setPosition n/a in KD");
}
}
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
-
+
return true;
}
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return new Point(x,y);
}
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop ..
+ // nop ..
}
-
+
//----------------------------------------------------------------------
// Internals only
//
diff --git a/src/newt/classes/jogamp/newt/driver/linux/LinuxEventDeviceTracker.java b/src/newt/classes/jogamp/newt/driver/linux/LinuxEventDeviceTracker.java
index e68b91d82..b7c86a26d 100644
--- a/src/newt/classes/jogamp/newt/driver/linux/LinuxEventDeviceTracker.java
+++ b/src/newt/classes/jogamp/newt/driver/linux/LinuxEventDeviceTracker.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -126,7 +126,7 @@ public class LinuxEventDeviceTracker implements WindowListener {
try {
while(true) {
Thread.sleep(1000);
- }
+ }
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -186,7 +186,7 @@ public class LinuxEventDeviceTracker implements WindowListener {
/**
* The Linux input event interface.
* http://www.kernel.org/doc/Documentation/input/input.txt
- *
+ *
* struct input_event {
* struct timeval time;
* unsigned short type;
@@ -262,7 +262,7 @@ public class LinuxEventDeviceTracker implements WindowListener {
break;
case 1: // EV_KEY
keyCode = LinuxEVKey2NewtVKey(code); // The device independent code.
- keyChar = NewtVKey2Unicode(keyCode, modifiers); // The printable character w/ key modifiers.
+ keyChar = NewtVKey2Unicode(keyCode, modifiers); // The printable character w/ key modifiers.
if(Window.DEBUG_KEY_EVENT) {
System.out.println("[EV_KEY: [time "+timeSeconds+":"+timeSecondFraction+"] type "+type+" / code "+code+" = value "+value);
}
@@ -946,7 +946,7 @@ public class LinuxEventDeviceTracker implements WindowListener {
case 248: // mic mute
break; // FIXME
- default:
+ default:
}
if(Window.DEBUG_KEY_EVENT) {
diff --git a/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java b/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java
index 0d6278bfb..1e314b7f4 100644
--- a/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java
+++ b/src/newt/classes/jogamp/newt/driver/linux/LinuxMouseTracker.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -48,16 +48,16 @@ import com.jogamp.newt.event.WindowUpdateEvent;
* within it's own polling thread.
*/
public class LinuxMouseTracker implements WindowListener {
-
+
private static final LinuxMouseTracker lmt;
-
+
static {
lmt = new LinuxMouseTracker();
final Thread t = new Thread(lmt.mouseDevicePoller, "NEWT-LinuxMouseTracker");
t.setDaemon(true);
t.start();
}
-
+
public static LinuxMouseTracker getSingleton() {
return lmt;
}
@@ -71,7 +71,7 @@ public class LinuxMouseTracker implements WindowListener {
private short old_buttonDown = 0;
private WindowImpl focusedWindow = null;
private MouseDevicePoller mouseDevicePoller = new MouseDevicePoller();
-
+
@Override
public void windowResized(WindowEvent e) { }
@@ -107,7 +107,7 @@ public class LinuxMouseTracker implements WindowListener {
@Override
public void windowRepaint(WindowUpdateEvent e) { }
-
+
class MouseDevicePoller implements Runnable {
@Override
public void run() {
@@ -150,17 +150,17 @@ public class LinuxMouseTracker implements WindowListener {
yo=(b[0]&128)>0;
xd=b[1];
yd=b[2];
-
+
x+=xd;
y-=yd;
-
+
if(x<0) {
x=0;
}
if(y<0) {
y=0;
}
-
+
buttonDown = 0;
if(lb) {
buttonDown = MouseEvent.BUTTON1;
@@ -171,7 +171,7 @@ public class LinuxMouseTracker implements WindowListener {
if(rb) {
buttonDown = MouseEvent.BUTTON3;
}
-
+
if(null != focusedWindow) {
if( x >= focusedWindow.getScreen().getWidth() ) {
x = focusedWindow.getScreen().getWidth() - 1;
@@ -179,31 +179,31 @@ public class LinuxMouseTracker implements WindowListener {
if( y >= focusedWindow.getScreen().getHeight() ) {
y = focusedWindow.getScreen().getHeight() - 1;
}
- int wx = x - focusedWindow.getX(), wy = y - focusedWindow.getY();
-
+ int wx = x - focusedWindow.getX(), wy = y - focusedWindow.getY();
+
if(old_x != x || old_y != y) {
// mouse moved
- focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_MOVED, 0, wx, wy, (short)0, 0 );
+ focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_MOVED, 0, wx, wy, (short)0, 0 );
}
-
+
if(old_buttonDown != buttonDown) {
// press/release
if( 0 != buttonDown ) {
- focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_PRESSED, 0, wx, wy, buttonDown, 0 );
+ focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_PRESSED, 0, wx, wy, buttonDown, 0 );
} else {
- focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_RELEASED, 0, wx, wy, old_buttonDown, 0 );
+ focusedWindow.sendMouseEvent(MouseEvent.EVENT_MOUSE_RELEASED, 0, wx, wy, old_buttonDown, 0 );
}
- }
+ }
} else {
if(Window.DEBUG_MOUSE_EVENT) {
System.out.println(x+"/"+y+", hs="+hs+",vs="+vs+",lb="+lb+",rb="+rb+",mb="+mb+",xo="+xo+",yo="+yo+"xd="+xd+",yd="+yd);
}
}
-
+
old_x = x;
old_y = y;
old_buttonDown = buttonDown;
-
+
}
if(null != fis) {
try {
@@ -214,5 +214,5 @@ public class LinuxMouseTracker implements WindowListener {
}
}
}
- }
+ }
}
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/macosx/DisplayDriver.java
index a99bc4f23..c44685dc8 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2012 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.macosx;
@@ -60,19 +60,22 @@ public class DisplayDriver extends DisplayImpl {
public static void initSingleton() {
// just exist to ensure static init has been run
}
-
+
public DisplayDriver() {
}
+ @Override
protected void dispatchMessagesNative() {
// nop
}
-
+
+ @Override
protected void createNativeImpl() {
aDevice = new MacOSXGraphicsDevice(AbstractGraphicsDevice.DEFAULT_UNIT);
}
- protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
+ @Override
+ protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
aDevice.close();
}
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/MacKeyUtil.java b/src/newt/classes/jogamp/newt/driver/macosx/MacKeyUtil.java
index baa94facd..a89150d7c 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/MacKeyUtil.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/MacKeyUtil.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -30,7 +30,7 @@ package jogamp.newt.driver.macosx;
import com.jogamp.newt.event.KeyEvent;
public class MacKeyUtil {
-
+
//
// KeyCodes (Layout Dependent)
//
@@ -64,17 +64,17 @@ public class MacKeyUtil {
private static final short kVK_ANSI_8 = 0x1C;
private static final short kVK_ANSI_0 = 0x1D;
private static final short kVK_ANSI_RightBracket = 0x1E;
- private static final short kVK_ANSI_O = 0x1F;
+ private static final short kVK_ANSI_O = 0x1F;
private static final short kVK_ANSI_U = 0x20;
private static final short kVK_ANSI_LeftBracket = 0x21;
private static final short kVK_ANSI_I = 0x22;
private static final short kVK_ANSI_P = 0x23;
private static final short kVK_ANSI_L = 0x25;
private static final short kVK_ANSI_J = 0x26;
- private static final short kVK_ANSI_Quote = 0x27;
+ private static final short kVK_ANSI_Quote = 0x27;
private static final short kVK_ANSI_K = 0x28;
private static final short kVK_ANSI_Semicolon = 0x29;
- private static final short kVK_ANSI_Backslash = 0x2A;
+ private static final short kVK_ANSI_Backslash = 0x2A;
private static final short kVK_ANSI_Comma = 0x2B;
private static final short kVK_ANSI_Slash = 0x2C;
private static final short kVK_ANSI_N = 0x2D;
@@ -99,7 +99,7 @@ public class MacKeyUtil {
private static final short kVK_ANSI_Keypad7 = 0x59;
private static final short kVK_ANSI_Keypad8 = 0x5B;
private static final short kVK_ANSI_Keypad9 = 0x5C;
-
+
//
// KeyCodes (Layout Independent)
//
@@ -150,7 +150,7 @@ public class MacKeyUtil {
private static final short kVK_RightArrow = 0x7C;
private static final short kVK_DownArrow = 0x7D;
private static final short kVK_UpArrow = 0x7E;
-
+
//
// Key constants handled differently on Mac OS X than other platforms
//
@@ -230,8 +230,8 @@ public class MacKeyUtil {
private static final char NSHelpFunctionKey = 0xF746;
private static final char NSModeSwitchFunctionKey = 0xF747;
*/
-
- static short validateKeyCode(short keyCode, char keyChar) {
+
+ static short validateKeyCode(short keyCode, char keyChar) {
// OS X Virtual Keycodes
switch(keyCode) {
//
@@ -267,17 +267,17 @@ public class MacKeyUtil {
case kVK_ANSI_8: return KeyEvent.VK_8;
case kVK_ANSI_0: return KeyEvent.VK_0;
case kVK_ANSI_RightBracket: return KeyEvent.VK_CLOSE_BRACKET;
- case kVK_ANSI_O: return KeyEvent.VK_O;
+ case kVK_ANSI_O: return KeyEvent.VK_O;
case kVK_ANSI_U: return KeyEvent.VK_U;
case kVK_ANSI_LeftBracket: return KeyEvent.VK_OPEN_BRACKET;
case kVK_ANSI_I: return KeyEvent.VK_I;
case kVK_ANSI_P: return KeyEvent.VK_P;
case kVK_ANSI_L: return KeyEvent.VK_L;
case kVK_ANSI_J: return KeyEvent.VK_J;
- case kVK_ANSI_Quote: return KeyEvent.VK_QUOTE;
+ case kVK_ANSI_Quote: return KeyEvent.VK_QUOTE;
case kVK_ANSI_K: return KeyEvent.VK_K;
case kVK_ANSI_Semicolon: return KeyEvent.VK_SEMICOLON;
- case kVK_ANSI_Backslash: return KeyEvent.VK_BACK_SLASH;
+ case kVK_ANSI_Backslash: return KeyEvent.VK_BACK_SLASH;
case kVK_ANSI_Comma: return KeyEvent.VK_COMMA;
case kVK_ANSI_Slash: return KeyEvent.VK_SLASH;
case kVK_ANSI_N: return KeyEvent.VK_N;
@@ -302,7 +302,7 @@ public class MacKeyUtil {
case kVK_ANSI_Keypad7: return KeyEvent.VK_7;
case kVK_ANSI_Keypad8: return KeyEvent.VK_8;
case kVK_ANSI_Keypad9: return KeyEvent.VK_9;
-
+
//
// KeyCodes (Layout Independent)
//
@@ -321,7 +321,7 @@ public class MacKeyUtil {
case kVK_RightControl: return KeyEvent.VK_CONTROL;
// case kVK_Function: return KeyEvent.VK_F;
case kVK_F17: return KeyEvent.VK_F17;
- // case kVK_VolumeUp:
+ // case kVK_VolumeUp:
// case kVK_VolumeDown:
// case kVK_Mute:
case kVK_F18: return KeyEvent.VK_F18;
@@ -354,7 +354,7 @@ public class MacKeyUtil {
case kVK_DownArrow: return KeyEvent.VK_DOWN;
case kVK_UpArrow: return KeyEvent.VK_UP;
}
-
+
switch (keyChar) {
case NSUpArrowFunctionKey: return KeyEvent.VK_UP;
case NSDownArrowFunctionKey: return KeyEvent.VK_DOWN;
@@ -422,5 +422,5 @@ public class MacKeyUtil {
}
return (short) keyChar; // let's hope for the best (compatibility of keyChar/keyCode's)
- }
+ }
}
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/macosx/ScreenDriver.java
index a3bb26731..4f3cc691b 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2011 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.macosx;
@@ -44,7 +44,7 @@ import com.jogamp.newt.MonitorDevice;
import com.jogamp.newt.MonitorMode;
public class ScreenDriver extends ScreenImpl {
-
+
static {
DisplayDriver.initSingleton();
}
@@ -52,10 +52,12 @@ public class ScreenDriver extends ScreenImpl {
public ScreenDriver() {
}
+ @Override
protected void createNativeImpl() {
aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), screen_idx);
}
+ @Override
protected void closeNativeImpl() { }
private MonitorMode getMonitorModeImpl(MonitorModeProps.Cache cache, int crt_idx, int mode_idx) {
@@ -68,7 +70,7 @@ public class ScreenDriver extends ScreenImpl {
}
return res;
}
-
+
@Override
protected final void collectNativeMonitorModesAndDevicesImpl(MonitorModeProps.Cache cache) {
int crtIdx = 0;
@@ -85,16 +87,16 @@ public class ScreenDriver extends ScreenImpl {
final MonitorMode currentMode = getMonitorModeImpl(cache, crtIdx, -1);
if ( null == currentMode ) {
throw new InternalError("Could not gather current mode of device "+crtIdx+", but gathered "+modeIdx+" modes");
- }
+ }
final int[] monitorProps = getMonitorProps0(crtIdx);
if ( null == monitorProps ) {
throw new InternalError("Could not gather device "+crtIdx+", but gathered "+modeIdx+" modes");
- }
+ }
// merge monitor-props + supported modes
MonitorModeProps.streamInMonitorDevice(null, cache, this, supportedModes, currentMode, monitorProps, 0);
-
+
// next monitor, 1st mode
- supportedModes= new ArrayHashSet<MonitorMode>();
+ supportedModes= new ArrayHashSet<MonitorMode>();
crtIdx++;
modeIdx=0;
} else {
@@ -108,16 +110,17 @@ public class ScreenDriver extends ScreenImpl {
protected MonitorMode queryCurrentMonitorModeImpl(MonitorDevice monitor) {
return getMonitorModeImpl(null, monitor.getId(), -1);
}
-
+
@Override
protected boolean setCurrentMonitorModeImpl(MonitorDevice monitor, MonitorMode mode) {
return setMonitorMode0(monitor.getId(), mode.getId(), mode.getRotation());
}
-
+
+ @Override
protected int validateScreenIndex(int idx) {
- return 0; // big-desktop w/ multiple monitor attached, only one screen available
+ return 0; // big-desktop w/ multiple monitor attached, only one screen available
}
-
+
private native int[] getMonitorProps0(int crt_idx);
private native int[] getMonitorMode0(int crt_index, int mode_idx);
private native boolean setMonitorMode0(int crt_index, int nativeId, int rot);
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
index 08638d868..7db3e2aab 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.macosx;
@@ -53,14 +53,14 @@ import com.jogamp.newt.event.InputEvent;
import com.jogamp.newt.event.KeyEvent;
public class WindowDriver extends WindowImpl implements MutableSurface, DriverClearFocus, DriverUpdatePosition {
-
+
static {
DisplayDriver.initSingleton();
}
public WindowDriver() {
}
-
+
@Override
protected void createNativeImpl() {
final AbstractGraphicsConfiguration cfg = GraphicsConfigurationFactory.getFactory(getScreen().getDisplay().getGraphicsDevice(), capsRequested).chooseGraphicsConfiguration(
@@ -69,7 +69,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
throw new NativeWindowException("Error choosing GraphicsConfiguration creating window: "+this);
}
setGraphicsConfiguration(cfg);
- reconfigureWindowImpl(getX(), getY(), getWidth(), getHeight(), getReconfigureFlags(FLAG_CHANGE_VISIBILITY, true));
+ reconfigureWindowImpl(getX(), getY(), getWidth(), getHeight(), getReconfigureFlags(FLAG_CHANGE_VISIBILITY, true));
if (0 == getWindowHandle()) {
throw new NativeWindowException("Error creating window");
}
@@ -79,7 +79,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
protected void closeNativeImpl() {
try {
if(DEBUG_IMPLEMENTATION) { System.err.println("MacWindow.CloseAction "+Thread.currentThread().getName()); }
- final long handle = getWindowHandle();
+ final long handle = getWindowHandle();
visibleChanged(true, false);
setWindowHandle(0);
surfaceHandle = 0;
@@ -87,21 +87,22 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
isOffscreenInstance = false;
if (0 != handle) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
close0( handle );
} } );
}
} catch (Throwable t) {
- if(DEBUG_IMPLEMENTATION) {
+ if(DEBUG_IMPLEMENTATION) {
Exception e = new Exception("Warning: closeNative failed - "+Thread.currentThread().getName(), t);
e.printStackTrace();
}
}
}
-
+
@Override
protected int lockSurfaceImpl() {
- /**
+ /**
* if( isOffscreenInstance ) {
* return LOCK_SUCCESS;
* }
@@ -116,7 +117,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
@Override
protected void unlockSurfaceImpl() {
- /**
+ /**
* if( isOffscreenInstance ) {
* return;
* }
@@ -129,7 +130,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
}
}
-
+
@Override
public final long getSurfaceHandle() {
return 0 != sscSurfaceHandle ? sscSurfaceHandle : surfaceHandle;
@@ -144,22 +145,24 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
if (isNativeValid()) {
if (0 != sscSurfaceHandle) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
orderOut0( 0 != getParentWindowHandle() ? getParentWindowHandle() : getWindowHandle() );
} } );
- } /** this is done by recreation!
+ } /** this is done by recreation!
else if (isVisible()){
OSXUtil.RunOnMainThread(false, new Runnable() {
public void run() {
orderFront0( 0!=getParentWindowHandle() ? getParentWindowHandle() : getWindowHandle() );
} } );
} */
- }
+ }
}
@Override
protected void setTitleImpl(final String title) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
setTitle0(getWindowHandle(), title);
} } );
@@ -172,6 +175,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
if(!isOffscreenInstance) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
requestFocus0(getWindowHandle(), force);
} } );
@@ -179,7 +183,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
focusChanged(false, true);
}
}
-
+
@Override
public final void clearFocus() {
if(DEBUG_IMPLEMENTATION) {
@@ -187,6 +191,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
if(!isOffscreenInstance) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
resignFocus0(getWindowHandle());
} } );
@@ -194,9 +199,9 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
focusChanged(false, false);
}
}
-
+
private boolean useParent(NativeWindow parent) { return null != parent && 0 != parent.getWindowHandle(); }
-
+
@Override
public void updatePosition(int x, int y) {
final long handle = getWindowHandle();
@@ -209,14 +214,15 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
System.err.println("MacWindow: updatePosition() parent["+useParent+" "+pX+"/"+pY+"] "+x+"/"+y+" -> "+x+"/"+y+" rel-client-pos, "+p0S+" screen-client-pos");
}
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
setWindowClientTopLeftPoint0(handle, p0S.getX(), p0S.getY(), isVisible());
} } );
// no native event (fullscreen, some reparenting)
positionChanged(true, x, y);
}
- }
-
+ }
+
@Override
protected void sizeChanged(boolean defer, int newWidth, int newHeight, boolean force) {
final long handle = getWindowHandle();
@@ -230,6 +236,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
System.err.println("MacWindow: sizeChanged() parent["+useParent+" "+x+"/"+y+"] "+getX()+"/"+getY()+" "+newWidth+"x"+newHeight+" -> "+p0S+" screen-client-pos");
}
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
setWindowClientTopLeftPoint0(getWindowHandle(), p0S.getX(), p0S.getY(), isVisible());
} } );
@@ -237,7 +244,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
super.sizeChanged(defer, newWidth, newHeight, force);
}
-
+
@Override
protected boolean reconfigureWindowImpl(final int x, final int y, final int width, final int height, int flags) {
final boolean _isOffscreenInstance = isOffscreenInstance(this, this.getParent());
@@ -250,11 +257,11 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
final boolean useParent = useParent(parent);
if( useParent ) {
pClientLevelOnSreen = getLocationOnScreenImpl(x, y, parent, useParent);
- } else {
+ } else {
pClientLevelOnSreen = new Point(x, y);
}
}
-
+
if(DEBUG_IMPLEMENTATION) {
final AbstractGraphicsConfiguration cWinCfg = this.getGraphicsConfiguration();
final NativeWindow pWin = getParent();
@@ -269,12 +276,13 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
"\n\t, "+getReconfigureFlagsAsString(null, flags));
// Thread.dumpStack();
}
-
+
final boolean setVisible = 0 != ( FLAG_IS_VISIBLE & flags);
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) && !setVisible ) {
if ( !isOffscreenInstance ) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
orderOut0(getWindowHandle());
visibleChanged(true, false);
@@ -290,13 +298,14 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
if(isOffscreenInstance) {
createWindow(true, 0 != getWindowHandle(), pClientLevelOnSreen, 64, 64, false, setVisible, false);
} else {
- createWindow(false, 0 != getWindowHandle(), pClientLevelOnSreen, width, height,
+ createWindow(false, 0 != getWindowHandle(), pClientLevelOnSreen, width, height,
0 != ( FLAG_IS_FULLSCREEN & flags), setVisible, 0 != ( FLAG_IS_ALWAYSONTOP & flags));
}
} else {
- if( width>0 && height>0 ) {
+ if( width>0 && height>0 ) {
if( !isOffscreenInstance ) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
setWindowClientTopLeftPointAndSize0(getWindowHandle(), pClientLevelOnSreen.getX(), pClientLevelOnSreen.getY(), width, height, setVisible);
} } );
@@ -306,8 +315,9 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
sizeChanged(true, width, height, false);
}
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) && setVisible ) {
- if( !isOffscreenInstance ) {
+ if( !isOffscreenInstance ) {
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
orderFront0(getWindowHandle());
visibleChanged(true, true);
@@ -321,7 +331,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("MacWindow reconfig.X: clientPos "+pClientLevelOnSreen+", "+width+"x"+height+" -> clientPos "+getLocationOnScreenImpl(0, 0)+", insets: "+getInsets());
+ System.err.println("MacWindow reconfig.X: clientPos "+pClientLevelOnSreen+", "+width+"x"+height+" -> clientPos "+getLocationOnScreenImpl(0, 0)+", insets: "+getInsets());
}
return true;
}
@@ -332,28 +342,28 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
final boolean useParent = useParent(parent);
return getLocationOnScreenImpl(x, y, parent, useParent);
}
-
+
private Point getLocationOnScreenImpl(final int x, final int y, final NativeWindow parent, final boolean useParent) {
if( !useParent && !isOffscreenInstance && 0 != surfaceHandle) {
return OSXUtil.GetLocationOnScreen(surfaceHandle, true, x, y);
}
-
+
final Point p = new Point(x, y);
if( useParent ) {
p.translate( parent.getLocationOnScreen(null) );
}
return p;
}
-
+
@Override
protected void updateInsetsImpl(Insets insets) {
// nop - using event driven insetsChange(..)
}
-
+
/** Callback for native screen position change event of the client area. */
- protected void screenPositionChanged(boolean defer, int newX, int newY) {
+ protected void screenPositionChanged(boolean defer, int newX, int newY) {
// passed coordinates are in screen position of the client area
- if(getWindowHandle()!=0) {
+ if(getWindowHandle()!=0) {
final NativeWindow parent = getParent();
if( null == parent || isOffscreenInstance ) {
if(DEBUG_IMPLEMENTATION) {
@@ -362,7 +372,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
positionChanged(defer, newX, newY);
} else {
// screen position -> rel child window position
- Point absPos = new Point(newX, newY);
+ Point absPos = new Point(newX, newY);
Point parentOnScreen = parent.getLocationOnScreen(null);
absPos.translate( parentOnScreen.scale(-1, -1) );
if(DEBUG_IMPLEMENTATION) {
@@ -374,10 +384,10 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
System.err.println("MacWindow.positionChanged.2 (Screen Pos - IGN): ("+getThreadName()+"): (defer: "+defer+") "+getX()+"/"+getY()+" -> "+newX+"/"+newY);
}
}
-
+
@Override
protected boolean setPointerVisibleImpl(final boolean pointerVisible) {
- if( !isOffscreenInstance ) {
+ if( !isOffscreenInstance ) {
return setPointerVisible0(getWindowHandle(), hasFocus(), pointerVisible);
} // else may need offscreen solution ? FIXME
return false;
@@ -385,29 +395,29 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
@Override
protected boolean confinePointerImpl(final boolean confine) {
- if( !isOffscreenInstance ) {
+ if( !isOffscreenInstance ) {
return confinePointer0(getWindowHandle(), confine);
} // else may need offscreen solution ? FIXME
return false;
}
-
+
@Override
protected void warpPointerImpl(final int x, final int y) {
- if( !isOffscreenInstance ) {
+ if( !isOffscreenInstance ) {
warpPointer0(getWindowHandle(), x, y);
} // else may need offscreen solution ? FIXME
}
-
+
@Override
public final void sendKeyEvent(short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
}
-
+
@Override
public final void enqueueKeyEvent(boolean wait, short eventType, int modifiers, short _keyCode, short _keySym, char keyChar) {
- throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
+ throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
}
-
+
protected final void enqueueKeyEvent(boolean wait, short eventType, int modifiers, short _keyCode, char keyChar, char keySymChar) {
// Note that we send the key char for the key code on this
// platform -- we do not get any useful key codes out of the system
@@ -427,7 +437,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
", was: pressed "+isKeyPressed(keyCode)+", isModifierKeyCode "+isModifierKeyCode+
", nativeValid "+isNativeValid()+", isOffscreen "+isOffscreenInstance);
} */
-
+
// OSX delivery order is PRESSED (t0), RELEASED (t1) and TYPED (t2) -> NEWT order: PRESSED (t0) and RELEASED (t1)
// Auto-Repeat: OSX delivers only PRESSED, inject auto-repeat RELEASE key _before_ PRESSED
switch(eventType) {
@@ -451,15 +461,15 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
//----------------------------------------------------------------------
// Internals only
- //
-
- private void createWindow(final boolean offscreenInstance, final boolean recreate,
- final PointImmutable pS, final int width, final int height,
+ //
+
+ private void createWindow(final boolean offscreenInstance, final boolean recreate,
+ final PointImmutable pS, final int width, final int height,
final boolean fullscreen, final boolean visible, final boolean alwaysOnTop) {
final long parentWinHandle = getParentWindowHandle();
final long preWinHandle = getWindowHandle();
-
+
if(DEBUG_IMPLEMENTATION) {
System.err.println("MacWindow.createWindow on thread "+Thread.currentThread().getName()+
": offscreen "+offscreenInstance+", recreate "+recreate+
@@ -474,8 +484,9 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
setWindowHandle(0);
if( 0 == surfaceHandle ) {
throw new NativeWindowException("Internal Error - create w/ window, but no Newt NSView");
- }
+ }
OSXUtil.RunOnMainThread(false, new Runnable() {
+ @Override
public void run() {
changeContentView0(parentWinHandle, preWinHandle, 0);
close0( preWinHandle );
@@ -483,14 +494,14 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
} else {
if( 0 != surfaceHandle ) {
throw new NativeWindowException("Internal Error - create w/o window, but has Newt NSView");
- }
+ }
surfaceHandle = createView0(pS.getX(), pS.getY(), width, height, fullscreen);
if( 0 == surfaceHandle ) {
throw new NativeWindowException("Could not create native view "+Thread.currentThread().getName()+" "+this);
}
}
-
- final long newWin = createWindow0( pS.getX(), pS.getY(), width, height, fullscreen,
+
+ final long newWin = createWindow0( pS.getX(), pS.getY(), width, height, fullscreen,
( isUndecorated() || offscreenInstance ) ? NSBorderlessWindowMask :
NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
NSBackingStoreBuffered, surfaceHandle);
@@ -498,10 +509,11 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
throw new NativeWindowException("Could not create native window "+Thread.currentThread().getName()+" "+this);
}
setWindowHandle( newWin );
-
+
final boolean isOpaque = getGraphicsConfiguration().getChosenCapabilities().isBackgroundOpaque() && !offscreenInstance;
- // Blocking initialization on main-thread!
+ // Blocking initialization on main-thread!
OSXUtil.RunOnMainThread(true, new Runnable() {
+ @Override
public void run() {
initWindow0( parentWinHandle, newWin, pS.getX(), pS.getY(), width, height,
isOpaque, fullscreen, visible && !offscreenInstance, surfaceHandle);
@@ -517,7 +529,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
ie.printStackTrace();
}
}
-
+
protected static native boolean initIDs0();
private native long createView0(int x, int y, int w, int h, boolean fullscreen);
private native long createWindow0(int x, int y, int w, int h, boolean fullscreen, int windowStyle, int backingStoreType, long view);
@@ -543,7 +555,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
private native void changeContentView0(long parentWindowOrView, long window, long view);
/** Must be called on Main-Thread */
private native void setWindowClientTopLeftPointAndSize0(long window, int x, int y, int w, int h, boolean display);
- /** Must be called on Main-Thread */
+ /** Must be called on Main-Thread */
private native void setWindowClientTopLeftPoint0(long window, int x, int y, boolean display);
/** Must be called on Main-Thread */
private native void setAlwaysOnTop0(long window, boolean atop);
@@ -551,7 +563,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
private static native boolean setPointerVisible0(long windowHandle, boolean hasFocus, boolean visible);
private static native boolean confinePointer0(long windowHandle, boolean confine);
private static native void warpPointer0(long windowHandle, int x, int y);
-
+
// Window styles
private static final int NSBorderlessWindowMask = 0;
private static final int NSTitledWindowMask = 1 << 0;
@@ -567,5 +579,5 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
private volatile long surfaceHandle = 0;
private long sscSurfaceHandle = 0;
private boolean isOffscreenInstance = false;
-
+
}
diff --git a/src/newt/classes/jogamp/newt/driver/windows/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/windows/DisplayDriver.java
index 595d5e952..d8ff7ecb5 100644
--- a/src/newt/classes/jogamp/newt/driver/windows/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/windows/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.windows;
@@ -52,10 +52,10 @@ public class DisplayDriver extends DisplayImpl {
NEWTJNILibLoader.loadNEWT();
sharedClassFactory = new RegisteredClassFactory(newtClassBaseName, WindowDriver.getNewtWndProc0());
-
+
if (!WindowDriver.initIDs0(RegisteredClassFactory.getHInstance())) {
throw new NativeWindowException("Failed to initialize WindowsWindow jmethodIDs");
- }
+ }
}
public static void initSingleton() {
@@ -71,16 +71,19 @@ public class DisplayDriver extends DisplayImpl {
public DisplayDriver() {
}
+ @Override
protected void createNativeImpl() {
sharedClass = sharedClassFactory.getSharedClass();
aDevice = new WindowsGraphicsDevice(AbstractGraphicsDevice.DEFAULT_UNIT);
}
- protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
+ @Override
+ protected void closeNativeImpl(AbstractGraphicsDevice aDevice) {
sharedClassFactory.releaseSharedClass();
aDevice.close();
}
+ @Override
protected void dispatchMessagesNative() {
DispatchMessages0();
}
diff --git a/src/newt/classes/jogamp/newt/driver/windows/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/windows/ScreenDriver.java
index 621091320..e789b995f 100644
--- a/src/newt/classes/jogamp/newt/driver/windows/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/windows/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.windows;
@@ -60,7 +60,7 @@ public class ScreenDriver extends ScreenImpl {
protected void createNativeImpl() {
aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), screen_idx);
}
-
+
@Override
protected void closeNativeImpl() {
}
@@ -71,7 +71,7 @@ public class ScreenDriver extends ScreenImpl {
private final String getActiveMonitorName(String adapterName, int monitor_idx) {
return getActiveMonitorName0(adapterName, monitor_idx);
}
-
+
private final MonitorMode getMonitorModeImpl(MonitorModeProps.Cache cache, String adapterName, int crtModeIdx) {
if( null == adapterName ) {
return null;
@@ -107,7 +107,7 @@ public class ScreenDriver extends ScreenImpl {
final int[] monitorProps = getMonitorDevice0(adapterName, crtIdx);
// merge monitor-props + supported modes
MonitorModeProps.streamInMonitorDevice(null, cache, this, supportedModes, currentMode, monitorProps, 0);
-
+
// next monitor, 1st mode
supportedModes= new ArrayHashSet<MonitorMode>();
}
@@ -116,7 +116,7 @@ public class ScreenDriver extends ScreenImpl {
adapterName = getAdapterName(crtIdx);
}
}
-
+
@Override
protected Rectangle getNativeMonitorDeviceViewportImpl(MonitorDevice monitor) {
final String adapterName = getAdapterName(monitor.getId());
@@ -135,7 +135,7 @@ public class ScreenDriver extends ScreenImpl {
protected MonitorMode queryCurrentMonitorModeImpl(MonitorDevice monitor) {
return getMonitorModeImpl(null, getAdapterName(monitor.getId()), -1);
}
-
+
@Override
protected boolean setCurrentMonitorModeImpl(MonitorDevice monitor, MonitorMode mode) {
return setMonitorMode0(monitor.getId(),
@@ -150,14 +150,14 @@ public class ScreenDriver extends ScreenImpl {
@Override
protected int validateScreenIndex(int idx) {
- return 0; // big-desktop w/ multiple monitor attached, only one screen available
+ return 0; // big-desktop w/ multiple monitor attached, only one screen available
}
-
+
@Override
protected void calcVirtualScreenOriginAndSize(Rectangle vOriginSize) {
vOriginSize.set(getVirtualOriginX0(), getVirtualOriginY0(), getVirtualWidthImpl0(), getVirtualHeightImpl0());
}
-
+
// Native calls
private native int getVirtualOriginX0();
private native int getVirtualOriginY0();
diff --git a/src/newt/classes/jogamp/newt/driver/windows/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/windows/WindowDriver.java
index b2e175415..6e8ac3efa 100644
--- a/src/newt/classes/jogamp/newt/driver/windows/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/windows/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.windows;
@@ -74,26 +74,26 @@ public class WindowDriver extends WindowImpl {
}
final long hWnd = getWindowHandle();
hdc = GDI.GetDC(hWnd);
-
+
// return ( 0 == hdc ) ? LOCK_SURFACE_NOT_READY : ( hdc_old != hdc ) ? LOCK_SURFACE_CHANGED : LOCK_SUCCESS ;
- if( 0 == hdc ) {
+ if( 0 == hdc ) {
return LOCK_SURFACE_NOT_READY;
- }
+ }
hmon = MonitorFromWindow0(hWnd);
-
+
// Let's not trigger on HDC change, GLDrawableImpl.'s destroy/create is a nop here anyways.
// FIXME: Validate against EGL surface creation: ANGLE uses HWND -> fine!
- return LOCK_SUCCESS;
-
+ return LOCK_SUCCESS;
+
/**
if( hdc_old == hdc ) {
return LOCK_SUCCESS;
}
- if(DEBUG_IMPLEMENTATION) {
+ if(DEBUG_IMPLEMENTATION) {
System.err.println("WindowsWindow: surface change "+toHexString(hdc_old)+" -> "+toHexString(hdc));
// Thread.dumpStack();
}
- return LOCK_SURFACE_CHANGED; */
+ return LOCK_SURFACE_CHANGED; */
}
@Override
@@ -127,6 +127,7 @@ public class WindowDriver extends WindowImpl {
return false;
}
+ @Override
protected void createNativeImpl() {
final ScreenDriver screen = (ScreenDriver) getScreen();
final DisplayDriver display = (DisplayDriver) screen.getDisplay();
@@ -137,32 +138,33 @@ public class WindowDriver extends WindowImpl {
}
setGraphicsConfiguration(cfg);
final VersionNumber winVer = Platform.getOSVersionNumber();
- final int flags = getReconfigureFlags(0, true) &
+ final int flags = getReconfigureFlags(0, true) &
( FLAG_IS_ALWAYSONTOP | FLAG_IS_UNDECORATED ) ;
final long _windowHandle = CreateWindow0(DisplayDriver.getHInstance(), display.getWindowClassName(), display.getWindowClassName(),
winVer.getMajor(), winVer.getMinor(),
- getParentWindowHandle(), getX(), getY(), getWidth(), getHeight(), autoPosition(), flags);
+ getParentWindowHandle(), getX(), getY(), getWidth(), getHeight(), autoPosition(), flags);
if ( 0 == _windowHandle ) {
throw new NativeWindowException("Error creating window");
}
setWindowHandle(_windowHandle);
windowHandleClose = _windowHandle;
-
+
if(DEBUG_IMPLEMENTATION) {
Exception e = new Exception("Info: Window new window handle "+Thread.currentThread().getName()+
" (Parent HWND "+toHexString(getParentWindowHandle())+
") : HWND "+toHexString(_windowHandle)+", "+Thread.currentThread());
e.printStackTrace();
}
- }
+ }
+ @Override
protected void closeNativeImpl() {
if(windowHandleClose != 0) {
if (hdc != 0) {
try {
GDI.ReleaseDC(windowHandleClose, hdc);
} catch (Throwable t) {
- if(DEBUG_IMPLEMENTATION) {
+ if(DEBUG_IMPLEMENTATION) {
Exception e = new Exception("Warning: closeNativeImpl failed - "+Thread.currentThread().getName(), t);
e.printStackTrace();
}
@@ -183,19 +185,20 @@ public class WindowDriver extends WindowImpl {
hdc_old = 0;
}
+ @Override
protected boolean reconfigureWindowImpl(int x, int y, int width, int height, int flags) {
if(DEBUG_IMPLEMENTATION) {
System.err.println("WindowsWindow reconfig: "+x+"/"+y+" "+width+"x"+height+", "+
getReconfigureFlagsAsString(null, flags));
}
-
+
if(0 == ( FLAG_IS_UNDECORATED & flags)) {
final InsetsImmutable i = getInsets();
-
+
// client position -> top-level window position
x -= i.getLeftWidth() ;
y -= i.getTopHeight() ;
-
+
if(0<width && 0<height) {
// client size -> top-level window size
width += i.getTotalWidth();
@@ -203,13 +206,14 @@ public class WindowDriver extends WindowImpl {
}
}
reconfigureWindow0( getParentWindowHandle(), getWindowHandle(), x, y, width, height, flags);
-
+
if( 0 != ( FLAG_CHANGE_VISIBILITY & flags) ) {
- visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
+ visibleChanged(false, 0 != ( FLAG_IS_VISIBLE & flags));
}
return true;
}
+ @Override
protected void requestFocusImpl(boolean force) {
requestFocus0(getWindowHandle(), force);
}
@@ -222,8 +226,9 @@ public class WindowDriver extends WindowImpl {
@Override
protected boolean setPointerVisibleImpl(final boolean pointerVisible) {
final boolean[] res = new boolean[] { false };
-
+
this.runOnEDTIfAvail(true, new Runnable() {
+ @Override
public void run() {
res[0] = setPointerVisible0(getWindowHandle(), pointerVisible);
}
@@ -234,20 +239,22 @@ public class WindowDriver extends WindowImpl {
@Override
protected boolean confinePointerImpl(final boolean confine) {
final Boolean[] res = new Boolean[] { Boolean.FALSE };
-
+
this.runOnEDTIfAvail(true, new Runnable() {
+ @Override
public void run() {
final Point p0 = getLocationOnScreenImpl(0, 0);
- res[0] = Boolean.valueOf(confinePointer0(getWindowHandle(), confine,
+ res[0] = Boolean.valueOf(confinePointer0(getWindowHandle(), confine,
p0.getX(), p0.getY(), p0.getX()+getWidth(), p0.getY()+getHeight()));
}
});
return res[0].booleanValue();
}
-
+
@Override
- protected void warpPointerImpl(final int x, final int y) {
+ protected void warpPointerImpl(final int x, final int y) {
this.runOnEDTIfAvail(true, new Runnable() {
+ @Override
public void run() {
final Point sPos = getLocationOnScreenImpl(x, y);
warpPointer0(getWindowHandle(), sPos.getX(), sPos.getY());
@@ -255,44 +262,46 @@ public class WindowDriver extends WindowImpl {
});
return;
}
-
+
+ @Override
protected Point getLocationOnScreenImpl(int x, int y) {
return GDIUtil.GetRelativeLocation( getWindowHandle(), 0 /*root win*/, x, y);
}
+ @Override
protected void updateInsetsImpl(Insets insets) {
- // nop - using event driven insetsChange(..)
+ // nop - using event driven insetsChange(..)
}
-
+
//
// PointerEvent Handling
//
/**
* Send multiple-pointer {@link MouseEvent.PointerType#TouchScreen} event to be directly consumed
* <p>
- * Assumes non normal pointer names and rotation/scroll will be determined by a gesture handler.
+ * Assumes non normal pointer names and rotation/scroll will be determined by a gesture handler.
* </p>
* <p>
* See {@link #doPointerEvent(boolean, boolean, PointerType[], short, int, int, boolean, int[], int[], int[], float[], float, float[], float)}
* for details.
* </p>
*/
- public final void sendTouchScreenEvent(short eventType, int modifiers,
+ public final void sendTouchScreenEvent(short eventType, int modifiers,
int pActionIdx, int[] pNames,
int[] pX, int[] pY, float[] pPressure, float maxPressure) {
final int pCount = pNames.length;
final MouseEvent.PointerType[] pTypes = new MouseEvent.PointerType[pCount];
for(int i=pCount-1; i>=0; i--) { pTypes[i] = PointerType.TouchScreen; }
- doPointerEvent(false /*enqueue*/, false /*wait*/,
- pTypes, eventType, modifiers, pActionIdx, false /*normalPNames*/, pNames,
+ doPointerEvent(false /*enqueue*/, false /*wait*/,
+ pTypes, eventType, modifiers, pActionIdx, false /*normalPNames*/, pNames,
pX, pY, pPressure, maxPressure, new float[] { 0f, 0f, 0f} /*rotationXYZ*/, 1f/*rotationScale*/);
}
-
+
//
// KeyEvent Handling
//
private short repeatedKey = KeyEvent.VK_UNDEFINED;
-
+
private final boolean handlePressTypedAutoRepeat(boolean isModifierKey, int modifiers, short keyCode, short keySym, char keyChar) {
if( setKeyPressed(keyCode, true) ) {
// AR: Key was already pressed: Either [enter | within] AR mode
@@ -308,18 +317,18 @@ public class WindowDriver extends WindowImpl {
super.sendKeyEvent(KeyEvent.EVENT_KEY_RELEASED, modifiers, keyCode, keySym, keyChar);
}
return true;
- }
+ }
return false;
}
-
+
@Override
public final void sendKeyEvent(short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
final boolean isModifierKey = KeyEvent.isModifierKey(keySym);
// System.err.println("*** sendKeyEvent: event "+KeyEvent.getEventTypeString(eventType)+", keyCode "+toHexString(keyCode)+", keyChar <"+keyChar+">, mods "+toHexString(modifiers)+
// ", isKeyCodeTracked "+isKeyCodeTracked(keyCode)+", was: pressed "+isKeyPressed(keyCode)+", printableKey "+KeyEvent.isPrintableKey(keyCode, false)+" [modifierKey "+isModifierKey+"] - "+System.currentTimeMillis());
-
+
// Reorder: WINDOWS delivery order is PRESSED (t0), TYPED (t0) and RELEASED (t1) -> NEWT order: PRESSED (t0) and RELEASED (t1)
- // Auto-Repeat: WINDOWS delivers only PRESSED (t0) and TYPED (t0).
+ // Auto-Repeat: WINDOWS delivers only PRESSED (t0) and TYPED (t0).
switch(eventType) {
case KeyEvent.EVENT_KEY_RELEASED:
if( isKeyCodeTracked(keyCode) ) {
@@ -339,12 +348,12 @@ public class WindowDriver extends WindowImpl {
break;
}
}
-
+
@Override
public final void enqueueKeyEvent(boolean wait, short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
}
-
+
//----------------------------------------------------------------------
// Internals only
//
@@ -361,5 +370,5 @@ public class WindowDriver extends WindowImpl {
private static native boolean setPointerVisible0(long windowHandle, boolean visible);
private static native boolean confinePointer0(long windowHandle, boolean grab, int l, int t, int r, int b);
- private static native void warpPointer0(long windowHandle, int x, int y);
+ private static native void warpPointer0(long windowHandle, int x, int y);
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/DisplayDriver.java b/src/newt/classes/jogamp/newt/driver/x11/DisplayDriver.java
index d911483b0..504839797 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/DisplayDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/DisplayDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.x11;
@@ -63,6 +63,7 @@ public class DisplayDriver extends DisplayImpl {
public DisplayDriver() {
}
+ @Override
public String validateDisplayName(String name, long handle) {
return X11Util.validateDisplayName(name, handle);
}
@@ -72,6 +73,7 @@ public class DisplayDriver extends DisplayImpl {
*
* We use a private non-shared X11 Display instance for EDT window operations and one for exposed animation, eg. OpenGL.
*/
+ @Override
protected void createNativeImpl() {
X11Util.setX11ErrorHandler(true, DEBUG ? false : true); // make sure X11 error handler is set
long handle = X11Util.openDisplay(name);
@@ -83,7 +85,7 @@ public class DisplayDriver extends DisplayImpl {
CompleteDisplay0(aDevice.getHandle());
} catch(RuntimeException e) {
closeNativeImpl(aDevice);
- throw e;
+ throw e;
}
}
@@ -114,14 +116,14 @@ public class DisplayDriver extends DisplayImpl {
protected long getJavaObjectAtom() { return javaObjectAtom; }
protected long getWindowDeleteAtom() { return windowDeleteAtom; }
// protected long getKbdHandle() { return kbdHandle; } // XKB disabled for now
-
- /** Returns <code>null</code> if !{@link #isNativeValid()}, otherwise the Boolean value of {@link X11GraphicsDevice#isXineramaEnabled()}. */
+
+ /** Returns <code>null</code> if !{@link #isNativeValid()}, otherwise the Boolean value of {@link X11GraphicsDevice#isXineramaEnabled()}. */
protected Boolean isXineramaEnabled() { return isNativeValid() ? Boolean.valueOf(((X11GraphicsDevice)aDevice).isXineramaEnabled()) : null; }
-
+
//----------------------------------------------------------------------
// Internals only
//
-
+
private static native boolean initIDs0(boolean debug);
private native void CompleteDisplay0(long handle);
@@ -137,10 +139,10 @@ public class DisplayDriver extends DisplayImpl {
/** X11 Window delete atom marker used on EDT */
private long windowDeleteAtom;
-
+
/** X11 Window java object property used on EDT */
- private long javaObjectAtom;
-
+ private long javaObjectAtom;
+
/** X11 Keyboard handle used on EDT */
// private long kbdHandle; // XKB disabled for now
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/RandR.java b/src/newt/classes/jogamp/newt/driver/x11/RandR.java
index e39a6c63a..8b065d1f0 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/RandR.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/RandR.java
@@ -38,18 +38,18 @@ import com.jogamp.newt.MonitorDevice;
import com.jogamp.newt.MonitorMode;
public interface RandR {
- public static final VersionNumber version110 = new VersionNumber(1, 1, 0);
+ public static final VersionNumber version110 = new VersionNumber(1, 1, 0);
public static final VersionNumber version130 = new VersionNumber(1, 3, 0);
public static final VersionNumber version140 = new VersionNumber(1, 4, 0);
VersionNumber getVersion();
-
+
void dumpInfo(final long dpy, final int screen_idx);
-
+
/**
- * Encapsulate initial device query allowing caching of internal data structures.
+ * Encapsulate initial device query allowing caching of internal data structures.
* Methods covered:
- * <ul>
+ * <ul>
* <li>{@link #getMonitorDeviceCount(long, ScreenDriver)}</li>
* <li>{@link #getAvailableRotations(long, ScreenDriver, int)}</li>
* <li>{@link #getMonitorModeProps(long, ScreenDriver, int)}</li>
@@ -57,7 +57,7 @@ public interface RandR {
* <li>{@link #getMonitorDeviceProps(long, ScreenDriver, List, int, MonitorMode)}</li>
* </ul>
* <p>
- * Above methods may be called w/o begin/end, in which case no
+ * Above methods may be called w/o begin/end, in which case no
* internal data structures can be cached:
* </p>
* @param dpy TODO
@@ -66,11 +66,11 @@ public interface RandR {
*/
boolean beginInitialQuery(long dpy, ScreenDriver screen);
void endInitialQuery(long dpy, ScreenDriver screen);
-
+
int getMonitorDeviceCount(final long dpy, final ScreenDriver screen);
int[] getAvailableRotations(final long dpy, final ScreenDriver screen, final int crt_idx);
/**
- *
+ *
* @param dpy
* @param screen
* @param mode_idx w/o indexing rotation
@@ -80,7 +80,7 @@ public interface RandR {
int[] getMonitorDeviceProps(final long dpy, final ScreenDriver screen, MonitorModeProps.Cache cache, final int crt_idx);
int[] getMonitorDeviceViewport(final long dpy, final ScreenDriver screen, final int crt_idx);
int[] getCurrentMonitorModeProps(final long dpy, final ScreenDriver screen, final int crt_idx);
- boolean setCurrentMonitorMode(final long dpy, final ScreenDriver screen, MonitorDevice monitor, final MonitorMode mode);
-
- public void updateScreenViewport(final long dpy, final ScreenDriver screen, RectangleImmutable viewport);
+ boolean setCurrentMonitorMode(final long dpy, final ScreenDriver screen, MonitorDevice monitor, final MonitorMode mode);
+
+ public void updateScreenViewport(final long dpy, final ScreenDriver screen, RectangleImmutable viewport);
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/RandR11.java b/src/newt/classes/jogamp/newt/driver/x11/RandR11.java
index 877607f72..6c22a3fc6 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/RandR11.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/RandR11.java
@@ -38,8 +38,8 @@ import com.jogamp.newt.MonitorMode;
class RandR11 implements RandR {
private static final boolean DEBUG = ScreenDriver.DEBUG;
-
- RandR11() {
+
+ RandR11() {
}
@Override
@@ -51,13 +51,13 @@ class RandR11 implements RandR {
public void dumpInfo(final long dpy, final int screen_idx) {
// NOP
}
-
+
private int widthMM=0, heightMM=0;
private int modeCount = 0;
private int resolutionCount = 0;
private int[][] nrates = null; // [nres_number][nrate_number]
private int[] idx_rate = null, idx_res = null;
-
+
@Override
public boolean beginInitialQuery(long dpy, ScreenDriver screen) {
// initialize iterators and static data
@@ -76,11 +76,11 @@ class RandR11 implements RandR {
return false;
}
}
-
+
for(int nresIdx=0; nresIdx < resolutionCount; nresIdx++) {
modeCount += nrates[nresIdx].length;
}
-
+
idx_rate = new int[modeCount];
idx_res = new int[modeCount];
@@ -94,23 +94,23 @@ class RandR11 implements RandR {
}
return true;
}
-
+
@Override
public void endInitialQuery(long dpy, ScreenDriver screen) {
idx_rate=null;
- idx_res=null;
- nrates=null;
+ idx_res=null;
+ nrates=null;
}
-
+
@Override
public int getMonitorDeviceCount(final long dpy, final ScreenDriver screen) {
return 1;
}
-
+
@Override
public int[] getAvailableRotations(final long dpy, final ScreenDriver screen, final int crt_idx) {
if( 0 < crt_idx ) {
- // RandR11 only supports 1 CRT
+ // RandR11 only supports 1 CRT
return null;
}
final int screen_idx = screen.getIndex();
@@ -120,17 +120,17 @@ class RandR11 implements RandR {
}
return availRotations;
}
-
+
@Override
public int[] getMonitorModeProps(final long dpy, final ScreenDriver screen, final int mode_idx) {
if( mode_idx >= modeCount ) {
return null;
- }
+ }
final int screen_idx = screen.getIndex();
-
+
final int nres_index = idx_res[mode_idx];
final int nrate_index = idx_rate[mode_idx];
-
+
final int[] res = getScreenResolution0(dpy, screen_idx, nres_index);
if(null==res || 0==res.length) {
return null;
@@ -144,7 +144,7 @@ class RandR11 implements RandR {
if( res[3] > heightMM ) {
heightMM = res[3];
}
-
+
int rate = nrates[nres_index][nrate_index];
if(0>=rate) {
rate = ScreenImpl.default_sm_rate;
@@ -166,13 +166,13 @@ class RandR11 implements RandR {
if( MonitorModeProps.NUM_MONITOR_MODE_PROPERTIES_ALL != i ) {
throw new InternalError("XX");
}
- return props;
+ return props;
}
-
+
@Override
public int[] getMonitorDeviceProps(final long dpy, final ScreenDriver screen, final MonitorModeProps.Cache cache, final int crt_idx) {
if( 0 < crt_idx ) {
- // RandR11 only supports 1 CRT
+ // RandR11 only supports 1 CRT
return null;
}
final int[] currentModeProps = getCurrentMonitorModeProps(dpy, screen, crt_idx);
@@ -194,15 +194,15 @@ class RandR11 implements RandR {
props[i++] = currentMode.getId(); // current mode id
props[i++] = currentMode.getRotation();
for(int j=0; j<allModesCount; j++) {
- props[i++] = cache.monitorModes.get(j).getId();
+ props[i++] = cache.monitorModes.get(j).getId();
}
return props;
}
-
+
@Override
public int[] getMonitorDeviceViewport(final long dpy, final ScreenDriver screen, final int crt_idx) {
if( 0 < crt_idx ) {
- // RandR11 only supports 1 CRT
+ // RandR11 only supports 1 CRT
return null;
}
final int screen_idx = screen.getIndex();
@@ -212,7 +212,7 @@ class RandR11 implements RandR {
}
int[] res;
final int nres_idx;
- try {
+ try {
int resNumber = getNumScreenResolutions0(dpy, screen_idx);
if(0==resNumber) {
return null;
@@ -241,13 +241,13 @@ class RandR11 implements RandR {
props[i++] = 0;
props[i++] = res[0]; // width
props[i++] = res[1]; // height
- return props;
+ return props;
}
-
+
@Override
public int[] getCurrentMonitorModeProps(final long dpy, final ScreenDriver screen, final int crt_idx) {
if( 0 < crt_idx ) {
- // RandR11 only supports 1 CRT
+ // RandR11 only supports 1 CRT
return null;
}
final int screen_idx = screen.getIndex();
@@ -258,7 +258,7 @@ class RandR11 implements RandR {
int[] res;
int rate, rot;
final int nres_idx;
- try {
+ try {
int resNumber = getNumScreenResolutions0(dpy, screen_idx);
if(0==resNumber) {
return null;
@@ -318,7 +318,7 @@ class RandR11 implements RandR {
final int resId = mode.getId();
if(0>resId || resId>=resolutionCount) {
throw new RuntimeException("Invalid resolution index: ! 0 < "+resId+" < "+resolutionCount+", "+monitor+", "+mode);
- }
+ }
final int f = (int)mode.getRefreshRate(); // simply cut-off, orig is int
final int r = mode.getRotation();
@@ -335,11 +335,11 @@ class RandR11 implements RandR {
}
return done;
}
-
+
@Override
public final void updateScreenViewport(final long dpy, final ScreenDriver screen, RectangleImmutable viewport) {
// nop
- }
+ }
/** @return int[] { rot1, .. } */
private static native int[] getAvailableScreenRotations0(long display, int screen_index);
@@ -353,7 +353,7 @@ class RandR11 implements RandR {
private static native long getScreenConfiguration0(long display, int screen_index);
private static native void freeScreenConfiguration0(long screenConfiguration);
-
+
private static native int getCurrentScreenResolutionIndex0(long screenConfiguration);
private static native int getCurrentScreenRate0(long screenConfiguration);
private static native int getCurrentScreenRotation0(long screenConfiguration);
@@ -361,5 +361,5 @@ class RandR11 implements RandR {
/** needs own Display connection for XRANDR event handling */
private static native boolean setCurrentScreenModeStart0(long display, int screen_index, long screenConfiguration, int mode_index, int freq, int rot);
private static native boolean setCurrentScreenModePollEnd0(long display, int screen_index, int mode_index, int freq, int rot);
-
+
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/RandR13.java b/src/newt/classes/jogamp/newt/driver/x11/RandR13.java
index ac83fc5f2..a08741d9e 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/RandR13.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/RandR13.java
@@ -43,19 +43,19 @@ import com.jogamp.newt.MonitorMode;
* <pre>
* MonitorMode.id == XRR mode-id (not index)
* MonitorDevice.id == XRR monitor-idx (not id)
- * </pre>
+ * </pre>
*/
class RandR13 implements RandR {
private static final boolean DEBUG = ScreenDriver.DEBUG;
-
- RandR13() {
+
+ RandR13() {
}
-
+
@Override
public final VersionNumber getVersion() {
return version130;
}
-
+
@Override
public void dumpInfo(final long dpy, final int screen_idx) {
long screenResources = getScreenResources0(dpy, screen_idx);
@@ -66,12 +66,12 @@ class RandR13 implements RandR {
dumpInfo0(dpy, screen_idx, screenResources);
} finally {
freeScreenResources0(screenResources);
- }
+ }
}
-
+
long sessionScreenResources = 0;
IntLongHashMap crtInfoHandleMap = null;
-
+
@Override
public boolean beginInitialQuery(long dpy, ScreenDriver screen) {
final int screen_idx = screen.getIndex();
@@ -84,7 +84,7 @@ class RandR13 implements RandR {
return false;
}
}
-
+
@Override
public void endInitialQuery(long dpy, ScreenDriver screen) {
if( null != crtInfoHandleMap ) {
@@ -100,7 +100,7 @@ class RandR13 implements RandR {
sessionScreenResources = 0;
}
}
-
+
private final long getScreenResourceHandle(final long dpy, final int screen_idx) {
if( 0 != sessionScreenResources ) {
return sessionScreenResources;
@@ -112,7 +112,7 @@ class RandR13 implements RandR {
freeScreenResources0( screenResourceHandle );
}
}
-
+
private final long getMonitorInfoHandle(final long dpy, final int screen_idx, long screenResources, final int monitor_idx) {
if( null != crtInfoHandleMap ) {
long h = crtInfoHandleMap.get(monitor_idx);
@@ -129,8 +129,8 @@ class RandR13 implements RandR {
if( null == crtInfoHandleMap ) {
freeMonitorInfoHandle0(monitorInfoHandle);
}
- }
-
+ }
+
@Override
public int getMonitorDeviceCount(final long dpy, final ScreenDriver screen) {
final int screen_idx = screen.getIndex();
@@ -141,7 +141,7 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
public int[] getAvailableRotations(final long dpy, final ScreenDriver screen, final int crt_idx) {
final int screen_idx = screen.getIndex();
@@ -152,7 +152,7 @@ class RandR13 implements RandR {
final int[] availRotations = getAvailableRotations0(monitorInfo);
if(null==availRotations || 0==availRotations.length) {
return null;
- }
+ }
return availRotations;
} finally {
releaseMonitorInfoHandle(monitorInfo);
@@ -161,7 +161,7 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
public int[] getMonitorModeProps(final long dpy, final ScreenDriver screen, final int mode_idx) {
final int screen_idx = screen.getIndex();
@@ -172,7 +172,7 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
public int[] getMonitorDeviceProps(final long dpy, final ScreenDriver screen, MonitorModeProps.Cache cache, final int crt_idx) {
final int screen_idx = screen.getIndex();
@@ -188,9 +188,9 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
- public int[] getMonitorDeviceViewport(final long dpy, final ScreenDriver screen, final int crt_idx) {
+ public int[] getMonitorDeviceViewport(final long dpy, final ScreenDriver screen, final int crt_idx) {
final int screen_idx = screen.getIndex();
final long screenResources = getScreenResourceHandle(dpy, screen_idx);
try {
@@ -204,7 +204,7 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
public int[] getCurrentMonitorModeProps(final long dpy, final ScreenDriver screen, final int crt_idx) {
final int screen_idx = screen.getIndex();
@@ -220,7 +220,7 @@ class RandR13 implements RandR {
releaseScreenResourceHandle(screenResources);
}
}
-
+
@Override
public boolean setCurrentMonitorMode(final long dpy, final ScreenDriver screen, MonitorDevice monitor, final MonitorMode mode) {
final int screen_idx = screen.getIndex();
@@ -229,7 +229,7 @@ class RandR13 implements RandR {
try {
final long monitorInfo = getMonitorInfoHandle(dpy, screen_idx, screenResources, monitor.getId());
try {
- res = setMonitorMode0(dpy, screenResources, monitorInfo, monitor.getId(), mode.getId(), mode.getRotation(),
+ res = setMonitorMode0(dpy, screenResources, monitorInfo, monitor.getId(), mode.getId(), mode.getRotation(),
-1, -1); // no fixed position!
} finally {
releaseMonitorInfoHandle(monitorInfo);
@@ -239,36 +239,36 @@ class RandR13 implements RandR {
}
return res;
}
-
+
@Override
public final void updateScreenViewport(final long dpy, final ScreenDriver screen, final RectangleImmutable viewport) {
final int screen_idx = screen.getIndex();
final long screenResources = getScreenResourceHandle(dpy, screen_idx);
try {
- setScreenViewport0(dpy, screen_idx, screenResources, viewport.getX(), viewport.getY(), viewport.getWidth(), viewport.getHeight());
+ setScreenViewport0(dpy, screen_idx, screenResources, viewport.getX(), viewport.getY(), viewport.getWidth(), viewport.getHeight());
} finally {
dumpInfo0(dpy, screen_idx, screenResources);
releaseScreenResourceHandle(screenResources);
}
}
-
+
private static native long getScreenResources0(long display, int screen_index);
private static native void freeScreenResources0(long screenResources);
private static native void dumpInfo0(long display, int screen_index, long screenResources);
-
+
private static native int getMonitorDeviceCount0(long screenResources);
-
+
private static native long getMonitorInfoHandle0(long display, int screen_index, long screenResources, int monitor_index);
private static native void freeMonitorInfoHandle0(long monitorInfoHandle);
-
+
private static native int[] getAvailableRotations0(long monitorInfo);
private static native int[] getMonitorViewport0(long monitorInfo);
private static native int[] getMonitorCurrentMode0(long monitorInfo);
-
+
private static native int[] getMonitorMode0(long screenResources, int mode_index);
private static native int[] getMonitorCurrentMode0(long screenResources, long monitorInfo);
private static native int[] getMonitorDevice0(long display, long screenResources, long monitorInfo, int monitor_idx);
-
+
private static native boolean setMonitorMode0(long display, long screenResources, long monitorInfo, int monitor_idx, int mode_id, int rotation, int x, int y);
private static native boolean setScreenViewport0(long display, int screen_index, long screenResources, int x, int y, int width, int height);
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/ScreenDriver.java b/src/newt/classes/jogamp/newt/driver/x11/ScreenDriver.java
index c01d899f8..bef7f60ec 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/ScreenDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/ScreenDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.x11;
@@ -54,19 +54,19 @@ import com.jogamp.nativewindow.x11.X11GraphicsScreen;
import com.jogamp.newt.MonitorDevice;
import com.jogamp.newt.MonitorMode;
-public class ScreenDriver extends ScreenImpl {
+public class ScreenDriver extends ScreenImpl {
protected static final boolean DEBUG_TEST_RANDR13_DISABLED;
-
+
static {
Debug.initSingleton();
DEBUG_TEST_RANDR13_DISABLED = Debug.isPropertyDefined("newt.test.Screen.disableRandR13", true);
-
+
DisplayDriver.initSingleton();
}
/** Ensure static init has been run. */
/* pp */static void initSingleton() { }
-
+
public ScreenDriver() {
}
@@ -74,14 +74,15 @@ public class ScreenDriver extends ScreenImpl {
protected void createNativeImpl() {
// validate screen index
Long handle = runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Long>() {
- public Long run(long dpy) {
+ @Override
+ public Long run(long dpy) {
return new Long(GetScreen0(dpy, screen_idx));
} } );
if (handle.longValue() == 0) {
throw new RuntimeException("Error creating screen: " + screen_idx);
}
- final X11GraphicsDevice x11dev = (X11GraphicsDevice) getDisplay().getGraphicsDevice();
- final long dpy = x11dev.getHandle();
+ final X11GraphicsDevice x11dev = (X11GraphicsDevice) getDisplay().getGraphicsDevice();
+ final long dpy = x11dev.getHandle();
aScreen = new X11GraphicsScreen(x11dev, screen_idx);
{
int v[] = getRandRVersion0(dpy);
@@ -118,7 +119,7 @@ public class ScreenDriver extends ScreenImpl {
if( rAndR.beginInitialQuery(device.getHandle(), this) ) {
try {
final int crtCount = rAndR.getMonitorDeviceCount(device.getHandle(), this);
-
+
// Gather all available rotations
final ArrayHashSet<Integer> availableRotations = new ArrayHashSet<Integer>();
for(int i = 0; i < crtCount; i++) {
@@ -129,7 +130,7 @@ public class ScreenDriver extends ScreenImpl {
availableRotations.addAll(rotationList);
}
}
-
+
// collect all modes, while injecting all available rotations
{
int modeIdx = 0;
@@ -147,8 +148,8 @@ public class ScreenDriver extends ScreenImpl {
if( cache.monitorModes.size() > 0 ) {
for(int i = 0; i < crtCount; i++) {
final int[] monitorProps = rAndR.getMonitorDeviceProps(device.getHandle(), this, cache, i);
- if( null != monitorProps &&
- MonitorModeProps.MIN_MONITOR_DEVICE_PROPERTIES <= monitorProps[0] && // Enabled ? I.e. contains active modes ?
+ if( null != monitorProps &&
+ MonitorModeProps.MIN_MONITOR_DEVICE_PROPERTIES <= monitorProps[0] && // Enabled ? I.e. contains active modes ?
MonitorModeProps.MIN_MONITOR_DEVICE_PROPERTIES <= monitorProps.length ) {
MonitorModeProps.streamInMonitorDevice(null, cache, this, monitorProps, 0);
}
@@ -174,12 +175,13 @@ public class ScreenDriver extends ScreenImpl {
device.unlock();
}
}
-
+
@Override
protected MonitorMode queryCurrentMonitorModeImpl(final MonitorDevice monitor) {
if( null == rAndR ) { return null; }
-
+
return runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<MonitorMode>() {
+ @Override
public MonitorMode run(long dpy) {
final int[] currentModeProps = rAndR.getCurrentMonitorModeProps(dpy, ScreenDriver.this, monitor.getId());
return MonitorModeProps.streamInMonitorMode(null, null, currentModeProps, 0);
@@ -189,14 +191,15 @@ public class ScreenDriver extends ScreenImpl {
@Override
protected boolean setCurrentMonitorModeImpl(final MonitorDevice monitor, final MonitorMode mode) {
if( null == rAndR ) { return false; }
-
+
final long t0 = System.currentTimeMillis();
boolean done = runWithOptTempDisplayHandle( new DisplayImpl.DisplayRunnable<Boolean>() {
+ @Override
public Boolean run(long dpy) {
return Boolean.valueOf( rAndR.setCurrentMonitorMode(dpy, ScreenDriver.this, monitor, mode) );
- }
+ }
}).booleanValue();
-
+
if(DEBUG || !done) {
System.err.println("X11Screen.setCurrentMonitorModeImpl: TO ("+SCREEN_MODE_CHANGE_TIMEOUT+") reached: "+
(System.currentTimeMillis()-t0)+"ms; "+monitor.getCurrentMode()+" -> "+mode);
@@ -205,10 +208,11 @@ public class ScreenDriver extends ScreenImpl {
}
private DisplayImpl.DisplayRunnable<Boolean> xineramaEnabledQueryWithTemp = new DisplayImpl.DisplayRunnable<Boolean>() {
- public Boolean run(long dpy) {
- return new Boolean(X11Util.XineramaIsEnabled(dpy));
+ @Override
+ public Boolean run(long dpy) {
+ return new Boolean(X11Util.XineramaIsEnabled(dpy));
} };
-
+
@Override
protected int validateScreenIndex(final int idx) {
final DisplayDriver x11Display = (DisplayDriver) getDisplay();
@@ -219,7 +223,7 @@ public class ScreenDriver extends ScreenImpl {
return runWithTempDisplayHandle( xineramaEnabledQueryWithTemp ).booleanValue() ? 0 : idx;
}
}
-
+
@Override
protected void calcVirtualScreenOriginAndSize(final Rectangle vOriginSize) {
final RectangleImmutable ov = (RectangleImmutable) getViewport().cloneMutable();
@@ -236,6 +240,7 @@ public class ScreenDriver extends ScreenImpl {
} } );
} else */ {
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
vOriginSize.set(0, 0, getWidth0(dpy, screen_idx), getHeight0(dpy, screen_idx));
return null;
@@ -244,17 +249,17 @@ public class ScreenDriver extends ScreenImpl {
System.err.println("X11Screen.calcVirtualScreenOriginAndSize: Querying X11: "+ov+" -> "+vOriginSize);
}
}
- }
-
+ }
+
//----------------------------------------------------------------------
// Internals only
- //
+ //
private final <T> T runWithLockedDisplayDevice(DisplayRunnable<T> action) {
return display.runWithLockedDisplayDevice(action);
}
-
+
private final <T> T runWithTempDisplayHandle(DisplayRunnable<T> action) {
- final long displayHandle = X11Util.openDisplay(display.getName());
+ final long displayHandle = X11Util.openDisplay(display.getName());
if(0 == displayHandle) {
throw new RuntimeException("null device");
}
@@ -266,7 +271,7 @@ public class ScreenDriver extends ScreenImpl {
}
return res;
}
-
+
private final <T> T runWithOptTempDisplayHandle(DisplayRunnable<T> action) {
if( null != rAndR && rAndR.getVersion().compareTo(RandR.version130) >= 0 ) {
return display.runWithLockedDisplayDevice(action);
@@ -274,12 +279,12 @@ public class ScreenDriver extends ScreenImpl {
return runWithTempDisplayHandle(action);
}
}
-
+
private static native long GetScreen0(long dpy, int scrn_idx);
private static native int getWidth0(long display, int scrn_idx);
private static native int getHeight0(long display, int scrn_idx);
-
+
private static native int[] getRandRVersion0(long display);
}
diff --git a/src/newt/classes/jogamp/newt/driver/x11/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/x11/WindowDriver.java
index 806dd270c..5e1f7a6ed 100644
--- a/src/newt/classes/jogamp/newt/driver/x11/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/x11/WindowDriver.java
@@ -1,22 +1,22 @@
/*
* Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* - Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* - Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
- *
+ *
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
@@ -29,7 +29,7 @@
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
+ *
*/
package jogamp.newt.driver.x11;
@@ -57,7 +57,7 @@ public class WindowDriver extends WindowImpl {
private static final int X11_WHEEL_ONE_DOWN_BUTTON = 5;
private static final int X11_WHEEL_TWO_UP_BUTTON = 6;
private static final int X11_WHEEL_TWO_DOWN_BUTTON = 7;
-
+
static {
ScreenDriver.initSingleton();
}
@@ -70,21 +70,21 @@ public class WindowDriver extends WindowImpl {
final ScreenDriver screen = (ScreenDriver) getScreen();
final DisplayDriver display = (DisplayDriver) screen.getDisplay();
final AbstractGraphicsDevice edtDevice = display.getGraphicsDevice();
-
- // Decoupled X11 Device/Screen allowing X11 display lock-free off-thread rendering
+
+ // Decoupled X11 Device/Screen allowing X11 display lock-free off-thread rendering
final long renderDeviceHandle = X11Util.openDisplay(edtDevice.getConnection());
if( 0 == renderDeviceHandle ) {
throw new RuntimeException("Error creating display(GfxCfg/Render): "+edtDevice.getConnection());
}
renderDevice = new X11GraphicsDevice(renderDeviceHandle, AbstractGraphicsDevice.DEFAULT_UNIT, true /* owner */);
final AbstractGraphicsScreen renderScreen = new X11GraphicsScreen(renderDevice, screen.getIndex());
-
+
final GraphicsConfigurationFactory factory = GraphicsConfigurationFactory.getFactory(display.getGraphicsDevice(), capsRequested);
final AbstractGraphicsConfiguration cfg = factory.chooseGraphicsConfiguration(
capsRequested, capsRequested, capabilitiesChooser, renderScreen, VisualIDHolder.VID_UNDEFINED);
if(DEBUG_IMPLEMENTATION) {
System.err.println("X11Window.createNativeImpl() factory: "+factory+", chosen config: "+cfg);
- }
+ }
if (null == cfg) {
throw new NativeWindowException("Error choosing GraphicsConfiguration creating window: "+this);
}
@@ -93,13 +93,13 @@ public class WindowDriver extends WindowImpl {
throw new NativeWindowException("Chosen Configuration w/o native visual ID: "+cfg);
}
setGraphicsConfiguration(cfg);
- final int flags = getReconfigureFlags(0, true) &
+ final int flags = getReconfigureFlags(0, true) &
( FLAG_IS_ALWAYSONTOP | FLAG_IS_UNDECORATED ) ;
edtDevice.lock();
- try {
+ try {
setWindowHandle(CreateWindow0(getParentWindowHandle(),
- edtDevice.getHandle(), screen.getIndex(), visualID,
- display.getJavaObjectAtom(), display.getWindowDeleteAtom(),
+ edtDevice.getHandle(), screen.getIndex(), visualID,
+ display.getJavaObjectAtom(), display.getWindowDeleteAtom(),
getX(), getY(), getWidth(), getHeight(), autoPosition(), flags));
} finally {
edtDevice.unlock();
@@ -117,10 +117,10 @@ public class WindowDriver extends WindowImpl {
final AbstractGraphicsDevice edtDevice = display.getGraphicsDevice();
edtDevice.lock();
try {
- CloseWindow0(edtDevice.getHandle(), windowHandleClose,
+ CloseWindow0(edtDevice.getHandle(), windowHandleClose,
display.getJavaObjectAtom(), display.getWindowDeleteAtom() /* , display.getKbdHandle() */); // XKB disabled for now
} catch (Throwable t) {
- if(DEBUG_IMPLEMENTATION) {
+ if(DEBUG_IMPLEMENTATION) {
Exception e = new Exception("Warning: closeNativeImpl failed - "+Thread.currentThread().getName(), t);
e.printStackTrace();
}
@@ -135,7 +135,7 @@ public class WindowDriver extends WindowImpl {
}
}
- /**
+ /**
* <p>
* X11 Window supports {@link #FLAG_IS_FULLSCREEN_SPAN}
* </p>
@@ -145,7 +145,7 @@ public class WindowDriver extends WindowImpl {
protected boolean isReconfigureFlagSupported(int changeFlags) {
return true; // all flags!
}
-
+
@Override
protected boolean reconfigureWindowImpl(final int x, final int y, final int width, final int height, int flags) {
if(DEBUG_IMPLEMENTATION) {
@@ -153,8 +153,8 @@ public class WindowDriver extends WindowImpl {
}
final int _x, _y;
if(0 == ( FLAG_IS_UNDECORATED & flags)) {
- final InsetsImmutable i = getInsets();
-
+ final InsetsImmutable i = getInsets();
+
// client position -> top-level window position
_x = x - i.getLeftWidth() ;
_y = y - i.getTopHeight() ;
@@ -176,8 +176,9 @@ public class WindowDriver extends WindowImpl {
final int fflags = flags;
final DisplayDriver display = (DisplayDriver) getScreen().getDisplay();
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
- reconfigureWindow0( dpy, getScreenIndex(),
+ reconfigureWindow0( dpy, getScreenIndex(),
getParentWindowHandle(), getWindowHandle(), display.getWindowDeleteAtom(),
_x, _y, width, height, fflags);
return null;
@@ -202,27 +203,29 @@ public class WindowDriver extends WindowImpl {
}
final DisplayDriver display = (DisplayDriver) getScreen().getDisplay();
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
reconfigureWindow0( dpy, getScreenIndex(),
getParentWindowHandle(), getWindowHandle(), display.getWindowDeleteAtom(),
- getX(), getY(), getWidth(), getHeight(), flags);
+ getX(), getY(), getWidth(), getHeight(), flags);
return null;
}
});
}
super.focusChanged(defer, focusGained);
}
-
+
protected void reparentNotify(long newParentWindowHandle) {
if(DEBUG_IMPLEMENTATION) {
final long p0 = getParentWindowHandle();
System.err.println("Window.reparentNotify ("+getThreadName()+"): "+toHexString(p0)+" -> "+toHexString(newParentWindowHandle));
}
}
-
+
@Override
- protected void requestFocusImpl(final boolean force) {
+ protected void requestFocusImpl(final boolean force) {
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
requestFocus0(dpy, getWindowHandle(), force);
return null;
@@ -233,16 +236,18 @@ public class WindowDriver extends WindowImpl {
@Override
protected void setTitleImpl(final String title) {
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
setTitle0(dpy, getWindowHandle(), title);
return null;
}
});
}
-
+
@Override
protected boolean setPointerVisibleImpl(final boolean pointerVisible) {
return runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Boolean>() {
+ @Override
public Boolean run(long dpy) {
return Boolean.valueOf(setPointerVisible0(dpy, getWindowHandle(), pointerVisible));
}
@@ -252,25 +257,28 @@ public class WindowDriver extends WindowImpl {
@Override
protected boolean confinePointerImpl(final boolean confine) {
return runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Boolean>() {
+ @Override
public Boolean run(long dpy) {
return Boolean.valueOf(confinePointer0(dpy, getWindowHandle(), confine));
}
}).booleanValue();
}
-
+
@Override
protected void warpPointerImpl(final int x, final int y) {
runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Object>() {
+ @Override
public Object run(long dpy) {
warpPointer0(dpy, getWindowHandle(), x, y);
return null;
}
});
}
-
+
@Override
protected Point getLocationOnScreenImpl(final int x, final int y) {
return runWithLockedDisplayDevice( new DisplayImpl.DisplayRunnable<Point>() {
+ @Override
public Point run(long dpy) {
return X11Lib.GetRelativeLocation(dpy, getScreenIndex(), getWindowHandle(), 0 /*root win*/, x, y);
}
@@ -279,9 +287,9 @@ public class WindowDriver extends WindowImpl {
@Override
protected void updateInsetsImpl(Insets insets) {
- // nop - using event driven insetsChange(..)
+ // nop - using event driven insetsChange(..)
}
-
+
@Override
protected final void doMouseEvent(boolean enqueue, boolean wait, short eventType, int modifiers,
int x, int y, short button, float[] rotationXYZ, float rotationScale) {
@@ -321,34 +329,34 @@ public class WindowDriver extends WindowImpl {
rotationXYZ[0] = -1;
modifiers |= InputEvent.SHIFT_MASK;
break;
- }
+ }
break;
}
super.doMouseEvent(enqueue, wait, eventType, modifiers, x, y, button, rotationXYZ, rotationScale);
}
-
+
/** Called by native TK */
protected final void sendKeyEvent(short eventType, int modifiers, short keyCode, short keySym, char keyChar0, String keyString) {
// handleKeyEvent(true, false, eventType, modifiers, keyCode, keyChar);
final boolean isModifierKey = KeyEvent.isModifierKey(keyCode);
final boolean isAutoRepeat = 0 != ( KeyEvent.AUTOREPEAT_MASK & modifiers );
- final char keyChar = ( null != keyString ) ? keyString.charAt(0) : keyChar0;
+ final char keyChar = ( null != keyString ) ? keyString.charAt(0) : keyChar0;
// System.err.println("*** sendKeyEvent: event "+KeyEvent.getEventTypeString(eventType)+", keyCode "+toHexString(keyCode)+", keyChar <"+keyChar0+">/<"+keyChar+">, keyString "+keyString+", mods "+toHexString(modifiers)+
// ", isKeyCodeTracked "+isKeyCodeTracked(keyCode)+", was: pressed "+isKeyPressed(keyCode)+", repeat "+isAutoRepeat+", [modifierKey "+isModifierKey+"] - "+System.currentTimeMillis());
-
+
if( !isAutoRepeat || !isModifierKey ) { // ! ( isModifierKey && isAutoRepeat )
switch(eventType) {
case KeyEvent.EVENT_KEY_PRESSED:
super.sendKeyEvent(KeyEvent.EVENT_KEY_PRESSED, modifiers, keyCode, keySym, keyChar);
break;
-
+
case KeyEvent.EVENT_KEY_RELEASED:
super.sendKeyEvent(KeyEvent.EVENT_KEY_RELEASED, modifiers, keyCode, keySym, keyChar);
break;
}
}
}
-
+
@Override
public final void sendKeyEvent(short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
@@ -357,33 +365,33 @@ public class WindowDriver extends WindowImpl {
public final void enqueueKeyEvent(boolean wait, short eventType, int modifiers, short keyCode, short keySym, char keyChar) {
throw new InternalError("XXX: Adapt Java Code to Native Code Changes");
}
-
+
//----------------------------------------------------------------------
// Internals only
//
private static final String getCurrentThreadName() { return Thread.currentThread().getName(); } // Callback for JNI
private static final void dumpStack() { Thread.dumpStack(); } // Callback for JNI
-
+
private final <T> T runWithLockedDisplayDevice(DisplayRunnable<T> action) {
return ((DisplayDriver) getScreen().getDisplay()).runWithLockedDisplayDevice(action);
}
protected static native boolean initIDs0();
-
- private native long CreateWindow0(long parentWindowHandle, long display, int screen_index,
- int visualID, long javaObjectAtom, long windowDeleteAtom,
- int x, int y, int width, int height, boolean autoPosition, int flags);
+
+ private native long CreateWindow0(long parentWindowHandle, long display, int screen_index,
+ int visualID, long javaObjectAtom, long windowDeleteAtom,
+ int x, int y, int width, int height, boolean autoPosition, int flags);
private native void CloseWindow0(long display, long windowHandle, long javaObjectAtom, long windowDeleteAtom /*, long kbdHandle*/ ); // XKB disabled for now
private native void reconfigureWindow0(long display, int screen_index, long parentWindowHandle, long windowHandle,
- long windowDeleteAtom, int x, int y, int width, int height, int flags);
+ long windowDeleteAtom, int x, int y, int width, int height, int flags);
private native void requestFocus0(long display, long windowHandle, boolean force);
-
+
private static native void setTitle0(long display, long windowHandle, String title);
private static native long getParentWindow0(long display, long windowHandle);
private static native boolean setPointerVisible0(long display, long windowHandle, boolean visible);
private static native boolean confinePointer0(long display, long windowHandle, boolean grab);
private static native void warpPointer0(long display, long windowHandle, int x, int y);
-
+
private long windowHandleClose;
private X11GraphicsDevice renderDevice;
}
diff --git a/src/newt/classes/jogamp/newt/event/NEWTEventTask.java b/src/newt/classes/jogamp/newt/event/NEWTEventTask.java
index 93d5e2fb9..38a434279 100644
--- a/src/newt/classes/jogamp/newt/event/NEWTEventTask.java
+++ b/src/newt/classes/jogamp/newt/event/NEWTEventTask.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt.event;
import com.jogamp.newt.event.NEWTEvent;
diff --git a/src/newt/classes/jogamp/newt/swt/SWTEDTUtil.java b/src/newt/classes/jogamp/newt/swt/SWTEDTUtil.java
index 6024195e3..db89690f4 100644
--- a/src/newt/classes/jogamp/newt/swt/SWTEDTUtil.java
+++ b/src/newt/classes/jogamp/newt/swt/SWTEDTUtil.java
@@ -40,20 +40,21 @@ import com.jogamp.newt.util.EDTUtil;
*/
public class SWTEDTUtil implements EDTUtil {
public static final boolean DEBUG = Debug.debug("EDT");
-
+
private final Object edtLock = new Object(); // locking the EDT start/stop state
- private final ThreadGroup threadGroup;
+ private final ThreadGroup threadGroup;
private final String name;
private final Runnable dispatchMessages;
private final org.eclipse.swt.widgets.Display swtDisplay;
private NEDT nedt = null;
private int start_iter=0;
private static long pollPeriod = EDTUtil.defaultEDTPollPeriod;
-
+
public SWTEDTUtil(final com.jogamp.newt.Display newtDisplay, org.eclipse.swt.widgets.Display swtDisplay) {
this.threadGroup = Thread.currentThread().getThreadGroup();
this.name=Thread.currentThread().getName()+"-SWTDisplay-"+newtDisplay.getFQName()+"-EDT-";
this.dispatchMessages = new Runnable() {
+ @Override
public void run() {
((jogamp.newt.DisplayImpl) newtDisplay).dispatchMessages();
} };
@@ -61,11 +62,11 @@ public class SWTEDTUtil implements EDTUtil {
this.nedt = new NEDT(threadGroup, name);
this.nedt.setDaemon(true); // don't stop JVM from shutdown ..
}
-
+
public final org.eclipse.swt.widgets.Display getDisplay() {
return swtDisplay;
}
-
+
@Override
public long getPollPeriod() {
return pollPeriod;
@@ -116,7 +117,7 @@ public class SWTEDTUtil implements EDTUtil {
}
nedt.start();
}
-
+
@Override
public boolean isCurrentThreadEDT() {
return !swtDisplay.isDisposed() && swtDisplay.getThread() == Thread.currentThread();
@@ -126,18 +127,18 @@ public class SWTEDTUtil implements EDTUtil {
public final boolean isCurrentThreadNEDT() {
return nedt == Thread.currentThread();
}
-
+
@Override
public final boolean isCurrentThreadEDTorNEDT() {
final Thread ct = Thread.currentThread();
return ( !swtDisplay.isDisposed() && ct == swtDisplay.getThread() ) || ct == nedt ;
}
-
+
@Override
public boolean isRunning() {
return nedt.isRunning();
}
-
+
@Override
public final boolean invokeStop(boolean wait, Runnable task) {
return invokeImpl(wait, task, true);
@@ -147,12 +148,12 @@ public class SWTEDTUtil implements EDTUtil {
public final boolean invoke(boolean wait, Runnable task) {
return invokeImpl(wait, task, false);
}
-
+
private static Runnable nullTask = new Runnable() {
@Override
- public void run() { }
+ public void run() { }
};
-
+
private final boolean invokeImpl(boolean wait, Runnable task, boolean stop) {
Throwable throwable = null;
RunnableTask rTask = null;
@@ -165,12 +166,12 @@ public class SWTEDTUtil implements EDTUtil {
System.err.println(Thread.currentThread()+": Warning: SWT-EDT about (1) to stop, won't enqueue new task: "+nedt+", isRunning "+nedt.isRunning+", shouldStop "+nedt.shouldStop);
Thread.dumpStack();
}
- return false;
+ return false;
}
if( swtDisplay.isDisposed() ) {
stop = true;
}
-
+
if( isCurrentThreadEDT() ) {
if(null != task) {
task.run();
@@ -179,7 +180,7 @@ public class SWTEDTUtil implements EDTUtil {
if( stop ) {
nedt.shouldStop = true;
}
- } else {
+ } else {
if( !nedt.isRunning && !swtDisplay.isDisposed() ) {
if( null != task ) {
if( stop ) {
@@ -210,11 +211,11 @@ public class SWTEDTUtil implements EDTUtil {
return false;
}
}
-
+
if( null != task ) {
rTask = new RunnableTask(task,
wait ? rTaskLock : null,
- true /* always catch and report Exceptions, don't disturb EDT */,
+ true /* always catch and report Exceptions, don't disturb EDT */,
wait ? null : System.err);
swtDisplay.asyncExec(rTask);
}
@@ -238,7 +239,7 @@ public class SWTEDTUtil implements EDTUtil {
}
return true;
}
- }
+ }
@Override
final public boolean waitUntilIdle() {
@@ -252,6 +253,7 @@ public class SWTEDTUtil implements EDTUtil {
}
try {
swtDisplay.syncExec(new Runnable() {
+ @Override
public void run() { }
});
} catch (Exception e) { }
@@ -278,7 +280,7 @@ public class SWTEDTUtil implements EDTUtil {
}
}
}
-
+
class NEDT extends Thread {
volatile boolean shouldStop = false;
volatile boolean isRunning = false;
@@ -298,7 +300,7 @@ public class SWTEDTUtil implements EDTUtil {
super.start();
}
- /**
+ /**
* Utilizing locking only on tasks and its execution,
* not for event dispatching.
*/
@@ -315,7 +317,7 @@ public class SWTEDTUtil implements EDTUtil {
// EDT invoke thread is SWT-EDT,
// hence dispatching is required to run on SWT-EDT as well.
// Otherwise a deadlock may happen due to dispatched event's
- // triggering a locking action.
+ // triggering a locking action.
if ( !swtDisplay.isDisposed() ) {
swtDisplay.syncExec(dispatchMessages);
} else {
@@ -343,7 +345,7 @@ public class SWTEDTUtil implements EDTUtil {
}
} finally {
if(DEBUG) {
- System.err.println(getName()+": SWT-EDT run() END "+ getName()+", "+error);
+ System.err.println(getName()+": SWT-EDT run() END "+ getName()+", "+error);
}
synchronized(edtLock) {
isRunning = false;
@@ -358,5 +360,5 @@ public class SWTEDTUtil implements EDTUtil {
} // finally
} // run()
} // EventDispatchThread
-
+
}
diff --git a/src/newt/classes/jogamp/newt/swt/event/SWTNewtEventFactory.java b/src/newt/classes/jogamp/newt/swt/event/SWTNewtEventFactory.java
index 3782a1186..b5c45c1aa 100644
--- a/src/newt/classes/jogamp/newt/swt/event/SWTNewtEventFactory.java
+++ b/src/newt/classes/jogamp/newt/swt/event/SWTNewtEventFactory.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,12 +20,12 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/
-
+
package jogamp.newt.swt.event;
import org.eclipse.swt.SWT;
@@ -206,7 +206,7 @@ public class SWTNewtEventFactory {
}
return res;
}
-
+
public static final com.jogamp.newt.event.MouseEvent createMouseEvent(org.eclipse.swt.widgets.Event event, Object source) {
switch(event.type) {
case SWT.MouseDown:
@@ -229,7 +229,7 @@ public class SWTNewtEventFactory {
}
int mods = swtModifiers2Newt(event.stateMask, true);
-
+
if( source instanceof com.jogamp.newt.Window) {
final com.jogamp.newt.Window newtSource = (com.jogamp.newt.Window)source;
if(newtSource.isPointerConfined()) {
@@ -239,7 +239,7 @@ public class SWTNewtEventFactory {
mods |= InputEvent.INVISIBLE_MASK;
}
}
-
+
return new com.jogamp.newt.event.MouseEvent(
type, (null==source)?(Object)event.data:source, (0xFFFFFFFFL & (long)event.time),
mods, event.x, event.y, (short)event.count, (short)event.button, MouseEvent.getRotationXYZ(rotation, mods), 1f);
@@ -260,32 +260,32 @@ public class SWTNewtEventFactory {
final short newtKeyCode = swtKeyCode2NewtKeyCode( event.keyCode );
return com.jogamp.newt.event.KeyEvent.create(
type, (null==source)?(Object)event.data:source, (0xFFFFFFFFL & (long)event.time),
- swtModifiers2Newt(event.stateMask, false),
+ swtModifiers2Newt(event.stateMask, false),
newtKeyCode, newtKeyCode, event.character);
}
return null; // no mapping ..
}
-
+
//
//
//
-
+
short dragButtonDown = 0;
-
+
public SWTNewtEventFactory() {
resetButtonsDown();
}
-
+
final void resetButtonsDown() {
dragButtonDown = 0;
}
-
+
public final boolean dispatchMouseEvent(org.eclipse.swt.widgets.Event event, Object source, com.jogamp.newt.event.MouseListener l) {
com.jogamp.newt.event.MouseEvent res = createMouseEvent(event, source);
if(null != res) {
if(null != l) {
switch(event.type) {
- case SWT.MouseDown:
+ case SWT.MouseDown:
dragButtonDown = (short) event.button;
l.mousePressed(res); break;
case SWT.MouseUp:
@@ -293,7 +293,7 @@ public class SWTNewtEventFactory {
l.mouseReleased(res);
{
final com.jogamp.newt.event.MouseEvent res2 = new com.jogamp.newt.event.MouseEvent(
- com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_CLICKED,
+ com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_CLICKED,
res.getSource(),
res.getWhen(), res.getModifiers(),
res.getX(), res.getY(), res.getClickCount(),
@@ -304,7 +304,7 @@ public class SWTNewtEventFactory {
case SWT.MouseMove:
if( 0 < dragButtonDown ) {
final com.jogamp.newt.event.MouseEvent res2 = new com.jogamp.newt.event.MouseEvent(
- com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_DRAGGED,
+ com.jogamp.newt.event.MouseEvent.EVENT_MOUSE_DRAGGED,
res.getSource(),
res.getWhen(), res.getModifiers(),
res.getX(), res.getY(), res.getClickCount(),
@@ -315,14 +315,14 @@ public class SWTNewtEventFactory {
}
break;
case SWT.MouseEnter:
- l.mouseEntered(res);
+ l.mouseEntered(res);
break;
case SWT.MouseExit:
resetButtonsDown();
- l.mouseExited(res);
+ l.mouseExited(res);
break;
case SWT.MouseVerticalWheel:
- l.mouseWheelMoved(res);
+ l.mouseWheelMoved(res);
break;
}
}
@@ -337,7 +337,7 @@ public class SWTNewtEventFactory {
if(null != l) {
switch(event.type) {
case SWT.KeyDown:
- l.keyPressed(res);
+ l.keyPressed(res);
break;
case SWT.KeyUp:
l.keyReleased(res);
@@ -347,9 +347,9 @@ public class SWTNewtEventFactory {
return true;
}
return false;
- }
-
- public final void attachDispatchListener(final org.eclipse.swt.widgets.Control ctrl, final Object source,
+ }
+
+ public final void attachDispatchListener(final org.eclipse.swt.widgets.Control ctrl, final Object source,
final com.jogamp.newt.event.MouseListener ml,
final com.jogamp.newt.event.KeyListener kl) {
final Listener listener = new Listener () {