package org.bundlemaker.core.ui.event.selection.internal;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.bundlemaker.core.analysis.IDependency;
import org.bundlemaker.core.selection.IDependencySelectionChangedEvent;
import org.bundlemaker.core.selection.IDependencySelectionListener;
import org.bundlemaker.core.selection.Selection;
import org.bundlemaker.core.ui.event.Events;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
public class Activator extends AbstractUIPlugin {
// The shared instance
private static Activator plugin;
/** - */
private IDependencySelectionListener _mainDependencySelectionToDetailDependencySelectionForwarder;
// /** - */
// private IArtifactSelectionListener _mainDependencySelectionCleaner;
private Events _events;
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
@Override
public void start(final BundleContext context) throws Exception {
super.start(context);
plugin = this;
this._events = new Events() {
/*
* (non-Javadoc)
*
* @see org.bundlemaker.core.ui.event.Events#getBundleContext()
*/
@Override
protected BundleContext getBundleContext() {
return context;
}
};
//
_mainDependencySelectionToDetailDependencySelectionForwarder = new IDependencySelectionListener() {
@Override
public void dependencySelectionChanged(IDependencySelectionChangedEvent event) {
Selection
.instance()
.getDependencySelectionService()
.setSelection(Selection.DETAIL_DEPENDENCY_SELECTION_ID, event.getProviderId(),
getAllLeafDependencies(event.getSelectedDependencies()));
}
};
Selection
.instance()
.getDependencySelectionService()
.addDependencySelectionListener(Selection.MAIN_DEPENDENCY_SELECTION_ID,
_mainDependencySelectionToDetailDependencySelectionForwarder);
// //
// _mainDependencySelectionCleaner = new IArtifactSelectionListener() {
// @Override
// public void artifactSelectionChanged(IArtifactSelectionChangedEvent event) {
// Collection<IDependency> EMPTY_DEPENDENCIES = Collections.emptyList();
// Selection.instance().getDependencySelectionService()
// .setSelection(Selection.MAIN_DEPENDENCY_SELECTION_ID, event.getProviderId(), EMPTY_DEPENDENCIES);
// }
// };
//
// Selection.instance().getArtifactSelectionService()
// .addArtifactSelectionListener(Selection.MAIN_ARTIFACT_SELECTION_ID, _mainDependencySelectionCleaner);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
@Override
public void stop(BundleContext context) throws Exception {
plugin = null;
this._events = null;
super.stop(context);
Selection.instance().getDependencySelectionService()
.removeDependencySelectionListener(_mainDependencySelectionToDetailDependencySelectionForwarder);
// Selection.instance().getArtifactSelectionService().removeArtifactSelectionListener(_mainDependencySelectionCleaner);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
/**
* <p>
* </p>
*
* @return
*/
private static List<IDependency> getAllLeafDependencies(Collection<IDependency> dependencies) {
//
final List<IDependency> result = new LinkedList<IDependency>();
for (IDependency dependency : dependencies) {
for (IDependency leafDependency : dependency.getCoreDependencies()) {
result.add(leafDependency);
}
}
return result;
}
/**
* @return
*/
public Events getEvents() {
return this._events;
}
}