javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/BaseDisplay.java
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:47:24 +0300
changeset 23 98ccebc37403
child 26 dc7c549001d5
permissions -rw-r--r--
Revision: v2.1.24 Kit: 201019

/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/


package com.nokia.microedition.media.control;

import org.eclipse.swt.widgets.*;
import javax.microedition.lcdui.*;
import org.eclipse.swt.graphics.Rectangle;


public abstract class BaseDisplay
{
	// represents native side of display and initialized by derived class
	protected int nativeDisplayHandle;
	protected org.eclipse.swt.widgets.Control eswtCanvasControl;
	private Rectangle rect;
	private int[] rectDimension = new int[ 4 ];
	public BaseDisplay()
    {
    	rect = new Rectangle(0,0,0,0);
   	}
/*	protected void setESWTControl()
	{
		eswtCanvasControl =
	}
	*/
 	public void GetCallbackInUiThread(int placeholder)
	{
		System.out.println("inside BaseDisplay : GetCallbackInUiThread +");
		final int val = placeholder;
		try{
			final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
			disp.syncExec(new Runnable() {
			 public void run() {
			  			  _nativeMethodCallInUiThread(nativeDisplayHandle , val);
	 			             }
						 });
		   }
		 catch(Exception e)
		 {
			System.out.println("inside BaseDisplay : GetCallbackInUiThread....exception is " + e.toString());
		 }
		System.out.println("inside BaseDisplay : GetCallbackInUiThread -");
	}
	
	public void setContentBound()
	{
		System.out.println("inside BaseDisplay : setContentBound +");
		try{

			final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
			disp.syncExec(new Runnable() {
			 public void run() {
			  eswtCanvasControl.setBounds(rect);
			      }
						 });
		   }
		 catch(Exception e)
		 {
			System.out.println("inside BaseDisplay : setContentBound....exception is  " + e.toString());
		 }
		 System.out.println("inside BaseDisplay : setContentBound -");
	}


	public void removeContentBound()
	{
		System.out.println("inside BaseDisplay : removeContentBound +");
		try{

			final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
			disp.syncExec(new Runnable() {
			 public void run() {
			 	Rectangle emptyRect = new Rectangle(0,0,0,0);
			  eswtCanvasControl.setBounds(emptyRect);
			      }
						 });
		   }
		 catch(Exception e)
		 {
			System.out.println("inside BaseDisplay : removeContentBound....exception is  " + e.toString());
		 }
		 System.out.println("inside BaseDisplay : removeContentBound -");
	}
	
	public void redrawControl()
	{
		System.out.println("inside BaseDisplay : redrawControl +");
		try{

			final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
			disp.syncExec(new Runnable() {
			 public void run() {
			 				// redraw entire bounds of receiver
			 			  eswtCanvasControl.redraw();
			      }
						 });
		   }
		 catch(Exception e)
		 {
			System.out.println("inside BaseDisplay : redrawControl....exception is  " + e.toString());
		 }
		 System.out.println("inside BaseDisplay : redrawControl -");
	}
		/* called from native to reset the java side rect
	 Before the call of this function array is updated from native side
	 which can be used to refresh the UI screen rect and/or 
	 set/remove bound rect
	*/
	public void setRect()
	{
		
			rect.x = rectDimension[0];
			rect.y = rectDimension[1];
			rect.width = rectDimension[2];
			rect.height = rectDimension[3];
			
		System.out.println("BaseDisplay : setRect rect is reset with values: x =" + rect.x +"y ="+ rect.y +"width ="+rect.width+"height = "+ rect.height);	
			
	}

	// abstract functions implemented by concrete class
	protected abstract void setDisplaySize(int aWidth, int aHeight);
	protected abstract void setDisplayFullScreen(final boolean aFullScreenMode);
	protected abstract void setDisplayLocation(int aX, int aY);
	protected abstract void setVisible(boolean aVisible);
	protected abstract int getDisplayHeight();
	protected abstract int getDisplayWidth();
	protected abstract int getDisplayX();
	protected abstract int getDisplayY();
	protected abstract int getSourceWidth();
	protected abstract int getSourceHeight();
	protected abstract void getBoundRect();
	protected abstract void setWindowResources();
	protected abstract void setNativeHandle(int handle);
    // Native methods
	 private native void _nativeMethodCallInUiThread(int nativeDisplayHandle , int placeholder);

}