package eu.jucy.gui.itemhandler; import java.io.File; import java.util.ArrayList; import java.util.Collections; import logger.LoggerFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.ui.ISelectionService; import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; import org.eclipse.ui.menus.IWorkbenchContribution; import org.eclipse.ui.services.IServiceLocator; import uc.files.IDownloadable; import uc.files.IHasDownloadable; import uc.files.downloadqueue.DownloadQueue; import uihelpers.IconManager; import eu.jucy.gui.ApplicationWorkbenchWindowAdvisor; import eu.jucy.gui.itemhandler.DownloadableHandlers.DownloadToRecommendedPath; public class RecommendedDownloadsContributionItem extends CompoundContributionItem implements IWorkbenchContribution { private static final Logger logger = LoggerFactory.make(Level.DEBUG); private IServiceLocator serviceLocator; @Override protected IContributionItem[] getContributionItems() { IStructuredSelection iss= (IStructuredSelection)((ISelectionService)serviceLocator.getService(ISelectionService.class)).getSelection(); ArrayList<IContributionItem> contribs = new ArrayList<IContributionItem>(); Object o = iss.getFirstElement(); if (o != null) { logger.debug("downloadable: "+o.getClass().getName()+" size: "+iss.size()); } if (o instanceof IHasDownloadable && ((IHasDownloadable)o).getDownloadable() != null && iss.size() == 1) { IDownloadable idf = ((IHasDownloadable)o).getDownloadable(); DownloadQueue dq = ApplicationWorkbenchWindowAdvisor.get().getDownloadQueue(); for (File target:dq.getPathRecommendation(idf)) { logger.debug("adding recommendation: "+target); CommandContributionItemParameter ccip = new CommandContributionItemParameter(serviceLocator, null, DownloadToRecommendedPath.ID,SWT.PUSH); ccip.parameters = Collections.singletonMap( DownloadToRecommendedPath.TargetPath, target.getPath()); ccip.label = target.getPath(); ccip.icon = IconManager.get().getImageDescriptorFromFile(target); CommandContributionItem cci = new CommandContributionItem(ccip); contribs.add(cci); } } return contribs.toArray(new IContributionItem[]{}); } public void initialize(IServiceLocator serviceLocator) { this.serviceLocator = serviceLocator; } }