001: /***********************************************************************************************
002: * File Info: $Id: LegendAreaProperties.java,v 1.2 2003/06/01 05:23:05 staringindablu Exp $
003: * Copyright (C) 2002
004: * Author: Nathaniel G. Auvil
005: * Contributor(s): Sandor Dornbush
006: *
007: * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
008: *
009: * Redistribution and use of this software and associated documentation ("Software"), with or
010: * without modification, are permitted provided that the following conditions are met:
011: *
012: * 1. Redistributions of source code must retain copyright statements and notices.
013: * Redistributions must also contain a copy of this document.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
016: * conditions and the following disclaimer in the documentation and/or other materials
017: * provided with the distribution.
018: *
019: * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
020: * products derived from this Software without prior written permission of Nathaniel G.
021: * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
022: *
023: * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
024: * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
025: * registered trademark of Nathaniel G. Auvil.
026: *
027: * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
030: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
031: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
033: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
034: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
037: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
038: ************************************************************************************************/package org.krysalis.jcharts.properties;
039:
040: import org.krysalis.jcharts.test.HTMLGenerator;
041: import org.krysalis.jcharts.test.HTMLTestable;
042:
043: abstract public class LegendAreaProperties extends AreaProperties
044: implements HTMLTestable {
045: public static final int COLUMNS_AS_MANY_AS_NEEDED = 0;
046:
047: //---This will wrap the legend to fit the image size.
048: public static final int COLUMNS_FIT_TO_IMAGE = -1;
049:
050: public static final int BOTTOM = 0;
051: public static final int RIGHT = 1;
052: public static final int LEFT = 2;
053: public static final int TOP = 3;
054:
055: private int numColumns = COLUMNS_AS_MANY_AS_NEEDED;
056:
057: //---vertical padding between labels
058: private int rowPadding = 5;
059:
060: //---horizontal padding between labels
061: private int columnPadding = 10;
062:
063: //---padding between icon and Label
064: private int iconPadding = 5;
065:
066: //---distance from edge of chart to Legend
067: private int chartPadding = 5;
068:
069: //---for LineCharts, length of line around point shapes as part of the icon in the legend.
070: //---for example, ---o---. here iconLineStrokeLength is the length of --- on either sides of 'o'
071: private int iconLineStrokeLength = 20;
072:
073: //---where Legend should be drawn in relation to the chart.
074: private int placement = BOTTOM;
075:
076: /*********************************************************************************************
077: * Constructor for those desiring auto-calculation of the Legend width based on the number
078: * of columns. All Labels are on a single row as default number of rows is: COLUMNS_AS_MANY_AS_NEEDED
079: *
080: **********************************************************************************************/
081: public LegendAreaProperties() {
082: super ();
083: }
084:
085: /*********************************************************************************************
086: * Returns where the Legend should be drawn in relation to the Chart.
087: *
088: * @return int
089: **********************************************************************************************/
090: public int getPlacement() {
091: return this .placement;
092: }
093:
094: /*********************************************************************************************
095: * Sets where the Legend should be drawn in relation to the Chart.
096: *
097: * @param placementConstant
098: **********************************************************************************************/
099: public void setPlacement(int placementConstant) {
100: this .placement = placementConstant;
101: }
102:
103: /*********************************************************************************************
104: * Returns the padding between chart plot and the Legend.
105: *
106: * @return int
107: **********************************************************************************************/
108: public int getChartPadding() {
109: return this .chartPadding;
110: }
111:
112: /*********************************************************************************************
113: * Sets the padding between chart plot and the Legend.
114: *
115: * @param chartPadding
116: **********************************************************************************************/
117: public void setChartPadding(int chartPadding) {
118: this .chartPadding = chartPadding;
119: }
120:
121: /*********************************************************************************************
122: * Returns the padding between label columns.
123: *
124: * @return int
125: **********************************************************************************************/
126: public int getColumnPadding() {
127: return this .columnPadding;
128: }
129:
130: /*********************************************************************************************
131: * Returns the padding between labels in each row.
132: *
133: * @return int
134: **********************************************************************************************/
135: public int getRowPadding() {
136: return this .rowPadding;
137: }
138:
139: /*********************************************************************************************
140: * Sets the number of text columns the legend should display.
141: *
142: * @param numColumns
143: **********************************************************************************************/
144: public void setNumColumns(int numColumns) {
145: this .numColumns = numColumns;
146: }
147:
148: /*********************************************************************************************
149: * Gets the number of text columns the legend should display.
150: *
151: * @return int
152: **********************************************************************************************/
153: public int getNumColumns() {
154: return this .numColumns;
155: }
156:
157: /*********************************************************************************************
158: * Returns the padding between the icon and the Label
159: *
160: * @return int
161: **********************************************************************************************/
162: public int getIconPadding() {
163: return this .iconPadding;
164: }
165:
166: /*********************************************************************************************
167: * Sets the padding between labels in each row, in pixels.
168: *
169: * @param rowPadding
170: **********************************************************************************************/
171: public void setRowPadding(int rowPadding) {
172: this .rowPadding = rowPadding;
173: }
174:
175: /*********************************************************************************************
176: * Sets the padding between label columns, in pixels.
177: *
178: * @param columnPadding
179: **********************************************************************************************/
180: public void setColumnPadding(int columnPadding) {
181: this .columnPadding = columnPadding;
182: }
183:
184: /*********************************************************************************************
185: * Sets the padding between the icon and the Label, in pixels.
186: *
187: * @param iconPadding
188: **********************************************************************************************/
189: public void setIconPadding(int iconPadding) {
190: this .iconPadding = iconPadding;
191: }
192:
193: /**
194: * Returns the iconLineStrokeLength.
195: * @return int
196: */
197: public int getIconLineStrokeLength() {
198: return iconLineStrokeLength;
199: }
200:
201: /**
202: * Sets the iconLineStrokeLength.
203: * @param iconLineStrokeLength The iconLineStrokeLength to set
204: */
205: public void setIconLineStrokeLength(int iconLineStrokeLength) {
206: this .iconLineStrokeLength = iconLineStrokeLength;
207: }
208:
209: /*********************************************************************************************
210: * Enables the testing routines to display the contents of this Object.
211: *
212: * @param htmlGenerator
213: **********************************************************************************************/
214: public void toHTML(HTMLGenerator htmlGenerator) {
215: super .toHTML(htmlGenerator);
216: htmlGenerator.addTableRow("LegendAreaProperties->Num Columns",
217: Integer.toString(this .getNumColumns()));
218: htmlGenerator.addTableRow("LegendAreaProperties->Row Padding",
219: Integer.toString(this .getRowPadding()));
220: htmlGenerator.addTableRow("LegendAreaProperties->Icon Padding",
221: Integer.toString(this .getIconPadding()));
222: htmlGenerator.addTableRow(
223: "LegendAreaProperties->Chart Padding", Integer
224: .toString(this .getChartPadding()));
225: htmlGenerator.addTableRow(
226: "LegendAreaProperties->Column Padding", Integer
227: .toString(this .getColumnPadding()));
228: htmlGenerator.addTableRow("LegendAreaProperties->Placement",
229: Integer.toString(this.getPlacement()));
230: }
231: }
|