[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.modeling.gmf] Re: Programmatically create and open a GMF diagram
|
"task" is one of my EObjects, i juste add an Element to another one.
I've made 2 functions to do the creation and the opening of the diagram
public Diagram createDiagram(XXX xxx){
//create the diagram
int diagramVID = ProcessVisualIDRegistry.getDiagramVisualID(xxx);
if (diagramVID != FormEditPart.VISUAL_ID) {
// error
}
Diagram diagram = ViewService.createDiagram(xxx,
XXXEditPart.MODEL_ID,
XXXDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
xxx.eResource().getContents().add(diagram);
// save the ressource
try {
xxx.eResource().save(XXXDiagramEditorUtil.getSaveOptions());
} catch (IOException e) {
XXXDiagramEditorPlugin.getInstance().logError(
"Save operation failed for: " + xxx.eResource(), e); //$NON-NLS-1$
}
refresh();
return diagram;
}
public void openDiagram(XXX xxx){
//open the diagram
try {
//find the diagram in the resource
Diagram diag = null;
EList<EObject> resources = xxx.eResource().getContents();
for (EObject eObject : resources) {
if(eObject instanceof Diagram){
if(((Diagram)eObject).getElement()!=null && ((Diagram)eObject).getElement().equals(xxx)){
diag = (Diagram)eObject;
break;
}
}
}
//open it
URI uri = EcoreUtil.getURI(diag);
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
page.openEditor(new URIEditorInput(uri,xxx.getName()), XXXDiagramEditor.ID);
} catch (PartInitException e) {
XXXDiagramEditorPlugin.getInstance().logError(
"Unable to open editor", e); //$NON-NLS-1$
}
It's better to execute them in a command.
tell me if you have troubles with it