package eu.jucy.gui.favhub; import logger.LoggerFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import eu.jucy.gui.ApplicationWorkbenchWindowAdvisor; import eu.jucy.gui.itemhandler.DownloadableHandlers.RemoveDownloadableFromQueueHandler; import uc.FavHub; import uc.IFavHubs; public abstract class FavHubHandlers extends AbstractHandler { private static final Logger logger = LoggerFactory.make(Level.DEBUG); public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection sel = (IStructuredSelection)HandlerUtil.getCurrentSelection(event); if (!sel.isEmpty()) { FavHub fh = (FavHub)sel.getFirstElement(); FavHubEditor fhe = (FavHubEditor)HandlerUtil.getActiveEditorChecked(event); run(fh,fhe.getFavHubs(),event); } return null; } protected abstract void run(FavHub fh,IFavHubs favHubs,ExecutionEvent event); public static class ChangeFHPropertiesHandler extends FavHubHandlers { public static final String COMMAND_ID = "eu.jucy.gui.fh.properties"; @Override protected void run(FavHub fh,IFavHubs favHubs, ExecutionEvent event) { FavHubPropertiesDialog diag = new FavHubPropertiesDialog(HandlerUtil.getActiveShell(event),fh); if (diag.open() == Dialog.OK) { logger.debug("hub changed: "); if (diag.getResult() != fh) { logger.debug("exchangeing FavHubs: "+fh.getHubaddy()+" "+diag.getResult().getHubaddy()); favHubs.exchange(fh, diag.getResult()); } favHubs.store(); } } } public static class CreateFavHubsHandler extends AbstractHandler { public static final String COMMAND_ID = "eu.jucy.gui.fh.new"; public Object execute(ExecutionEvent event) throws ExecutionException { FavHubPropertiesDialog fhp = new FavHubPropertiesDialog(HandlerUtil.getActiveShell(event)); if (fhp.open() == Dialog.OK) { FavHub fh = fhp.getResult(); if (fh != null) { logger.debug("Adding FavHub: "+fh.getHubaddy()); fh.addToFavHubs(ApplicationWorkbenchWindowAdvisor.get().getFavHubs()); } } return null; } } public static class OpenHubHandler extends FavHubHandlers { public static final String COMMAND_ID = "eu.jucy.gui.fh.connect"; @Override protected void run(FavHub fh,IFavHubs favHubs, ExecutionEvent event) { fh.connect(ApplicationWorkbenchWindowAdvisor.get()); } } public static class MoveUpHandler extends FavHubHandlers { public static final String COMMAND_ID = "eu.jucy.gui.fh.moveup"; @Override protected void run(FavHub fh,IFavHubs favHubs, ExecutionEvent event) { fh.changePriority(true,favHubs); } } public static class MoveDownHandler extends FavHubHandlers { public static final String COMMAND_ID = "eu.jucy.gui.fh.movedown"; @Override protected void run(FavHub fh,IFavHubs favHubs, ExecutionEvent event) { fh.changePriority(false,favHubs); } } public static class RemoveHandler extends FavHubHandlers { public static final String COMMAND_ID = RemoveDownloadableFromQueueHandler.COMMAND_ID; @Override protected void run(FavHub fh,IFavHubs favHubs, ExecutionEvent event) { fh.removeFromFavHubs(favHubs); } } }