Package org.freeplane.features.print

Source Code of org.freeplane.features.print.PreviewDialog

/*
* Preview Dialog - A Preview Dialog for your Swing Applications Copyright (C)
* 2003 Jens Kaiser. Created by Dimitry Polivaev. Written by: 2003 Jens Kaiser
* <jens.kaiser@web.de> This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. This program is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
* the GNU Library General Public License for more details. You should have
* received a copy of the GNU Library General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
* Cambridge, MA 02139, USA.
*/
package org.freeplane.features.print;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.Printable;
import java.net.URL;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;

import org.freeplane.core.resources.ResourceController;
import org.freeplane.core.ui.components.FreeplaneToolBar;
import org.freeplane.core.ui.components.UITools;

class PreviewDialog extends JDialog implements ActionListener {
  final private static double DEFAULT_ZOOM_FACTOR_STEP = Math.sqrt(2);
  /**
   *
   */
  private static final long serialVersionUID = 1L;
  final private JLabel pageNumber;
  protected Printable view;

  public PreviewDialog(final PrintController printController, final String title, final Component c) {
    super(JOptionPane.getFrameForComponent(c), title, true);
    view = (Printable) c;
    final Rectangle desktopBounds = UITools.getDesktopBounds(c);
    Dimension previewSize = new Dimension(desktopBounds.width * 3/4, desktopBounds.height * 3/4);
    final Preview preview = new Preview(printController, view, previewSize );
    final JScrollPane scrollPane = new JScrollPane(preview, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    UITools.setScrollbarIncrement(scrollPane);
    getContentPane().add(scrollPane, "Center");
    final JToolBar toolbar = new FreeplaneToolBar("preview_toolbar", SwingConstants.HORIZONTAL);
    getContentPane().add(toolbar, "North");
    pageNumber = new JLabel("- 9999 -");
    final JButton button = getButton("Back24.gif", new BrowseAction(preview, pageNumber, -1));
    toolbar.add(button);
    pageNumber.setPreferredSize(new Dimension(pageNumber.getPreferredSize().width, button.getPreferredSize().height));
    pageNumber.setText("- 1 -");
    pageNumber.setHorizontalAlignment(SwingConstants.CENTER);
    toolbar.add(pageNumber);
    toolbar.add(getButton("Forward24.gif", new BrowseAction(preview, pageNumber, 1)));
    toolbar.add(new JToolBar.Separator());
    toolbar.add(getButton("ZoomIn24.png", new ZoomAction(preview, PreviewDialog.DEFAULT_ZOOM_FACTOR_STEP)));
    toolbar.add(getButton("ZoomOut24.png", new ZoomAction(preview, 1.0/PreviewDialog.DEFAULT_ZOOM_FACTOR_STEP)));
    toolbar.add(new JToolBar.Separator());
    final JPanel buttons = new JPanel();
    buttons.setLayout(new FlowLayout(FlowLayout.RIGHT));
    final JButton ok = new JButton("OK");
    ok.addActionListener(this);
    buttons.add(ok);
    getContentPane().add(buttons, "South");
    UITools.addEscapeActionToDialog(this);
  }

  public void actionPerformed(final ActionEvent e) {
    dispose();
  }

  private JButton getButton(final String iconName, final AbstractAction action) {
    return getButton(null, iconName, action);
  }

  private JButton getButton(final String name, final String iconName, final AbstractAction action) {
    JButton result = null;
    ImageIcon icon = null;
    final URL imageURL = ResourceController.getResourceController().getResource("/images/" + iconName);
    if (imageURL != null) {
      icon = new ImageIcon(imageURL);
    }
    if (action != null) {
      if (icon != null) {
        action.putValue(Action.SMALL_ICON, new ImageIcon(imageURL));
      }
      if (name != null) {
        action.putValue(Action.NAME, name);
      }
      result = new JButton(action);
    }
    else {
      result = new JButton(name, icon);
    }
    return result;
  }
}
TOP

Related Classes of org.freeplane.features.print.PreviewDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.