Revision 37419
branches/v2_0_0_prep/extensions/org.gvsig.app.document.layout.app/org.gvsig.app.document.layout.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutDraw.java | ||
---|---|---|
54 | 54 |
import com.lowagie.text.pdf.PdfContentByte; |
55 | 55 |
import com.lowagie.text.pdf.PdfWriter; |
56 | 56 |
|
57 |
import org.slf4j.Logger; |
|
58 |
import org.slf4j.LoggerFactory; |
|
59 |
|
|
57 | 60 |
import org.gvsig.andami.PluginServices; |
58 | 61 |
import org.gvsig.app.project.documents.layout.fframes.IFFrame; |
59 | 62 |
import org.gvsig.app.project.documents.layout.gui.LayoutPanel; |
... | ... | |
68 | 71 |
* @author Vicente Caballero Navarro |
69 | 72 |
*/ |
70 | 73 |
public class FLayoutDraw implements Observable, Printable{ |
71 |
|
|
74 |
private static final Logger LOG = |
|
75 |
LoggerFactory.getLogger(FLayoutDraw.class); |
|
76 |
|
|
72 | 77 |
private LayoutPanel layoutPanel; |
78 |
private LayoutControl layoutControl; |
|
79 |
private LayoutContext layoutContext; |
|
73 | 80 |
private ObservableHelper observers; |
74 | 81 |
|
75 | 82 |
/** |
... | ... | |
84 | 91 |
observers.addObserver(layoutPanel.getLayoutControl()); |
85 | 92 |
} |
86 | 93 |
|
94 |
public void initialize(){ |
|
95 |
if ((layoutContext == null) || (layoutControl == null)){ |
|
96 |
this.layoutControl = layoutPanel.getLayoutControl(); |
|
97 |
this.layoutContext = layoutPanel.getLayoutContext(); |
|
98 |
} |
|
99 |
} |
|
100 |
|
|
87 | 101 |
/** |
88 | 102 |
* M?todo para dibujar el Layout y modificar la matriz de transformaci?n a |
89 | 103 |
* partir del tama?o en pixels que tenga rect y el formato de papel |
... | ... | |
97 | 111 |
* @throws ReadDriverException |
98 | 112 |
*/ |
99 | 113 |
public void drawLayout(Graphics2D g2, BufferedImage imgBase) |
100 |
throws ReadException { |
|
101 |
LayoutControl layoutControl = layoutPanel.getLayoutControl(); |
|
102 |
LayoutContext layoutContext = layoutPanel.getLayoutContext(); |
|
103 |
Attributes attributes = layoutContext.getAttributes(); |
|
104 |
Rectangle2D rLayout = layoutControl.getRect(); |
|
105 |
AffineTransform at = layoutContext.getAT(); |
|
114 |
throws ReadException { |
|
115 |
initializeAffineTransform(); |
|
106 | 116 |
|
107 |
layoutControl.setCancelDrawing(false); |
|
108 |
double scale = 0; |
|
109 |
scale = rLayout.getHeight() / attributes.m_sizePaper.getAlto() * 1; |
|
110 |
AffineTransform escalado = new AffineTransform(); |
|
111 |
AffineTransform translacion = new AffineTransform(); |
|
112 |
translacion.setToTranslation(rLayout.getMinX(), rLayout.getMinY()); |
|
113 |
escalado.setToScale(scale, scale); |
|
114 |
at.setToIdentity(); |
|
115 |
at.concatenate(translacion); |
|
116 |
at.concatenate(escalado); |
|
117 |
attributes.setDistanceUnitX(rLayout); |
|
118 |
attributes.setDistanceUnitY(rLayout); |
|
119 | 117 |
IFFrame[] fframes = layoutContext.getFFrames(); |
120 | 118 |
for (int i = 0; i < fframes.length; i++) { |
121 | 119 |
IFFrame f = fframes[i]; |
122 |
f.draw(g2, at, layoutControl.getComponent().getVisibleRect(),
|
|
120 |
f.draw(g2, layoutContext.getAT(), layoutControl.getComponent().getVisibleRect(),
|
|
123 | 121 |
imgBase); |
124 | 122 |
|
125 | 123 |
// Dibuja el s?mbolo de que contiene un tag. |
... | ... | |
134 | 132 |
} else { |
135 | 133 |
observers.notifyObservers(this, |
136 | 134 |
new DefaultLayoutNotification(LayoutNotification.LAYOUT_INVALIDATED)); |
137 |
} |
|
135 |
}
|
|
138 | 136 |
} |
139 | 137 |
|
138 |
private void initializeAffineTransform(){ |
|
139 |
initialize(); |
|
140 |
AffineTransform at = layoutContext.getAT(); |
|
141 |
Rectangle2D rLayout = layoutControl.getRect(); |
|
142 |
Attributes attributes = layoutContext.getAttributes(); |
|
143 |
|
|
144 |
layoutControl.setCancelDrawing(false); |
|
145 |
|
|
146 |
double scale = 0; |
|
147 |
scale = rLayout.getHeight() / attributes.m_sizePaper.getAlto() * 1; |
|
148 |
AffineTransform escalado = new AffineTransform(); |
|
149 |
AffineTransform translacion = new AffineTransform(); |
|
150 |
translacion.setToTranslation(rLayout.getMinX(), rLayout.getMinY()); |
|
151 |
escalado.setToScale(scale, scale); |
|
152 |
at.setToIdentity(); |
|
153 |
at.concatenate(translacion); |
|
154 |
at.concatenate(escalado); |
|
155 |
attributes.setDistanceUnitX(rLayout); |
|
156 |
attributes.setDistanceUnitY(rLayout); |
|
157 |
} |
|
158 |
|
|
140 | 159 |
/** |
141 | 160 |
* Dibuja sobre un Graphics2D el rect?ngulo que representa al folio. |
142 | 161 |
* |
... | ... | |
144 | 163 |
* Graphics2D |
145 | 164 |
*/ |
146 | 165 |
public void drawRectangle(Graphics2D g) { |
147 |
Attributes attributes = layoutPanel.getLayoutContext().getAttributes(); |
|
148 |
Rectangle2D rLayout = layoutPanel.getLayoutControl().getRect(); |
|
149 |
AffineTransform at = layoutPanel.getLayoutContext().getAT(); |
|
166 |
initialize(); |
|
167 |
Attributes attributes = layoutContext.getAttributes(); |
|
168 |
Rectangle2D rLayout = layoutControl.getRect(); |
|
169 |
AffineTransform at = layoutContext.getAT(); |
|
150 | 170 |
|
151 | 171 |
double unidadesX = attributes.getNumUnitsX(); |
152 | 172 |
double unidadesY = attributes.getNumUnitsY(); |
... | ... | |
172 | 192 |
new Rectangle2D.Double( |
173 | 193 |
(rLayout.getX() + FLayoutUtilities.fromSheetDistance( |
174 | 194 |
attributes.m_area[2], at)), |
175 |
(rLayout.getY() + FLayoutUtilities.fromSheetDistance( |
|
176 |
attributes.m_area[0], at)), |
|
177 |
(rLayout.getWidth() - FLayoutUtilities.fromSheetDistance( |
|
178 |
attributes.m_area[2] + attributes.m_area[3], at)), |
|
179 |
(rLayout.getHeight() - FLayoutUtilities.fromSheetDistance( |
|
180 |
attributes.m_area[0] + attributes.m_area[1], at))); |
|
195 |
(rLayout.getY() + FLayoutUtilities.fromSheetDistance(
|
|
196 |
attributes.m_area[0], at)),
|
|
197 |
(rLayout.getWidth() - FLayoutUtilities.fromSheetDistance(
|
|
198 |
attributes.m_area[2] + attributes.m_area[3], at)),
|
|
199 |
(rLayout.getHeight() - FLayoutUtilities.fromSheetDistance(
|
|
200 |
attributes.m_area[0] + attributes.m_area[1], at)));
|
|
181 | 201 |
} else { |
182 | 202 |
r.setRect(rLayout); |
183 | 203 |
} |
... | ... | |
203 | 223 |
* DOCUMENT ME! |
204 | 224 |
*/ |
205 | 225 |
public void drawGrid(Graphics2D g) { |
206 |
int unidadesMin = 6; |
|
207 |
LayoutContext layoutContext = layoutPanel.getLayoutContext(); |
|
226 |
int unidadesMin = 6; |
|
208 | 227 |
Attributes attributes = layoutContext.getAttributes(); |
209 |
Rectangle2D rLayout = layoutPanel.getLayoutControl().getRect();
|
|
228 |
Rectangle2D rLayout = layoutControl.getRect();
|
|
210 | 229 |
AffineTransform at = layoutContext.getAT(); |
211 | 230 |
|
212 | 231 |
double unidadesX = attributes.getUnitInPixelsX(); |
... | ... | |
219 | 238 |
new Rectangle2D.Double( |
220 | 239 |
(rLayout.getX() + FLayoutUtilities.fromSheetDistance( |
221 | 240 |
attributes.m_area[2], at)), |
222 |
(rLayout.getY() + FLayoutUtilities.fromSheetDistance( |
|
223 |
attributes.m_area[0], at)), |
|
224 |
(rLayout.getWidth() - FLayoutUtilities.fromSheetDistance( |
|
225 |
attributes.m_area[2] + attributes.m_area[3], at)), |
|
226 |
(rLayout.getHeight() - FLayoutUtilities.fromSheetDistance( |
|
227 |
attributes.m_area[0] + attributes.m_area[1], at))); |
|
241 |
(rLayout.getY() + FLayoutUtilities.fromSheetDistance(
|
|
242 |
attributes.m_area[0], at)),
|
|
243 |
(rLayout.getWidth() - FLayoutUtilities.fromSheetDistance(
|
|
244 |
attributes.m_area[2] + attributes.m_area[3], at)),
|
|
245 |
(rLayout.getHeight() - FLayoutUtilities.fromSheetDistance(
|
|
246 |
attributes.m_area[0] + attributes.m_area[1], at)));
|
|
228 | 247 |
} else { |
229 | 248 |
r.setRect(rLayout); |
230 | 249 |
} |
... | ... | |
259 | 278 |
* @param color |
260 | 279 |
* Color de la regla. |
261 | 280 |
*/ |
262 |
public void drawRuler(Graphics2D g, Color color) { |
|
263 |
LayoutControl layoutControl = layoutPanel.getLayoutControl(); |
|
264 |
LayoutContext layoutContext = layoutPanel.getLayoutContext(); |
|
281 |
public void drawRuler(Graphics2D g, Color color) { |
|
265 | 282 |
Attributes attributes = layoutContext.getAttributes(); |
266 | 283 |
Rectangle2D rLayout = layoutControl.getRect(); |
267 | 284 |
AffineTransform at = layoutContext.getAT(); |
... | ... | |
290 | 307 |
.fromSheetDistance(attributes.m_area[2], at), wi); |
291 | 308 |
g.fillRect( |
292 | 309 |
(int) rLayout.getMaxX() |
293 |
- (int) FLayoutUtilities.fromSheetDistance(
|
|
294 |
attributes.m_area[3], at), ini,
|
|
295 |
(int) FLayoutUtilities.fromSheetDistance( |
|
296 |
attributes.m_area[3], at), wi); |
|
310 |
- (int) FLayoutUtilities.fromSheetDistance( |
|
311 |
attributes.m_area[3], at), ini, |
|
312 |
(int) FLayoutUtilities.fromSheetDistance(
|
|
313 |
attributes.m_area[3], at), wi);
|
|
297 | 314 |
|
298 | 315 |
g.fillRect(ini, (int) rLayout.getY(), wi, |
299 | 316 |
(int) FLayoutUtilities.fromSheetDistance( |
... | ... | |
301 | 318 |
g.fillRect( |
302 | 319 |
ini, |
303 | 320 |
(int) rLayout.getMaxY() |
304 |
- (int) FLayoutUtilities.fromSheetDistance(
|
|
305 |
attributes.m_area[1], at), wi,
|
|
306 |
(int) FLayoutUtilities.fromSheetDistance( |
|
307 |
attributes.m_area[1], at)); |
|
321 |
- (int) FLayoutUtilities.fromSheetDistance( |
|
322 |
attributes.m_area[1], at), wi, |
|
323 |
(int) FLayoutUtilities.fromSheetDistance(
|
|
324 |
attributes.m_area[1], at));
|
|
308 | 325 |
} |
309 | 326 |
|
310 | 327 |
g.setColor(color); |
... | ... | |
349 | 366 |
*/ |
350 | 367 |
private void drawLineY(Graphics2D g, double dist, int init, int end, |
351 | 368 |
double y, double desp) { |
352 |
AffineTransform at = layoutPanel.getLayoutContext().getAT();
|
|
353 |
LayoutControl layoutControl = layoutPanel.getLayoutControl();
|
|
369 |
initialize();
|
|
370 |
AffineTransform at = layoutContext.getAT();
|
|
354 | 371 |
|
355 | 372 |
double distY = FLayoutUtilities.fromSheetDistance(dist, at); |
356 | 373 |
double rota = Math.toRadians(90); |
... | ... | |
427 | 444 |
*/ |
428 | 445 |
private void drawLineX(Graphics2D g, double dist, int init, int end, |
429 | 446 |
double x, double desp) { |
430 |
AffineTransform at = layoutPanel.getLayoutContext().getAT();
|
|
431 |
LayoutControl layoutControl = layoutPanel.getLayoutControl();
|
|
447 |
initialize();
|
|
448 |
AffineTransform at = layoutContext.getAT();
|
|
432 | 449 |
|
433 | 450 |
double distX = FLayoutUtilities.fromSheetDistance(dist, at); |
434 | 451 |
|
... | ... | |
489 | 506 |
* Color de los Handlers. |
490 | 507 |
*/ |
491 | 508 |
public void drawHandlers(Graphics2D g, Color color) { |
492 |
LayoutContext layoutContext = layoutPanel.getLayoutContext();
|
|
509 |
initialize();
|
|
493 | 510 |
|
494 | 511 |
g.setColor(color); |
495 | 512 |
IFFrame[] fframes = layoutContext.getFFrames(); |
... | ... | |
509 | 526 |
* @param ps |
510 | 527 |
*/ |
511 | 528 |
public void toPS(File ps) { |
512 |
Attributes attributes = layoutPanel.getLayoutContext().getAttributes();
|
|
513 |
LayoutControl layoutControl = layoutPanel.getLayoutControl();
|
|
529 |
initialize();
|
|
530 |
Attributes attributes = layoutContext.getAttributes();
|
|
514 | 531 |
|
515 | 532 |
try { |
516 | 533 |
// Prepare the output file to receive the postscript |
... | ... | |
529 | 546 |
|
530 | 547 |
// Create the print job |
531 | 548 |
DocPrintJob job = service.createPrintJob(); |
532 |
|
|
549 |
|
|
533 | 550 |
Doc doc = new SimpleDoc(this, flavor, null); |
534 | 551 |
// Doc doc = new SimpleDoc(is, flavor, null); |
535 | 552 |
// Monitor print job events; for the implementation of |
... | ... | |
550 | 567 |
// is.close(); |
551 | 568 |
fos.close(); |
552 | 569 |
} catch (PrintException e) { |
570 |
LOG.error("Error printing the map", e); |
|
553 | 571 |
} catch (IOException e) { |
572 |
LOG.error("Error printing the map", e); |
|
554 | 573 |
} |
555 | 574 |
/* |
556 | 575 |
* PrintService defaultPrintService = |
... | ... | |
586 | 605 |
* @param pdf |
587 | 606 |
*/ |
588 | 607 |
public void toPDF(File pdf) { |
589 |
Attributes attributes = layoutPanel.getLayoutContext().getAttributes(); |
|
590 |
LayoutControl layoutControl = layoutPanel.getLayoutControl(); |
|
608 |
Attributes attributes = layoutContext.getAttributes(); |
|
591 | 609 |
|
592 | 610 |
double w = 0; |
593 | 611 |
double h = 0; |
594 | 612 |
Document document = new Document(); |
595 | 613 |
|
596 | 614 |
if (attributes.isLandSpace()) { |
597 |
w = |
|
598 |
((attributes.m_sizePaper.getAlto() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
599 |
h = |
|
600 |
((attributes.m_sizePaper.getAncho() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
615 |
w = ((attributes.m_sizePaper.getAlto() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
616 |
h = ((attributes.m_sizePaper.getAncho() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
601 | 617 |
} else { |
602 |
w = |
|
603 |
((attributes.m_sizePaper.getAncho() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
604 |
h = |
|
605 |
((attributes.m_sizePaper.getAlto() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
618 |
w = ((attributes.m_sizePaper.getAncho() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
619 |
h = ((attributes.m_sizePaper.getAlto() * Attributes.DPISCREEN) / Attributes.PULGADA); |
|
606 | 620 |
} |
607 | 621 |
|
608 | 622 |
document.setPageSize(new com.lowagie.text.Rectangle((float) w, |
... | ... | |
612 | 626 |
FileOutputStream fos = new FileOutputStream(pdf); |
613 | 627 |
PdfWriter writer = PdfWriter.getInstance(document, fos); |
614 | 628 |
document.open(); |
615 |
|
|
629 |
|
|
616 | 630 |
PdfContentByte cb = writer.getDirectContent(); |
617 | 631 |
Graphics2D g2 = cb.createGraphicsShapes((float) w, (float) h); |
618 | 632 |
|
619 | 633 |
try { |
620 | 634 |
if (attributes.isLandSpace()) { |
621 |
g2.rotate(Math.toRadians(-90), 0 + (w / (h / w)), |
|
622 |
0 + (h / 2)); |
|
635 |
g2.rotate(Math.toRadians(-90), 0 + (w / (h / w)), 0 + (h / 2)); |
|
623 | 636 |
print(g2, new PageFormat(), 0); |
624 |
g2.rotate(Math.toRadians(90), 0 + (w / (h / w)), |
|
625 |
0 + (h / 2)); |
|
637 |
g2.rotate(Math.toRadians(90), 0 + (w / (h / w)), 0 + (h / 2)); |
|
626 | 638 |
} else { |
627 | 639 |
print(g2, new PageFormat(), 0); |
628 | 640 |
} |
629 | 641 |
} catch (PrinterException e) { |
630 |
e.printStackTrace();
|
|
642 |
LOG.error("Error printing the map", e);
|
|
631 | 643 |
} |
632 | 644 |
|
633 | 645 |
g2.dispose(); |
634 | 646 |
|
635 | 647 |
} catch (DocumentException de) { |
636 |
System.err.println(de.getMessage());
|
|
648 |
LOG.error("Error printing the map", de);
|
|
637 | 649 |
} catch (IOException ioe) { |
638 | 650 |
JOptionPane.showMessageDialog( |
639 | 651 |
(Component) PluginServices.getMainFrame(), ioe.getMessage()); |
... | ... | |
643 | 655 |
|
644 | 656 |
layoutControl.fullRect(); |
645 | 657 |
} |
646 |
|
|
658 |
|
|
647 | 659 |
public int print(Graphics g, PageFormat format, int pi) |
648 |
throws PrinterException { |
|
660 |
throws PrinterException { |
|
661 |
initialize(); |
|
649 | 662 |
if (pi >= 1) { |
650 | 663 |
return Printable.NO_SUCH_PAGE; |
651 | 664 |
} |
... | ... | |
658 | 671 |
|
659 | 672 |
g2d.scale((double) 72 / (double) (Attributes.DPI), (double) 72 |
660 | 673 |
/ (double) (Attributes.DPI)); |
661 |
System.err.println("Clip 2 =" + g2d.getClip()); |
|
662 | 674 |
|
663 |
if (layoutPanel.getLayoutContext().getAttributes().isMargin()) {
|
|
675 |
if (layoutContext.getAttributes().isMargin()) {
|
|
664 | 676 |
g2d.setClip( |
665 |
(int) (layoutPanel.getLayoutControl().getRect().getMinX() + FLayoutUtilities |
|
666 |
.fromSheetDistance( |
|
667 |
layoutPanel.getLayoutContext().getAttributes().m_area[2], layoutPanel |
|
668 |
.getLayoutControl().getAT())), |
|
669 |
(int) (layoutPanel.getLayoutControl().getRect().getMinY() + FLayoutUtilities |
|
670 |
.fromSheetDistance( |
|
671 |
layoutPanel.getLayoutContext().getAttributes().m_area[0], layoutPanel |
|
672 |
.getLayoutControl().getAT())), |
|
673 |
(int) (layoutPanel.getLayoutControl().getRect().getWidth() - FLayoutUtilities |
|
674 |
.fromSheetDistance( |
|
675 |
layoutPanel.getLayoutContext().getAttributes().m_area[2] |
|
676 |
+ layoutPanel.getLayoutContext().getAttributes().m_area[3], layoutPanel |
|
677 |
.getLayoutControl().getAT())), |
|
678 |
(int) (layoutPanel.getLayoutControl().getRect().getHeight() - FLayoutUtilities |
|
679 |
.fromSheetDistance( |
|
680 |
layoutPanel.getLayoutContext().getAttributes().m_area[0] |
|
681 |
+ layoutPanel.getLayoutContext().getAttributes().m_area[1], layoutPanel |
|
682 |
.getLayoutControl().getAT()))); |
|
677 |
(int) (layoutControl.getRect().getMinX() + FLayoutUtilities.fromSheetDistance( |
|
678 |
layoutContext.getAttributes().m_area[2], layoutControl.getAT())), |
|
679 |
(int) (layoutPanel.getLayoutControl().getRect().getMinY() + FLayoutUtilities.fromSheetDistance( |
|
680 |
layoutContext.getAttributes().m_area[0], layoutControl.getAT())), |
|
681 |
(int) (layoutControl.getRect().getWidth() - FLayoutUtilities.fromSheetDistance( |
|
682 |
layoutContext.getAttributes().m_area[2] + layoutContext.getAttributes().m_area[3], layoutControl.getAT())), |
|
683 |
(int) (layoutPanel.getLayoutControl().getRect().getHeight() - FLayoutUtilities.fromSheetDistance( |
|
684 |
layoutContext.getAttributes().m_area[0] + layoutContext.getAttributes().m_area[1], layoutControl.getAT()))); |
|
683 | 685 |
} |
684 | 686 |
|
685 | 687 |
|
... | ... | |
688 | 690 |
|
689 | 691 |
return Printable.PAGE_EXISTS; |
690 | 692 |
} |
691 |
|
|
693 |
|
|
692 | 694 |
/** |
693 | 695 |
* Se dibuja sobre el graphics el Layout. |
694 | 696 |
* |
... | ... | |
696 | 698 |
* graphics sobre el que se dibuja. |
697 | 699 |
*/ |
698 | 700 |
public void drawShapes(Graphics2D g2) { |
699 |
LayoutControl layoutControl = layoutPanel.getLayoutControl(); |
|
700 |
LayoutContext layoutContext = layoutPanel.getLayoutContext(); |
|
701 |
|
|
702 |
layoutControl.setCancelDrawing(false); |
|
703 |
|
|
701 |
initialize(); |
|
704 | 702 |
layoutPanel.setCursor(Cursor.getDefaultCursor()); |
703 |
initializeAffineTransform(); |
|
705 | 704 |
|
706 |
AffineTransform at = layoutContext.getAT(); |
|
707 |
double scale = 0; |
|
708 |
scale = |
|
709 |
layoutControl.getRect().height |
|
710 |
/ layoutContext.getAttributes().m_sizePaper.getAlto() * 1; |
|
711 |
AffineTransform escalado = new AffineTransform(); |
|
712 |
AffineTransform translacion = new AffineTransform(); |
|
713 |
translacion.setToTranslation(layoutControl.getRect().getMinX(), |
|
714 |
layoutControl.getRect().getMinY()); |
|
715 |
escalado.setToScale(scale, scale); |
|
716 |
at.setToIdentity(); |
|
717 |
at.concatenate(translacion); |
|
718 |
at.concatenate(escalado); |
|
719 |
layoutContext.getAttributes().setDistanceUnitX(layoutControl.getRect()); |
|
720 |
layoutContext.getAttributes().setDistanceUnitY(layoutControl.getRect()); |
|
721 | 705 |
IFFrame[] fframes = layoutContext.getFFrames(); |
722 | 706 |
for (int i = 0; i < fframes.length; i++) { |
723 |
fframes[i].print(g2, at, null, layoutContext
|
|
707 |
fframes[i].print(g2, layoutControl.getAT(), null, layoutContext
|
|
724 | 708 |
.getAttributes().toPrintAttributes()); |
725 | 709 |
} |
726 | 710 |
} |
... | ... | |
730 | 714 |
} |
731 | 715 |
|
732 | 716 |
public void deleteObserver(Observer o) { |
733 |
observers.deleteObserver(o); |
|
717 |
observers.deleteObserver(o);
|
|
734 | 718 |
} |
735 | 719 |
|
736 | 720 |
public void deleteObservers() { |
737 |
observers.deleteObservers(); |
|
721 |
observers.deleteObservers();
|
|
738 | 722 |
} |
739 | 723 |
} |
Also available in: Unified diff