package gov.nasa.jpl.mbee.mdk.ocl;
import com.nomagic.actions.AMConfigurator;
import com.nomagic.actions.ActionsCategory;
import com.nomagic.actions.ActionsManager;
import com.nomagic.magicdraw.actions.ActionsGroups;
import com.nomagic.magicdraw.actions.BrowserContextAMConfigurator;
import com.nomagic.magicdraw.actions.DiagramContextAMConfigurator;
import com.nomagic.magicdraw.actions.MDActionsCategory;
import com.nomagic.magicdraw.ui.browser.Tree;
import com.nomagic.magicdraw.uml.symbols.DiagramPresentationElement;
import com.nomagic.magicdraw.uml.symbols.PresentationElement;
import gov.nasa.jpl.mbee.mdk.MDKPlugin;
import gov.nasa.jpl.mbee.mdk.actions.ValidateConstraintsAction;
import gov.nasa.jpl.mbee.mdk.ocl.actions.OclQueryAction;
import org.apache.commons.lang.ArrayUtils;
/**
* Created by igomes on 4/18/17.
*/
public class OclQueryConfigurator implements BrowserContextAMConfigurator, DiagramContextAMConfigurator, AMConfigurator {
@Override
public void configure(ActionsManager manager, Tree tree) {
configure(manager);
}
@Override
public void configure(ActionsManager manager, DiagramPresentationElement diagram, PresentationElement[] selected, PresentationElement requestor) {
configure(manager, (PresentationElement[]) ArrayUtils.add(selected, requestor));
}
@Override
public void configure(ActionsManager manager) {
configure(manager, (PresentationElement[]) null);
}
public void configure(ActionsManager manager, PresentationElement... elements) {
ActionsCategory category = (ActionsCategory) manager.getActionFor(MDKPlugin.MAIN_TOOLBAR_CATEGORY_NAME);
if (category == null) {
category = new MDActionsCategory(MDKPlugin.MAIN_TOOLBAR_CATEGORY_NAME, MDKPlugin.MAIN_TOOLBAR_CATEGORY_NAME, null, ActionsGroups.APPLICATION_RELATED);
category.setNested(true);
}
manager.addCategory(category);
category.addAction(new OclQueryAction());
category.addAction(new ValidateConstraintsAction());
//category.addAction(new ValidateConstraintsAction(elements != null ? Arrays.stream(elements).map(PresentationElement::getElement).filter(Objects::nonNull).distinct().toArray(Element[]::new) : null));
}
@Override
public int getPriority() {
return 0;
}
}