package sk.stuba.fiit.perconik.activity.serializers.ui;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPartReference;
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.EditorReferenceSerializer.putEditorReference;
import static sk.stuba.fiit.perconik.activity.serializers.ui.PartReferenceSerializer.putPartReference;
import static sk.stuba.fiit.perconik.activity.serializers.ui.ViewReferenceSerializer.putViewReference;
abstract class AbstractPartReferenceSerializer<T extends IWorkbenchPartReference> extends AbstractConfigurableMultiSerializer<T> {
AbstractPartReferenceSerializer(final Option ... options) {
super(options);
}
AbstractPartReferenceSerializer(final Iterable<Option> options) {
super(options);
}
@Override
protected final void put(final StructuredContent content, final IWorkbenchPartReference reference) {
putObjectIdentity(content, reference);
putPartReference(content, reference, this.options);
if (reference instanceof IViewReference) {
putViewReference(content, (IViewReference) reference);
}
if (reference instanceof IEditorReference) {
putEditorReference(content, (IEditorReference) reference);
}
}
}