Package org.sylfra.idea.plugins.revu.ui.forms.review.referential.user

Source Code of org.sylfra.idea.plugins.revu.ui.forms.review.referential.user.UserDetailForm

package org.sylfra.idea.plugins.revu.ui.forms.review.referential.user;

import com.intellij.ui.table.TableView;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.sylfra.idea.plugins.revu.RevuBundle;
import org.sylfra.idea.plugins.revu.actions.UpdatePasswordActionListener;
import org.sylfra.idea.plugins.revu.model.User;
import org.sylfra.idea.plugins.revu.ui.forms.review.referential.AbstractReferentialDetailForm;
import org.sylfra.idea.plugins.revu.utils.RevuUtils;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;
import java.util.Set;

/**
* @author <a href="mailto:syllant@gmail.com">Sylvain FRANCOIS</a>
* @version $Id$
*/
public class UserDetailForm extends AbstractReferentialDetailForm<User>
{
  private JPanel contentPane;
  private JTextField tfLogin;
  private JTextField tfDisplayName;
  private JCheckBox ckAdmin;
  private JCheckBox ckReviewer;
  private JCheckBox ckAuthor;
  private JButton bnUpdatePassword;
  private String password;

  protected UserDetailForm(TableView<User> table)
  {
    super(table);

    bnUpdatePassword.addActionListener(new UpdatePasswordActionListener(
      new UpdatePasswordActionListener.IPasswordReceiver()
      {
        public void setPassword(@Nullable String password)
        {
          UserDetailForm.this.password = password;
        }
      }));

    tfLogin.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        if (tfDisplayName.getText().length() == 0)
        {
          tfDisplayName.setText(tfLogin.getText());
        }
      }
    });
    ckAdmin.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        if (ckAdmin.isSelected())
        {
          ckReviewer.setSelected(true);
          ckAuthor.setSelected(true);
        }
        ckReviewer.setEnabled(!ckAdmin.isSelected());
        ckAuthor.setEnabled(!ckReviewer.isSelected());
      }
    });

    ckReviewer.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        if (ckReviewer.isSelected())
        {
          ckAuthor.setSelected(true);
        }
        ckAuthor.setEnabled(!ckReviewer.isSelected());
      }
    });
  }

  public boolean isModified(@NotNull User data)
  {
    if (!checkEquals(tfLogin.getText(), data.getLogin()))
    {
      return true;
    }

    if (!checkEquals(tfDisplayName.getText(), data.getDisplayName()))
    {
      return true;
    }

    if (!checkEquals(password, data.getPassword()))
    {
      return true;
    }

    Set<User.Role> roles = data.getRoles();
    if ((ckAdmin.isSelected() != roles.contains(User.Role.ADMIN))
      || (ckReviewer.isSelected() != roles.contains(User.Role.REVIEWER))
      || (ckAuthor.isSelected() != roles.contains(User.Role.AUTHOR)))
    {
      return true;
    }

    return false;
  }

  @Override
  protected void internalUpdateWriteAccess(User data, @Nullable User user)
  {
    RevuUtils.setWriteAccess((user != null) && (user.hasRole(User.Role.ADMIN)), tfLogin, tfDisplayName);
  }

  protected void internalValidateInput(@Nullable User data)
  {
    updateRequiredError(tfLogin, (data != null) && "".equals(tfLogin.getText().trim()));
    updateRequiredError(tfDisplayName, (data != null) && "".equals(tfDisplayName.getText().trim()));
    updateError(tfLogin, (data != null) && checkAlreadyExist(tfLogin.getText(), 0),
      RevuBundle.message("general.valueAlreadExist.text"));
  }

  protected void internalUpdateUI(User data, boolean requestFocus)
  {
    tfLogin.setText((data == null) ? "" : data.getLogin());
    tfDisplayName.setText((data == null) ? "" : data.getDisplayName());
    password = (data == null) ? null : data.getPassword();

    ckAdmin.setSelected((data != null) && (data.hasRole(User.Role.ADMIN)));
    ckReviewer.setSelected((data != null) && (data.hasRole(User.Role.REVIEWER)));
    ckAuthor.setSelected(true);

    ckReviewer.setEnabled(!ckAdmin.isSelected());
    ckAuthor.setEnabled(!ckReviewer.isSelected());
  }

  protected void internalUpdateData(@NotNull User data)
  {
    data.setLogin(tfLogin.getText());
    data.setDisplayName(tfDisplayName.getText());

    if (password != null)
    {
      data.setPassword(password);
    }

    Set<User.Role> roles = new HashSet<User.Role>();
    if (ckAdmin.isSelected())
    {
      roles.add(User.Role.ADMIN);
    }
    if (ckReviewer.isSelected())
    {
      roles.add(User.Role.REVIEWER);
    }
    if (ckAuthor.isSelected())
    {
      roles.add(User.Role.AUTHOR);
    }
    data.setRoles(roles);
  }

  public JComponent getPreferredFocusedComponent()
  {
    return tfLogin;
  }

  @NotNull
  public JPanel getContentPane()
  {
    return contentPane;
  }
}
TOP

Related Classes of org.sylfra.idea.plugins.revu.ui.forms.review.referential.user.UserDetailForm

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.