001: /*
002: * Copyright (C) 2005 - 2008 JasperSoft Corporation. All rights reserved.
003: * http://www.jaspersoft.com.
004: *
005: * Unless you have purchased a commercial license agreement from JasperSoft,
006: * the following license terms apply:
007: *
008: * This program is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License version 2 as published by
010: * the Free Software Foundation.
011: *
012: * This program is distributed WITHOUT ANY WARRANTY; and without the
013: * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
014: * See the GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
018: * or write to:
019: *
020: * Free Software Foundation, Inc.,
021: * 59 Temple Place - Suite 330,
022: * Boston, MA USA 02111-1307
023: *
024: *
025: *
026: *
027: * LineReportElement.java
028: *
029: * Created on 28 febbraio 2003, 20.02
030: *
031: */
032:
033: package it.businesslogic.ireport;
034:
035: import it.businesslogic.ireport.gui.*;
036: import it.businesslogic.ireport.util.*;
037: import java.awt.*;
038: import java.awt.image.*;
039: import java.awt.geom.*;
040:
041: public class LineReportElement extends GraphicReportElement {
042:
043: public String direction;
044:
045: public LineReportElement(int x, int y, int width, int height) {
046: //this(x,y,width,height,"TopDown");
047: // I expect the delta width and height to be passed
048: // so with + or - sign.
049: this (x, y, width, height, "whatever");
050:
051: if (width * height >= 0) {
052: setDirection("TopDown");
053: } else {
054: setDirection("BottomUp");
055: }
056: }
057:
058: public LineReportElement(int x, int y, int width, int height,
059: String direction) {
060: super (x, y, Math.abs(width), Math.abs(height));
061: //graphicElementPen = "Thin";
062: //this.bgcolor = Color.WHITE;
063: //this.fgcolor = Color.BLACK;
064: this .direction = direction;
065: setKey("line");
066: }
067:
068: public void drawObject(Graphics2D g, double zoom_factor,
069: int x_shift_origin, int y_shift_origin) {
070: this .zoom_factor = zoom_factor;
071: int height_draw = 0;
072: if (height <= 1)
073: height_draw = 0;
074: else
075: height_draw = height - 1;
076: int width_draw = 0;
077: if (width <= 1)
078: width_draw = 0;
079: else
080: width_draw = width - 1;
081:
082: //g.fill( position.x,position.y,width,height,new Brush(bgcolor, BrushStyle.SOLID));
083: Point a = new Point(getZoomedDim(position.x - 10) + 10
084: - x_shift_origin, getZoomedDim(position.y - 10) + 10
085: - y_shift_origin);
086: Point b = new Point(getZoomedDim(position.x + width_draw - 10)
087: + 10 - x_shift_origin, getZoomedDim(position.y
088: + height_draw - 10)
089: + 10 - y_shift_origin);
090:
091: if (!direction.equalsIgnoreCase("TopDown")) {
092: b.y = getZoomedDim(position.y - 10) + 10 - y_shift_origin;
093: a.y = getZoomedDim(position.y + height - 10) + 10
094: - y_shift_origin;
095: }
096:
097: Stroke stroke = this .getPenStroke(getGraphicElementPen(), this
098: .getPen(), zoom_factor);
099:
100: if (stroke != null) {
101:
102: Stroke oldStroke = g.getStroke();
103: g.setStroke(stroke);
104:
105: g.setColor(getFgcolor());
106: g.drawLine(a.x, a.y, b.x, b.y);
107: g.setStroke(oldStroke);
108:
109: }
110: }
111:
112: public ReportElement cloneMe() {
113: LineReportElement newReportElement = new LineReportElement(
114: position.x, position.y, width, height);
115: copyBaseReportElement(newReportElement, this );
116:
117: return newReportElement;
118: }
119:
120: /** Getter for property direction.
121: * @return Value of property direction.
122: *
123: */
124: public java.lang.String getDirection() {
125: return direction;
126: }
127:
128: /** Setter for property direction.
129: * @param direction New value of property direction.
130: *
131: */
132: public void setDirection(java.lang.String direction) {
133: this .direction = direction;
134: }
135:
136: public void copyBaseReportElement(ReportElement destination,
137: ReportElement source) {
138: super .copyBaseReportElement(destination, source);
139:
140: if (destination instanceof LineReportElement
141: && source instanceof LineReportElement) {
142: ((LineReportElement) destination).setDirection(new String(
143: ((LineReportElement) source).getDirection()));
144: }
145: }
146:
147: public boolean insideBand() {
148:
149: int r_height = (height == 0) ? 1 : height;
150: if (band == null) {
151:
152: return false;
153: }
154:
155: int yband = band.getBandYLocation();
156:
157: if (position.y - yband + r_height > band.getHeight()) {
158: return false;
159: }
160: return super.insideBand();
161: }
162: }
|