Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CacheControl.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CacheControl.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CacheControl.java	(revision 18207)
@@ -21,6 +21,9 @@
 import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 
 public class CacheControl implements Runnable {
+    
+    public static final String cLambertCC9Z = "CC";
 
     public class ObjectOutputStreamAppend extends ObjectOutputStream {
@@ -81,5 +84,8 @@
     public boolean loadCacheIfExist() {
         try {
-            File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + String.valueOf(wmsLayer.lambertZone+1));
+            String extension = String.valueOf((wmsLayer.getLambertZone() + 1));
+            if (Main.proj instanceof LambertCC9Zones)
+                extension = cLambertCC9Z + extension;
+            File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + extension);
             if (file.exists()) {
                 JOptionPane pane = new JOptionPane(
@@ -96,5 +102,5 @@
 
                 if (reply == JOptionPane.OK_OPTION) {
-                    return loadCache(file, wmsLayer.lambertZone);
+                    return loadCache(file, wmsLayer.getLambertZone());
                 } else
                     file.delete();
@@ -108,5 +114,8 @@
     public void deleteCacheFile() {
         try {
-            File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + String.valueOf(wmsLayer.lambertZone+1));
+            String extension = String.valueOf((wmsLayer.getLambertZone() + 1));
+            if (Main.proj instanceof LambertCC9Zones)
+                extension = cLambertCC9Z + extension;
+            File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + extension);
             if (file.exists())
                 file.delete();
@@ -155,5 +164,8 @@
             imagesLock.unlock();
             if (images != null && !images.isEmpty()) {
-                File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + String.valueOf((wmsLayer.lambertZone + 1)));
+                String extension = String.valueOf((wmsLayer.getLambertZone() + 1));
+                if (Main.proj instanceof LambertCC9Zones)
+                    extension = cLambertCC9Z + extension;
+                File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + extension);
                 try {
                     if (file.exists()) {
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastreGrabber.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastreGrabber.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastreGrabber.java	(revision 18207)
@@ -74,4 +74,5 @@
         //str += "&width=800&height=600"; // maximum allowed by wms server
         str += "&width=1000&height=800"; // maximum allowed by wms server
+        //str += "&exception=application/vnd.ogc.se_inimage"; // used by normal client but not required
         str += "&styles=LS3_90,LS2_90,LS1_90,PARCELLE_90,NUMERO_90,PT3_90,PT2_90,PT1_90,LIEUDIT_90";
         str += ",SUBSECTION_90";
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 18207)
@@ -7,5 +7,4 @@
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
-import java.util.LinkedList;
 
 import javax.swing.JCheckBoxMenuItem;
@@ -75,8 +74,9 @@
  * 1.3 23-Aug-2009 - improve georeferencing action cancellation
  *                 - fixed bug of raster image loaded from cache not working on Java1.6
- *                 - improve mouse click bounce detection during georeferencing process 
+ *                 - improve mouse click bounce detection during georeferencing process
+ * 1.4 17-Oct-2009 - add support for new Lambert CC 9 Zones projection 
  */
 public class CadastrePlugin extends Plugin {
-    static String VERSION = "1.3";
+    static String VERSION = "1.4";
 
     static JMenu cadastreJMenu;
@@ -121,10 +121,9 @@
 
         refreshConfiguration();
-        refreshMenu();
 
         UploadAction.registerUploadHook(new CheckSourceUploadHook());
     }
 
-    public void refreshMenu() throws Exception {
+    public static void refreshMenu() {
         MainMenu menu = Main.main.menu;
 
@@ -207,4 +206,6 @@
         } else
             System.out.println("shortcut F11 already redefined; do not change");
+
+        refreshMenu();
     }
 
@@ -214,10 +215,11 @@
     }
 
-    private void setEnabledAll(boolean isEnabled) {
+    private static void setEnabledAll(boolean isEnabled) {
+        boolean isLambertCC9Zones = Main.proj instanceof LambertCC9Zones;
         for (int i = 0; i < cadastreJMenu.getItemCount(); i++) {
             JMenuItem item = cadastreJMenu.getItem(i);
             if (item != null)
-                if (item.getText().equals(MenuActionGrab.name) ||
-                    item.getText().equals(MenuActionGrabPlanImage.name) /* ||
+                if (item.getText().equals(MenuActionGrabPlanImage.name) /*||
+                    item.getText().equals(MenuActionGrab.name) ||
                     item.getText().equals(MenuActionBoundaries.name) ||
                     item.getText().equals(MenuActionBuildings.name)*/) {
@@ -239,4 +241,5 @@
                 setEnabledAll(false);
                 Lambert.layoutZone = -1;
+                LambertCC9Zones.layoutZone = -1;
             }
         }
@@ -248,5 +251,6 @@
             || Main.proj.toString().equals(new UTM_20N_Guadeloupe_Ste_Anne().toString())
             || Main.proj.toString().equals(new UTM_20N_Martinique_Fort_Desaix().toString())
-            || Main.proj.toString().equals(new GaussLaborde_Reunion().toString());
+            || Main.proj.toString().equals(new GaussLaborde_Reunion().toString())
+            || Main.proj.toString().equals(new LambertCC9Zones().toString());
     }
 
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java	(revision 18207)
@@ -240,4 +240,5 @@
         CacheControl.cacheEnabled = enableCache.isSelected();
         CadastrePlugin.refreshConfiguration();
+        CadastrePlugin.refreshMenu();
 
         return false;
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/DownloadWMSVectorImage.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/DownloadWMSVectorImage.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/DownloadWMSVectorImage.java	(revision 18207)
@@ -7,4 +7,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -38,10 +39,16 @@
                         }
                     }
-                    if (wmsLayer.isRaster())
+                    if (wmsLayer.isRaster()) {
                         // set raster image commune bounding box based on current view (before adjustment)
                         wmsLayer.setRasterBounds(bounds);
-                    else
+                    } else {
                         // set vectorized commune bounding box by opening the standard web window
                         wmsLayer.setCommuneBBox( grabber.getWmsInterface().retrieveCommuneBBox());
+                        // if it is the first layer, use the communeBBox as grab bbox
+                        if (Main.proj instanceof LambertCC9Zones && Main.map.mapView.getAllLayers().size() == 1 ) {
+                            bounds = wmsLayer.getCommuneBBox().toBounds();
+                            Main.map.mapView.zoomTo(bounds);
+                        }
+                    }
                 }
                 // grab new images from wms server into active layer
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/EastNorthBound.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/EastNorthBound.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/EastNorthBound.java	(revision 18207)
@@ -3,4 +3,6 @@
 import java.io.Serializable;
 
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
 
@@ -28,4 +30,8 @@
         return enb;
     }
+    
+    public Bounds toBounds() {
+        return new Bounds(Main.proj.eastNorth2latlon(min), Main.proj.eastNorth2latlon(max));
+    }
 
     @Override public String toString() {
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionGrab.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionGrab.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionGrab.java	(revision 18207)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -28,5 +29,7 @@
 
     public void actionPerformed(ActionEvent e) {
-        if (Main.map != null) {
+        // with the new projection LambertCC9Zones, we are able to determin the zone and thus lat/lon of 
+        // downloaded commune bounding box
+        if (Main.map != null || Main.proj instanceof LambertCC9Zones) {
             if (CadastrePlugin.isCadastreProjection()) {
                 WMSLayer wmsLayer = WMSDownloadAction.getLayer();
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLambertZone.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLambertZone.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLambertZone.java	(revision 18207)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.projection.Lambert;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -22,6 +23,12 @@
     public static String name = "Change Lambert zone";
 
+    public static String[] lambert4zones = { "", "1 (51.30 to 48.15 degrees)", "2 (48.15 to 45.45 degrees)", "3 (45.45 to 42.76 degrees)", "4 (Corsica)" };
+    public static String[] lambert9zones = { "", "1 (41 to 43 degrees)", "2 (42 to 44 degrees)",
+            "3 (43 to 45 degrees)", "4 (44 to 46 degrees)", "5 (45 to 47 degrees)",
+            "6 (46 to 48 degrees)", "7 (47 to 49 degrees)", "8 (48 to 50 degrees)",
+            "9 (49 to 51 degrees)" };
+
     public MenuActionLambertZone() {
-        super(tr(name), "cadastre_small", tr("Set manually the Lambert zone (e.g. for locations between two zones)"),
+        super(tr(name), "cadastre_small", tr("Set manually the Lambert zone"),
                 null, false);
     }
@@ -29,6 +36,9 @@
     public void actionPerformed(ActionEvent e) {
         JPanel p = new JPanel(new GridBagLayout());
-        String[] zones = { "", "1 (51.30 to 48.15 degrees)", "2 (48.15 to 45.45 degrees)", "3 (45.45 to 42.76 degrees)", "4 (Corsica)" };
-        final JComboBox inputLambertZone = new JComboBox(zones);
+        final JComboBox inputLambertZone;
+        if (Main.proj instanceof LambertCC9Zones)
+            inputLambertZone = new JComboBox(lambert9zones);
+        else
+            inputLambertZone = new JComboBox(lambert4zones);
         JLabel newLambertZone = new JLabel(tr("Zone"));
         p.add(newLambertZone, GBC.std());
@@ -47,4 +57,5 @@
         if (inputLambertZone.getSelectedIndex() > 0) {
             Lambert.layoutZone = inputLambertZone.getSelectedIndex() - 1;
+            LambertCC9Zones.layoutZone = Lambert.layoutZone; 
         }
     }
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java	(revision 18207)
@@ -6,7 +6,10 @@
 import java.io.File;
 import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.projection.Lambert;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.gui.layer.Layer;
 
@@ -31,36 +34,46 @@
                 String filename = file.getName();
                 String ext = (filename.lastIndexOf(".")==-1)?"":filename.substring(filename.lastIndexOf(".")+1,filename.length());
-                String location = filename.substring(0, filename.lastIndexOf("."));
-                // check the extension and its Lambert zone consistency
-                try {
-                    int cacheZone = Integer.parseInt(ext) - 1;
-                    if (cacheZone >=0 && cacheZone <= 3) {
-                        if (Lambert.layoutZone == -1) {
-                            Lambert.layoutZone = cacheZone;
-                            System.out.println("Load cache \"" + filename + "\" in Lambert Zone " + (Lambert.layoutZone+1));
-                        } else if (cacheZone != Lambert.layoutZone) {
-                            System.out.println("Cannot load cache \"" + filename + "\" which is not in current Lambert Zone "
-                                    + Lambert.layoutZone);
-                            continue nextFile;
-                        } else
-                            System.out.println("Load cache " + filename);
+                if ((ext.length() > 2 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z) &&
+                    !(Main.proj instanceof LambertCC9Zones))
+                    || (ext.length() == 1) && !(Main.proj instanceof Lambert)) {
+                        JOptionPane.showMessageDialog(Main.parent, tr("{0} not allowed with the current projection", filename), tr("Error"), JOptionPane.ERROR_MESSAGE);
+                        continue;
+                } else {
+                    String location = filename.substring(0, filename.lastIndexOf("."));
+                    if (ext.length() > 2 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z))
+                        ext = ext.substring(2);
+                    // check the extension and its Lambert zone consistency
+                    try {
+                        int cacheZone = Integer.parseInt(ext) - 1;
+                        if (cacheZone >=0 && cacheZone <= 3) {
+                            if (Lambert.layoutZone == -1) {
+                                Lambert.layoutZone = cacheZone;
+                                System.out.println("Load cache \"" + filename + "\" in Lambert Zone " + (Lambert.layoutZone+1));
+                            } else if (cacheZone != Lambert.layoutZone) {
+                                System.out.println("Cannot load cache \"" + filename + "\" which is not in current Lambert Zone "
+                                        + Lambert.layoutZone);
+                                continue nextFile;
+                            } else
+                                System.out.println("Load cache " + filename);
+                        }
+                    } catch (NumberFormatException ex) {
+                        System.out.println("Selected file \"" + filename + "\" is not a WMS cache file (invalid extension)");
+                        continue;
                     }
-                } catch (NumberFormatException ex) {
-                    System.out.println("Selected file \"" + filename + "\" is not a WMS cache file (invalid extension)");
-                    continue;
-                }
-                // check if the selected cache is not already displayed
-                if (Main.map != null) {
-                    for (Layer l : Main.map.mapView.getAllLayers()) {
-                        if (l instanceof WMSLayer && l.getName().equals(location)) {
-                            System.out.println("The location " + filename + " is already on screen. Cache not loaded.");
-                            continue nextFile;
+                    // check if the selected cache is not already displayed
+                    if (Main.map != null) {
+                        for (Layer l : Main.map.mapView.getAllLayers()) {
+                            if (l instanceof WMSLayer && l.getName().equals(location)) {
+                                System.out.println("The location " + filename + " is already on screen. Cache not loaded.");
+                                continue nextFile;
+                            }
                         }
                     }
+                    // create layer and load cache
+                    WMSLayer wmsLayer = new WMSLayer("", "", Integer.parseInt(ext)-1);
+                    if (wmsLayer.getCacheControl().loadCache(file, Lambert.layoutZone))
+                        Main.main.addLayer(wmsLayer);
+                    
                 }
-                // create layer and load cache
-                WMSLayer wmsLayer = new WMSLayer("", "", Integer.parseInt(ext)-1);
-                if (wmsLayer.getCacheControl().loadCache(file, Lambert.layoutZone))
-                    Main.main.addLayer(wmsLayer);
             }
         }
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java	(revision 18207)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.projection.Lambert;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.GBC;
@@ -34,14 +35,9 @@
 
     public WMSLayer addNewLayer(ArrayList<WMSLayer> existingLayers) {
-        if (Main.map == null) {
+        /*if (Main.map == null) {
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Open a layer first (GPX, OSM, cache)"));
             return null;
-            /*
-        } else if (existingLayers != null && existingLayers.size() > 0) {
-            JOptionPane.showMessageDialog(Main.parent,
-                    tr("Select one cadastre layer first"));
-            return null;*/
-        } else {
+        } else {*/
             String location = "";
             String codeDepartement = "";
@@ -78,11 +74,16 @@
                 Main.pref.put("cadastrewms.location", location);
                 Main.pref.put("cadastrewms.codeCommune", codeCommune);
-                for (Layer l : Main.map.mapView.getAllLayers()) {
-                    if (l instanceof WMSLayer && l.getName().equalsIgnoreCase(location + codeDepartement)) {
-                        return null;
+                if (Main.map != null) {
+                    for (Layer l : Main.map.mapView.getAllLayers()) {
+                        if (l instanceof WMSLayer && l.getName().equalsIgnoreCase(location + codeDepartement)) {
+                            return null;
+                        }
                     }
                 }
                 // add the layer if it doesn't exist
-                wmsLayer = new WMSLayer(location, codeCommune, Lambert.layoutZone);
+                if (Main.proj instanceof LambertCC9Zones)
+                    wmsLayer = new WMSLayer(location, codeCommune, LambertCC9Zones.layoutZone);
+                else
+                    wmsLayer = new WMSLayer(location, codeCommune, Lambert.layoutZone);
                 Main.main.addLayer(wmsLayer);
                 System.out.println("Add new layer with Location:" + inputTown.getText());
@@ -95,5 +96,5 @@
                 CadastrePlugin.cadastreGrabber.getWmsInterface().resetCookieIfNewLayer(wmsLayer.getName());
             return wmsLayer;
-        }
+        //}
     }
 
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSDownloadAction.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSDownloadAction.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSDownloadAction.java	(revision 18207)
@@ -26,9 +26,9 @@
     public static WMSLayer getLayer() {
         // check if we already have a layer created. if not, create; if yes, reuse.
+        ArrayList<WMSLayer> existingWMSlayers = new ArrayList<WMSLayer>();
         if (Main.map != null) {
             Layer activeLayer = Main.map.mapView.getActiveLayer();
             if (activeLayer instanceof WMSLayer)
                 return (WMSLayer) activeLayer;
-            ArrayList<WMSLayer> existingWMSlayers = new ArrayList<WMSLayer>();
             for (Layer l : Main.map.mapView.getAllLayers()) {
                 if (l instanceof WMSLayer) {
@@ -42,4 +42,6 @@
             JOptionPane.showMessageDialog(Main.parent,
                     tr("More than one WMS layer present\nSelect one of them first, then retry"));
+        } else {
+            return new MenuActionNewLocation().addNewLayer(existingWMSlayers);
         }
         return null;
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 18206)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 18207)
@@ -19,4 +19,5 @@
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
+import javax.swing.JDialog;
 import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
@@ -25,4 +26,5 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.projection.Lambert;
+import org.openstreetmap.josm.data.projection.LambertCC9Zones;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.MapView;
@@ -42,5 +44,5 @@
     Component[] component = null;
 
-    public int lambertZone = -1;
+    private int lambertZone = -1;
 
     protected static final Icon icon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(
@@ -77,5 +79,5 @@
         this.location = location;
         this.codeCommune = codeCommune;
-        this.lambertZone = Lambert.layoutZone;
+        this.lambertZone = lambertZone;
         // enable auto-sourcing option
         CadastrePlugin.pluginUsed = true;
@@ -380,5 +382,5 @@
         }
         this.communeBBox = (EastNorthBound) ois.readObject();
-        if (this.lambertZone != currentLambertZone) {
+        if (this.lambertZone != currentLambertZone && currentLambertZone != -1) {
             JOptionPane.showMessageDialog(Main.parent, tr("Lambert zone {0} in cache "+
                     "incompatible with current Lambert zone {1}",
@@ -484,4 +486,6 @@
     public void setCommuneBBox(EastNorthBound entireCommune) {
         this.communeBBox = entireCommune;
+        if (Main.proj instanceof LambertCC9Zones)
+            setLambertCC9Zone(communeBBox.min.north());
     }
 
@@ -493,3 +497,33 @@
     }
 
+    public int getLambertZone() {
+        return lambertZone;
+    }
+
+    public void setLambertCC9Zone(double north) {
+        int lambertZone = LambertCC9Zones.north2ZoneNumber(north);
+        this.lambertZone = lambertZone;
+        if (LambertCC9Zones.layoutZone != lambertZone) {
+            String currentZone = MenuActionLambertZone.lambert9zones[LambertCC9Zones.layoutZone+1];
+            String destZone = MenuActionLambertZone.lambert9zones[lambertZone+1];
+            if (Main.map.mapView.getAllLayers().size() == 1) {
+                /* Enable this code below when JOSM will have a proper support of dynamic projection change
+                 * 
+                System.out.println("close all layers and change current Lambert zone from "+LambertCC9Zones.layoutZone+" to "+lambertZone);
+                Bounds b = null;
+                if (Main.map != null && Main.map.mapView != null)
+                    b = Main.map.mapView.getRealBounds();
+                LambertCC9Zones.layoutZone = lambertZone;
+                Main.map.mapView.zoomTo(b);
+                */
+            } else {
+                JOptionPane.showMessageDialog(Main.parent, tr("Current layer is in Lambert CC9 Zone \"{0}\"\n"+
+                        "where the commune is in Lambert CC9 Zone \"{1}\".\n"+
+                        "Upload your changes, close all layers and change\n"+
+                        "manually the Lambert zone from the Cadastre menu"
+                        , currentZone, destZone));
+            }
+        }
+    }
+
 }
