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.JPanel;
013    
014    import org.openstreetmap.josm.data.oauth.OsmPrivileges;
015    import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
016    
017    public class OsmPrivilegesPanel extends VerticallyScrollablePanel{
018    
019        private JCheckBox cbWriteApi;
020        private JCheckBox cbWriteGpx;
021        private JCheckBox cbReadGpx;
022        private JCheckBox cbWritePrefs;
023        private JCheckBox cbReadPrefs;
024    
025        protected void build() {
026            setLayout(new GridBagLayout());
027            GridBagConstraints gc = new GridBagConstraints();
028            setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
029    
030            // checkbox for "allow to upload map data"
031            //
032            gc.anchor = GridBagConstraints.NORTHWEST;
033            gc.fill = GridBagConstraints.HORIZONTAL;
034            gc.weightx = 1.0;
035            gc.insets = new Insets(0,0,3,3);
036            add(cbWriteApi = new JCheckBox(), gc);
037            cbWriteApi.setText(tr("Allow to upload map data"));
038            cbWriteApi.setToolTipText(tr("Select to grant JOSM the right to upload map data on your behalf"));
039            cbWriteApi.setSelected(true);
040    
041            // checkbox for "allow to upload gps traces"
042            //
043            gc.gridy = 1;
044            add(cbWriteGpx = new JCheckBox(), gc);
045            cbWriteGpx.setText(tr("Allow to upload GPS traces"));
046            cbWriteGpx.setToolTipText(tr("Select to grant JOSM the right to upload GPS traces on your behalf"));
047            cbWriteGpx.setSelected(true);
048    
049            // checkbox for "allow to download private gps traces"
050            //
051            gc.gridy = 2;
052            add(cbReadGpx = new JCheckBox(), gc);
053            cbReadGpx.setText(tr("Allow to download your private GPS traces"));
054            cbReadGpx.setToolTipText(tr("Select to grant JOSM the right to download your private GPS traces into JOSM layers"));
055            cbReadGpx.setSelected(true);
056    
057            // checkbox for "allow to download private gps traces"
058            //
059            gc.gridy = 3;
060            add(cbReadPrefs = new JCheckBox(), gc);
061            cbReadPrefs.setText(tr("Allow to read your preferences"));
062            cbReadPrefs.setToolTipText(tr("Select to grant JOSM the right to read your server preferences"));
063            cbReadPrefs.setSelected(true);
064    
065            // checkbox for "allow to download private gps traces"
066            //
067            gc.gridy = 4;
068            add(cbWritePrefs = new JCheckBox(), gc);
069            cbWritePrefs.setText(tr("Allow to write your preferences"));
070            cbWritePrefs.setToolTipText(tr("Select to grant JOSM the right to write your server preferences"));
071            cbWritePrefs.setSelected(true);
072    
073            // filler - grab remaining space
074            gc.gridy = 5;
075            gc.fill = GridBagConstraints.BOTH;
076            gc.weightx = 1.0;
077            gc.weighty = 1.0;
078            add(new JPanel(), gc);
079        }
080    
081        public OsmPrivilegesPanel() {
082            build();
083        }
084    
085        /**
086         * Replies the currently entered privileges
087         *
088         * @return the privileges
089         */
090        public OsmPrivileges getPrivileges() {
091            OsmPrivileges privileges = new OsmPrivileges();
092            privileges.setAllowWriteApi(cbWriteApi.isSelected());
093            privileges.setAllowWriteGpx(cbWriteGpx.isSelected());
094            privileges.setAllowReadGpx(cbReadGpx.isSelected());
095            privileges.setAllowWritePrefs(cbWritePrefs.isSelected());
096            privileges.setAllowReadPrefs(cbReadPrefs.isSelected());
097            return privileges;
098        }
099    }