/* * Copyright (c) 2005 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.border; import org.eclipse.swt.graphics.GC; /** * Abstract implementation of BorderPainter providing implementation of helper * methods. * * @author Matthew Hall */ public abstract class AbstractBorderPainter implements BorderPainter { /** * Paints a border around the specified region. Depending on the type of * border, the top and bottom of may be painted differently depending on the * values of <code>topOpen</code> and <code>bottomOpen</code>. */ public abstract void paint(GC gc, int x, int y, int width, int height, boolean topOpen, boolean bottomOpen); /** * Returns the border inset, in pixels, from the left. */ public abstract int getLeft(); /** * Returns the border inset, in pixels, from the right. */ public abstract int getRight(); /** * Returns the sum of the left and right border insets. */ public final int getWidth() { return getLeft() + getRight(); } /** * Returns the border inset, in pixels, from the top. */ public abstract int getTop(boolean open); /** * Returns the border inset, in pixels, from the bottom. */ public abstract int getBottom(boolean open); /** * Returns the sum of the top and bottom border insets. */ public final int getHeight(boolean topOpen, boolean bottomOpen) { return getTop(topOpen) + getBottom(bottomOpen); } /** * Returns the sum of the maximum top and bottom border insets. */ public final int getMaxHeight() { return Math.max(getTop(false), getTop(true)) + Math.max(getBottom(false), getBottom(true)); } }