package sk.stuba.fiit.perconik.activity.serializers.command;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.commands.operations.ObjectUndoContext;
import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.describeObject;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity;
import static sk.stuba.fiit.perconik.data.content.StructuredContents.key;
public final class UndoContextSerializer extends AbstractConfigurableMultiSerializer<IUndoContext> {
public UndoContextSerializer(final Option ... options) {
super(options);
}
public UndoContextSerializer(final Iterable<Option> options) {
super(options);
}
static void putUndoContext(final StructuredContent content, final IUndoContext context) {
content.put(key("label"), context.getLabel());
if (context instanceof ObjectUndoContext) {
content.put(key("object"), describeObject(((ObjectUndoContext) context).getObject()));
}
}
@Override
protected void put(final StructuredContent content, final IUndoContext context) {
putObjectIdentity(content, context);
putUndoContext(content, context);
}
}