Ticket #5443: PropertiesDialog.java.httpurl-corrected.patch

File PropertiesDialog.java.httpurl-corrected.patch, 5.6 KB (added by cmuelle8, 16 years ago)

change eclipse autogenerated import from sun.net... to java.net.HttpURLConnection for portability..

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

     
    66
    77import java.awt.BorderLayout;
    88import java.awt.Component;
     9import java.awt.Desktop;
     10import java.awt.Dialog.ModalityType;
    911import java.awt.Font;
    1012import java.awt.GridBagLayout;
    1113import java.awt.Point;
    12 import java.awt.Dialog.ModalityType;
    1314import java.awt.event.ActionEvent;
    1415import java.awt.event.ActionListener;
    1516import java.awt.event.FocusAdapter;
     
    1718import java.awt.event.KeyEvent;
    1819import java.awt.event.MouseAdapter;
    1920import java.awt.event.MouseEvent;
     21import java.net.HttpURLConnection;
     22import java.net.URI;
    2023import java.util.ArrayList;
    2124import java.util.Collection;
    2225import java.util.Collections;
     
    2427import java.util.HashMap;
    2528import java.util.Iterator;
    2629import java.util.List;
     30import java.util.Locale;
    2731import java.util.Map;
     32import java.util.Map.Entry;
    2833import java.util.TreeMap;
    2934import java.util.Vector;
    30 import java.util.Map.Entry;
    3135
    3236import javax.swing.AbstractAction;
    3337import javax.swing.Box;
     
    6771import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
    6872import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
    6973import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
    70 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
    7174import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
     75import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
    7276import org.openstreetmap.josm.gui.DefaultNameFormatter;
    7377import org.openstreetmap.josm.gui.ExtendedDialog;
    7478import org.openstreetmap.josm.gui.MapFrame;
     
    704708        getActionMap().put("delete", deleteAction);
    705709        buttonPanel.add(this.btnDel);
    706710        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);
    707719    }
    708720
    709721    @Override public void setVisible(boolean b) {
     
    10211033        }
    10221034    }
    10231035
     1036    class HelpAction extends AbstractAction implements ListSelectionListener {
     1037        public HelpAction() {
     1038            putValue(NAME, tr("Help"));
     1039            putValue(SHORT_DESCRIPTION, tr("Launch browser with wiki help to selected object"));
     1040            updateEnabledState();
     1041        }
     1042
     1043        @SuppressWarnings("unchecked")
     1044        public void actionPerformed(ActionEvent e) {
     1045            if (!isEnabled())
     1046                return;
     1047
     1048            try {
     1049                String base = new String("http://wiki.openstreetmap.org/wiki/");
     1050                String l = Locale.getDefault().getCountry() + ":";
     1051                Vector<URI> v = new Vector<URI>();
     1052
     1053                String uri;
     1054                int row;
     1055                if (propertyTable.getSelectedRowCount() == 1) {
     1056                    row = propertyTable.getSelectedRow();
     1057                    uri = base + l + "Tag:" +
     1058                    propertyData.getValueAt(row, 0).toString() + "=" +
     1059                    ((Map<String,Integer>)propertyData.getValueAt(row, 1)).entrySet().iterator().next().getKey();
     1060
     1061                    v.add(new URI(uri));
     1062                    v.add(new URI(uri.substring(0, uri.indexOf('=')).replace("Tag:", "Key:")));
     1063                    v.add(new URI(base + l + "Map_Features"));
     1064                } else if (membershipTable.getSelectedRowCount() == 1) {
     1065                    row = membershipTable.getSelectedRow();
     1066                    uri = base + l + "Relation:" + ((Relation)membershipData.getValueAt(row, 0)).get("type");
     1067
     1068                    v.add(new URI(uri));
     1069                    v.add(new URI(uri = base + l + "Relations"));
     1070                }
     1071
     1072                // try all localized variants and if they are not available, try default as well
     1073                for (row = 0; row < v.size(); row++) {
     1074                    v.insertElementAt(new URI(v.get(row).toString().replace(l, "")), ++row);
     1075                }
     1076                // find a page that actually exists in the wiki
     1077                while ( !v.isEmpty() &&
     1078                        ((HttpURLConnection) v.firstElement().toURL().openConnection())
     1079                        .getResponseCode() != 200) {
     1080                    System.out.println("INFO: looking for " + v.firstElement());
     1081                    v.remove(0);
     1082                }
     1083
     1084                // browse the help page
     1085                if (!v.isEmpty()) {
     1086                    System.out.println("INFO: browsing to url " + v.firstElement());
     1087                    Desktop.getDesktop().browse(v.firstElement());
     1088                }
     1089            } catch (Exception e1) {
     1090                e1.printStackTrace();
     1091            }
     1092        }
     1093
     1094        protected void updateEnabledState() {
     1095            setEnabled(
     1096                    propertyTable.getSelectedRowCount() == 1
     1097                    ^ membershipTable.getSelectedRowCount() == 1
     1098            );
     1099        }
     1100
     1101        public void valueChanged(ListSelectionEvent e) {
     1102            updateEnabledState();
     1103        }
     1104    }
     1105
    10241106    static class SelectRelationAction extends AbstractAction {
    10251107        boolean selectionmode;
    10261108        Relation relation;