/* * Copyright (c) 2007 Matthew Hall and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthew Hall - initial API and implementation */ package org.eclipse.nebula.paperclips.core.grid.internal; import org.eclipse.nebula.paperclips.core.border.BorderPainter; import org.eclipse.nebula.paperclips.core.grid.GridMargins; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; class DefaultGridMargins implements GridMargins { private final BorderPainter border; private final Point cellSpacing; private final Rectangle cellPadding; private final int headerClosedSpacing; private final int headerOpenSpacing; private final int footerClosedSpacing; private final int footerOpenSpacing; DefaultGridMargins(BorderPainter border, Point cellSpacing, Rectangle cellPadding, int headerClosedSpacing, int headerOpenSpacing, int footerClosedSpacing, int footerOpenSpacing) { this.border = border; this.cellSpacing = cellSpacing; this.cellPadding = cellPadding; this.headerClosedSpacing = headerClosedSpacing; this.headerOpenSpacing = headerOpenSpacing; this.footerClosedSpacing = footerClosedSpacing; this.footerOpenSpacing = footerOpenSpacing; } public int getLeft() { return border.getLeft() + cellPadding.x; } public int getHorizontalSpacing() { return cellSpacing.x + cellPadding.x + cellPadding.width; } public int getRight() { return border.getRight() + cellPadding.width; } public int getHeaderTop() { return border.getTop(false) + cellPadding.y; } public int getHeaderVerticalSpacing() { return cellSpacing.y + cellPadding.y + cellPadding.height; } public int getBodyTop(boolean headerPresent, boolean open) { return headerPresent ? open ? headerOpenSpacing : headerClosedSpacing + cellPadding.y : open ? border.getTop(true) : border .getTop(false) + cellPadding.y; } public int getBodyVerticalSpacing() { return cellSpacing.y + cellPadding.y + cellPadding.height; } public int getBodyBottom(boolean footerPresent, boolean open) { return footerPresent ? open ? footerOpenSpacing : footerClosedSpacing + cellPadding.height : open ? border.getBottom(true) : border .getBottom(false) + cellPadding.height; } public int getFooterVerticalSpacing() { return cellSpacing.y + cellPadding.y + cellPadding.height; } public int getFooterBottom() { return border.getBottom(false) + cellPadding.height; } }