Ticket #5443: PropertiesDialog.java.patch

File PropertiesDialog.java.patch, 4.0 KB (added by cmuelle8, 15 years ago)

PropertiesDialog.java.patch

  • src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

     
    77import java.awt.BorderLayout;
    88import java.awt.Component;
    99import java.awt.Cursor;
     10import java.awt.Desktop;
    1011import java.awt.Dialog.ModalityType;
    1112import java.awt.Dimension;
    1213import java.awt.Font;
     
    2021import java.awt.event.MouseAdapter;
    2122import java.awt.event.MouseEvent;
    2223import java.awt.event.MouseListener;
     24import java.net.URI;
    2325import java.util.ArrayList;
    2426import java.util.Collection;
    2527import java.util.Collections;
     
    2830import java.util.Iterator;
    2931import java.util.List;
    3032import java.util.Map;
     33import java.util.Map.Entry;
    3134import java.util.TreeMap;
    3235import java.util.Vector;
    33 import java.util.Map.Entry;
    3436
    3537import javax.swing.AbstractAction;
    3638import javax.swing.Box;
     
    6971import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
    7072import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
    7173import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
    72 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
    7374import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
     75import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
    7476import org.openstreetmap.josm.gui.DefaultNameFormatter;
    7577import org.openstreetmap.josm.gui.ExtendedDialog;
    7678import org.openstreetmap.josm.gui.MapFrame;
     
    706708        getActionMap().put("delete", deleteAction);
    707709        buttonPanel.add(this.btnDel);
    708710        add(buttonPanel, BorderLayout.SOUTH);
     711
     712        // -- help action
     713        //
     714        HelpAction helpAction = new HelpAction();
     715        propertyTable.getSelectionModel().addListSelectionListener(helpAction);
     716        getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
     717                KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "onHelp");
     718        getActionMap().put("onHelp", helpAction);
    709719    }
    710720
    711721    @Override public void setVisible(boolean b) {
     
    10941104        }
    10951105    }
    10961106
     1107    class HelpAction extends AbstractAction implements ListSelectionListener {
     1108        public HelpAction() {
     1109            putValue(NAME, tr("Help"));
     1110            putValue(SHORT_DESCRIPTION, tr("Launch browser with wiki help to selected object"));
     1111            updateEnabledState();
     1112        }
     1113
     1114        public void actionPerformed(ActionEvent e) {
     1115            if (!isEnabled())
     1116                return;
     1117
     1118            try {
     1119                URI url = new URI("http://wiki.openstreetmap.org/");
     1120
     1121                if (propertyTable.getSelectedRowCount() == 1) {
     1122                    int row = propertyTable.getSelectedRow();
     1123                    url = new URI("http://wiki.openstreetmap.org/wiki/Key:"+
     1124                            propertyData.getValueAt(row, 0).toString());
     1125                } else if (membershipTable.getSelectedRowCount() == 1) {
     1126                    int row = membershipTable.getSelectedRow();
     1127                    url = new URI("http://wiki.openstreetmap.org/wiki/Relation:"+
     1128                            ((Relation)membershipData.getValueAt(row, 0)).get("type"));
     1129                }
     1130
     1131                Desktop.getDesktop().browse(url);
     1132            } catch (Exception e1) {
     1133                e1.printStackTrace();
     1134            }
     1135        }
     1136
     1137        protected void updateEnabledState() {
     1138            setEnabled(
     1139                    propertyTable.getSelectedRowCount() == 1
     1140                    ^ membershipTable.getSelectedRowCount() == 1
     1141            );
     1142        }
     1143
     1144        public void valueChanged(ListSelectionEvent e) {
     1145            updateEnabledState();
     1146        }
     1147    }
     1148
    10971149    static class SelectRelationAction extends AbstractAction {
    10981150        boolean selectionmode;
    10991151        Relation relation;