package sk.stuba.fiit.perconik.activity.serializers.ui; import java.util.Set; import org.eclipse.ui.IWorkbench; import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer; import sk.stuba.fiit.perconik.data.content.StructuredContent; import static java.util.Arrays.asList; 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 WorkbenchSerializer extends AbstractConfigurableMultiSerializer<IWorkbench> { public WorkbenchSerializer(final Option ... options) { super(options); } public WorkbenchSerializer(final Iterable<Option> options) { super(options); } private static void putWorkbench(final StructuredContent content, final IWorkbench workbench, final Set<Option> options) { content.put(key("isStarting"), workbench.isStarting()); content.put(key("isClosing"), workbench.isClosing()); if (options.contains(StandardOption.TREE)) { content.put(key("activeWindow"), identifyObject(workbench.getActiveWorkbenchWindow())); content.put(key("windows"), new WindowSerializer(options).serialize(asList(workbench.getWorkbenchWindows()))); } } @Override protected void put(final StructuredContent content, final IWorkbench workbench) { putObjectIdentity(content, workbench); putWorkbench(content, workbench, this.options); } }