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.Component;
007
008 import javax.swing.JLabel;
009 import javax.swing.JList;
010 import javax.swing.ListCellRenderer;
011 import javax.swing.UIManager;
012
013 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
014
015 public class AuthorizationProcedureComboBox extends JosmComboBox {
016
017 public AuthorizationProcedureComboBox() {
018 super(AuthorizationProcedure.values());
019 setRenderer(new AuthorisationProcedureCellRenderer());
020 setSelectedItem(AuthorizationProcedure.FULLY_AUTOMATIC);
021 }
022
023 static private class AuthorisationProcedureCellRenderer extends JLabel implements ListCellRenderer {
024 public AuthorisationProcedureCellRenderer() {
025 setOpaque(true);
026 }
027
028 protected void renderColors(boolean isSelected) {
029 if (isSelected) {
030 setForeground(UIManager.getColor("List.selectionForeground"));
031 setBackground(UIManager.getColor("List.selectionBackground"));
032 } else {
033 setForeground(UIManager.getColor("List.foreground"));
034 setBackground(UIManager.getColor("List.background"));
035 }
036 }
037
038 protected void renderText(AuthorizationProcedure value) {
039 switch(value) {
040 case FULLY_AUTOMATIC:
041 setText(tr("Fully automatic"));
042 break;
043 case SEMI_AUTOMATIC:
044 setText(tr("Semi-automatic"));
045 break;
046 case MANUALLY:
047 setText(tr("Manual"));
048 break;
049 }
050 }
051
052 protected void renderToolTipText(AuthorizationProcedure value) {
053 switch(value) {
054 case FULLY_AUTOMATIC:
055 setToolTipText(tr(
056 "<html>Run a fully automatic procedure to get an access token from the OSM website.<br>"
057 + "JOSM accesses the OSM website on behalf of the JOSM user and fully<br>"
058 + "automatically authorizes the user and retrieves an Access Token.</html>"
059 ));
060 break;
061 case SEMI_AUTOMATIC:
062 setToolTipText(tr(
063 "<html>Run a semi-automatic procedure to get an access token from the OSM website.<br>"
064 + "JOSM submits the standards OAuth requests to get a Request Token and an<br>"
065 + "Access Token. It dispatches the user to the OSM website in an external browser<br>"
066 + "to authenticate itself and to accept the request token submitted by JOSM.</html>"
067 ));
068 break;
069 case MANUALLY:
070 setToolTipText(tr(
071 "<html>Enter an Access Token manually if it was generated and retrieved outside<br>"
072 + "of JOSM.</html>"
073 ));
074 break;
075 }
076 }
077
078 public Component getListCellRendererComponent(JList list, Object value, int idx, boolean isSelected, boolean hasFocus) {
079 AuthorizationProcedure procedure = (AuthorizationProcedure)value;
080 renderColors(isSelected);
081 renderText(procedure);
082 renderToolTipText(procedure);
083 return this;
084 }
085 }
086 }