001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.oauth; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.awt.GridBagConstraints; 007 import java.awt.GridBagLayout; 008 import java.awt.Insets; 009 010 import javax.swing.BorderFactory; 011 import javax.swing.JCheckBox; 012 import javax.swing.JLabel; 013 import javax.swing.JPanel; 014 import javax.swing.JPasswordField; 015 import javax.swing.JTextField; 016 import javax.swing.text.JTextComponent; 017 018 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator; 019 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator; 020 021 public class FullyAutomaticPropertiesPanel extends JPanel { 022 023 private JTextField tfUserName; 024 private JPasswordField tfPassword; 025 private UserNameValidator valUserName; 026 027 private JCheckBox cbWriteMapData; 028 private JCheckBox cbWriteGpsTraces; 029 private JCheckBox cbReadGpsTraces; 030 031 032 protected JPanel buildUserNamePasswordPanel() { 033 JPanel pnl = new JPanel(new GridBagLayout()); 034 GridBagConstraints gc = new GridBagConstraints(); 035 036 gc.anchor = GridBagConstraints.NORTHWEST; 037 gc.fill = GridBagConstraints.HORIZONTAL; 038 gc.weightx = 0.0; 039 gc.insets = new Insets(0,0,3,3); 040 pnl.add(new JLabel(tr("Username: ")), gc); 041 042 gc.gridx = 1; 043 gc.weightx = 1.0; 044 pnl.add(tfUserName = new JTextField(), gc); 045 SelectAllOnFocusGainedDecorator.decorate(tfUserName); 046 valUserName = new UserNameValidator(tfUserName); 047 valUserName.validate(); 048 049 gc.anchor = GridBagConstraints.NORTHWEST; 050 gc.fill = GridBagConstraints.HORIZONTAL; 051 gc.gridy = 1; 052 gc.gridx = 0; 053 gc.weightx = 0.0; 054 pnl.add(new JLabel(tr("Password: ")), gc); 055 056 gc.gridx = 1; 057 gc.weightx = 1.0; 058 pnl.add(tfPassword = new JPasswordField(), gc); 059 SelectAllOnFocusGainedDecorator.decorate(tfPassword); 060 061 return pnl; 062 } 063 064 065 public FullyAutomaticPropertiesPanel() { 066 setLayout(new GridBagLayout()); 067 GridBagConstraints gc = new GridBagConstraints(); 068 setBorder(BorderFactory.createEmptyBorder(3,3,3,3)); 069 070 gc.anchor = GridBagConstraints.NORTHWEST; 071 gc.fill = GridBagConstraints.HORIZONTAL; 072 gc.weightx = 1.0; 073 add(buildUserNamePasswordPanel(), gc); 074 075 gc.gridy = 1; 076 gc.weighty = 1.0; 077 gc.fill = GridBagConstraints.BOTH; 078 add(new JPanel(), gc); 079 } 080 081 static private class UserNameValidator extends AbstractTextComponentValidator { 082 083 public UserNameValidator(JTextComponent tc) { 084 super(tc); 085 } 086 087 @Override 088 public boolean isValid() { 089 return getComponent().getText().trim().length() > 0; 090 } 091 092 @Override 093 public void validate() { 094 if (isValid()) { 095 feedbackValid(tr("Please enter your OSM user name")); 096 } else { 097 feedbackInvalid(tr("The user name cannot be empty. Please enter your OSM user name")); 098 } 099 } 100 } 101 }