Package net.sf.jhylafax

Source Code of net.sf.jhylafax.JobPanel

/**
* JHylaFax - A java client for HylaFAX.
*
* Copyright (C) 2005 by Steffen Pingel <steffenp@gmx.de>
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package net.sf.jhylafax;

import static net.sf.jhylafax.JHylaFAX.i18n;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import net.sf.jhylafax.Settings.Notification;
import net.sf.jhylafax.Settings.Resolution;
import net.sf.jhylafax.fax.FaxJob;
import net.sf.jhylafax.fax.Paper;
import org.xnap.commons.gui.Dialogs;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;

/**
* A panel for editing of fax job properties.
*
* @author Steffen Pingel
*/
public class JobPanel extends JPanel implements LocaleChangeListener {

  private static final int DEFAULT_COLUMNS = 20;
 
  private JLabel notificationLabel;
  private JLabel resolutionLabel;
  private JSpinner prioritySpinner;
  private JLabel priorityLabel;
  private JSpinner maxTriesSpinner;
  private JLabel maxTriesLabel;
  private JSpinner maxDialsSpinner;
  private JLabel maxDialsLabel;
  private JLabel paperLabel;
  private DefaultComboBoxModel notificationModel;
  private DefaultComboBoxModel resolutionModel;
  private DefaultComboBoxModel paperModel;
  private JTextField fullnameTextField;
  private JTextField emailTextField;
  private JLabel fullnameLabel;
  private JLabel emailLabel;

  private SpinnerNumberModel priorityModel;

  public JobPanel(boolean border) {
    FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, pref, pref:grow, min:grow", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, this);
    if (border) {
      builder.setDefaultDialogBorder();
    }
    builder.appendSeparator(i18n.tr("Sender"));
   
    fullnameTextField = new JTextField(DEFAULT_COLUMNS);
    fullnameLabel = builder.append("", fullnameTextField, 3);
    builder.nextLine();

    emailTextField = new JTextField(DEFAULT_COLUMNS);
    emailLabel = builder.append("", emailTextField, 3);
    builder.nextLine();
   
    builder.appendSeparator(i18n.tr("Parameter"));

    notificationModel = new DefaultComboBoxModel();
    JComboBox notificationComboBox = new JComboBox(notificationModel);
    notificationLabel = builder.append("", notificationComboBox, 2);
    builder.nextLine();
   
    resolutionModel = new DefaultComboBoxModel();
    JComboBox resolutionComboBox = new JComboBox(resolutionModel);
    resolutionLabel = builder.append("", resolutionComboBox, 2);
    builder.nextLine();

    priorityModel = new SpinnerNumberModel(0, 0, 255, 1);
    prioritySpinner = new JSpinner(priorityModel);
    priorityLabel = builder.append("", prioritySpinner);
    builder.nextLine();
   
    maxTriesSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 255, 1));
    maxTriesLabel = builder.append("", maxTriesSpinner);
    builder.nextLine();
   
    maxDialsSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 255, 1));
    maxDialsLabel = builder.append("", maxDialsSpinner);
    builder.nextLine();
   
    paperModel = new DefaultComboBoxModel();
    JComboBox paperComboBox = new JComboBox(paperModel);
    paperLabel = builder.append("", paperComboBox, 2);
  }
 
  public void setSenderEditable(boolean editSender) {
    fullnameTextField.setEditable(editSender);
    emailTextField.setEditable(editSender);
  }
 
  public void updateLabels() {
    fullnameLabel.setText(i18n.tr("Name"));
    emailLabel.setText(i18n.tr("Email"));

    notificationLabel.setText(i18n.tr("Notify"));
    resolutionLabel.setText(i18n.tr("Resolution"));
    priorityLabel.setText(i18n.tr("Priority"));
    maxTriesLabel.setText(i18n.tr("Maximum Tries"));
    maxDialsLabel.setText(i18n.tr("Maximum Dials"));
    paperLabel.setText(i18n.tr("Paper Format"));
   
    Object selectedItem = notificationModel.getSelectedItem();
    notificationModel.removeAllElements();
    for (Settings.Notification notification : Settings.Notification.values()) {
      notificationModel.addElement(notification);
    }
    notificationModel.setSelectedItem(selectedItem);
    selectedItem = resolutionModel.getSelectedItem();
    resolutionModel.removeAllElements();
    for (Settings.Resolution resolution : Settings.Resolution.values()) {
      resolutionModel.addElement(resolution);
    }
    resolutionModel.setSelectedItem(selectedItem);
    selectedItem = paperModel.getSelectedItem();
    paperModel.removeAllElements();
    for (Paper paper : Paper.values()) {
      paperModel.addElement(paper);
    }
    paperModel.setSelectedItem(selectedItem);
  }

  public void applyTo(FaxJob job) {
    job.setSender(fullnameTextField.getText());
    job.setNotifyAdress(emailTextField.getText());
   
    job.setNotify(((Notification)notificationModel.getSelectedItem()).getCommand());
    job.setResolution((((Resolution)resolutionModel.getSelectedItem()).getLinesPerInch()));
    job.setPriority(priorityModel.getNumber().intValue());
    job.setMaxTries(((Integer)maxTriesSpinner.getValue()).intValue());
    job.setMaxDials(((Integer)maxDialsSpinner.getValue()).intValue());
    Paper paper = (Paper)paperModel.getSelectedItem();
    job.setPageWidth(paper.getWidth());
    job.setPageLength(paper.getHeight());

  }
 
  public void revertFrom(FaxJob job) {
    fullnameTextField.setText(job.getSender());
    emailTextField.setText(job.getNotifyAdress());

    if (job.getNotify() == null) {
      notificationModel.setSelectedItem(Settings.Notification.NEVER);
    }
    else {
      try {
        notificationModel.setSelectedItem(Settings.Notification.getEnum(job.getNotify()));
      } catch (IllegalArgumentException e) {
        Dialogs.showError(this, i18n.tr("Unknown notification type. Using default."));
        notificationModel.setSelectedItem(Settings.NOTIFICATION.getValue());
      }
    }
    try {
      resolutionModel.setSelectedItem(Settings.Resolution.getEnum(job.getVerticalResolution()));
    } catch (IllegalArgumentException e) {
      Dialogs.showError(this, i18n.tr("Invalid resolution. Using default."));
      resolutionModel.setSelectedItem(Settings.RESOLUTION.getValue());
    }
    prioritySpinner.setValue(job.getPriority());
    maxTriesSpinner.setValue(job.getMaxTries());
    maxDialsSpinner.setValue(job.getMaxDials());
    try {
      paperModel.setSelectedItem(Paper.getEnum(job.getPageWidth(), job.getPageLength()));
    } catch (IllegalArgumentException e) {
      Dialogs.showError(this, i18n.tr("Unknown paper type. Using default."));
      paperModel.setSelectedItem(Settings.PAPER.getValue());
    }
  }
 
  public void revertFromSettings() {
    fullnameTextField.setText(Settings.FULLNAME.getValue());
    emailTextField.setText(Settings.EMAIL.getValue());

    notificationModel.setSelectedItem(Settings.NOTIFICATION.getValue());
    resolutionModel.setSelectedItem(Settings.RESOLUTION.getValue());
    prioritySpinner.setValue(Settings.PRIORITY.getValue());
    maxTriesSpinner.setValue(Settings.MAXTRIES.getValue());
    maxDialsSpinner.setValue(Settings.MAXDIALS.getValue());
    paperModel.setSelectedItem(Settings.PAPER.getValue());
  }

  public void applyToSettings()
  {
    Settings.FULLNAME.setValue(fullnameTextField.getText());
    Settings.EMAIL.setValue(emailTextField.getText());
   
    Settings.NOTIFICATION.setValue((Notification)notificationModel.getSelectedItem());
    Settings.RESOLUTION.setValue((Resolution)resolutionModel.getSelectedItem());
    Settings.PRIORITY.setValue(priorityModel.getNumber().intValue());
    Settings.MAXTRIES.setValue((Integer)maxTriesSpinner.getValue());
    Settings.MAXDIALS.setValue((Integer)maxDialsSpinner.getValue());
    Settings.PAPER.setValue((Paper)paperModel.getSelectedItem());
  }

  public void revertFromDefaultSettings()
  {
    fullnameTextField.setText(Settings.FULLNAME.getDefaultValue());
    emailTextField.setText(Settings.EMAIL.getDefaultValue());

    notificationModel.setSelectedItem(Settings.NOTIFICATION.getDefaultValue());
    resolutionModel.setSelectedItem(Settings.RESOLUTION.getDefaultValue());
    prioritySpinner.setValue(Settings.PRIORITY.getDefaultValue());
    maxTriesSpinner.setValue(Settings.MAXTRIES.getDefaultValue());
    maxDialsSpinner.setValue(Settings.MAXDIALS.getDefaultValue());
    paperModel.setSelectedItem(Settings.PAPER.getDefaultValue());
  }
 
}
TOP

Related Classes of net.sf.jhylafax.JobPanel

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.