package gov.nasa.jpl.mbee.mdk.systems_reasoner.actions;
import com.nomagic.magicdraw.core.Application;
import com.nomagic.magicdraw.openapi.uml.SessionManager;
import com.nomagic.magicdraw.ui.dialogs.MDDialogParentProvider;
import com.nomagic.magicdraw.ui.dialogs.SelectElementInfo;
import com.nomagic.magicdraw.ui.dialogs.SelectElementTypes;
import com.nomagic.magicdraw.ui.dialogs.selection.ElementSelectionDlg;
import com.nomagic.magicdraw.ui.dialogs.selection.ElementSelectionDlgFactory;
import com.nomagic.magicdraw.ui.dialogs.selection.SelectionMode;
import com.nomagic.uml2.ext.magicdraw.auxiliaryconstructs.mdmodels.Model;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Classifier;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.InstanceSpecification;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Namespace;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
public class CreateInstanceMenuAction extends SRAction {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String DEFAULT_ID = "Create Instance";
private Classifier classifier;
public CreateInstanceMenuAction(final Classifier classifier) {
super(DEFAULT_ID, classifier);
this.classifier = classifier;
}
@Override
public void actionPerformed(ActionEvent e) {
final List<java.lang.Class<?>> types = new ArrayList<java.lang.Class<?>>();
types.add(com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Package.class);
types.add(Model.class);
final Frame dialogParent = MDDialogParentProvider.getProvider().getDialogParent();
final ElementSelectionDlg dlg = ElementSelectionDlgFactory.create(dialogParent);
final SelectElementTypes set = new SelectElementTypes(null, types, null, null);
final SelectElementInfo sei = new SelectElementInfo(true, false, Application.getInstance().getProject().getModel().getOwner(), true);
ElementSelectionDlgFactory.initSingle(dlg, set, sei, classifier.getOwner());
dlg.setSelectionMode(SelectionMode.SINGLE_MODE);
if (dlg != null) {
dlg.setVisible(true);
if (dlg.isOkClicked() && dlg.getSelectedElement() != null && dlg.getSelectedElement() instanceof Namespace) {
SessionManager.getInstance().createSession(DEFAULT_ID);
final InstanceSpecification instance = CreateInstanceAction.createInstance(classifier, (Namespace) dlg.getSelectedElement(), false);
SessionManager.getInstance().closeSession();
ValidateAction.validate(instance);
}
}
}
}