package sk.stuba.fiit.perconik.activity.serializers.ui.text; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentExtension4; 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.data.content.StructuredContents.key; public final class DocumentSerializer extends AbstractConfigurableMultiSerializer<IDocument> { public DocumentSerializer(final Option ... options) { super(options); } public DocumentSerializer(final Iterable<Option> options) { super(options); } static void putDocument(final StructuredContent content, final IDocument document) { content.put(key("length"), document.getLength()); content.put(key("linesCount"), document.getNumberOfLines()); if (document instanceof IDocumentExtension4) { IDocumentExtension4 extension4 = (IDocumentExtension4) document; content.put(key("modificationTimestamp"), extension4.getModificationStamp()); } } @Override protected void put(final StructuredContent content, final IDocument document) { putObjectIdentity(content, document); putDocument(content, document); } }