package ch.elexis.core.ui.p2;
import org.eclipse.equinox.p2.ui.Policy;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import ch.elexis.core.ui.p2.policy.ElexisCloudPolicy;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "ch.elexis.core.ui.p2"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
ServiceRegistration policyRegistration;
ElexisCloudPolicy policy;
IPropertyChangeListener preferenceListener;
/**
* The constructor
*/
public Activator(){}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception{
super.start(context);
plugin = this;
registerP2Policy(context);
getPreferenceStore().addPropertyChangeListener(getPreferenceListener());
// ServiceReference<IProvisioningAgent> serviceReference =
// context.getServiceReference(IProvisioningAgent.class);
// IProvisioningAgent agent = context.getService(serviceReference);
// if (agent == null) {
// System.out.println(">> no agent loaded!");
// return;
// }
//
// if (! P2Util.addRepository(agent, "http://download.elexis.info/elexis.3.snapshot")) {
// System.out.println(">> could no add repostory!");
// return;
// }
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception{
plugin = null;
policyRegistration.unregister();
policyRegistration = null;
getPreferenceStore().removePropertyChangeListener(preferenceListener);
preferenceListener = null;
super.stop(context);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault(){
return plugin;
}
private void registerP2Policy(BundleContext context){
policy = new ElexisCloudPolicy();
policy.updateForPreferences();
policyRegistration = context.registerService(Policy.class.getName(), policy, null);
}
private IPropertyChangeListener getPreferenceListener(){
if (preferenceListener == null) {
preferenceListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event){
policy.updateForPreferences();
}
};
}
return preferenceListener;
}
}