DynamicWorkingSetElementAdapter.java
package com.codeaffine.extras.workingset.internal;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetElementAdapter;
public class DynamicWorkingSetElementAdapter implements IWorkingSetElementAdapter {
@Override
public IAdaptable[] adaptElements( IWorkingSet workingSet, IAdaptable[] elements ) {
Collection<IAdaptable> adaptedElements = new ArrayList<>( elements.length + 1 );
for( IAdaptable element : elements ) {
IProject project = adaptElememt( element );
if( project != null ) {
adaptedElements.add( project );
}
}
return adaptedElements.toArray( new IAdaptable[ adaptedElements.size() ] );
}
@Override
public void dispose() {
}
private static IProject adaptElememt( IAdaptable element ) {
Object adapter = element instanceof IProject ? element : element.getAdapter( IProject.class );
return ( IProject )( adapter instanceof IProject ? adapter : null );
}
}