public class OsmDataLayer extends AbstractModifiableLayer implements DataSetListenerAdapter.Listener, SelectionChangedListener
| Modifier and Type | Class and Description |
|---|---|
static interface |
OsmDataLayer.CommandQueueListener |
private class |
OsmDataLayer.ConsistencyTestAction |
class |
OsmDataLayer.ConvertToGpxLayerAction
Action that converts this OSM layer to a GPX layer.
|
static class |
OsmDataLayer.DataCountVisitor |
static interface |
OsmDataLayer.LayerStateChangeListener
Listener called when a state of this layer has changed.
|
Layer.LayerAction, Layer.LayerGpxExportAction, Layer.LayerSaveAction, Layer.LayerSaveAsAction, Layer.MultiLayerAction, Layer.SeparatorLayerAction| Modifier and Type | Field and Description |
|---|---|
private ConflictCollection |
conflicts
the collection of conflicts detected in this layer
|
DataSet |
data
The data behind this layer.
|
private static int |
dataLayerCounter
the global counter for created data layers
|
private static java.awt.TexturePaint |
hatched
a paint texture for non-downloaded area
|
private int |
highlightUpdateCount |
private boolean |
isChanged |
private java.util.concurrent.CopyOnWriteArrayList<OsmDataLayer.LayerStateChangeListener> |
layerStateChangeListeners |
static java.lang.String |
REQUIRES_SAVE_TO_DISK_PROP
Property used to know if this layer has to be saved on disk
|
static java.lang.String |
REQUIRES_UPLOAD_TO_SERVER_PROP
Property used to know if this layer has to be uploaded
|
private boolean |
requiresSaveToFile |
private boolean |
requiresUploadToServer |
java.util.List<TestError> |
validationErrors
List of validation errors in this layer.
|
ICON_SIZE, NAME_PROP, OPACITY_PROP, propertyChangeSupport, VISIBLE_PROP| Constructor and Description |
|---|
OsmDataLayer(DataSet data,
java.lang.String name,
java.io.File associatedFile)
Construct a new
OsmDataLayer. |
| Modifier and Type | Method and Description |
|---|---|
private static void |
addDoubleIfPresent(WayPoint wpt,
OsmPrimitive p,
java.lang.String gpxKey,
java.lang.String... osmKeys) |
private static void |
addIntegerIfPresent(WayPoint wpt,
OsmPrimitive p,
java.lang.String gpxKey,
java.lang.String... osmKeys) |
void |
addLayerStateChangeListener(OsmDataLayer.LayerStateChangeListener listener)
Adds a layer state change listener
|
private static void |
addStringIfPresent(WayPoint wpt,
OsmPrimitive p,
java.lang.String gpxKey,
java.lang.String... osmKeys) |
boolean |
checkSaveConditions()
Checks whether it is ok to launch a save (whether we have data, there is no conflict etc.)
|
void |
cleanupAfterUpload(java.util.Collection<IPrimitive> processed)
Clean out the data behind the layer.
|
boolean |
containsPoint(LatLon coor)
Determines if this layer contains data at the given coordinate.
|
java.io.File |
createAndOpenSaveFileChooser()
Creates a new "Save" dialog for this layer and makes it visible.
When the user has chosen a file, checks the file extension, and confirms overwrite if needed. |
static void |
createHatchTexture()
Initialize the hatch pattern used to paint the non-downloaded area
|
static java.lang.String |
createNewName()
Replies a new unique name for a data layer
|
AbstractIOTask |
createUploadTask(ProgressMonitor monitor)
Creates a new
AbstractIOTask for uploading data. |
void |
destroy()
Called, when the layer is removed from the mapview and is going to be
destroyed.
|
static java.awt.Color |
getBackgroundColor()
Replies background color for downloaded areas.
|
protected javax.swing.Icon |
getBaseIcon() |
ConflictCollection |
getConflicts()
Replies the set of conflicts currently managed in this layer.
|
javax.swing.Icon |
getIcon()
TODO: @return Return a dynamic drawn icon of the map data.
|
java.lang.Object |
getInfoComponent() |
javax.swing.Action[] |
getMenuEntries()
Returns list of actions.
|
static java.awt.Color |
getOutsideColor()
Replies background color for non-downloaded areas.
|
java.lang.String |
getToolTipText() |
AbstractUploadDialog |
getUploadDialog()
Returns the upload dialog for this layer.
|
boolean |
isChanged()
Check changed status of layer
|
private boolean |
isDataSetEmpty()
Check the data set if it would be empty on save.
|
boolean |
isMergable(Layer other) |
boolean |
isModified()
Determines if data managed by this layer has been modified.
|
boolean |
isSavable()
Replies the savable state of this layer (i.e if it can be saved through a "File->Save" dialog).
|
boolean |
isUploadDiscouraged()
Determines if upload of data managed by this layer is discouraged.
|
void |
mergeFrom(DataSet from)
merges the primitives in dataset
from into the dataset of
this layer |
void |
mergeFrom(DataSet from,
ProgressMonitor progressMonitor)
merges the primitives in dataset
from into the dataset of
this layer |
void |
mergeFrom(Layer from)
Merges the given layer into this layer.
|
private static void |
nodesToGpxData(java.util.Collection<Node> nodes,
GpxData gpxData,
java.util.HashSet<Node> doneNodes) |
void |
onPostDownloadFromServer()
Actions run after data has been downloaded to this layer.
|
void |
onPostLoadFromFile()
Initializes the layer after a successful load of data from a file
|
void |
onPostSaveToFile()
Initializes the layer after a successful save of data to a file.
|
void |
onPostUploadToServer()
Initializes the layer after a successful upload to the server.
|
void |
paint(java.awt.Graphics2D g,
MapView mv,
Bounds box)
Draw all primitives in this layer but do not draw modified ones (they
are drawn by the edit layer).
|
void |
processDatasetEvent(AbstractDatasetChangedEvent event) |
void |
projectionChanged(Projection oldValue,
Projection newValue) |
void |
removeLayerPropertyChangeListener(OsmDataLayer.LayerStateChangeListener listener)
Removes a layer property change listener
|
boolean |
requiresSaveToFile()
Determines if the data managed by this layer needs to be saved to
a file.
|
boolean |
requiresUploadToServer()
Determines if the data managed by this layer needs to be uploaded to
the server because it contains modified data.
|
void |
selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
Informs the listener that the selection in the dataset has changed.
|
protected void |
setRequiresSaveToFile(boolean newValue) |
protected void |
setRequiresUploadToServer(boolean newValue) |
void |
setUploadDiscouraged(boolean uploadDiscouraged)
Sets the "discouraged upload" flag.
|
GpxData |
toGpxData()
Converts OSM data behind this layer to GPX data.
|
static GpxData |
toGpxData(DataSet data,
java.io.File file)
Converts given OSM dataset to GPX data.
|
void |
visitBoundingBox(BoundingXYVisitor v) |
private static void |
waysToGpxData(java.util.Collection<Way> ways,
GpxData gpxData,
java.util.HashSet<Node> doneNodes) |
addPropertyChangeListener, fireOpacityChanged, fireVisibleChanged, getAssociatedFile, getColor, getName, getOpacity, hookUpMapView, isBackgroundLayer, isInfoResizable, isProjectionSupported, isVisible, nameSupportedProjections, removePropertyChangeListener, setAssociatedFile, setBackgroundLayer, setName, setOpacity, setVisible, toggleVisiblepublic static final java.lang.String REQUIRES_SAVE_TO_DISK_PROP
public static final java.lang.String REQUIRES_UPLOAD_TO_SERVER_PROP
private boolean requiresSaveToFile
private boolean requiresUploadToServer
private boolean isChanged
private int highlightUpdateCount
public final java.util.List<TestError> validationErrors
private static int dataLayerCounter
private final java.util.concurrent.CopyOnWriteArrayList<OsmDataLayer.LayerStateChangeListener> layerStateChangeListeners
private ConflictCollection conflicts
private static java.awt.TexturePaint hatched
public OsmDataLayer(DataSet data, java.lang.String name, java.io.File associatedFile)
OsmDataLayer.data - OSM dataname - Layer nameassociatedFile - Associated .osm file (can be null)protected void setRequiresSaveToFile(boolean newValue)
protected void setRequiresUploadToServer(boolean newValue)
public static java.lang.String createNewName()
public void addLayerStateChangeListener(OsmDataLayer.LayerStateChangeListener listener)
listener - the listener. Ignored if null or already registered.public void removeLayerPropertyChangeListener(OsmDataLayer.LayerStateChangeListener listener)
listener - the listener. Ignored if null or already registered.public static java.awt.Color getBackgroundColor()
public static java.awt.Color getOutsideColor()
public static void createHatchTexture()
protected javax.swing.Icon getBaseIcon()
public javax.swing.Icon getIcon()
public void paint(java.awt.Graphics2D g, MapView mv, Bounds box)
paint in interface MapViewPaintablepaint in class Layermv - The object that can translate GeoPoints to screen coordinates.public java.lang.String getToolTipText()
getToolTipText in class Layerpublic void mergeFrom(Layer from)
Layerpublic void mergeFrom(DataSet from)
from into the dataset of
this layerfrom - the source data setpublic void mergeFrom(DataSet from, ProgressMonitor progressMonitor)
from into the dataset of
this layerfrom - the source data setprogressMonitor - the progress monitor, can be nullpublic boolean isMergable(Layer other)
isMergable in class Layerother - The other layer that is tested to be mergable with this.public void visitBoundingBox(BoundingXYVisitor v)
visitBoundingBox in class Layerpublic void cleanupAfterUpload(java.util.Collection<IPrimitive> processed)
processed - A list of all objects that were actually uploaded.
May be null, which means nothing has been uploadedpublic java.lang.Object getInfoComponent()
getInfoComponent in class Layerpublic javax.swing.Action[] getMenuEntries()
LayergetMenuEntries in class Layerpublic static GpxData toGpxData(DataSet data, java.io.File file)
data - OSM datasetfile - output .gpx fileprivate static void waysToGpxData(java.util.Collection<Way> ways, GpxData gpxData, java.util.HashSet<Node> doneNodes)
private static void nodesToGpxData(java.util.Collection<Node> nodes, GpxData gpxData, java.util.HashSet<Node> doneNodes)
private static void addIntegerIfPresent(WayPoint wpt, OsmPrimitive p, java.lang.String gpxKey, java.lang.String... osmKeys)
private static void addDoubleIfPresent(WayPoint wpt, OsmPrimitive p, java.lang.String gpxKey, java.lang.String... osmKeys)
private static void addStringIfPresent(WayPoint wpt, OsmPrimitive p, java.lang.String gpxKey, java.lang.String... osmKeys)
public GpxData toGpxData()
public boolean containsPoint(LatLon coor)
coor - the coordinatetrue if data sources bounding boxes contain coorpublic ConflictCollection getConflicts()
public boolean requiresUploadToServer()
AbstractModifiableLayerrequiresUploadToServer in class AbstractModifiableLayerpublic boolean requiresSaveToFile()
AbstractModifiableLayerrequiresSaveToFile in class AbstractModifiableLayerpublic void onPostLoadFromFile()
LayeronPostLoadFromFile in class Layerpublic void onPostDownloadFromServer()
public boolean isChanged()
Layerpublic void onPostSaveToFile()
AbstractModifiableLayeronPostSaveToFile in class AbstractModifiableLayerpublic void onPostUploadToServer()
AbstractModifiableLayeronPostUploadToServer in class AbstractModifiableLayerpublic void destroy()
Layerdestroy in interface Destroyabledestroy in class Layerpublic void processDatasetEvent(AbstractDatasetChangedEvent event)
processDatasetEvent in interface DataSetListenerAdapter.Listenerpublic void selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
SelectionChangedListenerselectionChanged in interface SelectionChangedListenernewSelection - The new selection.public void projectionChanged(Projection oldValue, Projection newValue)
projectionChanged in interface ProjectionChangeListenerprojectionChanged in class Layerpublic final boolean isUploadDiscouraged()
AbstractModifiableLayerisUploadDiscouraged in class AbstractModifiableLayerpublic final void setUploadDiscouraged(boolean uploadDiscouraged)
uploadDiscouraged - true if upload of data managed by this layer is discouraged. This feature allows to use "private" data layers.public final boolean isModified()
AbstractModifiableLayerisModified in class AbstractModifiableLayerpublic boolean isSavable()
Layerpublic boolean checkSaveConditions()
LayercheckSaveConditions in class Layertrue, if it is safe to save.private boolean isDataSetEmpty()
true, if a save result in an empty data set.public java.io.File createAndOpenSaveFileChooser()
LayercreateAndOpenSaveFileChooser in class LayerFileSaveActionBase.createAndOpenSaveFileChooser(java.lang.String, org.openstreetmap.josm.actions.ExtensionFileFilter)public AbstractIOTask createUploadTask(ProgressMonitor monitor)
AbstractModifiableLayerAbstractIOTask for uploading data.createUploadTask in class AbstractModifiableLayermonitor - The progress monitorAbstractIOTask for uploading data, or null if not applicablepublic AbstractUploadDialog getUploadDialog()
AbstractModifiableLayergetUploadDialog in class AbstractModifiableLayernull if not applicable