package eu.jucy.gui.itemhandler; import java.util.ArrayList; import java.util.Collections; import logger.LoggerFactory; import org.apache.log4j.Logger; import org.eclipse.jface.action.IContributionItem; import org.eclipse.swt.SWT; 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.FavFolders; import uc.FavFolders.FavDir; import uihelpers.IconManager; import eu.jucy.gui.itemhandler.DownloadableHandlers.DownloadParentdDir; import eu.jucy.gui.itemhandler.DownloadableHandlers.DownloadToRecommendedDir; import eu.jucy.gui.itemhandler.DownloadableHandlers.DownloadToRecommendedPath; public class DownloadableContributionItem extends CompoundContributionItem implements IWorkbenchContribution { private static final Logger logger = LoggerFactory.make(); private final String commandID; public DownloadableContributionItem() { this(DownloadToRecommendedDir.ID); } public DownloadableContributionItem(String commandID) { this.commandID = commandID; } private IServiceLocator serviceLocator; @Override protected IContributionItem[] getContributionItems() { ArrayList<IContributionItem> contribs = new ArrayList<IContributionItem>(); for (FavDir favDir: FavFolders.getFavDirs()) { CommandContributionItemParameter ccip = new CommandContributionItemParameter(serviceLocator, null, commandID,SWT.PUSH); ccip.parameters = Collections.singletonMap(DownloadToRecommendedPath.TargetPath, favDir.getDirectory().getPath()); ccip.label = favDir.getName(); if (favDir.getDirectory().isDirectory()) { ccip.icon = IconManager.get().getImageDescriptorFromFile(favDir.getDirectory()); } logger.debug("parameter: "+ ccip.parameters.get(DownloadToRecommendedPath.TargetPath)); CommandContributionItem cci = new CommandContributionItem(ccip); contribs.add(cci); } return contribs.toArray(new IContributionItem[]{}); } public void initialize(IServiceLocator serviceLocator) { this.serviceLocator = serviceLocator; } public static class DownloadParentDirContributionItem extends DownloadableContributionItem { public DownloadParentDirContributionItem() { super(DownloadParentdDir.ID); } } }