package sk.stuba.fiit.perconik.activity.serializers.command; import java.util.Set; import org.eclipse.core.commands.operations.IUndoableOperation; import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer; import sk.stuba.fiit.perconik.data.content.StructuredContent; import static java.util.Arrays.asList; import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity; import static sk.stuba.fiit.perconik.data.content.StructuredContents.key; public final class UndoableOperationSerializer extends AbstractConfigurableMultiSerializer<IUndoableOperation> { public UndoableOperationSerializer(final Option ... options) { super(options); } public UndoableOperationSerializer(final Iterable<Option> options) { super(options); } static void putUndoableOperation(final StructuredContent content, final IUndoableOperation operation, final Set<Option> options) { content.put(key("label"), operation.getLabel()); content.put(key("contexts"), new UndoContextSerializer(options).serialize(asList(operation.getContexts()))); content.put(key("canExecute"), operation.canExecute()); content.put(key("canRedo"), operation.canRedo()); content.put(key("canUndo"), operation.canUndo()); } @Override protected void put(final StructuredContent content, final IUndoableOperation operation) { putObjectIdentity(content, operation); putUndoableOperation(content, operation, this.options); } }