Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.ApplicationUserViewHandler$ProductAreaGroupUpdater

package no.ugland.utransprod.gui.handlers;

import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.ListModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;

import no.ugland.utransprod.gui.Login;
import no.ugland.utransprod.gui.Updateable;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.buttons.DeleteButton;
import no.ugland.utransprod.gui.buttons.NewButton;
import no.ugland.utransprod.gui.edit.AbstractEditView;
import no.ugland.utransprod.gui.edit.EditApplicationUserView;
import no.ugland.utransprod.gui.model.ApplicationUserModel;
import no.ugland.utransprod.model.ApplicationUser;
import no.ugland.utransprod.model.JobFunction;
import no.ugland.utransprod.model.ProductArea;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.model.UserProductAreaGroup;
import no.ugland.utransprod.model.UserRole;
import no.ugland.utransprod.model.UserType;
import no.ugland.utransprod.service.ApplicationUserManager;
import no.ugland.utransprod.service.JobFunctionManager;
import no.ugland.utransprod.service.ProductAreaGroupManager;
import no.ugland.utransprod.service.ProductAreaManager;
import no.ugland.utransprod.service.UserTypeManager;
import no.ugland.utransprod.service.enums.LazyLoadEnum;
import no.ugland.utransprod.util.ModelUtil;
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.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;

/**
* H�ndterer brukere
*
* @author atle.brekka
*
*/
public class ApplicationUserViewHandler extends
    DefaultAbstractViewHandler<ApplicationUser, ApplicationUserModel> {
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   *
   */
  JButton buttonRemoveUserType;

  /**
   *
   */
  JButton buttonRemoveProductAreaGroup;

  /**
   *
   */
  private List<UserType> userTypes;

  /**
   *
   */
  private List<ProductAreaGroup> productAreaGroups;;

  /**
   *
   */
  final SelectionInList userRoleSelectionList;

  /**
   *
   */
  final SelectionInList userProductAreaGroupSelectionList;

  /**
   *
   */
  private final ArrayListModel userRoleList;

  /**
   *
   */
  private final ArrayListModel userProductAreaGroupList;

  /**
   *
   */
  private List<JobFunction> jobFunctionList;

  /**
   *
   */
  private List<ProductArea> productAreaList;

  /**
   * @param userType
   */
  public ApplicationUserViewHandler(Login aLogin,ApplicationUserManager applicationUserManager) {
    super("Brukere", applicationUserManager, aLogin.getUserType(), true);

    UserTypeManager userTypeManager = (UserTypeManager) ModelUtil
        .getBean("userTypeManager");
    userTypes = userTypeManager.findAll();
    userRoleList = new ArrayListModel();
    userRoleSelectionList = new SelectionInList((ListModel) userRoleList);
    userRoleSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
        new EmptyListenerUserRole());

    ProductAreaGroupManager productAreaGroupManager = (ProductAreaGroupManager) ModelUtil
        .getBean("productAreaGroupManager");
    productAreaGroups = productAreaGroupManager.findAll();
    userProductAreaGroupList = new ArrayListModel();
    userProductAreaGroupSelectionList = new SelectionInList(
        (ListModel) userProductAreaGroupList);
    userProductAreaGroupSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
        new EmptyListenerProductAreaGroup());

    JobFunctionManager jobFunctionManager = (JobFunctionManager) ModelUtil
        .getBean("jobFunctionManager");
    jobFunctionList = jobFunctionManager.findAll();

    ProductAreaManager productAreaManager = (ProductAreaManager) ModelUtil
        .getBean("productAreaManager");
    productAreaList = productAreaManager.findAll();
  }

  /**
   * Lager knapp for � legge til bruker
   *
   * @param window
   * @param presentationModel
   * @return knapp
   */
  public JButton getButtonAddUserType(WindowInterface window,
      PresentationModel presentationModel) {
    return new NewButton("profil", new ProfileUpdater(presentationModel),
        window);
  }

  /**
   * Lager knapp fpr � legge til produktomr�de
   *
   * @param window
   * @param presentationModel
   * @return knapp
   */
  public JButton getButtonAddProductAreaGroup(WindowInterface window,
      PresentationModel presentationModel) {
    return new NewButton("produktomr�de", new ProductAreaGroupUpdater(
        presentationModel), window, "Nytt");
  }

  /**
   * Lager knapp for � slette bruker
   *
   * @param window
   * @param presentationModel
   * @return knapp
   */
  public JButton getButtonRemoveUserType(WindowInterface window,
      PresentationModel presentationModel) {
    buttonRemoveUserType = new DeleteButton("profil", new ProfileUpdater(
        presentationModel), window);
    buttonRemoveUserType.setEnabled(false);
    return buttonRemoveUserType;
  }

  /**
   * Lager knapp for � fjerne produktomr�de
   *
   * @param window
   * @param presentationModel
   * @return knapp
   */
  public JButton getButtonRemoveProductAreaGroup(WindowInterface window,
      PresentationModel presentationModel) {
    buttonRemoveProductAreaGroup = new DeleteButton("produktomr�de",
        new ProductAreaGroupUpdater(presentationModel), window);
    buttonRemoveProductAreaGroup.setEnabled(false);
    return buttonRemoveProductAreaGroup;
  }

  /**
   * @param user
   * @return feilmelding
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#checkDeleteObject(java.lang.Object)
   */
  @Override
  public CheckObject checkDeleteObject(ApplicationUser user) {
    if (((ApplicationUserManager) overviewManager)
        .isUserFunctionManager(user)) {
      return new CheckObject("Kan ikke slette bruker som er leder for en funksjon",false);
    }
    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(ApplicationUserModel object,
      PresentationModel presentationModel, WindowInterface window) {
    return null;
  }

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

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

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

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

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

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

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

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#setColumnWidth(org.jdesktop.swingx.JXTable)
   */
  @Override
  public void setColumnWidth(JXTable table) {
    // Brukernavn
    TableColumn col = table.getColumnModel().getColumn(0);
    col.setPreferredWidth(100);

    // Fornavn
    col = table.getColumnModel().getColumn(1);
    col.setPreferredWidth(100);

    // Etternavn
    col = table.getColumnModel().getColumn(2);
    col.setPreferredWidth(100);

    // Gruppebruker
    col = table.getColumnModel().getColumn(3);
    col.setPreferredWidth(80);
    // Produktomr�de
    table.getColumnExt(4).setPreferredWidth(100);

  }

  /**
   * Henter brukerroller
   *
   * @param presentationModel
   * @return brukerroller
   */
  public SelectionInList getUserRoleSelectionList(
      PresentationModel presentationModel) {
    userRoleList.clear();
    userRoleList
        .addAll((List) presentationModel
            .getBufferedValue(ApplicationUserModel.PROPERTY_USER_ROLE_LIST));
    return userRoleSelectionList;
  }

  /**
   * Henter liste med produktomr�de
   *
   * @param presentationModel
   * @return liste
   */
  public SelectionInList getUserProductAreaGroupSelectionList(
      PresentationModel presentationModel) {
    userProductAreaGroupList.clear();
    userProductAreaGroupList
        .addAll((List) presentationModel
            .getBufferedValue(ApplicationUserModel.PROPERTY_USER_PRODUCT_AREA_GROUP_LIST));
    return userProductAreaGroupSelectionList;
  }

  /**
   * Funksjonsliste
   *
   * @return funksjoner
   */
  public List<JobFunction> getJobFunctionList() {
    return jobFunctionList;
  }

  /**
   * Liste med alle produktomr�der
   *
   * @return liste
   */
  public List<ProductArea> getProductAreaList() {
    return productAreaList;
  }

  /**
   * Tabellmodell for brukere
   *
   * @author atle.brekka
   *
   */
  private static final class ApplicationUserTableModel extends
      AbstractTableAdapter {

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

    /**
     *
     */
    private static final String[] COLUMNS = { "Brukernavn", "Fornavn",
        "Etternavn", "Gruppebruker", "Produktomr�de" };

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

    /**
     * Henter verdi
     *
     * @param rowIndex
     * @param columnIndex
     * @return verdi
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
      ApplicationUser applicationUser = (ApplicationUser) getRow(rowIndex);
      switch (columnIndex) {
      case 0:
        return applicationUser.getUserName();
      case 1:
        return applicationUser.getFirstName();
      case 2:
        return applicationUser.getLastName();
      case 3:
        return applicationUser.getGroupUser();
      case 4:
        return applicationUser.getProductArea();
      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:
      case 2:
      case 3:
        return String.class;
      case 4:
        return ProductArea.class;
      default:
        throw new IllegalStateException("Unknown column");
      }
    }

  }

  /**
   * Legg til brukertype
   *
   * @param window
   * @param presentationModel
   */
  void addUserType(WindowInterface window, PresentationModel presentationModel) {
    UserType selectedUserType = (UserType) JOptionPane.showInputDialog(
        window.getComponent(), "Velg profil", "Legg til profil",
        JOptionPane.INFORMATION_MESSAGE, null, userTypes.toArray(),
        null);
    if (selectedUserType != null && presentationModel != null) {
      UserRole userRole = new UserRole(null, selectedUserType,
          ((ApplicationUserModel) presentationModel.getBean())
              .getObject());
      userRoleList.add(userRole);
      presentationModel.setBufferedValue(
          ApplicationUserModel.PROPERTY_USER_ROLE_LIST, userRoleList);
      ((ApplicationUserModel) presentationModel.getBean())
          .firePropertyChanged();
      // BufferedValueModel bufferedValueModel =
      // presentationModel.getBufferedModel(ApplicationUserModel.PROPERTY_USER_ROLE_LIST);
      // bufferedValueModel.setValue(userRoleList);
    }
  }

  /**
   * Legger til produktomr�de
   *
   * @param window
   * @param presentationModel
   */
  void addProductAreaGroup(WindowInterface window,
      PresentationModel presentationModel) {
    ApplicationUser user = ((ApplicationUserModel) presentationModel
        .getBean()).getObject();
    List<ProductAreaGroup> groups = new ArrayList<ProductAreaGroup>(
        productAreaGroups);
       
    if (user.getProductArea() != null) {
      groups.remove(user.getProductArea().getProductAreaGroup());
    }
    ProductAreaGroup selectedGroup = (ProductAreaGroup) JOptionPane
        .showInputDialog(window.getComponent(), "Velg produktomr�de",
            "Legg til produktomr�de",
            JOptionPane.INFORMATION_MESSAGE, null,
            groups.toArray(), null);
    if (selectedGroup != null) {
      UserProductAreaGroup userGroup = new UserProductAreaGroup(null,
          selectedGroup, user);
      userProductAreaGroupList.add(userGroup);
      presentationModel.setBufferedValue(
          ApplicationUserModel.PROPERTY_USER_PRODUCT_AREA_GROUP_LIST,
          userProductAreaGroupList);
      ((ApplicationUserModel) presentationModel.getBean())
          .firePropertyChanged();
    }
  }

  /**
   * fjern brukertype
   *
   * @param presentationModel
   */
  void removeUserType(PresentationModel presentationModel) {
    UserRole userRole = (UserRole) userRoleSelectionList.getSelection();
    if (userRole != null) {
      userRoleList.remove(userRole);

      presentationModel.setBufferedValue(
          ApplicationUserModel.PROPERTY_USER_ROLE_LIST, userRoleList);

      // BufferedValueModel bufferedValueModel =
      // presentationModel.getBufferedModel(ApplicationUserModel.PROPERTY_USER_ROLE_LIST);
      // bufferedValueModel.setValue(userRoleList);
    }
  }

  /**
   * Fjerner produktomr�de
   *
   * @param presentationModel
   */
  void removeProductAreaGroup(PresentationModel presentationModel) {
    UserProductAreaGroup group = (UserProductAreaGroup) userProductAreaGroupSelectionList
        .getSelection();
    if (group != null) {
      userProductAreaGroupList.remove(group);

      presentationModel.setBufferedValue(
          ApplicationUserModel.PROPERTY_USER_PRODUCT_AREA_GROUP_LIST,
          userProductAreaGroupList);
    }
  }

  /**
   * H�ndterer valg av brukertype
   *
   * @author atle.brekka
   *
   */
  class EmptyListenerUserRole implements PropertyChangeListener {

    /**
     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
     */
    public void propertyChange(PropertyChangeEvent arg0) {
      buttonRemoveUserType.setEnabled(userRoleSelectionList
          .hasSelection());

    }

  }

  /**
   * H�ndterer valg i liste over produktomr�der
   *
   * @author atle.brekka
   *
   */
  class EmptyListenerProductAreaGroup implements PropertyChangeListener {

    /**
     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
     */
    public void propertyChange(PropertyChangeEvent arg0) {
      buttonRemoveProductAreaGroup
          .setEnabled(userProductAreaGroupSelectionList
              .hasSelection());

    }

  }

  /**
   * H�ndterer editeing av brukerprofiler
   *
   * @author atle.brekka
   *
   */
  private class ProfileUpdater implements Updateable {
    /**
     *
     */
    private PresentationModel presentationModel;

    /**
     * @param aPresentationModel
     */
    public ProfileUpdater(PresentationModel aPresentationModel) {
      presentationModel = aPresentationModel;
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doDelete(no.ugland.utransprod.gui.WindowInterface)
     */
    public boolean doDelete(WindowInterface window) {
      removeUserType(presentationModel);
      return true;
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doNew(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doNew(WindowInterface window) {
      addUserType(window, presentationModel);

    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doRefresh(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doRefresh(WindowInterface window) {
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doSave(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doSave(WindowInterface window1) {
    }

  }

  /**
   * H�ndterer legge til og fjerne produktomr�de
   *
   * @author atle.brekka
   *
   */
  private class ProductAreaGroupUpdater implements Updateable {
    /**
     *
     */
    private PresentationModel presentationModel;

    /**
     * @param aPresentationModel
     */
    public ProductAreaGroupUpdater(PresentationModel aPresentationModel) {
      presentationModel = aPresentationModel;
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doDelete(no.ugland.utransprod.gui.WindowInterface)
     */
    public boolean doDelete(WindowInterface window) {
      removeProductAreaGroup(presentationModel);
      return true;
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doNew(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doNew(WindowInterface window) {
      addProductAreaGroup(window, presentationModel);

    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doRefresh(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doRefresh(WindowInterface window) {
    }

    /**
     * @see no.ugland.utransprod.gui.Updateable#doSave(no.ugland.utransprod.gui.WindowInterface)
     */
    public void doSave(WindowInterface window1) {
    }

  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#hasWriteAccess()
   */
  @Override
  public Boolean hasWriteAccess() {
    return Util.convertNumberToBoolean(userType.getIsAdmin());
  }

  /**
   * @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<ApplicationUserModel, ApplicationUser> getEditView(
      AbstractViewHandler<ApplicationUser, ApplicationUserModel> handler,
      ApplicationUser object, boolean searching) {
    overviewManager.lazyLoad(object,
        new LazyLoadEnum[][] {
            {LazyLoadEnum.USER_ROLES,LazyLoadEnum.NONE},
            {LazyLoadEnum.USER_PRODUCT_AREA_GROUPS,LazyLoadEnum.NONE} });
    currentObject = object;
    return new EditApplicationUserView(searching, new ApplicationUserModel(
        object), this);
  }

   
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.ApplicationUserViewHandler$ProductAreaGroupUpdater

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.