package aimmotionnotifier.servicetracker;

import org.osgi.framework.BundleContext;

import com.buglabs.application.AbstractServiceTracker;
import com.buglabs.bug.module.gps.pub.IPositionProvider;
import com.buglabs.bug.module.lcd.pub.IModuleDisplay;
import com.buglabs.bug.module.motion.pub.IMotionSubject;

import aimmotionnotifier.ui.AIMMotionNotifierApp;

/**
 *	Service tracker for the BugApp Bundle.
 *  Most of it was generated by the Bug Application Wizard.
 *  Alterations were maid to member variables, doStart(), 
 *  and doStop() methods.
 *   @author Dragonfly - Bug Application Wizard
 *   @author John Connolly - jeconnol@gmail.com
 */
public class AIMMotionNotifierServiceTracker extends AbstractServiceTracker {
	private IMotionSubject motion;
	private IPositionProvider position;
	private IModuleDisplay display;

	public AIMMotionNotifierServiceTracker(BundleContext context) {
		super(context);
	}

	/**
	 * Determines if the application can start.
	 */
	public boolean canStart() {
		return super.canStart();
	}

	/**
	 * Obtains handles to all service dependencies.
	 * Creates the FlickrUpprApp and displays it.
	 */
	public void doStart() {
		display = (IModuleDisplay) getService(IModuleDisplay.class);

		motion = (IMotionSubject) getService(IMotionSubject.class);
		position = (IPositionProvider) getService(IPositionProvider.class);
		System.out.println("AIMMotionNotifier: start");
		
		AIMMotionNotifierApp amna = new AIMMotionNotifierApp(display, motion, position);
		motion.register(amna);
		amna.createUI();
		amna.show();
	}

	/**
	 * Called when a service that this application depends is unregistered.
	 */
	public void doStop() {
		System.out.println("AIMMotionNotifierServiceTracker: stop");

	}

	/**
	 * Allows the user to set the service dependencies by
	 * adding them to services list returned by getServices().
	 * i.e. getServices().add(MyService.class.getName());
	 */
	public void initServices() {
		getServices().add("com.buglabs.bug.module.lcd.pub.IModuleDisplay");
		getServices().add("com.buglabs.bug.module.motion.pub.IMotionSubject");
		getServices().add("com.buglabs.bug.module.gps.pub.IPositionProvider");
		
		
	}
}