package sk.stuba.fiit.perconik.activity.serializers.ui; import java.util.Set; import org.eclipse.ui.IWorkbenchPage; import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer; import sk.stuba.fiit.perconik.data.content.StructuredContent; import static java.util.Arrays.asList; import static com.google.common.collect.Iterables.concat; import static sk.stuba.fiit.perconik.activity.serializers.Serializations.identifyObject; import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity; import static sk.stuba.fiit.perconik.data.content.StructuredContents.key; public final class PageSerializer extends AbstractConfigurableMultiSerializer<IWorkbenchPage> { public PageSerializer(final Option ... options) { super(options); } public PageSerializer(final Iterable<Option> options) { super(options); } private static void putPage(final StructuredContent content, final IWorkbenchPage page, final Set<Option> options) { content.put(key("label"), page.getLabel()); content.put(key("perspective"), new PerspectiveDescriptorSerializer(options).serialize(page.getPerspective())); content.put(key("isEditorAreaVisible"), page.isEditorAreaVisible()); content.put(key("isPageZoomed"), page.isPageZoomed()); if (options.contains(StandardOption.TREE)) { content.put(key("activePart"), identifyObject(page.getActivePartReference())); content.put(key("references"), new PartReferenceSerializer(options).serialize(concat(asList(page.getViewReferences()), asList(page.getEditorReferences())))); try { content.put(key("selection"), identifyObject(page.getSelection())); } catch (NullPointerException ignore) {} } } @Override protected void put(final StructuredContent content, final IWorkbenchPage page) { putObjectIdentity(content, page); putPage(content, page, this.options); } }