jreportframe.java

来自「优秀的打印控件全源代码,类似水晶表的设计器!」· Java 代码 · 共 1,355 行 · 第 1/5 页

JAVA
1,355
字号
/* * JReportFrame.java * * iReport  --  Visual designer for generating JasperReports Documents *  Copyright (C) 2002-2003  Giulio Toffoli gt@businesslogic.it * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *  Giulio Toffoli *  Via T.Aspetti, 233 *  35100 Padova ITALY *  gt@businesslogic.it * * Created on 12 febbraio 2003, 21.51 * * Updated 13 July 2004, Robert Lamping,  * - added: getNextElementKey(String keyElement) * - updated: paste(): Copied elements will get a modified key value based on previous *  prefix + "-"  + <next highest number for that prefix>. * -updated: jPanelReportMouseReleased *   new elements get the same treatment. *   new elements now get there own specific name  */package it.businesslogic.ireport.gui;import it.businesslogic.ireport.gui.event.*;import it.businesslogic.ireport.*;import it.businesslogic.ireport.undo.*;import it.businesslogic.ireport.util.*;import java.awt.geom.*;import java.awt.image.*;import java.util.*;import java.io.*;import java.awt.*;import java.awt.image.*;/** * * @author  Administrator */public class JReportFrame extends JMDIFrame {        static int id = 0;    static java.awt.Cursor hsplit = null;    //private Graphics2D offscreen = null;    //private Graphics2D offscreenDoc = null;    //private BufferedImage offscreenImage = null;    //private BufferedImage offscreenImageDoc = null;    private int offscreenWidth = 0;    private Dimension offscreenDimension = null;    private boolean isDocDirty = true;        private MainFrame mf = null;    private BufferedImage[] shadowsImages = null;        /** This point rappresent coords of left top corner of the popup menu.... */    private java.awt.Point popup_opened_at = null;        /** true if the the user is trnsforming a new element....*/    private boolean transforming = false;        /** We are dragging a band ?  */    boolean band_dragging=false;    /** We have started to drag a band from here */    int band_dragging_origin=0;    /** We are dragging this band... */    Band band_dragging_band=null;    /** State for XOR operation in band dragging... */    boolean first_draw_band=true;            boolean firstXORDraw = false;    boolean firstXORDrawTransforming = false;        /**     * This flag is true if we are selecting elements drawing a rectangle...     */    private boolean drag_selection_mode = false;    /**     * The origin of the selection rectangle...     */    private java.awt.Point drag_selection_origin = null;    /**     * The end of the selection rectangle...     */    private java.awt.Point drag_selection_end = null;    /**     * The flag is used to handle XOR operation on rectangle selection     */    private boolean first_draw_selection_rect = true;        /**     * Stroke to use when draw selection rectangle     */    private java.awt.Stroke selectionStroke = null;        // Menus...    private javax.swing.JMenu jMenuAlign;    private javax.swing.JMenuItem jMenuItemAlignLeft;    private javax.swing.JMenuItem jMenuItemAlignRight;    private javax.swing.JMenuItem jMenuItemAlignTop;    private javax.swing.JMenuItem jMenuItemAlignBottom;    private javax.swing.JSeparator jSeparator19;    private javax.swing.JMenuItem jMenuItemAlignVerticalAxis;    private javax.swing.JMenuItem jMenuItemAlignHorizontalAxis ;    private javax.swing.JSeparator jSeparator20;    private javax.swing.JMenuItem jMenuItemAlignToBandTop;    private javax.swing.JMenuItem jMenuItemAlignToBandBottom;    private javax.swing.JMenu jMenuSize;    private javax.swing.JMenuItem jMenuItemSameWidth;    private javax.swing.JMenuItem jMenuItemSameWidthMax;    private javax.swing.JMenuItem jMenuItemSameWidthMin;    private javax.swing.JSeparator jSeparator17;    private javax.swing.JMenuItem jMenuItemSameHeight;    private javax.swing.JMenuItem jMenuItemSameHeightMax;    private javax.swing.JMenuItem jMenuItemSameHeightMin;    private javax.swing.JSeparator jSeparator18;    private javax.swing.JMenuItem jMenuItemSameSize;    private javax.swing.JMenu jMenuPosition;    private javax.swing.JMenuItem jMenuItemCenterH;    private javax.swing.JMenuItem jMenuItemCenterV;    private javax.swing.JMenuItem jMenuItemCenterInBand;    private javax.swing.JMenuItem jMenuItemCenterBackground;    private javax.swing.JMenuItem jMenuItemJoinLeft;    private javax.swing.JMenuItem jMenuItemJoinRight;    private javax.swing.JSeparator jSeparator5;    private javax.swing.JMenuItem jMenuHSpacing;    private javax.swing.JMenuItem jMenuItemHSMakeEqual;    private javax.swing.JMenuItem jMenuItemHSIncrease;    private javax.swing.JMenuItem jMenuItemHSDecrease;    private javax.swing.JMenuItem jMenuItemHSRemove;    private javax.swing.JMenuItem jMenuVSpacing;    private javax.swing.JMenuItem jMenuItemVSMakeEqual;    private javax.swing.JMenuItem jMenuItemVSIncrease;    private javax.swing.JMenuItem jMenuItemVSDecrease;    private javax.swing.JMenuItem jMenuItemVSRemove;    private javax.swing.JSeparator jSeparator8;    private javax.swing.JMenuItem jMenuItemBringToFront;    private javax.swing.JMenuItem jMenuItemSendToBack;    private javax.swing.JPopupMenu jPopupMenuElementMS;    private javax.swing.JMenuItem jMenuItemOrganize;    private javax.swing.JMenuItem jMenuItemRightMargin;    private javax.swing.JMenuItem jMenuItemLeftMargin;                /*     *  This variable is used to say if the resistence moving an element with mouse was     *  exceeded     */    boolean resistenceExceeded = false;        Point newObjectOrigin = null;        boolean trasforming = false;    int transformation_type= -1;    Point transformation_origin=null;    Point transformation_origin_end=null;    Point transformation_undo_delta=null;        /** Creates new form JReportFrame */    public JReportFrame(Report report) {        initComponents();        jPanelReportContainer.setIgnoreRepaint(true);        addFormatItemsToMenu(jPopupMenuElement);        this.windowID = id++;                selectionStroke = new java.awt.BasicStroke(        (float)(2f),        java.awt.BasicStroke.CAP_BUTT,        java.awt.BasicStroke.JOIN_BEVEL,        0f,        new float[]{5f, 3f},        0f        );        this.setPreferredSize(new Dimension(350,400));        this.setNormalSize(new Dimension(350,400));        if (hsplit == null) {            hsplit = Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR);        }        this.jPanelReport.setJrf(this);        this.report = report;                this.newObjectType = ReportElementType.NONE;        this.report=report;        this.report.setReportFrame(this);        this.setTitle(this.report.getName()+" "+this.report.getWidth()+"x"+this.report.getDesignHeight()+" ["+Misc.nvl(this.report.getFilename(),"unnamed")+"]");        System.out.println(this.getTitle());                undoOperations  =new Vector();        clipboardObjects = new  Vector();        selectedElements = new Vector();        transformation_undo_delta = new Point(0,0);                zoomFactor = 1.0;        gridSize = 10;        transformationMinSize =5;                undoIndex = -1;                // Init images...        shadowsImages = new BufferedImage[5];                shadowsImages[0] = Misc.loadBufferedImageFromResources(this,"it/businesslogic/ireport/icons/layout/sh_ur.gif");        shadowsImages[1] = Misc.loadBufferedImageFromResources(this,"it/businesslogic/ireport/icons/layout/sh_r.gif");        shadowsImages[2] = Misc.loadBufferedImageFromResources(this,"it/businesslogic/ireport/icons/layout/sh_lr.gif");        shadowsImages[3] = Misc.loadBufferedImageFromResources(this,"it/businesslogic/ireport/icons/layout/sh_d.gif");        shadowsImages[4] = Misc.loadBufferedImageFromResources(this,"it/businesslogic/ireport/icons/layout/sh_dl.gif");                /*        try {            cursorplus = new Cursor(ResourceManager.getResource( getClass(), "cursorplus.cur"));            cursorminus = new Cursor( ResourceManager.getResource(getClass(), "cursorminus.cur"));        } catch (Exception ex)        {}                 if (cursorplus == null )        {                if (com.ms.wfc.io.File.exists(com.ms.wfc.io.File.combine(  getProgramDir(), "com\\businesslogic\\ireport\\ui\\cursorplus.cur")))                cursorplus = new Cursor(com.ms.wfc.io.File.combine(  getProgramDir(), "com\\businesslogic\\ireport\\ui\\cursorplus.cur"));        }                 if (cursorminus == null )        {                if (com.ms.wfc.io.File.exists(com.ms.wfc.io.File.combine(  getProgramDir(), "com\\businesslogic\\ireport\\ui\\cursorminus.cur")))                        cursorminus = new Cursor( com.ms.wfc.io.File.combine(  getProgramDir(), "com\\businesslogic\\ireport\\ui\\cursorminus.cur"));        }                 if (cursorplus == null)                cursorplus = Cursor.CROSS;        if (cursorminus == null)                cursorminus = Cursor.CROSS;         */        /*        Enumeration enum = report.getElements().elements();        Brush br = new Brush(imageList2.getBitmap(0));        while (enum.hasMoreElements())        {                ReportElement re = (ReportElement)enum.nextElement();                re.hached = br;                         if (re instanceof SubReportElement)                {                        ((SubReportElement)re).img = this.imageList4.getImage(0);                }                else if (re instanceof  ImageReportElement )                {                                 ((ImageReportElement)re).defimg  = imageList3.getBitmap(0);                }                }         */                //offscreen.setBackground(new Color(128,128,128));        setBackground(new Color(128,128,128));        //Screen screen = Screen.getPrimary();        offscreenDimension = Toolkit.getDefaultToolkit().getScreenSize();        //offscreenImage = new java.awt.image.BufferedImage(offscreenDimension.width, offscreenDimension.height, java.awt.image.BufferedImage.TYPE_4BYTE_ABGR_PRE);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?