Package com.gitblit.client

Source Code of com.gitblit.client.EditRegistrationDialog

/*
* Copyright 2011 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.client;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRootPane;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

import com.gitblit.utils.StringUtils;

/**
* Dialog to create or edit a Gitblit registration.
*
* @author James Moger
*
*/
public class EditRegistrationDialog extends JDialog {

  private static final long serialVersionUID = 1L;
  private JTextField urlField;
  private JTextField nameField;
  private JTextField accountField;
  private JPasswordField passwordField;
  private JCheckBox savePassword;
  private boolean canceled;
  private HeaderPanel headerPanel;

  public EditRegistrationDialog(Window owner) {
    this(owner, null, false);
  }

  public EditRegistrationDialog(Window owner, GitblitRegistration reg, boolean isLogin) {
    super(owner);
    initialize(reg, isLogin);
  }

  @Override
  protected JRootPane createRootPane() {
    KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
    JRootPane rootPane = new JRootPane();
    rootPane.registerKeyboardAction(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent actionEvent) {
        setVisible(false);
      }
    }, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
    return rootPane;
  }

  private void initialize(GitblitRegistration reg, boolean isLogin) {
    setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());
    canceled = true;
    urlField = new JTextField(reg == null ? "" : reg.url, 30);
    nameField = new JTextField(reg == null ? "" : reg.name);
    accountField = new JTextField(reg == null ? "" : reg.account);
    passwordField = new JPasswordField(reg == null ? "" : new String(reg.password));
    savePassword = new JCheckBox("save password (passwords are NOT encrypted!)");
    savePassword.setSelected(reg == null ? false
        : (reg.password != null && reg.password.length > 0));

    JPanel panel = new JPanel(new GridLayout(0, 1, 5, 5));
    panel.add(newLabelPanel(Translation.get("gb.name"), nameField));
    panel.add(newLabelPanel(Translation.get("gb.url"), urlField));
    panel.add(newLabelPanel(Translation.get("gb.username"), accountField));
    panel.add(newLabelPanel(Translation.get("gb.password"), passwordField));
    panel.add(newLabelPanel("", savePassword));

    JButton cancel = new JButton(Translation.get("gb.cancel"));
    cancel.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent event) {
        setVisible(false);
      }
    });

    final JButton save = new JButton(Translation.get(isLogin ? "gb.login" : "gb.save"));
    save.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent event) {
        if (validateFields()) {
          canceled = false;
          setVisible(false);
        }
      }
    });

    // on enter in password field, save or login
    passwordField.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent event) {
        save.doClick();
      }
    });

    JPanel controls = new JPanel();
    controls.add(cancel);
    controls.add(save);

    if (reg == null) {
      this.setTitle(Translation.get("gb.create"));
      headerPanel = new HeaderPanel(Translation.get("gb.create"), null);
    } else {
      this.setTitle(Translation.get(isLogin ? "gb.login" : "gb.edit"));
      headerPanel = new HeaderPanel(reg.name, null);
    }

    final Insets insets = new Insets(5, 5, 5, 5);
    JPanel centerPanel = new JPanel(new BorderLayout(5, 5)) {

      private static final long serialVersionUID = 1L;

      @Override
      public Insets getInsets() {
        return insets;
      }
    };
    centerPanel.add(headerPanel, BorderLayout.NORTH);
    centerPanel.add(panel, BorderLayout.CENTER);
    centerPanel.add(controls, BorderLayout.SOUTH);

    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(centerPanel, BorderLayout.CENTER);
    pack();
    setModal(true);
    if (isLogin) {
      passwordField.requestFocus();
    }
  }

  private JPanel newLabelPanel(String text, JComponent field) {
    JLabel label = new JLabel(text);
    label.setFont(label.getFont().deriveFont(Font.BOLD));
    label.setPreferredSize(new Dimension(75, 10));
    JPanel jpanel = new JPanel(new BorderLayout());
    jpanel.add(label, BorderLayout.WEST);
    jpanel.add(field, BorderLayout.CENTER);
    return jpanel;
  }

  private boolean validateFields() {
    String name = nameField.getText();
    if (StringUtils.isEmpty(name)) {
      error("Please enter a name for this registration!");
      return false;
    }
    String url = urlField.getText();
    if (StringUtils.isEmpty(url)) {
      error("Please enter a url for this registration!");
      return false;
    }
    return true;
  }

  private void error(String message) {
    JOptionPane.showMessageDialog(EditRegistrationDialog.this, message,
        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
  }

  public GitblitRegistration getRegistration() {
    if (canceled) {
      return null;
    }
    GitblitRegistration reg = new GitblitRegistration(nameField.getText(), urlField.getText(),
        accountField.getText(), passwordField.getPassword());
    reg.savePassword = savePassword.isSelected();
    return reg;
  }
}
TOP

Related Classes of com.gitblit.client.EditRegistrationDialog

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.