package sk.stuba.fiit.perconik.activity.serializers.ui;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPathEditorInput;
import org.eclipse.ui.IURIEditorInput;
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.putObjectIdentity;
import static sk.stuba.fiit.perconik.activity.serializers.ui.EditorInputSerializer.putEditorInput;
import static sk.stuba.fiit.perconik.activity.serializers.ui.FileEditorInputSerializer.putFileEditorInput;
import static sk.stuba.fiit.perconik.activity.serializers.ui.PathEditorInputSerializer.putPathEditorInput;
import static sk.stuba.fiit.perconik.activity.serializers.ui.UriEditorInputSerializer.putUriEditorInput;
abstract class AbstractEditorInputSerializer<T extends IEditorInput> extends AbstractConfigurableMultiSerializer<T> {
AbstractEditorInputSerializer(final Option ... options) {
super(options);
}
AbstractEditorInputSerializer(final Iterable<Option> options) {
super(options);
}
@Override
protected final void put(final StructuredContent content, final IEditorInput input) {
putObjectIdentity(content, input);
putEditorInput(content, input);
if (input instanceof IFileEditorInput) {
putFileEditorInput(content, (IFileEditorInput) input, this.options);
}
if (input instanceof IPathEditorInput) {
putPathEditorInput(content, (IPathEditorInput) input, this.options);
}
if (input instanceof IURIEditorInput) {
putUriEditorInput(content, (IURIEditorInput) input);
}
}
}