Search in sources :

Example 1 with StateMachineParentSelectionContentProvider

use of org.obeonetwork.dsl.statemachine.design.ui.extension.providers.StateMachineParentSelectionContentProvider in project InformationSystem by ObeoNetwork.

the class StateMachineServices method changeParentForStateMachine.

/**
 * Change the parent of an interaction with the
 * @param stateMachine
 * @return
 */
public StateMachine changeParentForStateMachine(EObject context) {
    StateMachine stateMachine = null;
    if (context instanceof StateMachine) {
        stateMachine = (StateMachine) context;
    } else {
        EObject container = context.eContainer();
        while (!(container instanceof StateMachine) && container.eContainer() != null) {
            container = container.eContainer();
        }
        stateMachine = (StateMachine) container;
    }
    Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
    AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
    StateMachineParentSelectionLabelProvider labelProvider = new StateMachineParentSelectionLabelProvider(adapterFactory);
    StateMachineParentSelectionContentProvider contentProvider = new StateMachineParentSelectionContentProvider(adapterFactory);
    ElementTreeSelectionDialog dlg = new ElementTreeSelectionDialog(shell, labelProvider, contentProvider);
    dlg.setHelpAvailable(false);
    dlg.setValidator(new ISelectionStatusValidator() {

        public IStatus validate(Object[] selection) {
            if (selection.length > 0) {
                Object selectedObject = selection[0];
                if (selectedObject instanceof EObject) {
                    IPermissionAuthority authority = PermissionAuthorityRegistry.getDefault().getPermissionAuthority((EObject) selectedObject);
                    if (authority != null) {
                        LockStatus lockStatus = authority.getLockStatus((EObject) selectedObject);
                        if (LockStatus.LOCKED_BY_OTHER.equals(lockStatus)) {
                            return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "This element is locked by another user");
                        }
                    }
                }
            }
            return new Status(IStatus.OK, Activator.PLUGIN_ID, "");
        }
    });
    dlg.setTitle("Change statemachine's parent");
    dlg.setMessage("Select the new parent for the statemachine");
    Session session = SessionManager.INSTANCE.getSession(stateMachine);
    if (session == null) {
        return stateMachine;
    }
    dlg.setInput(session.getSemanticResources().toArray());
    dlg.setInitialSelection(stateMachine.eContainer());
    int btn = dlg.open();
    if (btn == Dialog.OK) {
        Object selectedElement = dlg.getFirstResult();
        if (selectedElement instanceof ObeoDSMObject && selectedElement != stateMachine.eContainer()) {
            // Change the parent
            ((ObeoDSMObject) selectedElement).getBehaviours().add(stateMachine);
        }
    }
    return stateMachine;
}
Also used : IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) LockStatus(org.eclipse.sirius.ecore.extender.business.api.permission.LockStatus) IPermissionAuthority(org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority) IStatus(org.eclipse.core.runtime.IStatus) StateMachineParentSelectionLabelProvider(org.obeonetwork.dsl.statemachine.design.ui.extension.providers.StateMachineParentSelectionLabelProvider) StateMachine(org.obeonetwork.dsl.statemachine.StateMachine) LockStatus(org.eclipse.sirius.ecore.extender.business.api.permission.LockStatus) ComposedAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory) ElementTreeSelectionDialog(org.eclipse.ui.dialogs.ElementTreeSelectionDialog) Shell(org.eclipse.swt.widgets.Shell) AdapterFactory(org.eclipse.emf.common.notify.AdapterFactory) ComposedAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory) EObject(org.eclipse.emf.ecore.EObject) ObeoDSMObject(org.obeonetwork.dsl.environment.ObeoDSMObject) ISelectionStatusValidator(org.eclipse.ui.dialogs.ISelectionStatusValidator) EObject(org.eclipse.emf.ecore.EObject) ObeoDSMObject(org.obeonetwork.dsl.environment.ObeoDSMObject) StateMachineParentSelectionContentProvider(org.obeonetwork.dsl.statemachine.design.ui.extension.providers.StateMachineParentSelectionContentProvider) Session(org.eclipse.sirius.business.api.session.Session)

Aggregations

IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1 AdapterFactory (org.eclipse.emf.common.notify.AdapterFactory)1 EObject (org.eclipse.emf.ecore.EObject)1 ComposedAdapterFactory (org.eclipse.emf.edit.provider.ComposedAdapterFactory)1 Session (org.eclipse.sirius.business.api.session.Session)1 IPermissionAuthority (org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority)1 LockStatus (org.eclipse.sirius.ecore.extender.business.api.permission.LockStatus)1 Shell (org.eclipse.swt.widgets.Shell)1 ElementTreeSelectionDialog (org.eclipse.ui.dialogs.ElementTreeSelectionDialog)1 ISelectionStatusValidator (org.eclipse.ui.dialogs.ISelectionStatusValidator)1 ObeoDSMObject (org.obeonetwork.dsl.environment.ObeoDSMObject)1 StateMachine (org.obeonetwork.dsl.statemachine.StateMachine)1 StateMachineParentSelectionContentProvider (org.obeonetwork.dsl.statemachine.design.ui.extension.providers.StateMachineParentSelectionContentProvider)1 StateMachineParentSelectionLabelProvider (org.obeonetwork.dsl.statemachine.design.ui.extension.providers.StateMachineParentSelectionLabelProvider)1