001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer;
003
004import org.openstreetmap.josm.data.osm.Lockable;
005import org.openstreetmap.josm.gui.io.AbstractIOTask;
006import org.openstreetmap.josm.gui.io.AbstractUploadDialog;
007import org.openstreetmap.josm.gui.progress.ProgressMonitor;
008
009/**
010 * A modifiable layer.
011 * @since 7358
012 */
013public abstract class AbstractModifiableLayer extends Layer implements DownloadFromServer, UploadToServer, SaveToFile, Lockable {
014
015    /**
016     * Constructs a new {@code ModifiableLayer}.
017     * @param name Layer name
018     */
019    public AbstractModifiableLayer(String name) {
020        super(name);
021    }
022
023    @Override
024    public boolean isDownloadable() {
025        // Override if needed
026        return false;
027    }
028
029    @Override
030    public boolean isUploadable() {
031        // Override if needed
032        return false;
033    }
034
035    @Override
036    public boolean requiresUploadToServer() {
037        // Override if needed
038        return false;
039    }
040
041    @Override
042    public boolean requiresSaveToFile() {
043        // Override if needed
044        return false;
045    }
046
047    @Override
048    public boolean isUploadDiscouraged() {
049        // Override if needed
050        return false;
051    }
052
053    /**
054     * Determines if data managed by this layer has been modified.
055     * @return true if data has been modified; false, otherwise
056     */
057    public abstract boolean isModified();
058
059    @Override
060    public void onPostSaveToFile() {
061        // Override if needed
062    }
063
064    /**
065     * Initializes the layer after a successful upload to the server.
066     */
067    @Override
068    public void onPostUploadToServer() {
069        // Override if needed
070    }
071
072    @Override
073    public AbstractIOTask createUploadTask(ProgressMonitor monitor) {
074        // Override if needed
075        return null;
076    }
077
078    @Override
079    public AbstractUploadDialog getUploadDialog() {
080        // Override if needed
081        return null;
082    }
083
084    @Override
085    public boolean isUploadInProgress() {
086        // Override if needed
087        return false;
088    }
089
090    @Override
091    public void lock() {
092        // Override if needed
093    }
094
095    @Override
096    public void unlock() {
097        // Override if needed
098    }
099
100    @Override
101    public boolean isLocked() {
102        // Override if needed
103        return false;
104    }
105}