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: import javax.swing.ImageIcon;
041: import javax.swing.JPanel;
042:
043: public class BreakReportElement extends ReportElement {
044:
045: public static ImageIcon img = null;
046:
047: static {
048: img = new ImageIcon(
049: BreakReportElement.class
050: .getResource("/it/businesslogic/ireport/icons/tree/elements/break.png"));
051: }
052:
053: private String type = "Page";
054:
055: public BreakReportElement(int x, int y, int width, int height) {
056: super (x, y, Math.abs(width), Math.abs(height));
057: }
058:
059: public BreakReportElement(int x, int y, int width, int height,
060: String type) {
061: super (x, y, Math.abs(width), Math.abs(height));
062: //graphicElementPen = "Thin";
063: //this.bgcolor = Color.WHITE;
064: //this.fgcolor = Color.BLACK;
065: this .type = type;
066: setKey("break");
067: }
068:
069: public void drawObject(Graphics2D g, double zoom_factor,
070: int x_shift_origin, int y_shift_origin) {
071: this .zoom_factor = zoom_factor;
072: int height_draw = 0;
073: if (height <= 1)
074: height_draw = 0;
075: else
076: height_draw = height - 1;
077: int width_draw = 0;
078: if (width <= 1)
079: width_draw = 0;
080: else
081: width_draw = width - 1;
082:
083: int leftX = 0;
084: int rightX = 0;
085: if (this .getBand() != null
086: && this .getBand().getParent() != null) {
087: Report report = this .getBand().getParent();
088: rightX = (int) (report.getLeftMargin() * zoom_factor);
089: leftX = (int) ((report.getWidth() - report.getRightMargin()) * zoom_factor);
090: }
091:
092: //g.fill( position.x,position.y,width,height,new Brush(bgcolor, BrushStyle.SOLID));
093: Point a = new Point(rightX + 10 - x_shift_origin,
094: getZoomedDim(position.y - 10) + 10 - y_shift_origin);
095: Point b = new Point(leftX + 10 - x_shift_origin, (int) a.getY());
096:
097: Stroke stroke = this .getPenStroke("Dotted", 1);
098: if (stroke != null) {
099: Stroke oldStroke = g.getStroke();
100: g.setStroke(stroke);
101:
102: g.setColor(getFgcolor());
103: g.drawLine(a.x, a.y, b.x, b.y);
104: g.setStroke(oldStroke);
105: }
106:
107: if (img != null)
108: g.drawImage(img.getImage(), a.x - 18, a.y - 7, img
109: .getImageObserver());
110: }
111:
112: public ReportElement cloneMe() {
113: BreakReportElement newReportElement = new BreakReportElement(
114: position.x, position.y, width, height);
115: copyBaseReportElement(newReportElement, this );
116:
117: return newReportElement;
118: }
119:
120: public void copyBaseReportElement(ReportElement destination,
121: ReportElement source) {
122: super .copyBaseReportElement(destination, source);
123:
124: if (destination instanceof BreakReportElement
125: && source instanceof BreakReportElement) {
126: ((BreakReportElement) destination).setType(new String(
127: ((BreakReportElement) source).getType()));
128: }
129: }
130:
131: public boolean insideBand() {
132:
133: int r_height = (height == 0) ? 1 : height;
134: if (band == null) {
135:
136: return false;
137: }
138:
139: int yband = band.getBandYLocation();
140:
141: if (position.y - yband + r_height > band.getHeight()) {
142: return false;
143: }
144: return super .insideBand();
145: }
146:
147: public String getType() {
148: return type;
149: }
150:
151: public void setType(String type) {
152: this.type = type;
153: }
154: }
|