Ticket #8549: remove_offset_server.patch

File remove_offset_server.patch, 13.9 KB (added by Zverikk, 13 years ago)

A patch to remove all traces of offset server support

  • trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java

     
    144144        if (offsetDialog != null || layer == null || Main.map == null)
    145145            return;
    146146        oldMapMode = Main.map.mapMode;
    147         layer.enableOffsetServer(false);
    148147        super.actionPerformed(e);
    149148    }
    150149
  • trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java

     
    2525import javax.swing.JMenuItem;
    2626import javax.swing.JPopupMenu;
    2727import javax.swing.JSeparator;
    28 import javax.swing.SwingUtilities;
    2928
    3029import org.openstreetmap.josm.Main;
    3130import org.openstreetmap.josm.actions.ImageryAdjustAction;
    3231import org.openstreetmap.josm.data.ProjectionBounds;
    33 import org.openstreetmap.josm.data.coor.EastNorth;
    3432import org.openstreetmap.josm.data.imagery.ImageryInfo;
    3533import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
    3634import org.openstreetmap.josm.data.imagery.OffsetBookmark;
    3735import org.openstreetmap.josm.data.preferences.ColorProperty;
    3836import org.openstreetmap.josm.data.preferences.IntegerProperty;
    3937import org.openstreetmap.josm.gui.MenuScroller;
    40 import org.openstreetmap.josm.io.imagery.OffsetServer;
    41 import org.openstreetmap.josm.io.imagery.OsmosnimkiOffsetServer;
    4238import org.openstreetmap.josm.tools.ImageProvider;
    4339
    4440public abstract class ImageryLayer extends Layer {
     
    6561
    6662    protected int sharpenLevel;
    6763
    68     protected boolean offsetServerSupported;
    69     protected boolean offsetServerUsed;
    70     protected OffsetServerThread offsetServerThread;
    71 
    7264    private final ImageryAdjustAction adjustAction = new ImageryAdjustAction(this);
    73     private final AbstractAction useServerOffsetAction = new AbstractAction(tr("(use server offset)")) {
    74         @Override
    75         public void actionPerformed(ActionEvent e) {
    76             enableOffsetServer(true);
    77         }
    78     };
    7965
    80     protected OffsetServerThread createoffsetServerThread() {
    81         return new OffsetServerThread(new OsmosnimkiOffsetServer(
    82                 OsmosnimkiOffsetServer.PROP_SERVER_URL.get()));
    83     }
    84 
    8566    public ImageryLayer(ImageryInfo info) {
    8667        super(info.getName());
    8768        this.info = info;
     
    9374            icon = ImageProvider.get("imagery_small");
    9475        }
    9576        this.sharpenLevel = PROP_SHARPEN_LEVEL.get();
    96         if (OffsetServer.PROP_SERVER_ENABLED.get()) {
    97             offsetServerThread = createoffsetServerThread();
    98             offsetServerThread.start();
    99         }
    10077    }
    10178
    10279    public double getPPD(){
     
    163140        @Override
    164141        public void actionPerformed(ActionEvent ev) {
    165142            setOffset(b.dx, b.dy);
    166             enableOffsetServer(false);
    167143            Main.main.menu.imageryMenu.refreshOffsetMenu();
    168144            Main.map.repaint();
    169145        }
     
    185161        }
    186162    }
    187163
    188     public void enableOffsetServer(boolean enable) {
    189         offsetServerUsed = enable;
    190         if (offsetServerUsed && !offsetServerThread.isAlive()) {
    191             offsetServerThread = createoffsetServerThread();
    192             offsetServerThread.start();
    193         }
    194     }
    195 
    196164    public JMenuItem getOffsetMenuItem() {
    197165        JMenu subMenu = new JMenu(trc("layer", "Offset"));
    198166        subMenu.setIcon(ImageProvider.get("mapmode", "adjustimg"));
     
    201169
    202170    public JComponent getOffsetMenuItem(JComponent subMenu) {
    203171        JMenuItem adjustMenuItem = new JMenuItem(adjustAction);
    204         if (OffsetBookmark.allBookmarks.isEmpty() && !offsetServerSupported) return adjustMenuItem;
     172        if (OffsetBookmark.allBookmarks.isEmpty()) return adjustMenuItem;
    205173
    206174        subMenu.add(adjustMenuItem);
    207         if (offsetServerSupported) {
    208             JCheckBoxMenuItem item = new JCheckBoxMenuItem(useServerOffsetAction);
    209             if (offsetServerUsed) {
    210                 item.setSelected(true);
    211             }
    212             subMenu.add(item);
    213         }
    214175        subMenu.add(new JSeparator());
    215176        boolean hasBookmarks = false;
    216177        int menuItemHeight = 0;
     
    219180                continue;
    220181            }
    221182            JCheckBoxMenuItem item = new JCheckBoxMenuItem(new ApplyOffsetAction(b));
    222             if (b.dx == dx && b.dy == dy && !offsetServerUsed) {
     183            if (b.dx == dx && b.dy == dy) {
    223184                item.setSelected(true);
    224185            }
    225186            subMenu.add(item);
     
    234195                MenuScroller.setScrollerFor((JPopupMenu)subMenu, scrollcount);
    235196            }
    236197        }
    237         return (hasBookmarks || offsetServerSupported) ? subMenu : adjustMenuItem;
     198        return hasBookmarks ? subMenu : adjustMenuItem;
    238199    }
    239200
    240201    public BufferedImage sharpenImage(BufferedImage img) {
     
    264225        g.drawString(text, (img.getWidth() + g.getFontMetrics().stringWidth(text)) / 2, img.getHeight()/2);
    265226    }
    266227
    267     protected class OffsetServerThread extends Thread {
    268         OffsetServer offsetServer;
    269         EastNorth oldCenter = new EastNorth(Double.NaN, Double.NaN);
    270 
    271         public OffsetServerThread(OffsetServer offsetServer) {
    272             this.offsetServer = offsetServer;
    273             setDaemon(true);
    274         }
    275 
    276         private void updateOffset() {
    277             if (Main.map == null || Main.map.mapView == null) return;
    278             EastNorth center = Main.map.mapView.getCenter();
    279             if (center.equals(oldCenter)) return;
    280             oldCenter = center;
    281 
    282             EastNorth offset = offsetServer.getOffset(getInfo(), center);
    283             if (offset != null) {
    284                 setOffset(offset.east(),offset.north());
    285             }
    286         }
    287 
    288         @Override
    289         public void run() {
    290             if (!offsetServerSupported) {
    291                 if (!offsetServer.isLayerSupported(info)) return;
    292                 offsetServerSupported = true;
    293             }
    294             offsetServerUsed = true;
    295             SwingUtilities.invokeLater(new Runnable() {
    296                 @Override
    297                 public void run() {
    298                     Main.main.menu.imageryMenu.refreshOffsetMenu();
    299                 }
    300             });
    301             try {
    302                 while (offsetServerUsed) {
    303                     updateOffset();
    304                     Thread.sleep(1000);
    305                 }
    306             } catch (InterruptedException e) {
    307             }
    308             offsetServerUsed = false;
    309         }
    310     }
    311 
    312228    /* (non-Javadoc)
    313229     * @see org.openstreetmap.josm.gui.layer.Layer#destroy()
    314230     */
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java

     
    99import java.awt.event.ActionListener;
    1010
    1111import javax.swing.JButton;
    12 import javax.swing.JCheckBox;
    1312import javax.swing.JColorChooser;
    1413import javax.swing.JLabel;
    1514import javax.swing.JOptionPane;
    1615import javax.swing.JPanel;
    1716import javax.swing.JSlider;
    18 import javax.swing.JTextField;
    19 import javax.swing.event.ChangeEvent;
    20 import javax.swing.event.ChangeListener;
    2117
    2218import org.openstreetmap.josm.gui.layer.ImageryLayer;
    2319import org.openstreetmap.josm.gui.widgets.JosmComboBox;
    24 import org.openstreetmap.josm.io.imagery.OffsetServer;
    25 import org.openstreetmap.josm.io.imagery.OsmosnimkiOffsetServer;
    2620import org.openstreetmap.josm.tools.ColorHelper;
    2721import org.openstreetmap.josm.tools.GBC;
    2822
     
    3630    private final JButton btnFadeColor;
    3731    private final JSlider fadeAmount = new JSlider(0, 100);
    3832    private final JosmComboBox sharpen;
    39     private final JCheckBox useOffsetServer;
    40     private final JTextField offsetServerUrl;
    4133
    4234    /**
    4335     * Constructs a new {@code CommonSettingsPanel}.
     
    7971        add(new JLabel(tr("Sharpen (requires layer re-add): ")));
    8072        add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
    8173        add(this.sharpen, GBC.eol().fill(GBC.HORIZONTAL));
    82 
    83         this.useOffsetServer = new JCheckBox(tr("Use offset server: "));
    84         this.offsetServerUrl = new JTextField();
    85         this.useOffsetServer.addChangeListener(new ChangeListener() {
    86             @Override
    87             public void stateChanged(ChangeEvent e) {
    88                 offsetServerUrl.setEnabled(useOffsetServer.isSelected());
    89             }
    90         });
    91         offsetServerUrl.setEnabled(useOffsetServer.isSelected());
    92         add(this.useOffsetServer, GBC.eol().fill(GBC.HORIZONTAL));
    93         add(this.offsetServerUrl, GBC.eol().fill(GBC.HORIZONTAL));
    9474    }
    9575   
    9676    /**
     
    10282        this.btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
    10383        this.fadeAmount.setValue(ImageryLayer.PROP_FADE_AMOUNT.get());
    10484        this.sharpen.setSelectedIndex(Math.max(0, Math.min(2, ImageryLayer.PROP_SHARPEN_LEVEL.get())));
    105         this.useOffsetServer.setSelected(OffsetServer.PROP_SERVER_ENABLED.get());
    106         this.offsetServerUrl.setText(OsmosnimkiOffsetServer.PROP_SERVER_URL.get());
    10785    }
    10886   
    10987    /**
     
    11189     * @return true when restart is required
    11290     */
    11391    public boolean saveSettings() {
    114         OffsetServer.PROP_SERVER_ENABLED.put(useOffsetServer.isSelected());
    115         OsmosnimkiOffsetServer.PROP_SERVER_URL.put(offsetServerUrl.getText());
    116 
    11792        ImageryLayer.PROP_FADE_AMOUNT.put(this.fadeAmount.getValue());
    11893        ImageryLayer.PROP_FADE_COLOR.put(this.btnFadeColor.getBackground());
    11994        ImageryLayer.PROP_SHARPEN_LEVEL.put(sharpen.getSelectedIndex());
  • trunk/src/org/openstreetmap/josm/io/imagery/OffsetServer.java

     
    1 // License: GPL. For details, see LICENSE file.
    2 package org.openstreetmap.josm.io.imagery;
    3 
    4 import org.openstreetmap.josm.data.coor.EastNorth;
    5 import org.openstreetmap.josm.data.imagery.ImageryInfo;
    6 import org.openstreetmap.josm.data.preferences.BooleanProperty;
    7 
    8 public interface OffsetServer {
    9     public static BooleanProperty PROP_SERVER_ENABLED = new BooleanProperty("imagery.offsetserver.enabled",false);
    10     abstract boolean isLayerSupported(ImageryInfo info);
    11     abstract EastNorth getOffset(ImageryInfo info, EastNorth en);
    12 }
  • trunk/src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java

     
    1 // License: GPL. For details, see LICENSE file.
    2 package org.openstreetmap.josm.io.imagery;
    3 
    4 import static org.openstreetmap.josm.tools.I18n.tr;
    5 
    6 import java.io.BufferedReader;
    7 import java.io.InputStreamReader;
    8 import java.net.URL;
    9 import java.net.URLEncoder;
    10 
    11 import org.openstreetmap.josm.Main;
    12 import org.openstreetmap.josm.data.coor.EastNorth;
    13 import org.openstreetmap.josm.data.coor.LatLon;
    14 import org.openstreetmap.josm.data.imagery.ImageryInfo;
    15 import org.openstreetmap.josm.data.preferences.StringProperty;
    16 import org.openstreetmap.josm.tools.Utils;
    17 
    18 public class OsmosnimkiOffsetServer implements OffsetServer {
    19     public static final StringProperty PROP_SERVER_URL = new StringProperty("imagery.offsetserver.url","http://offset.osmosnimki.ru/offset/v0?");
    20     private String url;
    21 
    22     public OsmosnimkiOffsetServer(String url) {
    23         this.url = url;
    24     }
    25 
    26     @Override
    27     public boolean isLayerSupported(ImageryInfo info) {
    28         try {
    29             URL url = new URL(this.url + "action=CheckAvailability&id=" + URLEncoder.encode(info.getUrl(), "UTF-8"));
    30             System.out.println(tr("Querying offset availability: {0}", url));
    31             final BufferedReader rdr = new BufferedReader(new InputStreamReader(Utils.openHttpConnection(url).getInputStream(), "UTF-8"));
    32             String response = rdr.readLine();
    33             System.out.println(tr("Offset server response: {0}", response));
    34             if (response == null)
    35                 return false;
    36             if (response.contains("\"offsets_available\": true")) return true;
    37         } catch (Exception e) {
    38             e.printStackTrace();
    39         }
    40         return false;
    41     }
    42 
    43     @Override
    44     public EastNorth getOffset(ImageryInfo info, EastNorth en) {
    45         LatLon ll = Main.getProjection().eastNorth2latlon(en);
    46         try {
    47             URL url = new URL(this.url + "action=GetOffsetForPoint&lat=" + ll.lat() + "&lon=" + ll.lon() + "&id=" + URLEncoder.encode(info.getUrl(), "UTF-8"));
    48             System.out.println(tr("Querying offset: {0}", url.toString()));
    49             final BufferedReader rdr = new BufferedReader(new InputStreamReader(Utils.openHttpConnection(url).getInputStream(), "UTF-8"));
    50             String s = rdr.readLine();
    51             if (s == null)
    52                 return null;
    53             int i = s.indexOf(',');
    54             if (i == -1) return null;
    55             String sLon = s.substring(1,i);
    56             String sLat = s.substring(i+1,s.length()-1);
    57             return Main.getProjection().latlon2eastNorth(new LatLon(Double.valueOf(sLat),Double.valueOf(sLon))).sub(en);
    58         } catch (Exception e) {
    59             e.printStackTrace();
    60             return null;
    61         }
    62     }
    63 
    64 }