1 32 33 package it.businesslogic.ireport.gui.command; 34 35 import it.businesslogic.ireport.IReportFont; 36 import it.businesslogic.ireport.OperationType; 37 import it.businesslogic.ireport.TextReportElement; 38 import it.businesslogic.ireport.TransformationType; 39 import it.businesslogic.ireport.util.PageSize; 40 41 import java.awt.Point ; 42 43 44 public class FormatCommandShrink 45 extends FormatCommand 46 { 47 48 double reduction; 49 String formatOneDown; 50 51 FormatCommandShrink() 52 { 53 operationType = OperationType.SHRINK; 54 } 55 56 FormatCommandShrink( int operationType) 57 { 58 this.operationType = operationType; 59 setTreatAllElements(true); 60 } 61 62 void preparation() 63 { 64 65 double marginSpace = (double) (jrf.getReport().getLeftMargin()) ; 66 marginSpace += (double) (jrf.getReport().getRightMargin()); 67 68 int pageWidth = jrf.getReport().getWidth(); 69 int pageHeight = jrf.getReport().getHeight(); 70 formatOneDown = PageSize.findOneDown( pageWidth, pageHeight); 71 72 74 int newWidth = PageSize.getFormatSize(formatOneDown).x; 75 76 pageWidth = jrf.getReport().getWidth() < jrf.getReport().getHeight() ? 77 jrf.getReport().getWidth() : jrf.getReport().getHeight(); 78 reduction = ((double) newWidth - marginSpace) / ((double) pageWidth - marginSpace ); 79 81 } 82 83 88 void modify() 89 { 90 int newWidth; 92 93 double innerX = re.getPosition().x - jrf.getReport().getLeftMargin() -10 ; 94 double innerY = re.getPosition().y - jrf.getReport().getBandYLocation( re.band) -10 ; 95 96 innerX = innerX * reduction + jrf.getReport().getLeftMargin() + 10; 97 innerY = innerY * reduction + jrf.getReport().getBandYLocation( re.band) + 10 ; 98 99 105 if (re.getPosition().x + re.getWidth() -10 == jrf.getReport().getWidth() - jrf.getReport().getRightMargin() ) 106 { 107 108 int oneDownWidth = PageSize.getFormatSize(formatOneDown).x; 109 int oneDownHeight = PageSize.getFormatSize(formatOneDown).y; 110 int width = ( jrf.getReport().getWidth() < jrf.getReport().getHeight() ? oneDownWidth : oneDownHeight ); 112 113 116 newWidth = width - jrf.getReport().getRightMargin() - (int) innerX + 10; 117 118 } 119 else 120 { 121 newWidth = (int) ((double) re.getWidth() * reduction); 122 } 123 124 int newHeight = (int) ((double) re.getHeight() * reduction ); 125 126 re.setPosition(new Point ( (int) innerX, (int) innerY) ); 127 re.trasform(new Point ( newWidth - re.getWidth(), newHeight - re.getHeight()), TransformationType.TRANSFORMATION_RESIZE_SE); 128 129 if (re instanceof TextReportElement ) 130 { 131 IReportFont iReportFont = ((TextReportElement)re).getIReportFont(); 132 int fontSize = iReportFont.getFontSize(); 133 fontSize = Math.max( 1, (int) (((double) fontSize ) * reduction ) ); 135 iReportFont.setFontSize(fontSize); 136 ((TextReportElement)re).setIReportFont(iReportFont ); 137 } 138 139 } 140 141 void executeDeeper() 142 { 143 144 resetEnumeration(); 145 preparation(); 146 147 processElements(); 148 149 if ( jrf.getReport().getElements().size() == this.getSelectedElements().size() ) 152 { 153 if ( !formatOneDown.equals( "Custom" )) 154 155 { 156 undoOp.addElement( jrf); 157 158 jrf.getReport().setReportFormat( formatOneDown ) ; 159 int oneDownWidth = PageSize.getFormatSize(formatOneDown).x; 160 int oneDownHeight = PageSize.getFormatSize(formatOneDown).y; 161 if (jrf.getReport().getOrientation().equals("Portrait") ) 162 { 163 jrf.getReport().setWidth(oneDownWidth); 164 jrf.getReport().setHeight(oneDownHeight); 165 jrf.getReport().recalcColumnWidth(); 166 } 168 else 169 { 170 jrf.getReport().setWidth(oneDownHeight); 171 jrf.getReport().setHeight(oneDownWidth); 172 jrf.getReport().recalcColumnWidth(); 174 } 175 undoOp.captureUniqueModified(jrf); 176 } 177 } 178 179 } 180 181 182 183 } 184 | Popular Tags |