package com.mkalugin.corchy.internal.ui.location; import static com.mkalugin.corchy.internal.ui.location.InitialShellPosition.CENTERED; import static com.mkalugin.corchy.internal.ui.location.ShellPositionConstraint.CONTAINED_WITHIN_SINGLE_MONITOR; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; public class WindowLocationConfiguration { private InitialShellPosition initialPosition = CENTERED; private ShellPositionConstraint positionConstraint = CONTAINED_WITHIN_SINGLE_MONITOR; private boolean persistSize = true; private boolean persistLocation = true; private Point defaultSize = new Point(SWT.DEFAULT, SWT.DEFAULT); public WindowLocationConfiguration width(int width) { defaultSize.x = width; return this; } public WindowLocationConfiguration height(int height) { defaultSize.y = height; return this; } public WindowLocationConfiguration size(int width, int height) { defaultSize.x = width; defaultSize.y = height; return this; } public WindowLocationConfiguration positionConstraint(ShellPositionConstraint positionConstraint) { if (positionConstraint == null) throw new NullPointerException("positionConstraint is null"); this.positionConstraint = positionConstraint; return this; } public WindowLocationConfiguration initialPosition(InitialShellPosition initialPosition) { if (initialPosition == null) throw new NullPointerException("initialPosition is null"); this.initialPosition = initialPosition; return this; } public WindowLocationConfiguration persistNothing() { persistLocation = false; persistSize = false; return this; } public WindowLocationConfiguration persistLocation(boolean persistLocation) { this.persistLocation = persistLocation; return this; } public WindowLocationConfiguration persistSize(boolean persistSize) { this.persistSize = persistSize; return this; } public Point getDefaultSize() { return defaultSize; } public InitialShellPosition getInitialPosition() { return initialPosition; } public ShellPositionConstraint getPositionConstraint() { return positionConstraint; } public boolean shouldPersistSomething() { return persistLocation || persistSize; } public boolean shouldPersistLocation() { return persistLocation; } public boolean shouldPersistSize() { return persistSize; } }