2013-08-20 45 views
0

我嘗試了這裏的解決方案提供: automatic update of graphiti diagrams in case of changes in the datamodel修改象形元素

我想打電話給Upadate功能在我班上的UpdateNeeded功能,實現AbstractUpdateFeature:

TransactionalEditingDomain domain = TransactionUtils.getEditingDomain(diagram); 
domain.getCommandStack().execute(new RecordingCommand(domain) { 
public void doExecute() { 
    UpdateContext updateContext = new                   
    UpdateContext(getDiagram().getChildren().get(0).                    getGraphicsAlgorithm().getPictogramElement()); 
    IUpdateFeature updateFeature = getFeatureProvider().getUpdateFeature(updateContext); 
    updateFeature.update(updateContext); 
}}); 

在更新函數中,我試圖更改象形圖元素的文本字段的值:

// Set name in pictogram model 
    if (pictogramElement instanceof ContainerShape) { 
     ContainerShape cs = (ContainerShape) pictogramElement; 
     for (Shape shape : cs.getChildren()) { 
      if (shape.getGraphicsAlgorithm() instanceof Text) { 
       Text text = (Text) shape.getGraphicsAlgorithm(); 
       text.setValue("aaa"); 
       return true; 
      } 
     } 
    } 

但我得到異常:

java.lang.IllegalStateException: Cannot modify resource set without a write transaction 
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.assertWriting(TransactionChangeRecorder.java:348) 
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.appendNotification(TransactionChangeRecorder.java:302) 
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.processObjectNotification(TransactionChangeRecorder.java:284) 
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.notifyChanged(TransactionChangeRecorder.java:240) 
+0

什麼異常的功能?顯示你的代碼和錯誤。我們不是千里眼。 –

+0

@JanDoggen我用所需的信息修改了我的問題。 –

回答

0

嘗試執行使用DiagramBehavior

getDiagramBehavior().executeFeature(feature, context);