use of org.eclipse.gef.commands.CommandStack in project whole by wholeplatform.
the class TextualFunctionRunnable method run.
@Override
public void run(IOperationProgressMonitor pm) throws InvocationTargetException, InterruptedException {
// FIXME workaround for missing caret update events (no selection update is performed)
E4Utils.defineCaretBindings(bm);
IEntityPartViewer viewer = (IEntityPartViewer) bm.wGetValue("viewer");
IEntity text = bm.wGet("focusEntity");
boolean enableAnimation = AnimableRunnable.enableAnimation(false);
ModelTextCommand mtc = new ModelTextCommand(text);
try {
mtc.setLabel(label);
mtc.setViewer(viewer);
mtc.begin();
try {
bm.wEnterScope();
IEntity newText = BehaviorUtils.apply(functionUri, bm.wGet("self"), bm);
mtc.setNewSelectedEntity(newText);
mtc.setNewPosition(bm.wIntValue("caretPosition"));
// FIXME add textual selection viariables updates
// see E4Utils.defineCaretBindings()
} catch (OperationCanceledException e) {
throw e;
} finally {
bm.wExitScope();
}
mtc.commit();
if (mtc.canUndo()) {
CommandStack commandStack = viewer.getEditDomain().getCommandStack();
commandStack.execute(mtc);
}
} catch (OperationCanceledException e) {
mtc.rollbackIfNeeded();
} catch (RuntimeException e) {
mtc.rollbackIfNeeded();
throw e;
} finally {
AnimableRunnable.enableAnimation(enableAnimation);
}
}
use of org.eclipse.gef.commands.CommandStack in project whole by wholeplatform.
the class ActionCallRunnable method run.
@Override
public void run(IOperationProgressMonitor pm) throws InvocationTargetException {
IEntity model = bm.wGet("self");
boolean analyzing = bm.wBooleanValue("analyzing");
if (analyzing) {
// clone model if is analyzing
model = EntityUtils.clone(model);
CommonsEntityFactory.instance.createRootFragment(model.wGetAdapter(CommonsEntityDescriptorEnum.Any));
ReflectionFactory.getHistoryManager(model).setHistoryEnabled(true);
// map selected entities if analyzing
IEntity tuple = bm.wGet("selectedEntities");
int size = tuple.wSize();
for (int i = 0; i < size; i++) tuple.wSet(i, EntityUtils.mapEntity(tuple.wGet(i), model));
bm.wSet("primarySelectedEntity", EntityUtils.mapEntity(bm.wGet("primarySelectedEntity"), model));
bm.wSet("focusEntity", EntityUtils.mapEntity(bm.wGet("focusEntity"), model));
}
IEntityPartViewer viewer = (IEntityPartViewer) bm.wGetValue("viewer");
final CommandStack commandStack = viewer.getEditDomain().getCommandStack();
final ModelTransactionCommand mtc = new ModelTransactionCommand(model, label);
pm.beginTask("executing action", 90, IOperationProgressMonitor.TOTAL_WORK);
try {
mtc.begin();
HandlersBehavior.actionCall(bm);
mtc.commit();
if (analyzing) {
E4Utils.revealPart(context, RESULTS_PART_ID);
IEventBroker eventBroker = context.get(IEventBroker.class);
eventBroker.post(IE4UIConstants.TOPIC_UPDATE_RESULTS, bm.getResult());
} else if (mtc.canUndo()) {
context.get(UISynchronize.class).syncExec(new Runnable() {
public void run() {
commandStack.execute(mtc);
}
});
}
} catch (OperationCanceledException e) {
mtc.rollbackIfNeeded();
} catch (RuntimeException e) {
mtc.rollbackIfNeeded();
throw e;
} finally {
pm.endTask();
}
}
use of org.eclipse.gef.commands.CommandStack in project whole by wholeplatform.
the class InterpretModelRunnable method run.
@Override
public void run(IOperationProgressMonitor pm) throws InvocationTargetException, InterruptedException {
IEntityPartViewer viewer = (IEntityPartViewer) bm.wGetValue("viewer");
CommandStack commandStack = viewer.getEditDomain().getCommandStack();
ModelTransactionCommand mtc = new ModelTransactionCommand(bm.wGet("self"), label);
pm.beginTask("Interpreting...", IOperationProgressMonitor.TOTAL_WORK);
try {
mtc.begin();
HandlersBehavior.interpretModel(bm);
mtc.commit();
if (mtc.canUndo())
commandStack.execute(mtc);
} catch (OperationCanceledException e) {
mtc.rollbackIfNeeded();
} catch (RuntimeException e) {
mtc.rollbackIfNeeded();
throw e;
} finally {
pm.endTask();
}
}
use of org.eclipse.gef.commands.CommandStack in project dbeaver by dbeaver.
the class ExtendedDirectEditManager method commit.
/**
* Commits the current value of the cell editor by getting a {@link Command}
* from the source edit part and executing it via the {@link CommandStack}.
* Finally, {@link #bringDown()}is called to perform and necessary cleanup.
*/
@Override
protected void commit() {
if (committing)
return;
committing = true;
try {
// we set the cell editor control to invisible to remove any
// possible flicker
getCellEditor().getControl().setVisible(false);
if (isDirty()) {
CommandStack stack = getEditPart().getViewer().getEditDomain().getCommandStack();
EditPolicy editPolicy = getEditPart().getEditPolicy(EditPolicy.DIRECT_EDIT_ROLE);
Command command;
if (editPolicy != null) {
command = editPolicy.getCommand(getDirectEditRequest());
} else {
command = getEditPart().getCommand(getDirectEditRequest());
}
if (command != null && command.canExecute()) {
stack.execute(command);
}
}
} finally {
bringDown();
committing = false;
}
}
use of org.eclipse.gef.commands.CommandStack in project archi by archimatetool.
the class CSVImporter method doImport.
/**
* Do the actual import given the file
* @param file
*/
public void doImport(File file) throws IOException, CSVParseException {
// What file is it?
File elementsFile = getMatchingFile(file, ELEMENTS_FILENAME);
if (elementsFile != null && elementsFile.exists()) {
importElements(elementsFile);
}
File relationsFile = getMatchingFile(file, RELATIONS_FILENAME);
if (relationsFile != null && relationsFile.exists()) {
importRelations(relationsFile);
}
File propertiesFile = getMatchingFile(file, PROPERTIES_FILENAME);
if (propertiesFile != null && propertiesFile.exists()) {
importProperties(propertiesFile);
}
// Execute the Commands
CommandStack stack = (CommandStack) fModel.getAdapter(CommandStack.class);
stack.execute(createCommands());
}
Aggregations