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}