Create Elements Programmatically [message #1775421] |
Mon, 30 October 2017 03:39  |
Eclipse User |
|
|
|
Hello,
I want to create my elements programmatically. I have a Unity(C#) editor and when user drag and drop an element such as start event in Unity editor, text should be sent by socket to the my bpmn editor and start event should be created. How can i achieve this?
Regards
Umut Kazan
[Updated on: Mon, 30 October 2017 03:40] by Moderator
|
|
|
|
|
|
|
Re: Create Elements Programmatically [message #1776756 is a reply to message #1776722] |
Tue, 21 November 2017 03:46  |
Eclipse User |
|
|
|
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
IEditorPart editor = page.getActiveEditor();
final SbpMultiPageEditor sbpMPE = (SbpMultiPageEditor) editor;
IFeature createTask = (IFeature) getCreateFeature(shape.getType(), sbpMPE.getDesignEditor().getDiagramTypeProvider().getFeatureProvider());
CreateContext createCon = new CreateContext();
createCon.setX(shape.getX());
createCon.setY(shape.getY());
createCon.setHeight(-1);
createCon.setWidth(-1);
createCon.setTargetContainer(sbpMPE.getDesignEditor().getDiagramTypeProvider().getFeatureProvider().getDiagramTypeProvider().getDiagram());
AbstractCreateFlowElementFeature createTaskFeature = (AbstractCreateFlowElementFeature) createTask;
FlowElement element = (FlowElement) createBusinessObject(createCon, createTaskFeature.getBusinessObjectClass());
element.setId(shape.getId());
element.setName(shape.getName());
if (element != null)
{
try
{
final ModelHandler handler = ModelHandler.getInstance(sbpMPE.getDesignEditor().getDiagramTypeProvider().getFeatureProvider()
.getDiagramTypeProvider().getDiagram());
final FlowElement finalElement = element;
// System.out.println(finalElement);
// handleProperties(finalElement);
final CreateContext finalCreateCon = createCon;
EditorUtil.ExecuteInTransactionalDomain(new IExecutable()
{
@Override
public void execute()
{
handler.addFlowElement(BusinessObjectUtil.getBusinessObjectForPictogramElement(finalCreateCon.getTargetContainer()),
finalElement);
AddContext addContext = new AddContext(finalCreateCon, finalElement);
sbpMPE.getDesignEditor().getDiagramTypeProvider().getFeatureProvider().addIfPossible(addContext);
}
}, sbpMPE.getDesignEditor().getEditingDomain());
}
catch (IOException e)
{
Activator.logError(e);
}
}
I don't know if this will help anybody because there are several custom methods and class but the idea is create the context and business object(flow element). Then add it to editor.
Umut
|
|
|
Powered by
FUDForum. Page generated in 0.03508 seconds