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.JCheckBox;
011 import javax.swing.JLabel;
012 import javax.swing.JPanel;
013 import javax.swing.JTextField;
014
015 import org.openstreetmap.josm.data.oauth.OAuthToken;
016 import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
017
018 /**
019 * Displays the key and the secret of an OAuth Access Token.
020 *
021 */
022 public class AccessTokenInfoPanel extends JPanel {
023
024 private JTextField tfAccessTokenKey;
025 private JTextField tfAccessTokenSecret;
026 private JCheckBox cbSaveAccessTokenInPreferences;
027
028 protected void build() {
029 setLayout(new GridBagLayout());
030 GridBagConstraints gc = new GridBagConstraints();
031
032 // the access token key
033 gc.anchor = GridBagConstraints.NORTHWEST;
034 gc.fill = GridBagConstraints.HORIZONTAL;
035 gc.weightx = 0.0;
036 gc.insets = new Insets(0,0,3,3);
037 add(new JLabel(tr("Access Token Key:")), gc);
038
039 gc.gridx = 1;
040 gc.weightx = 1.0;
041 add(tfAccessTokenKey = new JTextField(), gc);
042 tfAccessTokenKey.setEditable(false);
043
044 // the access token secret
045 gc.gridx = 0;
046 gc.gridy = 1;
047 gc.weightx = 0.0;
048 gc.insets = new Insets(0,0,3,3);
049 add(new JLabel(tr("Access Token Secret:")), gc);
050
051 gc.gridx = 1;
052 gc.weightx = 1.0;
053 add(tfAccessTokenSecret = new JTextField(), gc);
054 tfAccessTokenSecret.setEditable(false);
055
056 // the checkbox
057 gc.gridx = 0;
058 gc.gridy = 2;
059 gc.gridwidth = 2;
060 add(cbSaveAccessTokenInPreferences = new JCheckBox(tr("Save Access Token in preferences")), gc);
061 cbSaveAccessTokenInPreferences.setToolTipText(tr(
062 "<html>Select to save the Access Token in the JOSM preferences.<br>"
063 + "Unselect to use the Access Token in this JOSM session only.</html>"
064 ));
065 cbSaveAccessTokenInPreferences.setSelected(OAuthAccessTokenHolder.getInstance().isSaveToPreferences());
066
067 // filler - grab the remaining space
068 gc.gridx = 0;
069 gc.gridy = 3;
070 gc.weightx = 1.0;
071 gc.weighty = 1.0;
072 gc.fill = GridBagConstraints.BOTH;
073 gc.gridwidth = 2;
074 add(new JPanel(), gc);
075 }
076
077 public AccessTokenInfoPanel() {
078 build();
079 }
080
081 /**
082 * Displays the key and secret in <code>token</code>.
083 *
084 * @param token the access token. If null, the content in the info panel is cleared
085 */
086 public void setAccessToken(OAuthToken token) {
087 if (token == null) {
088 tfAccessTokenKey.setText("");
089 tfAccessTokenSecret.setText("");
090 return;
091 }
092 tfAccessTokenKey.setText(token.getKey());
093 tfAccessTokenSecret.setText(token.getSecret());
094 }
095
096 public void setSaveToPreferences(boolean saveToPreferences) {
097 cbSaveAccessTokenInPreferences.setSelected(saveToPreferences);
098 }
099
100 public boolean isSaveToPreferences() {
101 return cbSaveAccessTokenInPreferences.isSelected();
102 }
103 }