javauis/eswt_qt/com.nokia.swt.extensions/extensions/org/eclipse/swt/internal/extension/DisplayExtension.java
branchRCL_3
changeset 65 ae942d28ec0e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/com.nokia.swt.extensions/extensions/org/eclipse/swt/internal/extension/DisplayExtension.java	Tue Aug 31 15:09:22 2010 +0300
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia Corporation - initial implementation
+ *******************************************************************************/
+
+package org.eclipse.swt.internal.extension;
+
+import org.eclipse.swt.internal.qt.OS;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Internal_PackageSupport;
+
+public final class DisplayExtension extends Display {
+
+private static final class VibraRunnable implements Runnable {
+		private final int duration;
+		private final Display display;
+		boolean result;
+		private VibraRunnable(int duration, Display display) {
+			this.duration = duration;
+			this.display = display;
+		}
+
+		public void run() {
+			result= OS.MobileDevice_vibration(
+                     Internal_PackageSupport.initializeMobileDevice(display),duration);
+
+		}
+	}
+private static final class FlashBacklightsRunnable implements Runnable {
+		private final Display display;
+		private final int duration;
+		boolean result;
+
+		private FlashBacklightsRunnable(Display display, int duration) {
+			this.display = display;
+			this.duration = duration;
+		}
+
+		public void run() {
+		result = OS.MobileDevice_flashLights(
+		            Internal_PackageSupport.initializeMobileDevice(
+		                display),duration);
+		}
+	}
+
+/* Image types, same values as MIDP */
+public static final int LIST_ELEMENT = 1;
+public static final int CHOICE_GROUP_ELEMENT = 2;
+public static final int ALERT = 3;
+
+public DisplayExtension() {
+    super();
+}
+
+/**
+ * Determine the best width for the given image type.
+ * @param imageType
+ * @return Best height or -1 if invalid image type given.
+ */
+public static int getBestImageWidth(int imageType) {
+    return getBestImageSize(imageType);
+}
+
+/**
+ * Determine the best height for the given image type.
+ * @param imageType
+ * @return Best height or -1 if invalid image type given.
+ */
+public static int getBestImageHeight(int imageType) {
+    return getBestImageSize(imageType);
+}
+
+/**
+ * Gets the default display instance, but does not create one if it doesn't exist.
+ * @return Default display if one has been initialized otherwise null
+ */
+public static Display getDisplayInstance() {
+    return Internal_PackageSupport.getDisplayInstance();
+}
+/**
+  * Flashes devices backlight.
+  *
+  * @param duration Duration in milliseconds.
+  * @return false if no flashing happened because MIDlet was in background or
+  *         feature is not supported.
+ */
+public static boolean flashLights( final int duration ){
+	final Display display = getDisplayInstance();
+	if (display == null || display.isDisposed() ) return false;
+	FlashBacklightsRunnable runnable = new FlashBacklightsRunnable(display, duration);
+	display.syncExec(runnable);
+	return runnable.result;
+}
+/**
+ * Vibrates device
+ *
+ * @param duration Duration in milliseconds.
+ * @return false if no vibration happened because MIDlet was in background
+ *         or feature is not supported.
+ */
+public static boolean startVibra(final int duration) {
+	final Display display = getDisplayInstance();
+	if (display == null || display.isDisposed() ) return false;
+	VibraRunnable runnable = new VibraRunnable(duration, display);
+	display.syncExec(runnable);
+	return runnable.result;
+}
+/**
+ *
+ * @param imageType
+ * @return
+ */
+private static int getBestImageSize(int imageType) {
+    switch (imageType) {
+    case LIST_ELEMENT:
+    case CHOICE_GROUP_ELEMENT:
+        return Style.pixelMetric(Style.QSTYLE_PM_SMALLICONSIZE);
+    case ALERT:
+        return Style.pixelMetric(Style.QSTYLE_PM_MESSAGEBOXICONSIZE);
+    default:
+        return -1;
+    }
+}
+
+
+}