added license url to providers table

pull/1/head
Beata Tautan-Jancso 2020-07-12 19:27:41 +03:00
rodzic 2c8c3adef2
commit 93938afc77
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 3BD7B12B6C59A584
3 zmienionych plików z 63 dodań i 9 usunięć

Wyświetl plik

@ -2,7 +2,6 @@
package org.openstreetmap.josm.plugins.mapwithai.gui.preferences.mapwithai; package org.openstreetmap.josm.plugins.mapwithai.gui.preferences.mapwithai;
import static org.openstreetmap.josm.tools.I18n.tr; import static org.openstreetmap.josm.tools.I18n.tr;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -11,9 +10,7 @@ import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAICategory; import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAICategory;
import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAIInfo; import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAIInfo;
import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAILayerInfo; import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAILayerInfo;
@ -31,7 +28,7 @@ class MapWithAIDefaultLayerTableModel extends DefaultTableModel {
*/ */
public MapWithAIDefaultLayerTableModel() { public MapWithAIDefaultLayerTableModel() {
setColumnIdentifiers(new String[] { "", tr("MapWithAI Data Source Name (Default)"), tr("Type"), setColumnIdentifiers(new String[] { "", tr("MapWithAI Data Source Name (Default)"), tr("Type"),
tr("MapWithAI URL (Default)"), tr("Provider") }); tr("MapWithAI URL (Default)"), tr("Provider"), tr("License") });
columnTypes = Stream.of(MapWithAICategory.class, MapWithAIInfo.class, List.class, String.class, String.class) columnTypes = Stream.of(MapWithAICategory.class, MapWithAIInfo.class, List.class, String.class, String.class)
.collect(Collectors.toCollection(ArrayList::new)); .collect(Collectors.toCollection(ArrayList::new));
columnDataRetrieval = new ArrayList<>(); columnDataRetrieval = new ArrayList<>();
@ -46,6 +43,7 @@ class MapWithAIDefaultLayerTableModel extends DefaultTableModel {
}); });
columnDataRetrieval.add(MapWithAIInfo::getUrl); columnDataRetrieval.add(MapWithAIInfo::getUrl);
columnDataRetrieval.add(i -> i.getAttributionText(0, null, null)); columnDataRetrieval.add(i -> i.getAttributionText(0, null, null));
columnDataRetrieval.add(info -> Optional.ofNullable(info.getTermsOfUseURL()).orElse(""));
} }
/** /**

Wyświetl plik

@ -3,12 +3,12 @@ package org.openstreetmap.josm.plugins.mapwithai.gui.preferences.mapwithai;
import static org.openstreetmap.josm.tools.I18n.marktr; import static org.openstreetmap.josm.tools.I18n.marktr;
import static org.openstreetmap.josm.tools.I18n.tr; import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.GridBagConstraints; import java.awt.GridBagConstraints;
import java.awt.GridBagLayout; import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -25,7 +25,6 @@ import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Box; import javax.swing.Box;
import javax.swing.JButton; import javax.swing.JButton;
@ -41,7 +40,6 @@ import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel; import javax.swing.table.TableColumnModel;
import org.openstreetmap.gui.jmapviewer.Coordinate; import org.openstreetmap.gui.jmapviewer.Coordinate;
import org.openstreetmap.gui.jmapviewer.MapPolygonImpl; import org.openstreetmap.gui.jmapviewer.MapPolygonImpl;
import org.openstreetmap.gui.jmapviewer.MapRectangleImpl; import org.openstreetmap.gui.jmapviewer.MapRectangleImpl;
@ -71,6 +69,7 @@ import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
import org.openstreetmap.josm.tools.ImageResource; import org.openstreetmap.josm.tools.ImageResource;
import org.openstreetmap.josm.tools.ListenerList; import org.openstreetmap.josm.tools.ListenerList;
import org.openstreetmap.josm.tools.Logging; import org.openstreetmap.josm.tools.Logging;
import org.openstreetmap.josm.tools.OpenBrowser;
/** /**
* A panel displaying imagery providers. Largely duplicates * A panel displaying imagery providers. Largely duplicates
@ -79,6 +78,7 @@ import org.openstreetmap.josm.tools.Logging;
* @since 15115 (extracted from ImageryPreferences) * @since 15115 (extracted from ImageryPreferences)
*/ */
public class MapWithAIProvidersPanel extends JPanel { public class MapWithAIProvidersPanel extends JPanel {
public enum Options { public enum Options {
/** Hide the active table */ /** Hide the active table */
SHOW_ACTIVE SHOW_ACTIVE
@ -125,6 +125,7 @@ public class MapWithAIProvidersPanel extends JPanel {
private final Options[] options; private final Options[] options;
protected interface AreaListener { protected interface AreaListener {
void updateArea(Bounds area); void updateArea(Bounds area);
} }
@ -134,6 +135,7 @@ public class MapWithAIProvidersPanel extends JPanel {
* @param <T> type of information * @param <T> type of information
*/ */
private static class MapWithAITableCellRenderer<T> extends DefaultTableCellRenderer implements AreaListener { private static class MapWithAITableCellRenderer<T> extends DefaultTableCellRenderer implements AreaListener {
private static final NamedColorProperty IMAGERY_BACKGROUND_COLOR = new NamedColorProperty( private static final NamedColorProperty IMAGERY_BACKGROUND_COLOR = new NamedColorProperty(
marktr("MapWithAI Background: Default"), new Color(200, 255, 200)); marktr("MapWithAI Background: Default"), new Color(200, 255, 200));
private static final NamedColorProperty MAPWITHAI_AREA_BACKGROUND_COLOR = new NamedColorProperty( private static final NamedColorProperty MAPWITHAI_AREA_BACKGROUND_COLOR = new NamedColorProperty(
@ -212,6 +214,19 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
} }
/**
* class to render the license/terms of use URL of MapWithAI source
*/
private static class MapWithAILicenseTableCellRenderer extends MapWithAITableCellRenderer<String> {
MapWithAILicenseTableCellRenderer() {
super(s -> !s.isEmpty() ? "<html><a href=\"" + s + "\"> License </a>" : "",
u -> MapWithAILayerInfo.getInstance().getAllDefaultLayers().stream()
.filter(i -> u.equals(i.getUrl())).findFirst().orElse(null),
u -> u, null, true);
}
}
/** /**
* class to render the URL information of MapWithAI source * class to render the URL information of MapWithAI source
* *
@ -269,6 +284,7 @@ public class MapWithAIProvidersPanel extends JPanel {
*/ */
private static class MapWithAINameTableCellRenderer private static class MapWithAINameTableCellRenderer
extends MapWithAIProvidersPanel.MapWithAITableCellRenderer<MapWithAIInfo> { extends MapWithAIProvidersPanel.MapWithAITableCellRenderer<MapWithAIInfo> {
private static final long serialVersionUID = 6669934435517244629L; private static final long serialVersionUID = 6669934435517244629L;
MapWithAINameTableCellRenderer(boolean showActive) { MapWithAINameTableCellRenderer(boolean showActive) {
@ -290,6 +306,7 @@ public class MapWithAIProvidersPanel extends JPanel {
boolean showActive = Stream.of(options).anyMatch(Options.SHOW_ACTIVE::equals); boolean showActive = Stream.of(options).anyMatch(Options.SHOW_ACTIVE::equals);
activeTable = new JTable(activeModel) { activeTable = new JTable(activeModel) {
private static final long serialVersionUID = -6136421378119093719L; private static final long serialVersionUID = -6136421378119093719L;
@Override @Override
@ -307,6 +324,21 @@ public class MapWithAIProvidersPanel extends JPanel {
defaultTable = new JTable(defaultModel); defaultTable = new JTable(defaultModel);
defaultTable.setAutoCreateRowSorter(true); defaultTable.setAutoCreateRowSorter(true);
defaultTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = defaultTable.rowAtPoint(new Point(e.getX(), e.getY()));
int col = defaultTable.columnAtPoint(new Point(e.getX(), e.getY()));
if (col == defaultTable.getColumnCount() - 1) {
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(row);
if (info.getTermsOfUseURL() != null) {
OpenBrowser.displayUrl(info.getTermsOfUseURL());
}
}
}
});
defaultFilter = new FilterField().filter(defaultTable, defaultModel); defaultFilter = new FilterField().filter(defaultTable, defaultModel);
defaultModel.addTableModelListener(e -> activeTable.repaint()); defaultModel.addTableModelListener(e -> activeTable.repaint());
@ -342,6 +374,7 @@ public class MapWithAIProvidersPanel extends JPanel {
defaultMap = new SlippyMapBBoxChooser(); defaultMap = new SlippyMapBBoxChooser();
defaultMap.setTileSource(SlippyMapBBoxChooser.DefaultOsmTileSourceProvider.get()); // for attribution defaultMap.setTileSource(SlippyMapBBoxChooser.DefaultOsmTileSourceProvider.get()); // for attribution
defaultMap.addMouseListener(new MouseAdapter() { defaultMap.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) { if (e.getButton() == MouseEvent.BUTTON1) {
@ -422,6 +455,8 @@ public class MapWithAIProvidersPanel extends JPanel {
int tenXWidth = defaultTable.getFontMetrics(defaultTable.getFont()).stringWidth("XXXXXXXXXX"); int tenXWidth = defaultTable.getFontMetrics(defaultTable.getFont()).stringWidth("XXXXXXXXXX");
TableColumnModel mod = defaultTable.getColumnModel(); TableColumnModel mod = defaultTable.getColumnModel();
int urlWidth = (showActive ? 3 : 0) * tenXWidth; int urlWidth = (showActive ? 3 : 0) * tenXWidth;
mod.getColumn(5).setPreferredWidth((showActive ? 2 : 0) * tenXWidth);
mod.getColumn(5).setCellRenderer(new MapWithAILicenseTableCellRenderer());
mod.getColumn(4).setPreferredWidth((showActive ? 2 : 0) * tenXWidth); mod.getColumn(4).setPreferredWidth((showActive ? 2 : 0) * tenXWidth);
mod.getColumn(4).setCellRenderer(new MapWithAIProviderTableCellRenderer()); mod.getColumn(4).setCellRenderer(new MapWithAIProviderTableCellRenderer());
mod.getColumn(3).setPreferredWidth(urlWidth); mod.getColumn(3).setPreferredWidth(urlWidth);
@ -441,10 +476,26 @@ public class MapWithAIProvidersPanel extends JPanel {
defaultTable.removeColumn(mod.getColumn(4)); defaultTable.removeColumn(mod.getColumn(4));
defaultTable.removeColumn(mod.getColumn(2)); defaultTable.removeColumn(mod.getColumn(2));
areaListeners.addListener(defaultUrlTableCellRenderer); areaListeners.addListener(defaultUrlTableCellRenderer);
} else { } else {
defaultTable.removeColumn(mod.getColumn(3)); defaultTable.removeColumn(mod.getColumn(3));
areaListeners.addListener(defaultNameTableCellRenderer); areaListeners.addListener(defaultNameTableCellRenderer);
} }
defaultTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = defaultTable.rowAtPoint(new Point(e.getX(), e.getY()));
int col = defaultTable.columnAtPoint(new Point(e.getX(), e.getY()));
if (col == defaultTable.getColumnCount() - 1) {
MapWithAIInfo info = MapWithAIDefaultLayerTableModel.getRow(row);
if (info.getTermsOfUseURL() != null) {
OpenBrowser.displayUrl(info.getTermsOfUseURL());
}
}
}
});
} }
/** /**
@ -464,6 +515,7 @@ public class MapWithAIProvidersPanel extends JPanel {
// Listener of default providers list selection // Listener of default providers list selection
private final class DefListSelectionListener implements ListSelectionListener { private final class DefListSelectionListener implements ListSelectionListener {
// The current drawn rectangles and polygons // The current drawn rectangles and polygons
private final Map<Integer, MapRectangle> mapRectangles; private final Map<Integer, MapRectangle> mapRectangles;
private final Map<Integer, List<MapPolygon>> mapPolygons; private final Map<Integer, List<MapPolygon>> mapPolygons;
@ -568,6 +620,7 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
private class NewEntryAction extends AbstractAction { private class NewEntryAction extends AbstractAction {
private static final long serialVersionUID = 7451336680150337942L; private static final long serialVersionUID = 7451336680150337942L;
NewEntryAction(MapWithAIType type) { NewEntryAction(MapWithAIType type) {
@ -609,6 +662,7 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
private class EditEntryAction extends AbstractAction implements ListSelectionListener { private class EditEntryAction extends AbstractAction implements ListSelectionListener {
private static final long serialVersionUID = -1682304557691078801L; private static final long serialVersionUID = -1682304557691078801L;
/** /**
@ -645,6 +699,7 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
private class RemoveEntryAction extends AbstractAction implements ListSelectionListener { private class RemoveEntryAction extends AbstractAction implements ListSelectionListener {
private static final long serialVersionUID = 2666450386256004180L; private static final long serialVersionUID = 2666450386256004180L;
/** /**
@ -676,6 +731,7 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
private class ActivateAction extends AbstractAction implements ListSelectionListener, LayerChangeListener { private class ActivateAction extends AbstractAction implements ListSelectionListener, LayerChangeListener {
private static final long serialVersionUID = -452335751201424801L; private static final long serialVersionUID = -452335751201424801L;
private final transient ImageResource activate; private final transient ImageResource activate;
private final transient ImageResource deactivate; private final transient ImageResource deactivate;
@ -758,6 +814,7 @@ public class MapWithAIProvidersPanel extends JPanel {
} }
private class ReloadAction extends AbstractAction { private class ReloadAction extends AbstractAction {
private static final long serialVersionUID = 7801339998423585685L; private static final long serialVersionUID = 7801339998423585685L;
/** /**

Wyświetl plik

@ -12,7 +12,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.json.Json; import javax.json.Json;
import javax.json.JsonArray; import javax.json.JsonArray;
import javax.json.JsonNumber; import javax.json.JsonNumber;
@ -21,7 +20,6 @@ import javax.json.JsonReader;
import javax.json.JsonString; import javax.json.JsonString;
import javax.json.JsonStructure; import javax.json.JsonStructure;
import javax.json.JsonValue; import javax.json.JsonValue;
import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryBounds; import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryBounds;
import org.openstreetmap.josm.io.CachedFile; import org.openstreetmap.josm.io.CachedFile;
import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAICategory; import org.openstreetmap.josm.plugins.mapwithai.data.mapwithai.MapWithAICategory;
@ -160,6 +158,7 @@ public class ESRISourceReader implements Closeable {
sourceTag.append(feature.getString("name", newInfo.getId())); sourceTag.append(feature.getString("name", newInfo.getId()));
newInfo.setSource(sourceTag.toString()); newInfo.setSource(sourceTag.toString());
} }
newInfo.setTermsOfUseURL("https://wiki.openstreetmap.org/wiki/Esri/ArcGIS_Datasets#License");
return (newInfo); return (newInfo);
} }