Creating aird in editor [message #1819652] |
Mon, 20 January 2020 12:19 |
Viet Dinh Messages: 2 Registered: December 2019 |
Junior Member |
|
|
Hi,
I am struggling to find out how to automatically create an .aird representation file in the wizard.
For example changing basicfamily.editor in such a way, that after you select the wizard in the standard folder 'Example EMF Model Creation Wizards', it will create the resource 'My.basicfamily' within the chosen parent directory and chosen model object. Additionally, now, it shall also create automatically the .aird representation and link it to the resource, and then, enabling viewpoint and create a new Person diagram.
Somehow the code should look similar to this:
// Create a resource set
//
ResourceSet resourceSet = new ResourceSetImpl();
// Get the URI of the model file.
//
URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
// Create a resource for this file.
//
Resource resource = resourceSet.createResource(fileURI);
Thanks in advance for any hints! :)
Greetings,
Viet
|
|
|
Re: Creating aird in editor [message #1819657 is a reply to message #1819652] |
Mon, 20 January 2020 14:14 |
Emmanuel Chebbi Messages: 123 Registered: February 2018 |
Senior Member |
|
|
Hi,
So basically you want to programmatically create the representation of an existing model, right? This question has already been addressed in the forum:
You'll find below a code snippet showing how I achieved a similar behavior in a pet project. There may be better implementations but this one worked for me.
private static void createRepresentation(Activity model, IProject project, IProgressMonitor monitor) throws CoreException {
SubMonitor subMonitor = SubMonitor.convert(monitor);
subMonitor.setTaskName("Creating the diagram");
// Create a new Sirius session to handle the representation
Session session = ModelingProject.asModelingProject(project).get().getSession();
// Allow to create a representation for the activity thereafter
session.getTransactionalEditingDomain().getCommandStack()
.execute(new RecordingCommand(session.getTransactionalEditingDomain()) {
@Override
protected void doExecute() {
SubMonitor commandMonitor = SubMonitor.convert(subMonitor);
session.addSemanticResource(model.eResource().getURI(), commandMonitor);
}
});
// Add the 'workflow' viewpoint to the representation
Viewpoint workflowViewpoint = workflowViewpoint();
ChangeViewpointSelectionCommand cc = new ChangeViewpointSelectionCommand(session, new ViewpointSelectionCallback(), new HashSet<>(asList(workflowViewpoint)), Collections.emptySet(), monitor);
session.getTransactionalEditingDomain().getCommandStack().execute(cc);
// Actually add the model's root element to the representation
session.getTransactionalEditingDomain().getCommandStack()
.execute(new RecordingCommand(session.getTransactionalEditingDomain()) {
@Override
protected void doExecute() {
SubMonitor commandMonitor = SubMonitor.convert(subMonitor);
session.createView(workflowViewpoint, asList(model), true, commandMonitor);
}
});
}
public static Viewpoint workflowViewpoint() {
return ViewpointRegistry
.getInstance()
.registerFromPlugin(PLUGIN_ID + "/description/workflow-editor.odesign")).stream()
.filter(viewpoint -> WORKFLOW_NAME.equals(viewpoint.getName()))
.findAny();
}
[Updated on: Thu, 23 January 2020 09:21] Report message to a moderator
|
|
|
Powered by
FUDForum. Page generated in 0.02156 seconds