protected int addLabelBox(
      String text,
      int xPos,
      int yPos,
      int labelWidth,
      int labelHeight,
      int fontSize,
      float scaleFactor) {
    Box labelBox = ModelFactory.eINSTANCE.createBox();
    labelBox.setSize(new Dimension(labelWidth, labelHeight));
    labelBox.setLocation(new Point(xPos, yPos));
    LabelBoxPrinter labelBoxPrinter = new LabelBoxPrinter(scaleFactor);
    labelBox.setBoxPrinter(labelBoxPrinter);

    labelBox.setID("Standard Label"); // $NON-NLS-1$
    labelBoxPrinter.setText(text);
    labelBoxPrinter.setHorizontalAlignment(SWT.CENTER);
    try {
      FontData data = Display.getDefault().getSystemFont().getFontData()[0];

      data.setHeight(fontSize);
      data.setStyle(SWT.BOLD);

      Font font = AWTSWTImageUtils.swtFontToAwt(data);
      labelBoxPrinter.setFont(font);

    } catch (Exception e) {
      // oh well don't have that font type
    }
    boxes.add(labelBox);
    return labelHeight;
  }
  /**
   * Iterates through the Page's Boxes, drawing to the provided Graphics object
   *
   * @see java.awt.print.Printable#print(java.awt.Graphics, java.awt.print.PageFormat, int)
   */
  public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
      throws PrinterException {

    if (pageIndex >= 1) {
      return Printable.NO_SUCH_PAGE;
    }

    Graphics2D graphics2d = (Graphics2D) graphics;

    AffineTransform at = graphics2d.getTransform();
    double dpi = at.getScaleX() * 72;

    if (PrintingPlugin.isDebugging(TRACE_PRINTING)) {
      PrintingPlugin.log("Printing page " + pageIndex, null); // $NON-NLS-1$
      System.out.println("PageFormat: " + pageFormat); // $NON-NLS-1$
      System.out.println("PageFormat height: " + pageFormat.getHeight()); // $NON-NLS-1$
      System.out.println("PageFormat width: " + pageFormat.getWidth()); // $NON-NLS-1$
      System.out.println(
          "PageFormat imageableX,Y "
              + pageFormat.getImageableX()
              + ", "
              + pageFormat.getImageableY()); // $NON-NLS-1$ //$NON-NLS-2$
      System.out.println(
          "PageFormat imageable height: " + pageFormat.getImageableHeight()); // $NON-NLS-1$
      System.out.println(
          "PageFormat imageable width: " + pageFormat.getImageableWidth()); // $NON-NLS-1$
      System.out.println(
          "PageFormat orientation (LANDSCAPE="
              + PageFormat.LANDSCAPE
              + ", PORTRAIT="
              + PageFormat.PORTRAIT
              + "): "
              + pageFormat.getOrientation()); // $NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$

      System.out.println("Graphics: clip bounds: " + graphics2d.getClipBounds()); // $NON-NLS-1$
      System.out.println("Transform: scaleX: " + at.getScaleX()); // $NON-NLS-1$
      System.out.println("Transform: scaleY: " + at.getScaleY()); // $NON-NLS-1$
      System.out.println("DPI?? : " + dpi); // $NON-NLS-1$
    }

    graphics2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

    Iterator<Box> iter = diagram.getBoxes().iterator();
    while (iter.hasNext()) {

      Box box = iter.next();
      graphics2d =
          (Graphics2D)
              graphics.create(
                  box.getLocation().x,
                  box.getLocation().y,
                  box.getSize().width,
                  box.getSize().height);

      box.getBoxPrinter().draw(graphics2d, monitor);
    }

    return Printable.PAGE_EXISTS;
  }
 protected void addLegendBox(int xPos, int yPos, int legendWidth, int legendHeight) {
   Box legendBox = ModelFactory.eINSTANCE.createBox();
   MapGraphicBoxPrinter legend = new MapGraphicBoxPrinter(page);
   legend.setMapGraphic(MapGraphicChooserDialog.findResource(LegendGraphic.class));
   legendBox.setBoxPrinter(legend);
   legendBox.setID("Legend Box"); // $NON-NLS-1$
   legendBox.setLocation(new Point(xPos, yPos));
   legendBox.setSize(new Dimension(legendWidth, legendHeight));
   boxes.add(legendBox);
 }
 protected void addScale(int xPos, int yPos, int scaleWidth, int scaleHeight) {
   Box scaleBox = ModelFactory.eINSTANCE.createBox();
   MapGraphicBoxPrinter scale = new MapGraphicBoxPrinter(page);
   scale.setMapGraphic(MapGraphicChooserDialog.findResource(ScalebarMapGraphic.class));
   scaleBox.setBoxPrinter(scale);
   scaleBox.setID("Scalebar Box"); // $NON-NLS-1$
   scaleBox.setLocation(new Point(xPos, yPos));
   scaleBox.setSize(new Dimension(scaleWidth, scaleHeight));
   boxes.add(scaleBox);
 }
  protected Rectangle addMapBox(
      Map map, int xPos, int yPos, int mapWidth, int mapHeight, Dimension paperSize) {
    Box mapBox = ModelFactory.eINSTANCE.createBox();
    MapBoxPrinter mapBoxPrinter = new MapBoxPrinter();
    mapBox.setID("Standard Map Box"); // $NON-NLS-1$
    mapBox.setBoxPrinter(mapBoxPrinter);
    mapBoxPrinter.setMap(map);

    Rectangle mapBounds = new Rectangle(xPos, yPos, mapWidth, mapHeight);
    mapBox.setSize(new Dimension(mapBounds.width, mapBounds.height));
    mapBox.setPaperSize(paperSize);

    mapBox.setLocation(new Point(mapBounds.x, mapBounds.y));
    boxes.add(mapBox);
    return mapBounds;
  }