use of org.obeonetwork.dsl.interaction.design.ui.extension.providers.InteractionParentSelectionLabelProvider in project InformationSystem by ObeoNetwork.
the class InteractionServices method changeParentForInteraction.
/**
* Change the parent of an interaction with a selected one
* @param interaction
* @return
*/
public Interaction changeParentForInteraction(final Interaction interaction) {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
InteractionParentSelectionLabelProvider labelProvider = new InteractionParentSelectionLabelProvider(adapterFactory);
InteractionParentSelectionContentProvider contentProvider = new InteractionParentSelectionContentProvider(adapterFactory);
ElementTreeSelectionDialog dlg = new ElementTreeSelectionDialog(shell, labelProvider, contentProvider);
dlg.setHelpAvailable(false);
dlg.setValidator(new ISelectionStatusValidator() {
public IStatus validate(Object[] selection) {
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 interaction's parent");
dlg.setMessage("Select the new parent for the interaction");
Session session = SessionManager.INSTANCE.getSession(interaction);
if (session == null) {
return interaction;
}
dlg.setInput(session.getSemanticResources().toArray());
dlg.setInitialSelection(interaction.eContainer());
int btn = dlg.open();
if (btn == Dialog.OK) {
Object selectedElement = dlg.getFirstResult();
if (selectedElement instanceof ObeoDSMObject && selectedElement != interaction.eContainer()) {
// Change the parent
((ObeoDSMObject) selectedElement).getBehaviours().add(interaction);
}
}
return interaction;
}
Aggregations