/******************************************************************************* * Copyright (c) 2012, 2016 Original authors 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: * Original authors and others - initial API and implementation * Loris Securo <lorissek@gmail.com> - Bug 499701 ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.style; import org.eclipse.nebula.widgets.nattable.persistence.ColorPersistor; import org.eclipse.nebula.widgets.nattable.util.GUIHelper; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; /** * This class defines the visual attributes of a Border. */ public class BorderStyle { private int thickness = 1; private Color color = GUIHelper.COLOR_BLACK; private LineStyleEnum lineStyle = LineStyleEnum.SOLID; private BorderModeEnum borderMode = BorderModeEnum.CENTERED; public enum LineStyleEnum { SOLID, DASHED, DOTTED, DASHDOT, DASHDOTDOT; public static int toSWT(LineStyleEnum line) { if (line == null) throw new IllegalArgumentException("null"); //$NON-NLS-1$ if (line.equals(SOLID)) return SWT.LINE_SOLID; else if (line.equals(DASHED)) return SWT.LINE_DASH; else if (line.equals(DOTTED)) return SWT.LINE_DOT; else if (line.equals(DASHDOT)) return SWT.LINE_DASHDOT; else if (line.equals(DASHDOTDOT)) return SWT.LINE_DASHDOTDOT; else return SWT.LINE_SOLID; } } /** * @since 1.5 */ public enum BorderModeEnum { CENTERED, INTERNAL, EXTERNAL; } public BorderStyle() {} public BorderStyle(int thickness, Color color, LineStyleEnum lineStyle) { this.thickness = thickness; this.color = color; this.lineStyle = lineStyle; } /** * @since 1.5 */ public BorderStyle(int thickness, Color color, LineStyleEnum lineStyle, BorderModeEnum borderMode) { this.thickness = thickness; this.color = color; this.lineStyle = lineStyle; this.borderMode = borderMode; } /** * Reconstruct this instance from the persisted String. * * @see BorderStyle#toString() */ public BorderStyle(String string) { String[] tokens = string.split("\\|"); //$NON-NLS-1$ this.thickness = Integer.parseInt(tokens[0]); this.color = ColorPersistor.asColor(tokens[1]); this.lineStyle = LineStyleEnum.valueOf(tokens[2]); if (tokens.length > 3) { this.borderMode = BorderModeEnum.valueOf(tokens[3]); } } public int getThickness() { return this.thickness; } public Color getColor() { return this.color; } public LineStyleEnum getLineStyle() { return this.lineStyle; } /** * @since 1.5 */ public BorderModeEnum getBorderMode() { return this.borderMode; } public void setThickness(int thickness) { this.thickness = thickness; } public void setColor(Color color) { this.color = color; } public void setLineStyle(LineStyleEnum lineStyle) { this.lineStyle = lineStyle; } /** * @since 1.5 */ public void setBorderMode(BorderModeEnum borderMode) { this.borderMode = borderMode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BorderStyle other = (BorderStyle) obj; if (this.borderMode != other.borderMode) return false; if (this.color == null) { if (other.color != null) return false; } else if (!this.color.equals(other.color)) return false; if (this.lineStyle != other.lineStyle) return false; if (this.thickness != other.thickness) return false; return true; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.borderMode == null) ? 0 : this.borderMode.hashCode()); result = prime * result + ((this.color == null) ? 0 : this.color.hashCode()); result = prime * result + ((this.lineStyle == null) ? 0 : this.lineStyle.hashCode()); result = prime * result + this.thickness; return result; } /** * @return a human readable representation of the border style. This is * suitable for constructing an equivalent instance using the * BorderStyle(String) constructor */ @Override public String toString() { return this.thickness + "|" + //$NON-NLS-1$ ColorPersistor.asString(this.color) + "|" + //$NON-NLS-1$ this.lineStyle + "|" + //$NON-NLS-1$ this.borderMode; } }