Ignore:
Timestamp:
2015-05-23T00:46:21+02:00 (9 years ago)
Author:
wiktorn
Message:

Add posibility to display HTTP headers in Show Tile Info dialog. Closes #11456

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java

    r8403 r8418  
    88import java.awt.Graphics;
    99import java.awt.Graphics2D;
     10import java.awt.GridBagLayout;
    1011import java.awt.Image;
    1112import java.awt.Point;
     
    2021import java.io.StringReader;
    2122import java.net.URL;
     23import java.text.SimpleDateFormat;
    2224import java.util.ArrayList;
    2325import java.util.Collections;
    2426import java.util.Comparator;
     27import java.util.Date;
    2528import java.util.HashMap;
    2629import java.util.LinkedList;
    2730import java.util.List;
    2831import java.util.Map;
     32import java.util.Map.Entry;
    2933import java.util.Scanner;
    3034import java.util.concurrent.Callable;
     
    3438import javax.swing.AbstractAction;
    3539import javax.swing.Action;
     40import javax.swing.BorderFactory;
    3641import javax.swing.JCheckBoxMenuItem;
     42import javax.swing.JLabel;
    3743import javax.swing.JMenuItem;
    3844import javax.swing.JOptionPane;
     45import javax.swing.JPanel;
    3946import javax.swing.JPopupMenu;
     47import javax.swing.JTextField;
    4048
    4149import org.openstreetmap.gui.jmapviewer.AttributionSupport;
     
    8088import org.openstreetmap.josm.io.UTFInputStreamReader;
    8189import org.openstreetmap.josm.tools.CheckParameterUtil;
     90import org.openstreetmap.josm.tools.GBC;
    8291import org.openstreetmap.josm.tools.Utils;
    8392import org.xml.sax.InputSource;
     
    533542        tileOptionMenu.add(new JMenuItem(new AbstractAction(
    534543                tr("Show Tile Info")) {
     544            private String getSizeString(int size) {
     545                StringBuilder ret = new StringBuilder();
     546                return ret.append(size).append("x").append(size).toString();
     547            }
     548
     549            private JTextField createTextField(String text) {
     550                JTextField ret = new JTextField(text);
     551                ret.setEditable(false);
     552                ret.setBorder(BorderFactory.createEmptyBorder());
     553                return ret;
     554            }
    535555            @Override
    536556            public void actionPerformed(ActionEvent ae) {
    537557                if (clickedTile != null) {
    538558                    ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Tile Info"), new String[]{tr("OK")});
     559                    JPanel panel = new JPanel(new GridBagLayout());
     560                    Rectangle displaySize = tileToRect(clickedTile);
     561                    String url = "";
     562                    try {
     563                        url = clickedTile.getUrl();
     564                    } catch (IOException e) {
     565                        // silence exceptions
     566                    }
     567
     568                    String[][] content = {
     569                            {"Tile name", clickedTile.getKey()},
     570                            {"Tile url", url},
     571                            {"Tile size", getSizeString(clickedTile.getTileSource().getTileSize()) },
     572                            {"Tile display size", new StringBuilder().append(displaySize.width).append("x").append(displaySize.height).toString()},
     573                    };
     574
     575                    for (String[] entry: content) {
     576                        panel.add(new JLabel(tr(entry[0]) + ":"), GBC.std());
     577                        panel.add(GBC.glue(5,0), GBC.std());
     578                        panel.add(createTextField(entry[1]), GBC.eol().fill(GBC.HORIZONTAL));
     579                    }
     580
     581                    for (Entry<String, String> e: clickedTile.getMetadata().entrySet()) {
     582                        panel.add(new JLabel(tr("Metadata ") + tr(e.getKey()) + ":"), GBC.std());
     583                        panel.add(GBC.glue(5,0), GBC.std());
     584                        String value = e.getValue();
     585                        if ("lastModification".equals(e.getKey()) || "expirationTime".equals(e.getKey())) {
     586                            value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Long.parseLong(value)));
     587                        }
     588                        panel.add(createTextField(value), GBC.eol().fill(GBC.HORIZONTAL));
     589
     590                    }
    539591                    ed.setIcon(JOptionPane.INFORMATION_MESSAGE);
    540                     StringBuilder content = new StringBuilder();
    541                     content.append("Tile name: ").append(clickedTile.getKey()).append('\n');
    542                     try {
    543                         content.append("Tile url: ").append(clickedTile.getUrl()).append('\n');
    544                     } catch (IOException e) {
    545                     }
    546                     content.append("Tile size: ").append(clickedTile.getTileSource().getTileSize()).append('x').append(clickedTile.getTileSource().getTileSize()).append('\n');
    547                     Rectangle displaySize = tileToRect(clickedTile);
    548                     content.append("Tile display size: ").append(displaySize.width).append('x').append(displaySize.height).append('\n');
    549                     ed.setContent(content.toString());
     592                    ed.setContent(panel);
    550593                    ed.showDialog();
    551594                }
Note: See TracChangeset for help on using the changeset viewer.