1 14 package org.compiere.print; 15 16 import java.awt.*; 17 import java.awt.print.*; 18 import javax.print.attribute.*; 19 import javax.print.attribute.standard.*; 20 import java.util.*; 21 22 import org.compiere.util.*; 23 24 30 public class CPaper extends Paper 31 { 32 37 public CPaper (PageFormat pf) 38 { 39 super(); 40 m_landscape = pf.getOrientation() != PageFormat.PORTRAIT; 41 float x = (float)pf.getWidth(); 43 float y = (float)pf.getHeight(); 44 MediaSizeName msn = MediaSize.findMedia (x/72, y/72, MediaSize.INCH); 45 MediaSize ms = null; 46 if (msn == null) 47 msn = MediaSize.findMedia (y/72, x/72, MediaSize.INCH); if (msn != null) 49 ms = MediaSize.getMediaSizeForName(msn); 50 setMediaSize(ms, m_landscape); 51 setSize(pf.getWidth(), pf.getHeight()); 53 setImageableArea(pf.getImageableX(), pf.getImageableY(), 54 pf.getImageableWidth(), pf.getImageableHeight()); 55 } 57 62 public CPaper (boolean landscape) 63 { 64 this (Language.getLanguage(), landscape); 65 } 67 73 private CPaper (Language language, boolean landscape) 74 { 75 this (language.getMediaSize(), landscape); 76 } 78 83 private CPaper (MediaSize mediaSize, boolean landscape) 84 { 85 this (mediaSize, landscape, 36, 36, 36, 36); 86 } 88 97 public CPaper (MediaSize mediaSize, boolean landscape, 98 double left, double top, double right, double bottom) 99 { 100 super(); 101 setMediaSize (mediaSize, landscape); 102 setImageableArea(left, top, getWidth()-left-right, getHeight()-top-bottom); 103 } 105 106 private MediaSize m_mediaSize; 107 108 private boolean m_landscape = false; 109 110 111 116 public void setMediaSize (MediaSize mediaSize, boolean landscape) 117 { 118 if (mediaSize == null) 119 throw new IllegalArgumentException ("CPaper.setMediaSize - mediaSize is null"); 120 m_mediaSize = mediaSize; 121 m_landscape = landscape; 122 123 double width = m_mediaSize.getX (MediaSize.INCH) * 72; 125 double height = m_mediaSize.getY (MediaSize.INCH) * 72; 126 setSize (width, height); 128 Log.trace(Log.l6_Database, "CPaper.setMediaSize " + mediaSize.getMediaSizeName(), m_mediaSize + " - Landscape=" + m_landscape); 129 } 131 135 public MediaSizeName getMediaSizeName() 136 { 137 return m_mediaSize.getMediaSizeName(); 138 } 140 144 public MediaSize getMediaSize() 145 { 146 return m_mediaSize; 147 } 149 153 public MediaPrintableArea getMediaPrintableArea() 154 { 155 MediaPrintableArea area = new MediaPrintableArea ((float)getImageableX()/72, (float)getImageableY()/72, 156 (float)getImageableWidth()/72, (float)getImageableHeight()/72, MediaPrintableArea.INCH); 157 return area; 159 } 161 165 public void setMediaPrintableArea (MediaPrintableArea area) 166 { 167 int inch = MediaPrintableArea.INCH; 168 Log.trace(Log.l6_Database, "CPaper.setMediaPrintableArea", area.toString(inch, "\"")); 169 setImageableArea(area.getX(inch)*72, area.getY(inch)*72, 170 area.getWidth(inch)*72, area.getHeight(inch)*72); 171 } 173 177 public boolean isLandscape() 178 { 179 return m_landscape; 180 } 182 183 184 189 public boolean pageSetupDialog(PrinterJob job) 190 { 191 PrintRequestAttributeSet prats = getPrintRequestAttributeSet(); 192 PageFormat pf = job.pageDialog(prats); 194 setPrintRequestAttributeSet(prats); 195 return true; 196 } 198 202 public PrintRequestAttributeSet getPrintRequestAttributeSet() 203 { 204 PrintRequestAttributeSet pratts = new HashPrintRequestAttributeSet(); 205 pratts.add(getMediaPrintableArea()); 207 if (isLandscape()) 209 pratts.add(OrientationRequested.LANDSCAPE); 210 else 211 pratts.add(OrientationRequested.PORTRAIT); 212 pratts.add(getMediaSizeName()); 214 215 return pratts; 216 } 218 222 public void setPrintRequestAttributeSet (PrintRequestAttributeSet prats) 223 { 224 boolean landscape = m_landscape; 225 MediaSize ms = m_mediaSize; 226 MediaPrintableArea area = getMediaPrintableArea(); 227 228 Attribute[] atts = prats.toArray(); 229 for (int i = 0; i < atts.length; i++) 230 { 231 if (atts[i] instanceof OrientationRequested) 232 { 233 OrientationRequested or = (OrientationRequested)atts[i]; 234 if (or.getName().equals(OrientationRequested.PORTRAIT.getName())) 235 landscape = false; 236 else 237 landscape = true; 238 } 239 else if (atts[i] instanceof MediaSizeName) 240 { 241 MediaSizeName msn = (MediaSizeName)atts[i]; 242 ms = MediaSize.getMediaSizeForName(msn); 243 } 244 else if (atts[i] instanceof MediaPrintableArea) 245 { 246 area = (MediaPrintableArea)atts[i]; 247 } 248 else System.out.println(atts[i].getName() + " = " + atts[i] + " - " + atts[i].getCategory()); 250 } 251 setMediaSize(ms, landscape); 253 setMediaPrintableArea(area); 254 } 256 257 258 259 263 public PageFormat getPageFormat() 264 { 265 PageFormat pf = new PageFormat(); 266 pf.setPaper(this); 267 int orient = PageFormat.PORTRAIT; 268 if (m_landscape) 269 orient = PageFormat.LANDSCAPE; 270 pf.setOrientation(orient); 271 return pf; 272 } 274 275 276 280 public String toString() 281 { 282 StringBuffer sb = new StringBuffer ("CPaper["); 283 sb.append(getWidth()/72).append("x").append(getHeight()/72).append('"') 284 .append(m_landscape ? " Landscape " : " Portrait ") 285 .append("x=").append(getImageableX()) 286 .append(",y=").append(getImageableY()) 287 .append(" w=").append(getImageableWidth()) 288 .append(",h=").append(getImageableHeight()) 289 .append("]"); 290 return sb.toString(); 291 } 293 298 public String toString (Properties ctx) 299 { 300 StringBuffer sb = new StringBuffer (); 301 sb.append(m_mediaSize.getMediaSizeName()); 303 String name = m_mediaSize.getMediaSizeName().toString(); 305 if (!name.startsWith("iso")) 306 sb.append(" - ").append(m_mediaSize.toString(MediaSize.INCH,"\"")) 307 .append(" (").append(getMediaPrintableArea().toString(MediaPrintableArea.INCH,"\"")); 308 if (!name.startsWith("na")) 309 sb.append(" - ").append(m_mediaSize.toString(MediaSize.MM,"mm")) 310 .append(" (").append(getMediaPrintableArea().toString(MediaPrintableArea.MM,"mm")); 311 sb.append(") - ") 313 .append(Msg.getMsg(ctx, m_landscape ? "Landscape" : "Portrait")); 314 return sb.toString(); 315 } 317 322 public boolean equals (Object obj) 323 { 324 if (obj instanceof CPaper) 325 { 326 CPaper cp = (CPaper)obj; 327 if (cp.isLandscape() != m_landscape) 328 return false; 329 if (getImageableX() == cp.getImageableX() && getImageableY() == cp.getImageableY() 331 && getImageableWidth() == cp.getImageableWidth() && getImageableHeight() == cp.getImageableHeight()) 332 return true; 333 } 334 return false; 335 } 337 338 339 344 public double getWidth (boolean orientationCorrected) 345 { 346 if (orientationCorrected && m_landscape) 347 return super.getHeight(); 348 return super.getWidth(); 349 } 350 351 356 public double getHeight (boolean orientationCorrected) 357 { 358 if (orientationCorrected && m_landscape) 359 return super.getWidth(); 360 return super.getHeight(); 361 } 362 363 368 public double getImageableY (boolean orientationCorrected) 369 { 370 if (orientationCorrected && m_landscape) 371 return super.getImageableX(); 372 return super.getImageableY(); 373 } 374 375 380 public double getImageableX (boolean orientationCorrected) 381 { 382 if (orientationCorrected && m_landscape) 383 return super.getImageableY(); 384 return super.getImageableX(); 385 } 386 387 392 public double getImageableHeight (boolean orientationCorrected) 393 { 394 if (orientationCorrected && m_landscape) 395 return super.getImageableWidth(); 396 return super.getImageableHeight(); 397 } 398 403 public double getImageableWidth (boolean orientationCorrected) 404 { 405 if (orientationCorrected && m_landscape) 406 return super.getImageableHeight(); 407 return super.getImageableWidth(); 408 } 409 410 415 public Insets getMargin (boolean orientationCorrected) 416 { 417 return new Insets ((int)getImageableY(orientationCorrected), (int)getImageableX(orientationCorrected), (int)(getHeight(orientationCorrected)-getImageableY(orientationCorrected)-getImageableHeight(orientationCorrected)), (int)(getWidth(orientationCorrected)-getImageableX(orientationCorrected)-getImageableWidth(orientationCorrected))); } 423 } | Popular Tags |