package eu.jucy.ui.hublist; import logger.LoggerFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; import eu.jucy.gui.ApplicationWorkbenchWindowAdvisor; import eu.jucy.gui.GuiHelpers; import eu.jucy.gui.Lang; import eu.jucy.hublist.Column; import eu.jucy.hublist.HublistHub; /** * TODO -> move to core commands * */ public abstract class HublistHubActions extends Action implements IWorkbenchAction ,ISelectionChangedListener, ISelectionListener{ private static final String partialID="eu.jucy.ui.hublist.HublistHubAction."; private static Logger logger = LoggerFactory.make(Level.DEBUG); private IStructuredSelection selection; public HublistHubActions() {} public void dispose() { } public void selectionChanged(SelectionChangedEvent event) { selectionChanged(null,event.getSelection()); } public void selectionChanged(IWorkbenchPart part, ISelection incoming) { if (incoming instanceof IStructuredSelection) { selection = (IStructuredSelection)incoming; setEnabled( !selection.isEmpty() && (selection.getFirstElement() instanceof HublistHub )); } else { setEnabled(false); } } public void run() { logger.debug("starting hubaction "+ selection.size()); for (Object o: selection.toList()) { if (o instanceof HublistHub) { logger.debug("found hublist hub:"+o); doWith((HublistHub)o); } } } protected abstract void doWith(HublistHub hub); public static class AddToFavoritesAction extends HublistHubActions { public static final String ID = partialID+"AddToFavorites"; public AddToFavoritesAction() { setId(ID); setText(Lang.AddToFavorites); } protected void doWith(HublistHub hub) { hub.addToFavorites(); } } public static class ConnectAction extends HublistHubActions { public static final String ID = partialID+"Connect"; public ConnectAction() { setId(ID); setText(Lang.Connect); } protected void doWith(HublistHub hub) { hub.connect(ApplicationWorkbenchWindowAdvisor.get()); } } public static class CopyAddressAction extends HublistHubActions { public static final String ID = partialID+"CopyAddress"; public CopyAddressAction() { setId(ID); setText(Lang.CopyAddressToClipboard); } protected void doWith(HublistHub hub) { String textData = hub.getAttribute(Column.ADDRESS); GuiHelpers.copyTextToClipboard(textData); logger.debug("copy: "+textData); } } }