Package printplugin.dlgs

Source Code of printplugin.dlgs.ProgramInfoPrintDialog

/*
* TV-Browser
* Copyright (C) 04-2003 Martin Oberhauser (martin@tvbrowser.org)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* CVS information:
*  $RCSfile$
*   $Source$
*     $Date: 2011-03-26 21:21:11 +0100 (Sat, 26 Mar 2011) $
*   $Author: bananeweizen $
* $Revision: 6974 $
*/

package printplugin.dlgs;

import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;

import printplugin.PrintPlugin;
import printplugin.printer.singleprogramprinter.DocumentRenderer;
import printplugin.settings.ProgramInfoPrintSettings;
import util.program.ProgramTextCreator;
import util.settings.ProgramPanelSettings;
import util.ui.FontChooserPanel;
import util.ui.Localizer;
import util.ui.OrderChooser;
import util.ui.UiUtilities;
import util.ui.WindowClosingIf;
import util.ui.html.ExtendedHTMLDocument;
import util.ui.html.ExtendedHTMLEditorKit;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

import devplugin.Plugin;
import devplugin.PluginAccess;
import devplugin.Program;
import devplugin.ProgramFieldType;

/**
* A class that creates a dialog for setting up the
* printing of the Program infos.
*
* @author René Mach
*
*/
public class ProgramInfoPrintDialog implements WindowClosingIf{

  private static final Localizer mLocalizer = Localizer.getLocalizerFor(ProgramInfoPrintDialog.class);
 
  private JDialog mDialog;
  private PageFormat mPageFormat;

  private Object[] mFieldTypes;
 
  /**
   * Creates a instance of this class
   *
   * @param parent The parent frame.
   * @param program Program to Print
   */
  public ProgramInfoPrintDialog(Window parent, Program program) {
    mDialog = new JDialog(parent);
    mDialog.setModal(true);
    createGUI(parent, program);
  }

  private void createGUI(final Window parent, final Program program) {
    UiUtilities.registerForClosing(this);
    mDialog.setTitle(mLocalizer.msg("title","Print program info"));

    final OrderChooser fieldChooser = new OrderChooser(ProgramInfoPrintSettings.getInstance().getFieldTypes(),ProgramTextCreator.getDefaultOrder(),true);
    final FontChooserPanel fontChooser = new FontChooserPanel("",ProgramInfoPrintSettings.getInstance().getFont(), false);
    final JCheckBox printImage = new JCheckBox(mLocalizer.msg("printImage","Print image"), ProgramInfoPrintSettings.getInstance().isPrintImage());
    final JCheckBox printPluginIcons = new JCheckBox(mLocalizer.msg("printPluginIcons","Print plugin icons"), ProgramInfoPrintSettings.getInstance().isPrintPluginIcons());
    final PrinterJob printerJob = PrinterJob.getPrinterJob();
    mPageFormat = printerJob.defaultPage();
   
    JButton printerSetupBtn = new JButton(SettingsDialog.mLocalizer.ellipsisMsg("printer","Printer"),PrintPlugin.getInstance().createImageIcon("devices", "printer", 16));
    printerSetupBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        new Thread("Printer setup") {
          public void run() {
            printerJob.printDialog();
          }
        }.start();
      }
    });
   
    JButton pageBtn = new JButton(SettingsDialog.mLocalizer.ellipsisMsg("page","Page"), PrintPlugin.getInstance().createImageIcon("actions", "document-properties", 16));
    pageBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        new Thread("Document setup (printing)"){
          public void run(){
            if (mPageFormat == null) {
              mPageFormat = printerJob.defaultPage();
            }
            mPageFormat = printerJob.pageDialog(mPageFormat);
          }
        }.start();
      }
    });
   
    JButton previewBtn = new JButton(SettingsDialog.mLocalizer.ellipsisMsg("preview","Preview"), PrintPlugin.getInstance().createImageIcon("actions", "document-print-preview", 16));
    previewBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if (mPageFormat == null) {
          mPageFormat = printerJob.defaultPage();
        }
       
        mFieldTypes = fieldChooser.getOrder();
       
        DocumentRenderer printJob = createPrintjob(program, fontChooser, printImage, printPluginIcons);
       
        PreviewDlg dlg = new PreviewDlg(mDialog, printJob, mPageFormat, printJob.getPageCount());
       
        PrintPlugin.getInstance().layoutWindow("previewDlg",dlg);
       
        dlg.setVisible(true);
      }
    });
   
    JButton print = new JButton(SettingsDialog.mLocalizer.msg("print","Drucken"));
    print.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if (mPageFormat == null) {
          mPageFormat = printerJob.defaultPage();
        }
       
        mFieldTypes = fieldChooser.getOrder();
       
        ProgramInfoPrintSettings.getInstance().setFont(fontChooser.getChosenFont());
        ProgramInfoPrintSettings.getInstance().setFieldTypes(mFieldTypes);
        ProgramInfoPrintSettings.getInstance().setPrintImage(printImage.isSelected());
        ProgramInfoPrintSettings.getInstance().setPrintPluginIcons(printPluginIcons.isSelected());
        close();
       
        DocumentRenderer printable = createPrintjob(program, fontChooser, printImage, printPluginIcons);

        printerJob.setPrintable(printable, mPageFormat);
        try {
          printerJob.print();
        } catch (PrinterException pe) {
          util.exc.ErrorHandler.handle("Could not print pages: "+pe.getLocalizedMessage(), pe);
        }
       
      }
    });
   
    JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL));
    cancel.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        close();
      }
    });
   
    boolean hasImage = program.hasFieldValue(ProgramFieldType.PICTURE_TYPE);
    boolean hasIcons = program.getMarkerArr().length > 0;
   
    if(!hasIcons) {
      PluginAccess[] plugins = Plugin.getPluginManager().getActivatedPlugins();
       
      for (PluginAccess pluginAccess : plugins) {
        Icon[] ico = pluginAccess.getProgramTableIcons(program);

        if (ico != null && ico.length > 0) {
          hasIcons = true;
          break;
        }
      }
    }
   
    PanelBuilder b1 = new PanelBuilder(new FormLayout("5dlu,pref:grow","pref,5dlu,pref,10dlu,pref,5dlu,fill:default:grow" + (hasIcons || hasImage ? ",3dlu" : "") + (hasIcons ? ",pref" : "") + (hasImage ? ",pref" : "")));
    b1.setDefaultDialogBorder();

    PanelBuilder b2 = new PanelBuilder(new FormLayout("pref,10dlu,pref","pref,2dlu,pref,2dlu,pref,default:grow,pref,5dlu,pref"));
    b2.setDefaultDialogBorder();

    CellConstraints cc = new CellConstraints();
   
    b1.addSeparator(mLocalizer.msg("font","Font"),cc.xyw(1,1,2));
    b1.add(fontChooser, cc.xyw(1,3,2));
    b1.addSeparator(mLocalizer.msg("order","Info fields and order"), cc.xyw(1,5,2));
    b1.add(fieldChooser, cc.xyw(1,7,2));
   
    if(hasIcons) {
      b1.add(printPluginIcons, cc.xy(2,9));
    }
   
    if(hasImage) {
      if(hasIcons) {
        b1.add(printImage, cc.xy(2,10));
      } else {
        b1.add(printImage, cc.xy(2,9));
      }
    }
   
    b2.add(printerSetupBtn, cc.xy(3,1));
    b2.add(pageBtn, cc.xy(3,3));
    b2.add(previewBtn, cc.xy(3,5));
    b2.add(print,cc.xy(3,7));
    b2.add(cancel,cc.xy(3,9));
    b2.add(new JSeparator(SwingConstants.VERTICAL), cc.xywh(1,1,1,9));
   
    JPanel main = new JPanel(new BorderLayout());
    main.add(b1.getPanel(), BorderLayout.CENTER);
    main.add(b2.getPanel(), BorderLayout.EAST);
   
    mDialog.getRootPane().setDefaultButton(print);
    mDialog.setContentPane(main);
   
    PrintPlugin.getInstance().layoutWindow("programInfoPrintDialog", mDialog);
   
    mDialog.setVisible(true);
  }

  public void close() {
    mDialog.dispose();
  }

  public JRootPane getRootPane() {
    return mDialog.getRootPane();
  }

  /**
   * Create the PrintJob
   *
   * @param program Program to Print
   * @param fontChooser Font to use
   * @param printImage Print Image, if available ?
   * @return PrintJob
   */
  private DocumentRenderer createPrintjob(final Program program, final FontChooserPanel fontChooser, final JCheckBox printImage, final JCheckBox printIcons) {
    JEditorPane pane = new JEditorPane();
    pane.setEditorKit(new ExtendedHTMLEditorKit());
    ExtendedHTMLDocument doc = (ExtendedHTMLDocument) pane.getDocument();
   
    String html = /*ProgramTextCreator.createInfoText(program, doc,
          mFieldTypes, null, fontChooser.getChosenFont(), printImage.isSelected(), false);*/
   
    ProgramTextCreator.createInfoText(program, doc, mFieldTypes, null, fontChooser.getChosenFont(), new ProgramPanelSettings(printImage.isSelected() ? ProgramPanelSettings.SHOW_PICTURES_EVER : ProgramPanelSettings.SHOW_PICTURES_NEVER, -1, -1, false, true, 10), false, 100, printIcons.isSelected());
   
    pane.setText(html);
   
    DocumentRenderer printJob = new DocumentRenderer(mPageFormat);
    printJob.setEditorPane(pane);
    return printJob;
  }
}
TOP

Related Classes of printplugin.dlgs.ProgramInfoPrintDialog

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.