package org.oddjob.monitor.view; import org.oddjob.arooa.design.actions.EditActionsContributor; import org.oddjob.arooa.parsing.DragPoint; import org.oddjob.monitor.context.ExplorerContext; import org.oddjob.monitor.model.ConfigContextSearch; import org.oddjob.monitor.model.SelectedContextAware; /** * A Set of edit actions that contribute to the menu and become * enabled/disabled dependent on job selection. * <p> * The actions forward to the actual edit actions in the underlying * components action map (in explorers case, the trees action map). * Disabling/Enabling is not passed to the underlying actions * so they will always respond to key strokes. * * @author rob * */ public class ExplorerEditActions extends EditActionsContributor implements SelectedContextAware { private ExplorerContext context; public void setSelectedContext(ExplorerContext context) { this.context = context; if (context == null) { setCutEnabled(false); setCopyEnabled(false); setPasteEnabled(false); setDeleteEnabled(false); } } @Override public void prepare() { DragPoint dragPoint = null; ConfigContextSearch search = new ConfigContextSearch(); dragPoint = search.dragPointFor(context); if (dragPoint == null) { setCutEnabled(false); setCopyEnabled(false); setPasteEnabled(false); setDeleteEnabled(false); } else { if (!dragPoint.supportsCut()) { setCutEnabled(false); setDeleteEnabled(false); } else { setCutEnabled(true); setDeleteEnabled(true); } setCopyEnabled(true); if (dragPoint.supportsPaste()) { setPasteEnabled(true); } else { setPasteEnabled(false); } } } }