/* * Copyright (c) 2006 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.page; import org.eclipse.nebula.paperclips.core.Print; import org.eclipse.nebula.paperclips.core.internal.util.PaperClipsUtil; import org.eclipse.nebula.paperclips.core.internal.util.Util; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; /** * A PageDecoration which displays the page number. This convenience class helps * avoid the need for writing a new PageDecoration class if only a page number * is needed. Getter and setter methods are provided for all the properties * available in the PagePrint class itself. * * @author Matthew Hall */ public class PageNumberPageDecoration implements PageDecoration { FontData fontData = new FontData(); int align = SWT.LEFT; RGB rgb = new RGB(0, 0, 0); // black PageNumberFormat format = new DefaultPageNumberFormat(); /** * Constructs a PageNumberPageDecoration with default font, alignment, and * page number format. */ public PageNumberPageDecoration() { } /** * Constructs a PageNumberPageDecoration with the given alignment. * * @param align * horizontal text alignment. */ public PageNumberPageDecoration(int align) { setAlign(align); } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + align; result = prime * result + ((fontData == null) ? 0 : fontData.hashCode()); result = prime * result + ((format == null) ? 0 : format.hashCode()); result = prime * result + ((rgb == null) ? 0 : rgb.hashCode()); return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; PageNumberPageDecoration other = (PageNumberPageDecoration) obj; if (align != other.align) return false; if (fontData == null) { if (other.fontData != null) return false; } else if (!fontData.equals(other.fontData)) return false; if (format == null) { if (other.format != null) return false; } else if (!format.equals(other.format)) return false; if (rgb == null) { if (other.rgb != null) return false; } else if (!rgb.equals(other.rgb)) return false; return true; } /** * Returns the font. * * @return the font. */ public FontData getFontData() { return fontData; } /** * Sets the font. * * @param fontData * the new font. */ public void setFontData(FontData fontData) { Util.notNull(fontData); this.fontData = fontData; } /** * Returns the horizontal text alignment. * * @return the horizontal text alignment. */ public int getAlign() { return align; } /** * Sets the horizontal text alignment. * * @param align * the horizontal text alignment. */ public void setAlign(int align) { align = checkAlign(align); this.align = align; } private int checkAlign(int align) { return PaperClipsUtil.firstMatch(align, new int[] { SWT.LEFT, SWT.CENTER, SWT.RIGHT }, SWT.LEFT); } /** * Returns the text color. * * @return the text color. */ public RGB getRGB() { return rgb; } /** * Sets the text color. * * @param rgb * the new text color. */ public void setRGB(RGB rgb) { Util.notNull(rgb); this.rgb = rgb; } /** * Returns the page number format. * * @return the page number format. */ public PageNumberFormat getFormat() { return format; } /** * Sets the page number format. * * @param format * the page number format. */ public void setFormat(PageNumberFormat format) { Util.notNull(format); this.format = format; } public Print createPrint(PageNumber pageNumber) { PageNumberPrint result = new PageNumberPrint(pageNumber); result.setFontData(fontData); result.setAlign(align); result.setPageNumberFormat(format); result.setRGB(rgb); return result; } }