/* * Copyright (c) 1998-2017 by Richard A. Wilkes. All rights reserved. * * This Source Code Form is subject to the terms of the Mozilla Public * License, version 2.0. If a copy of the MPL was not distributed with * this file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This Source Code Form is "Incompatible With Secondary Licenses", as * defined by the Mozilla Public License, version 2.0. */ package com.trollworks.gcs.page; import com.trollworks.toolkit.ui.GraphicsUtilities; import com.trollworks.toolkit.ui.UIUtilities; import com.trollworks.toolkit.ui.border.EmptyBorder; import com.trollworks.toolkit.ui.print.PrintManager; import com.trollworks.toolkit.utility.units.LengthUnits; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; import javax.swing.JPanel; /** A printer page. */ public class Page extends JPanel { private PageOwner mOwner; /** * Creates a new page. * * @param owner The page owner. */ public Page(PageOwner owner) { super(new BorderLayout()); mOwner = owner; setOpaque(true); setBackground(Color.white); PrintManager pageSettings = mOwner.getPageSettings(); Insets insets = mOwner.getPageAdornmentsInsets(this); double[] margins = pageSettings != null ? pageSettings.getPageMargins(LengthUnits.PT) : new double[] { 36.0, 36.0, 36.0, 36.0 }; setBorder(new EmptyBorder(insets.top + (int) margins[0], insets.left + (int) margins[1], insets.bottom + (int) margins[2], insets.right + (int) margins[3])); double[] size = mOwner.getScale().scale(pageSettings != null ? pageSettings.getPageSize(LengthUnits.PT) : new double[] { 8.5 * 72.0, 11.0 * 72.0 }); Dimension pageSize = new Dimension((int) size[0], (int) size[1]); UIUtilities.setOnlySize(this, pageSize); setSize(pageSize); } @Override protected void paintComponent(Graphics gc) { super.paintComponent(GraphicsUtilities.prepare(gc)); mOwner.drawPageAdornments(this, gc); } }