Package net.sf.jsignpdf

Source Code of net.sf.jsignpdf.VisibleSignatureDialog

package net.sf.jsignpdf;

import java.awt.image.BufferedImage;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import net.sf.jsignpdf.preview.Pdf2Image;
import net.sf.jsignpdf.preview.SelectionImage;
import net.sf.jsignpdf.types.FloatPoint;
import net.sf.jsignpdf.types.RelRect;
import net.sf.jsignpdf.types.RenderMode;
import net.sf.jsignpdf.utils.ConvertUtils;
import net.sf.jsignpdf.utils.GuiUtils;
import net.sf.jsignpdf.utils.ResourceProvider;
import net.sf.jsignpdf.utils.StringUtils;

/**
* Options dialog for Visible signature settings
*
* @author Josef Cacek
*/
public class VisibleSignatureDialog extends javax.swing.JDialog {

  private static final long serialVersionUID = 1L;

  protected final ResourceProvider res = ResourceProvider.getInstance();

  private BasicSignerOptions options;
  private SignerFileChooser fc;
  private PdfExtraInfo extraInfo;
  private Pdf2Image p2i;
  private SelectionImage selectionImage = new SelectionImage();

  private int numberOfPages = -1;
  private FloatPoint pdfPageSize;

  private boolean previewListenerDisabled;

  /**
   * Document listener which catches page number change.
   *
   * @author Josef Cacek
   */
  class PageNrDocumentListener implements DocumentListener {
    public void changedUpdate(DocumentEvent e) {
      pageNrChanged();
    }

    public void insertUpdate(DocumentEvent e) {
      pageNrChanged();
    }

    public void removeUpdate(DocumentEvent e) {
      pageNrChanged();
    }
  }

  /** Creates new form VisibleSignatureDialog */
  public VisibleSignatureDialog(java.awt.Frame parent, boolean modal, final BasicSignerOptions anOptions,
      final SignerFileChooser aFC) {
    super(parent, modal);
    options = anOptions;
    fc = aFC;
    p2i = new Pdf2Image(options);
    initComponents();
    translateLabels();
    tfPage.getDocument().addDocumentListener(new PageNrDocumentListener());
    selectionImage.getRelRect().addPropertyChangeListener(new PropertyChangeListener() {
      public void propertyChange(PropertyChangeEvent evt) {
        if (previewListenerDisabled)
          return;
        final RelRect tmpRect = selectionImage.getRelRect();
        if (pdfPageSize == null || !tmpRect.isValid()) {
          // tfPosLLX.setText(null);
          // tfPosLLY.setText(null);
          // tfPosURX.setText(null);
          // tfPosURY.setText(null);
          return;
        }
        tfPosLLX.setText(String.valueOf(tmpRect.getRelLeft() * pdfPageSize.getX()));
        tfPosLLY.setText(String.valueOf((1 - tmpRect.getRelBottom()) * pdfPageSize.getY()));
        tfPosURX.setText(String.valueOf(tmpRect.getRelRight() * pdfPageSize.getX()));
        tfPosURY.setText(String.valueOf((1 - tmpRect.getRelTop()) * pdfPageSize.getY()));
      }
    });
    cbDisplayMode.setModel(new DefaultComboBoxModel(RenderMode.values()));
    extraInfo = new PdfExtraInfo(anOptions);
    previewDialog.add(selectionImage, java.awt.BorderLayout.CENTER);
    previewDialog.setModal(true);
    previewDialog.getRootPane().setDefaultButton(btnPreviewClose);
    GuiUtils.resizeAndCenter(previewDialog);
    getRootPane().setDefaultButton(btnClose);
  }

  /**
   * Event handler for page number change. It displays (or hides) position
   * bounds.
   */
  protected void pageNrChanged() {
    if (numberOfPages < 1)
      return;

    final Integer tmpPageNr = ConvertUtils.toInteger(tfPage.getText());
    if (tmpPageNr != null && tmpPageNr > 0 && tmpPageNr <= numberOfPages) {
      pdfPageSize = extraInfo.getPageSize(tmpPageNr.intValue());
    }
    if (switchBounds(pdfPageSize != null)) {
      lblPosLLYBounds.setText("0.0 - " + pdfPageSize.getY());
      lblPosLLXBounds.setText("0.0 - " + pdfPageSize.getX());
    }
  }

  /**
   * Translates labels in this dialog.
   */
  private void translateLabels() {
    setTitle(res.get("gui.vs.title"));

    setLabelAndMnemonic(lblPosition, "gui.vs.position.label");
    setLabelAndMnemonic(lblPage, "gui.vs.page.label");
    setLabelAndMnemonic(lblPosLLX, "gui.vs.llx.label");
    setLabelAndMnemonic(lblPosLLY, "gui.vs.lly.label");
    setLabelAndMnemonic(lblPosURX, "gui.vs.urx.label");
    setLabelAndMnemonic(lblPosURY, "gui.vs.ury.label");
    setLabelAndMnemonic(lblBgImgScale, "gui.vs.bgImgScale.label");
    setLabelAndMnemonic(btnPreview, "gui.vs.preview.button");

    setLabelAndMnemonic(lblSettings, "gui.vs.settings.label");
    setLabelAndMnemonic(lblDisplayMode, "gui.vs.renderMode.label");
    setLabelAndMnemonic(lblL2Text, "gui.vs.l2Text.label");
    setLabelAndMnemonic(lblL2TextFontSize, "gui.vs.l2TextFontSize.label");
    setLabelAndMnemonic(lblL4Text, "gui.vs.l4Text.label");
    setLabelAndMnemonic(lblImgPath, "gui.vs.imgPath.label");
    setLabelAndMnemonic(lblBgImgPath, "gui.vs.bgImgPath.label");
    setLabelAndMnemonic(chkbL2TextDefault, "gui.vs.default.checkbox");
    setLabelAndMnemonic(chkbL4TextDefault, "gui.vs.default.checkbox");
    setLabelAndMnemonic(btnBgImgPathBrowse, "gui.vs.browse.button");
    setLabelAndMnemonic(btnImgPathBrowse, "gui.vs.browse.button");
    setLabelAndMnemonic(btnClose, "gui.vs.close.button");

    setLabelAndMnemonic(btnPreviewClose, "gui.vs.close.button");
    previewDialog.setTitle(res.get("gui.preview.title"));

    setToolTip(tfPage, "gui.vs.page.tooltip");
    setToolTip(tfPosLLX, "gui.vs.llx.tooltip");
    setToolTip(tfPosLLY, "gui.vs.lly.tooltip");
    setToolTip(tfPosURX, "gui.vs.urx.tooltip");
    setToolTip(tfPosURY, "gui.vs.ury.tooltip");
    setToolTip(tfBgImgScale, "gui.vs.bgImgScale.tooltip");

  }

  /**
   * Loads properties saved by previous run of application
   */
  private void updateFromOptions() {
    tfPage.setText(ConvertUtils.toString(options.getPage()));
    tfPosLLX.setText(ConvertUtils.toString(options.getPositionLLX()));
    tfPosLLY.setText(ConvertUtils.toString(options.getPositionLLY()));
    tfPosURX.setText(ConvertUtils.toString(options.getPositionURX()));
    tfPosURY.setText(ConvertUtils.toString(options.getPositionURY()));
    tfBgImgScale.setText(ConvertUtils.toString(options.getBgImgScale()));
    cbDisplayMode.setSelectedItem(options.getRenderMode());
    taL2Text.setText(options.getL2Text());
    chkbL2TextDefault.setSelected(options.getL2Text() == null);
    tfL2TextFontSize.setText(ConvertUtils.toString(options.getL2TextFontSize()));
    tfL4Text.setText(options.getL4Text());
    chkbL4TextDefault.setSelected(options.getL4Text() == null);
    tfImgPath.setText(options.getImgPath());
    tfBgImgPath.setText(options.getBgImgPath());

    // set description fields enabled/disabled
    chkbL2TextDefaultActionPerformed(null);
    chkbL4TextDefaultActionPerformed(null);
  }

  /**
   * stores values from this Form to the instance of {@link SignerOptions}
   */
  private void storeToOptions() {
    options.setPage(ConvertUtils.toInt(tfPage.getText(), Constants.DEFVAL_PAGE));
    options.setPositionLLX(ConvertUtils.toFloat(tfPosLLX.getText(), Constants.DEFVAL_LLX));
    options.setPositionLLY(ConvertUtils.toFloat(tfPosLLY.getText(), Constants.DEFVAL_LLY));
    options.setPositionURX(ConvertUtils.toFloat(tfPosURX.getText(), Constants.DEFVAL_URX));
    options.setPositionURY(ConvertUtils.toFloat(tfPosURY.getText(), Constants.DEFVAL_URY));
    options.setBgImgScale(ConvertUtils.toFloat(tfBgImgScale.getText(), Constants.DEFVAL_BG_SCALE));
    options.setRenderMode((RenderMode) cbDisplayMode.getSelectedItem());
    options.setL2Text(chkbL2TextDefault.isSelected() ? null : StringUtils.toNotNull(taL2Text.getText()));
    options.setL2TextFontSize(ConvertUtils.toFloat(tfL2TextFontSize.getText(), Constants.DEFVAL_L2_FONT_SIZE));
    options.setL4Text(chkbL4TextDefault.isSelected() ? null : StringUtils.toNotNull(tfL4Text.getText()));
    options.setImgPath(tfImgPath.getText());
    options.setBgImgPath(tfBgImgPath.getText());

    // if there are fixed values update them in the form;
    updateFromOptions();
  }

  /**
   * Facade for
   * {@link ResourceProvider#setLabelAndMnemonic(JComponent, String)}
   *
   * @param aComponent
   * @param aKey
   */
  private void setLabelAndMnemonic(final JComponent aComponent, final String aKey) {
    res.setLabelAndMnemonic(aComponent, aKey);
  }

  /**
   * Sets tooltip with given key to given component
   *
   * @param aComponent
   *            component to which a tooltip should be assigned
   * @param aKey
   *            tooltip key (in resource bundle)
   */
  private void setToolTip(final JComponent aComponent, final String aKey) {
    aComponent.setToolTipText(res.get(aKey));
  }

  /**
   * Shows/hides position bounds.
   *
   * @param aVisible
   * @return
   */
  private boolean switchBounds(final boolean aVisible) {
    lblPosLLXBounds.setVisible(aVisible);
    lblPosLLYBounds.setVisible(aVisible);
    btnPreview.setEnabled(aVisible);
    return aVisible;
  }

  /**
   * Enables/disables siganture image input for selected render mode.
   */
  private void switchImage() {
    final boolean tmpEnabled = RenderMode.GRAPHIC_AND_DESCRIPTION.equals(cbDisplayMode.getSelectedItem());
    tfImgPath.setEnabled(tmpEnabled);
    btnImgPathBrowse.setEnabled(tmpEnabled);
  }

  /**
   * Reads number of pages from PDF.
   */
  private void readPdfInfo() {
    numberOfPages = extraInfo.getNumberOfPages();
    tfPage.setEnabled(numberOfPages != 1);
    lblPageBounds.setVisible(numberOfPages > 0);
    switchBounds(false);
    if (numberOfPages > 0) {
      lblPageBounds.setText("1 - " + numberOfPages);
      final Integer tmpPageNr = ConvertUtils.toInteger(tfPage.getText());
      if (tmpPageNr == null || tmpPageNr.intValue() < 1 || tmpPageNr.intValue() > numberOfPages) {
        tfPage.setText(ConvertUtils.toString(Constants.DEFVAL_PAGE));
      }
    }
    pageNrChanged();
  }

  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  // <editor-fold defaultstate="collapsed"
  // <editor-fold defaultstate="collapsed"
  // <editor-fold defaultstate="collapsed"
  // desc="Generated Code">//GEN-BEGIN:initComponents
  private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;

    previewDialog = new javax.swing.JDialog();
    jPanel1 = new javax.swing.JPanel();
    btnPreviewClose = new javax.swing.JButton();
    btnPrevious = new javax.swing.JButton();
    btnNext = new javax.swing.JButton();
    lblPosition = new javax.swing.JLabel();
    lblPage = new javax.swing.JLabel();
    tfPage = new javax.swing.JTextField();
    lblPosLLX = new javax.swing.JLabel();
    tfPosLLX = new javax.swing.JTextField();
    lblPosLLY = new javax.swing.JLabel();
    tfPosLLY = new javax.swing.JTextField();
    lblPosURX = new javax.swing.JLabel();
    tfPosURX = new javax.swing.JTextField();
    lblPosURY = new javax.swing.JLabel();
    tfPosURY = new javax.swing.JTextField();
    lblSettings = new javax.swing.JLabel();
    lblDisplayMode = new javax.swing.JLabel();
    cbDisplayMode = new javax.swing.JComboBox();
    chkbL2TextDefault = new javax.swing.JCheckBox();
    lblL4Text = new javax.swing.JLabel();
    tfL4Text = new javax.swing.JTextField();
    chkbL4TextDefault = new javax.swing.JCheckBox();
    lblImgPath = new javax.swing.JLabel();
    tfImgPath = new javax.swing.JTextField();
    btnImgPathBrowse = new javax.swing.JButton();
    lblBgImgPath = new javax.swing.JLabel();
    tfBgImgPath = new javax.swing.JTextField();
    btnBgImgPathBrowse = new javax.swing.JButton();
    lblBgImgScale = new javax.swing.JLabel();
    tfBgImgScale = new javax.swing.JTextField();
    btnClose = new javax.swing.JButton();
    lblPageBounds = new javax.swing.JLabel();
    lblPosLLXBounds = new javax.swing.JLabel();
    lblPosLLYBounds = new javax.swing.JLabel();
    lblL2Text = new javax.swing.JLabel();
    lblL2TextFontSize = new javax.swing.JLabel();
    tfL2TextFontSize = new javax.swing.JTextField();
    btnPreview = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    taL2Text = new javax.swing.JTextArea();

    previewDialog.setModal(true);

    jPanel1.setLayout(new java.awt.GridBagLayout());

    btnPreviewClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/back16.png"))); // NOI18N
    btnPreviewClose.setText("Close");
    btnPreviewClose.setMinimumSize(new java.awt.Dimension(50, 20));
    btnPreviewClose.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnPreviewCloseActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
    jPanel1.add(btnPreviewClose, gridBagConstraints);

    btnPrevious.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/prev16.png"))); // NOI18N
    btnPrevious.setMinimumSize(new java.awt.Dimension(50, 20));
    btnPrevious.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnPreviousActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
    jPanel1.add(btnPrevious, gridBagConstraints);

    btnNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/next16.png"))); // NOI18N
    btnNext.setMinimumSize(new java.awt.Dimension(50, 20));
    btnNext.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnNextActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
    jPanel1.add(btnNext, gridBagConstraints);

    previewDialog.getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);

    addComponentListener(new java.awt.event.ComponentAdapter() {
      public void componentHidden(java.awt.event.ComponentEvent evt) {
        formComponentHidden(evt);
      }

      public void componentShown(java.awt.event.ComponentEvent evt) {
        formComponentShown(evt);
      }
    });
    getContentPane().setLayout(new java.awt.GridBagLayout());

    lblPosition.setText("Position");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0);
    getContentPane().add(lblPosition, gridBagConstraints);

    lblPage.setLabelFor(lblPage);
    lblPage.setText("Page");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblPage, gridBagConstraints);

    tfPage.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfPage.setText("1");
    tfPage.setMinimumSize(new java.awt.Dimension(70, 20));
    tfPage.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfPage, gridBagConstraints);

    lblPosLLX.setLabelFor(tfPosLLX);
    lblPosLLX.setText("Lower Left X");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblPosLLX, gridBagConstraints);

    tfPosLLX.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfPosLLX.setText("0.0");
    tfPosLLX.setMinimumSize(new java.awt.Dimension(70, 20));
    tfPosLLX.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfPosLLX, gridBagConstraints);

    lblPosLLY.setLabelFor(tfPosLLY);
    lblPosLLY.setText("Lower Left Y");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 3;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblPosLLY, gridBagConstraints);

    tfPosLLY.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfPosLLY.setText("0.0");
    tfPosLLY.setMinimumSize(new java.awt.Dimension(70, 20));
    tfPosLLY.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 3;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfPosLLY, gridBagConstraints);

    lblPosURX.setLabelFor(tfPosURX);
    lblPosURX.setText("Upper Right X");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblPosURX, gridBagConstraints);

    tfPosURX.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfPosURX.setText("100.0");
    tfPosURX.setMinimumSize(new java.awt.Dimension(70, 20));
    tfPosURX.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfPosURX, gridBagConstraints);

    lblPosURY.setLabelFor(tfPosURY);
    lblPosURY.setText("Upper Right Y");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblPosURY, gridBagConstraints);

    tfPosURY.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfPosURY.setText("100.0");
    tfPosURY.setMinimumSize(new java.awt.Dimension(70, 20));
    tfPosURY.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfPosURY, gridBagConstraints);

    lblSettings.setText("Settings");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0);
    getContentPane().add(lblSettings, gridBagConstraints);

    lblDisplayMode.setLabelFor(cbDisplayMode);
    lblDisplayMode.setText("Display");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblDisplayMode, gridBagConstraints);

    cbDisplayMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3",
        "Item 4" }));
    cbDisplayMode.setMinimumSize(new java.awt.Dimension(200, 20));
    cbDisplayMode.setPreferredSize(new java.awt.Dimension(200, 20));
    cbDisplayMode.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cbDisplayModeActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(cbDisplayMode, gridBagConstraints);

    chkbL2TextDefault.setText("Default");
    chkbL2TextDefault.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
    chkbL2TextDefault.setMargin(new java.awt.Insets(0, 0, 0, 0));
    chkbL2TextDefault.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        chkbL2TextDefaultActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 8;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
    gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
    getContentPane().add(chkbL2TextDefault, gridBagConstraints);

    lblL4Text.setLabelFor(tfL4Text);
    lblL4Text.setText("Status text");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 10;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblL4Text, gridBagConstraints);

    tfL4Text.setMinimumSize(new java.awt.Dimension(200, 20));
    tfL4Text.setPreferredSize(new java.awt.Dimension(200, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 10;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfL4Text, gridBagConstraints);

    chkbL4TextDefault.setText("Default");
    chkbL4TextDefault.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
    chkbL4TextDefault.setMargin(new java.awt.Insets(0, 0, 0, 0));
    chkbL4TextDefault.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        chkbL4TextDefaultActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 10;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
    getContentPane().add(chkbL4TextDefault, gridBagConstraints);

    lblImgPath.setLabelFor(tfImgPath);
    lblImgPath.setText("Image");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 11;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblImgPath, gridBagConstraints);

    tfImgPath.setMinimumSize(new java.awt.Dimension(200, 20));
    tfImgPath.setPreferredSize(new java.awt.Dimension(200, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 11;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfImgPath, gridBagConstraints);

    btnImgPathBrowse.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/fileopen16.png"))); // NOI18N
    btnImgPathBrowse.setText("Browse");
    btnImgPathBrowse.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);
    btnImgPathBrowse.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnImgPathBrowseActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 11;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
    getContentPane().add(btnImgPathBrowse, gridBagConstraints);

    lblBgImgPath.setLabelFor(tfBgImgPath);
    lblBgImgPath.setText("Background image");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 12;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblBgImgPath, gridBagConstraints);

    tfBgImgPath.setMinimumSize(new java.awt.Dimension(200, 20));
    tfBgImgPath.setPreferredSize(new java.awt.Dimension(200, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 12;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfBgImgPath, gridBagConstraints);

    btnBgImgPathBrowse
        .setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/fileopen16.png"))); // NOI18N
    btnBgImgPathBrowse.setText("Browse");
    btnBgImgPathBrowse.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);
    btnBgImgPathBrowse.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnBgImgPathBrowseActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 12;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
    getContentPane().add(btnBgImgPathBrowse, gridBagConstraints);

    lblBgImgScale.setLabelFor(tfBgImgScale);
    lblBgImgScale.setText("Background image scale");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 13;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblBgImgScale, gridBagConstraints);

    tfBgImgScale.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfBgImgScale.setText("-1.0");
    tfBgImgScale.setMinimumSize(new java.awt.Dimension(70, 20));
    tfBgImgScale.setPreferredSize(new java.awt.Dimension(70, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 13;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfBgImgScale, gridBagConstraints);

    btnClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/back16.png"))); // NOI18N
    btnClose.setText("Close");
    btnClose.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);
    btnClose.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnCloseActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 14;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(10, 2, 5, 2);
    getContentPane().add(btnClose, gridBagConstraints);

    lblPageBounds.setText("1 - 10");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 1;
    getContentPane().add(lblPageBounds, gridBagConstraints);

    lblPosLLXBounds.setText("0.0 - 20.0");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 2;
    getContentPane().add(lblPosLLXBounds, gridBagConstraints);

    lblPosLLYBounds.setText("0.0 - 20.0");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 3;
    getContentPane().add(lblPosLLYBounds, gridBagConstraints);

    lblL2Text.setLabelFor(taL2Text);
    lblL2Text.setText("Signature text");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 8;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblL2Text, gridBagConstraints);

    lblL2TextFontSize.setLabelFor(tfL2TextFontSize);
    lblL2TextFontSize.setText("Signature text size");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 9;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(lblL2TextFontSize, gridBagConstraints);

    tfL2TextFontSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
    tfL2TextFontSize.setText("10.0");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 9;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(tfL2TextFontSize, gridBagConstraints);

    btnPreview.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jsignpdf/preview16.png"))); // NOI18N
    btnPreview.setText("Preview");
    btnPreview.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);
    btnPreview.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnPreviewActionPerformed(evt);
      }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
    getContentPane().add(btnPreview, gridBagConstraints);

    jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    jScrollPane1.setMinimumSize(new java.awt.Dimension(24, 48));

    taL2Text.setColumns(20);
    taL2Text.setRows(5);
    jScrollPane1.setViewportView(taL2Text);

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 8;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
    getContentPane().add(jScrollPane1, gridBagConstraints);

    pack();
  }// </editor-fold>//GEN-END:initComponents

  private void btnPreviousActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnPreviousActionPerformed
    tfPage.setText(String.valueOf(ConvertUtils.toInt(tfPage.getText(), 2) - 1));
    btnPreviewActionPerformed(evt);
  }// GEN-LAST:event_btnPreviousActionPerformed

  private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnNextActionPerformed
    tfPage.setText(String.valueOf(ConvertUtils.toInt(tfPage.getText(), 0) + 1));
    btnPreviewActionPerformed(evt);
  }// GEN-LAST:event_btnNextActionPerformed

  private void btnPreviewCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnPreviewCloseActionPerformed
    previewDialog.setVisible(false);
  }// GEN-LAST:event_btnPreviewCloseActionPerformed

  private int getInt(float aFloat) {
    return Math.round(aFloat * 100F);
  }

  private void btnPreviewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnPreviewActionPerformed
    final Integer pageNr = ConvertUtils.toInteger(tfPage.getText());
    if (pageNr != null) {
      btnPrevious.setEnabled(pageNr > 1);
      btnNext.setEnabled(pageNr < numberOfPages);
      // TODO progress bar or animated image... "yes, we are working..."
      final BufferedImage buffImg = p2i.getImageForPage(pageNr.intValue());
      if (buffImg != null) {
        final RelRect tmpRect = selectionImage.getRelRect();
        previewListenerDisabled = true;
        try {
          tmpRect.scale(getInt(pdfPageSize.getX()), getInt(pdfPageSize.getY()));
          tmpRect.setStartPoint(new FloatPoint(Float.parseFloat(tfPosLLX.getText()) / pdfPageSize.getX(), 1f
              - Float.parseFloat(tfPosLLY.getText()) / pdfPageSize.getY()));
          tmpRect.setEndPoint(new FloatPoint(Float.parseFloat(tfPosURX.getText()) / pdfPageSize.getX(), 1f
              - Float.parseFloat(tfPosURY.getText()) / pdfPageSize.getY()));
        } catch (Exception e) {
          // TODO
        }
        selectionImage.setImage(buffImg);
        previewListenerDisabled = false;
        previewDialog.setVisible(true);
      } else {
        JOptionPane.showMessageDialog(this, res.get("error.vs.previewFailed"), "Error",
            JOptionPane.WARNING_MESSAGE);
      }
    } else {
      JOptionPane.showMessageDialog(this, res.get("error.vs.pageNotANumber"), "Error",
          JOptionPane.WARNING_MESSAGE);
    }
  }// GEN-LAST:event_btnPreviewActionPerformed

  private void btnBgImgPathBrowseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnBgImgPathBrowseActionPerformed
    fc.showFileChooser(tfBgImgPath, null, JFileChooser.OPEN_DIALOG);
  }// GEN-LAST:event_btnBgImgPathBrowseActionPerformed

  private void btnImgPathBrowseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnImgPathBrowseActionPerformed
    fc.showFileChooser(tfImgPath, null, JFileChooser.OPEN_DIALOG);
  }// GEN-LAST:event_btnImgPathBrowseActionPerformed

  private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnCloseActionPerformed
    setVisible(false);
  }// GEN-LAST:event_btnCloseActionPerformed

  private void chkbL4TextDefaultActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkbL4TextDefaultActionPerformed
    tfL4Text.setEnabled(!chkbL4TextDefault.isSelected());
  }// GEN-LAST:event_chkbL4TextDefaultActionPerformed

  private void chkbL2TextDefaultActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkbL2TextDefaultActionPerformed
    taL2Text.setEnabled(!chkbL2TextDefault.isSelected());
  }// GEN-LAST:event_chkbL2TextDefaultActionPerformed

  private void formComponentHidden(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_formComponentHidden
    storeToOptions();
  }// GEN-LAST:event_formComponentHidden

  private void formComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_formComponentShown
    updateFromOptions();
    readPdfInfo();
    switchImage();
  }// GEN-LAST:event_formComponentShown

  private void cbDisplayModeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cbDisplayModeActionPerformed
    switchImage();
  }// GEN-LAST:event_cbDisplayModeActionPerformed

  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JButton btnBgImgPathBrowse;
  private javax.swing.JButton btnClose;
  private javax.swing.JButton btnImgPathBrowse;
  private javax.swing.JButton btnNext;
  private javax.swing.JButton btnPreview;
  private javax.swing.JButton btnPreviewClose;
  private javax.swing.JButton btnPrevious;
  private javax.swing.JComboBox cbDisplayMode;
  private javax.swing.JCheckBox chkbL2TextDefault;
  private javax.swing.JCheckBox chkbL4TextDefault;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JScrollPane jScrollPane1;
  private javax.swing.JLabel lblBgImgPath;
  private javax.swing.JLabel lblBgImgScale;
  private javax.swing.JLabel lblDisplayMode;
  private javax.swing.JLabel lblImgPath;
  private javax.swing.JLabel lblL2Text;
  private javax.swing.JLabel lblL2TextFontSize;
  private javax.swing.JLabel lblL4Text;
  private javax.swing.JLabel lblPage;
  private javax.swing.JLabel lblPageBounds;
  private javax.swing.JLabel lblPosLLX;
  private javax.swing.JLabel lblPosLLXBounds;
  private javax.swing.JLabel lblPosLLY;
  private javax.swing.JLabel lblPosLLYBounds;
  private javax.swing.JLabel lblPosURX;
  private javax.swing.JLabel lblPosURY;
  private javax.swing.JLabel lblPosition;
  private javax.swing.JLabel lblSettings;
  private javax.swing.JDialog previewDialog;
  private javax.swing.JTextArea taL2Text;
  private javax.swing.JTextField tfBgImgPath;
  private javax.swing.JTextField tfBgImgScale;
  private javax.swing.JTextField tfImgPath;
  private javax.swing.JTextField tfL2TextFontSize;
  private javax.swing.JTextField tfL4Text;
  private javax.swing.JTextField tfPage;
  private javax.swing.JTextField tfPosLLX;
  private javax.swing.JTextField tfPosLLY;
  private javax.swing.JTextField tfPosURX;
  private javax.swing.JTextField tfPosURY;
  // End of variables declaration//GEN-END:variables

}
TOP

Related Classes of net.sf.jsignpdf.VisibleSignatureDialog

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.