Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.ApplicationParamViewHandler

package no.ugland.utransprod.gui.handlers;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.Collection;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.table.TableModel;

import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.edit.AbstractEditView;
import no.ugland.utransprod.gui.edit.EditApplicationParamView;
import no.ugland.utransprod.gui.model.AbstractModel;
import no.ugland.utransprod.gui.model.ApplicationParamModel;
import no.ugland.utransprod.model.ApplicationParam;
import no.ugland.utransprod.model.UserType;
import no.ugland.utransprod.service.ApplicationParamManager;
import no.ugland.utransprod.service.ApplicationUserManager;
import no.ugland.utransprod.service.OverviewManager;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.UserUtil;
import no.ugland.utransprod.util.Util;

import org.jdesktop.swingx.JXTable;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;

/**
* H�ndterer editering av applikasjonsparametre
*
* @author atle.brekka
*/
public class ApplicationParamViewHandler extends
    DefaultAbstractViewHandler<ApplicationParam, ApplicationParamModel>
    implements ViewHandlerExt<ApplicationParam, ApplicationParamModel> {

  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   *
   */
  private List<String> userNameList;
  private final ArrayListModel listCollies;
  private final ArrayListModel listTakstolArticles;
  private final SelectionInList listColliesSelectionList;
  private final SelectionInList listTakstolArticleSelectionList;
  private EmptySelectionListener emptySelectionListenerColli;
  private EmptySelectionListener emptySelectionListenerTakstol;
  private ApplicationParam notPackageParam = null;

  /**
   * @param aHeading
   * @param managerName
   * @param aUserType
   */
  @SuppressWarnings("unchecked")
  public ApplicationParamViewHandler(String aHeading,
      final OverviewManager aOverviewManager, UserType aUserType) {
    super(aHeading, aOverviewManager, aUserType, true);
    viewHandlerExt = this;
    ApplicationUserManager applicationUserManager = (ApplicationUserManager) ModelUtil
        .getBean("applicationUserManager");
    userNameList = applicationUserManager.findAllNamesNotGroup();
    listCollies = new ArrayListModel();
    listTakstolArticles = new ArrayListModel();
    listColliesSelectionList = new SelectionInList((ListModel) listCollies);
    listTakstolArticleSelectionList = new SelectionInList(
        (ListModel) listTakstolArticles);
    emptySelectionListenerColli = new EmptySelectionListener(
        listColliesSelectionList);
    listColliesSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
        emptySelectionListenerColli);
    emptySelectionListenerTakstol = new EmptySelectionListener(
        listTakstolArticleSelectionList);
    listTakstolArticleSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
        emptySelectionListenerTakstol);
  }

  @SuppressWarnings("unchecked")
  public JList getListCollies(PresentationModel presentationModel) {
    listCollies.clear();
    listCollies.addAll((List) presentationModel
        .getBufferedValue(ApplicationParamModel.PROPERTY_COLLI_PARAMS));
    JList list = BasicComponentFactory.createList(listColliesSelectionList);
    list.setName("ListCollies");
    return list;
  }

  @SuppressWarnings("unchecked")
  public JList getListTakstolArticles(PresentationModel presentationModel) {
    listTakstolArticles.clear();
    listTakstolArticles
        .addAll((List) presentationModel
            .getBufferedValue(ApplicationParamModel.PROPERTY_TAKSTOL_ARTICLE_PARAMS));
    JList list = BasicComponentFactory
        .createList(listTakstolArticleSelectionList);
    list.setName("ListTakstolArticles");
    return list;
  }

  public JButton getButtonAddColli(WindowInterface window,
      PresentationModel presentationModel) {
    JButton button = new JButton(new AddColliAction(window,
        presentationModel));
    button.setName("ButtonAddColli");
    return button;
  }

  public JButton getButtonAddTakstolArticle(WindowInterface window,
      PresentationModel presentationModel) {
    JButton button = new JButton(new AddTakstolArticleAction(window,
        presentationModel));
    button.setName("ButtonAddTakstolArticle");
    return button;
  }

  public JButton getButtonRemoveColli(WindowInterface window,
      PresentationModel presentationModel) {
    JButton buttonRemoveColli = new JButton(new RemoveColliAction(window,
        presentationModel));
    buttonRemoveColli.setName("ButtonRemoveColli");
    buttonRemoveColli.setEnabled(false);
    emptySelectionListenerColli.addButton(buttonRemoveColli);

    return buttonRemoveColli;
  }

  public JButton getButtonRemoveTakstolArticle(WindowInterface window,
      PresentationModel presentationModel) {
    JButton button = new JButton(new RemoveTakstolArticleAction(window,
        presentationModel));
    button.setName("ButtonRemoveTakstolArticle");
    button.setEnabled(false);
    emptySelectionListenerTakstol.addButton(button);

    return button;
  }

  /**
   * Lager tekstfelt for hostname
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldHostName(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_HOST_NAME));
    textField.setName("TextFieldHostName");
    return textField;
  }

  /**
   * Lager passordfelt for mailoppsett
   *
   * @param presentationModel
   * @return passordfelt
   */
  public JPasswordField getPasswordFieldHostPassword(
      PresentationModel presentationModel) {
    JPasswordField passwordField = BasicComponentFactory
        .createPasswordField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_HOST_PASSWORD));
    passwordField.setName("PasswordFieldHostPassword");
    return passwordField;
  }

  /**
   * Lager tekstfelt for fra mailadresse
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldFromMail(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_FROM_MAIL));
    textField.setName("TextFieldFromMail");
    return textField;
  }

  /**
   * Lager tekstfelt for fra navn
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldFromName(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_FROM_NAME));
    textField.setName("TextFieldFromName");
    return textField;
  }

  /**
   * Lager tekstfelt for avviksoverskrift
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldDeviationSubject(
      PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_DEVIATION_SUBJECT));
    textField.setName("TextFieldDeviationSubject");
    return textField;
  }

  /**
   * Lager tekstfelt for avviksmelding
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldDeviationMessage(
      PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_DEVIATION_MESSAGE));
    textField.setName("TextFieldDeviationMessage");
    return textField;
  }

  /**
   * Lager tekstfelt for beskrivelse av avviksvedlegg
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldDeviationAttachmentDescription(
      PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_MAIL_DEVIATION_ATTACHMENT_DESCRIPTION));
    textField.setName("TextFieldDeviationAttachmentDescription");
    return textField;
  }

  /**
   * Lager komboboks for avviksansvarlig
   *
   * @param presentationModel
   * @return komboboks
   */
  public JComboBox getComboBoxManager(PresentationModel presentationModel,
      String property) {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(userNameList,
        presentationModel.getBufferedModel(property)));
    comboBox.setName("ComboBoxManager");
    return comboBox;
  }

  /**
   * @param object
   * @return feilmelding
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#checkDeleteObject(java.lang.Object)
   */
  @Override
  public CheckObject checkDeleteObject(ApplicationParam object) {
    return null;
  }

  /**
   * @param object
   * @param presentationModel
   * @param window
   * @return feilmelding
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#checkSaveObject(java.lang.Object,
   *      com.jgoodies.binding.PresentationModel,
   *      no.ugland.utransprod.gui.WindowInterface)
   */
  @Override
  public CheckObject checkSaveObject(ApplicationParamModel object,
      PresentationModel presentationModel, WindowInterface window) {
    return null;
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getAddRemoveString()
   */
  @Override
  public String getAddRemoveString() {
    return "parameter";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getClassName()
   */
  @Override
  public String getClassName() {
    return "ApplicationParam";
  }

  /**
   * @param handler
   * @param object
   * @param searching
   * @return view
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getEditView(no.ugland.utransprod.gui.handlers.AbstractViewHandler,
   *      java.lang.Object, boolean)
   */
  @Override
  protected AbstractEditView<ApplicationParamModel, ApplicationParam> getEditView(
      AbstractViewHandler<ApplicationParam, ApplicationParamModel> handler,
      ApplicationParam object, boolean searching) {
    return new EditApplicationParamView(searching,
        new ApplicationParamModel(object), this);
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getNewObject()
   */
  @Override
  public ApplicationParam getNewObject() {
    return new ApplicationParam();
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTableModel(no.ugland.utransprod.gui.WindowInterface)
   */
  @Override
  public TableModel getTableModel(WindowInterface window) {
    return new ApplicationParamTableModel(objectSelectionList);
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTableWidth()
   */
  @Override
  public String getTableWidth() {
    return "400";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTitle()
   */
  @Override
  public String getTitle() {
    return "Parametre";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getWindowSize()
   */
  @Override
  public Dimension getWindowSize() {
    return null;
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#hasWriteAccess()
   */
  @Override
  public Boolean hasWriteAccess() {
    return UserUtil.hasWriteAccess(userType, "Parametre");
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#setColumnWidth(org.jdesktop.swingx.JXTable)
   */
  @Override
  public void setColumnWidth(JXTable table) {
    table.getColumnExt(0).setPreferredWidth(150);
    table.getColumnExt(1).setPreferredWidth(200);
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.ViewHandlerExt#saveObjectExt(no.ugland.utransprod.gui.model.AbstractModel,
   *      no.ugland.utransprod.gui.WindowInterface)
   */
  public boolean saveObjectExt(
      AbstractModel<ApplicationParam, ApplicationParamModel> objectModel,
      WindowInterface window) {
    Collection<ApplicationParam> mailParams = ApplicationParamModel
        .getMailParams();

    if (mailParams != null) {
      for (ApplicationParam param : mailParams) {
        ((ApplicationParamManager) overviewManager)
            .saveApplicationParam(param);
      }
    }

    ApplicationParam deviationManagerParam = ApplicationParamModel
        .getDeviationManagerParam();
    if (deviationManagerParam != null) {
      ((ApplicationParamManager) overviewManager)
          .saveApplicationParam(deviationManagerParam);
    }
    List<ApplicationParam> colliParams = ((ApplicationParamModel) objectModel)
        .getColliParams();
    if (colliParams != null) {
      for (ApplicationParam param : colliParams) {
        ((ApplicationParamManager) overviewManager)
            .saveApplicationParam(param);
      }
    }
    List<ApplicationParam> takstolArticleParams = ((ApplicationParamModel) objectModel)
        .getTakstolArticleParams();
    if (takstolArticleParams != null) {
      for (ApplicationParam param : takstolArticleParams) {
        ((ApplicationParamManager) overviewManager)
            .saveApplicationParam(param);
      }
    }
    if (notPackageParam != null) {
      ((ApplicationParamManager) overviewManager)
          .saveApplicationParam(notPackageParam);
    }

    ApplicationParam hmsManagerParam = ApplicationParamModel
        .getHmsManagerParam();
    if (hmsManagerParam != null) {
      ((ApplicationParamManager) overviewManager)
          .saveApplicationParam(hmsManagerParam);
    }
    return true;
  }

  /**
   * Henter vindusst�rrelse for mailoppsett
   *
   * @return st�rrelse
   */
  public Dimension getMailSetupWindowSize() {
    return new Dimension(340, 150);
  }

  /**
   * Henter vindusst�rrelse for avviksansvarlig
   *
   * @return st�rrelse
   */
  public Dimension getDeviationManagerWindowSize() {
    return new Dimension(320, 100);
  }

  public boolean openEditViewExt(ApplicationParam object, boolean searching,
      WindowInterface parentWindow) {
    return false;
  }

  private class AddColliAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private WindowInterface window;
    private PresentationModel presentationModel;

    public AddColliAction(WindowInterface aWindow,
        PresentationModel aPresentationModel) {
      super("Ny kolli...");
      window = aWindow;
      presentationModel = aPresentationModel;
    }

    public void actionPerformed(ActionEvent e) {
      addColli(window, presentationModel);

    }
  }

  private class AddTakstolArticleAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private WindowInterface window;
    private PresentationModel presentationModel;

    public AddTakstolArticleAction(WindowInterface aWindow,
        PresentationModel aPresentationModel) {
      super("Ny artikkel...");
      window = aWindow;
      presentationModel = aPresentationModel;
    }

    public void actionPerformed(ActionEvent e) {
      addTakstolArticle(window, presentationModel);

    }
  }

  private class RemoveColliAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private WindowInterface window;
    private PresentationModel presentationModel;

    public RemoveColliAction(WindowInterface aWindow,
        PresentationModel aPresentationModel) {
      super("Slett kolli");
      window = aWindow;
      presentationModel = aPresentationModel;
    }

    public void actionPerformed(ActionEvent e) {
      removeColli(window, presentationModel);

    }
  }

  private class RemoveTakstolArticleAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private WindowInterface window;
    private PresentationModel presentationModel;

    public RemoveTakstolArticleAction(WindowInterface aWindow,
        PresentationModel aPresentationModel) {
      super("Slett artikkel");
      window = aWindow;
      presentationModel = aPresentationModel;
    }

    public void actionPerformed(ActionEvent e) {
      removeTakstolArticle(window, presentationModel);

    }
  }

  private void removeColli(WindowInterface window,
      PresentationModel presentationModel) {
    ApplicationParam param = (ApplicationParam) listColliesSelectionList
        .getSelection();
    if (param != null) {
      if (Util.showConfirmDialog(window, "Slette",
          "Vil du virkelig slette?")) {
        listCollies.remove(param);
        presentationModel.setBufferedValue(
            ApplicationParamModel.PROPERTY_COLLI_PARAMS,
            listCollies);
        presentationModel.triggerCommit();
        ((ApplicationParamManager) overviewManager).removeObject(param);
      }
    }
  }

  private void removeTakstolArticle(WindowInterface window,
      PresentationModel presentationModel) {
    ApplicationParam param = (ApplicationParam) listTakstolArticleSelectionList
        .getSelection();
    if (param != null) {
      if (Util.showConfirmDialog(window, "Slette",
          "Vil du virkelig slette?")) {
        listTakstolArticles.remove(param);
        presentationModel.setBufferedValue(
            ApplicationParamModel.PROPERTY_TAKSTOL_ARTICLE_PARAMS,
            listTakstolArticles);
        String articleName = param.getParamValue();
        notPackageParam = (ApplicationParam) presentationModel
            .getBufferedValue(ApplicationParamModel.PROPERTY_NOT_PACKAGE_PARAM);
        String notPackageValue = notPackageParam.getParamValue();
        notPackageValue = notPackageValue.replaceAll(articleName, "");
        notPackageValue = notPackageValue.replaceAll(";;", ";");
        if (notPackageValue.endsWith(";")) {
          notPackageValue = notPackageValue.substring(0,
              notPackageValue.length() - 1);
        }
        notPackageParam.setParamValue(notPackageValue);
        presentationModel.triggerCommit();
        ((ApplicationParamManager) overviewManager).removeObject(param);
        ((ApplicationParamManager) overviewManager)
            .saveApplicationParam(notPackageParam);
      }
    }
  }

  private void addColli(WindowInterface window,
      PresentationModel presentationModel) {
    String colliSetup = Util.showInputDialog(window, "Kollioppsett",
        "Kollioppsett:");
    if (colliSetup.length() != 0) {
      if (colliSetup.indexOf(";") == -1) {
        Util
            .showErrorDialog(window, "Feil",
                "Kollioppsett m� settes slik: <pakkenavn>;<artikkeltype>");
      } else {
        String paramName = "kolli_" + (listCollies.size() + 1);
        ApplicationParam param = new ApplicationParam(null, paramName,
            colliSetup, null);
        listCollies.add(param);
        presentationModel.setBufferedValue(
            ApplicationParamModel.PROPERTY_COLLI_PARAMS,
            listCollies);
      }
    }
  }

  private void addTakstolArticle(WindowInterface window,
      PresentationModel presentationModel) {
    String takstolArticleSetup = Util.showInputDialog(window,
        "Takstoloppsett", "Artikkel:");
    if (takstolArticleSetup.length() != 0) {
      String paramName = "takstol_artikkel_"
          + (listTakstolArticles.size() + 1);
      ApplicationParam param = new ApplicationParam(null, paramName,
          takstolArticleSetup, null);
      listTakstolArticles.add(param);
      presentationModel.setBufferedValue(
          ApplicationParamModel.PROPERTY_TAKSTOL_ARTICLE_PARAMS,
          listTakstolArticles);
      notPackageParam = (ApplicationParam) presentationModel
          .getBufferedValue(ApplicationParamModel.PROPERTY_NOT_PACKAGE_PARAM);
      notPackageParam.setParamValue(notPackageParam.getParamValue() + ";"
          + takstolArticleSetup);
      presentationModel.setBufferedValue(
          ApplicationParamModel.PROPERTY_NOT_PACKAGE_PARAM,
          notPackageParam);
    }
  }

  private static final class ApplicationParamTableModel extends
      AbstractTableAdapter {

    private static final long serialVersionUID = 1L;

    private static final String[] COLUMNS = { "Navn", "Verdi" };

    /**
     * @param listModel
     */
    ApplicationParamTableModel(ListModel listModel) {
      super(listModel, COLUMNS);
    }

    /**
     * Henter verdi
     *
     * @param rowIndex
     * @param columnIndex
     * @return verdi
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
      ApplicationParam applicationParam = (ApplicationParam) getRow(rowIndex);
      switch (columnIndex) {
      case 0:
        return applicationParam.getParamName();
      case 1:
        return applicationParam.getParamValue();
      default:
        throw new IllegalStateException("Unknown column");
      }

    }

    /**
     * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
     */
    @Override
    public Class<?> getColumnClass(int columnIndex) {
      switch (columnIndex) {
      case 0:
      case 1:
        return String.class;
      default:
        throw new IllegalStateException("Unknown column");
      }
    }

  }

  public JTextField getTextFieldParamName(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(ApplicationParamModel.PROPERTY_PARAM_NAME));
    textField.setEnabled(false);
    return textField;
  }

  public JTextField getTextFieldParamValue(PresentationModel presentationModel) {
    return BasicComponentFactory.createTextField(presentationModel
        .getBufferedModel(ApplicationParamModel.PROPERTY_PARAM_VALUE),
        false);
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.ApplicationParamViewHandler

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.