Revision: 5057
          http://sourceforge.net/p/jump-pilot/code/5057
Author:   michaudm
Date:     2016-10-08 17:19:35 +0000 (Sat, 08 Oct 2016)
Log Message:
-----------
Fix #432 Zipped datasource should be unmodifiable

Modified Paths:
--------------
    core/trunk/ChangeLog
    core/trunk/src/com/vividsolutions/jump/io/datasource/DataSource.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileInputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileOutputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileInputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileOutputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileInputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileOutputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapeFileInputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapefileOutputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileInputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileOutputDriver.java
    
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/EditablePlugIn.java

Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog        2016-10-08 16:10:24 UTC (rev 5056)
+++ core/trunk/ChangeLog        2016-10-08 17:19:35 UTC (rev 5057)
@@ -3,9 +3,18 @@
 # 2. make sure that lines break at 80 chars for constricted display situations
 #<-------------------------------- 80 chars 
---------------------------------->#
 
+2016-10-08
+  * Fix bug #433 throwing exception when applying scale limits in bad order
+  * Optimization : changeStyle was applying the new style two times
+  * Fix #432 Zipped datasource should be unmodifiable
+
 2016-10-08 Giuseppe Aruta  <[email protected]>
   * Upgraded Sextante (Correct bug #410. Added Sextante Data Explorer)
 
+2016-10-07 mmichaud <[email protected]>
+  * Fix SaveLayersWithoutDataSourcePlugIn by using JFileChooser instead of
+    JFCWithEnterAction
+
 2016-10-06 ede
   * PLUS: update ImageIO-Ext to 1.1.15, GDAL binding to 2.1.0 
 

Modified: core/trunk/src/com/vividsolutions/jump/io/datasource/DataSource.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/io/datasource/DataSource.java        
2016-10-08 16:10:24 UTC (rev 5056)
+++ core/trunk/src/com/vividsolutions/jump/io/datasource/DataSource.java        
2016-10-08 17:19:35 UTC (rev 5057)
@@ -84,6 +84,11 @@
   public static final String URI_KEY = "Uri";
 
   /**
+   * A property used when the datasource is wrapped into a compressed file
+   */
+  public static final String COMPRESSED_KEY = "CompressedFile";
+
+  /**
    * Coordinate-system property, used for files and other DataSources that have
    * a single CoordinateSystem
    */

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileInputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileInputDriver.java 
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileInputDriver.java 
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,15 +34,11 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.feature.FeatureCollection;
 import com.vividsolutions.jump.io.CompressedFile;
 import com.vividsolutions.jump.io.DriverProperties;
 import com.vividsolutions.jump.io.FMEGMLReader;
-import com.vividsolutions.jump.io.ParseException;
-import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.LayerManager;
 import com.vividsolutions.jump.workbench.ui.AbstractDriverPanel;
 import com.vividsolutions.jump.workbench.ui.BasicFileDriverPanel;
@@ -50,7 +46,10 @@
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 import com.vividsolutions.jump.workbench.ui.WorkbenchFileFilter;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
+
 public class FMEFileInputDriver extends AbstractInputDriver {
     private BasicFileDriverPanel panel;
     private DriverProperties dp = new DriverProperties();
@@ -72,9 +71,7 @@
     }
 
     public void input(LayerManager layerManager, String categoryName)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, 
-            com.vividsolutions.jump.io.IllegalParametersException, Exception {
+        throws Exception {
         String extension;
         File selectedFile = panel.getSelectedFile();
         FeatureCollection featureCollection;
@@ -90,38 +87,34 @@
         if (extension.equalsIgnoreCase("zip")) {
             String internalName;
 
-            dp.set("CompressedFile", name);
-            internalName = 
CompressedFile.getInternalZipFnameByExtension(".fme",
-                    name);
+            dp.set(COMPRESSED_KEY, name);
+            internalName = 
CompressedFile.getInternalZipFnameByExtension(".fme", name);
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml",
-                        name);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml", name);
             }
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml",
-                        name);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml", name);
             }
 
             if (internalName == null) {
                 throw new Exception(
-                    "Couldnt find a .fme, .xml, or .gml file inside the .zip 
file: " +
-                    name);
+                    "Couldnt find a .fme, .xml, or .gml file inside the .zip 
file: " + name);
             }
 
-            dp.set("File", internalName);
+            dp.set(FILE_KEY, internalName);
         } else if (extension.equalsIgnoreCase(".gz")) {
-            dp.set("CompressedFile", name);
-            dp.set("File", name); // not useed
+            dp.set(COMPRESSED_KEY, name);
+            dp.set(FILE_KEY, name); // not useed
         } else {
-            dp.set("File", name);
+            dp.set(FILE_KEY, name);
         }
 
         // no "TemplateFile" specified, so read it from the top of the "File"
         featureCollection = fmeReader.read(dp);
 
-        Layer layer = layerManager.addLayer(categoryName,
+        layerManager.addLayer(categoryName,
                 GUIUtil.nameWithoutExtension(selectedFile), featureCollection);
     }
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileOutputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileOutputDriver.java
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/FMEFileOutputDriver.java
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,32 +34,28 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.io.DriverProperties;
-import com.vividsolutions.jump.io.FMEGMLReader;
 import com.vividsolutions.jump.io.FMEGMLWriter;
-import com.vividsolutions.jump.io.ParseException;
 import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
 public class FMEFileOutputDriver extends AbstractOutputDriver {
     private FMEGMLWriter fmeGmlWriter = new FMEGMLWriter();
 
     public FMEFileOutputDriver() {
     }
 
-    public void output(Layer layer)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, Exception {
+    public void output(Layer layer) throws Exception {
         File selectedFile = driverManager.getSharedSaveBasicFileDriverPanel()
                                          .getSelectedFile();
         String fname = selectedFile.getAbsolutePath();
 
         DriverProperties dp = new DriverProperties();
-        dp.set("File", fname);
+        dp.set(FILE_KEY, fname);
         fmeGmlWriter.write(layer.getFeatureCollectionWrapper(), dp);
     }
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileInputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileInputDriver.java 
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileInputDriver.java 
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -45,8 +45,8 @@
 import com.vividsolutions.jump.workbench.ui.ErrorHandler;
 import com.vividsolutions.jump.workbench.ui.GMLFileDriverPanel;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
-import com.vividsolutions.jump.workbench.ui.WorkbenchFileFilter;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
 public class GMLFileInputDriver extends AbstractInputDriver {
     private GMLFileDriverPanel panel;
@@ -74,28 +74,25 @@
         if (extension_gml.equalsIgnoreCase("zip")) {
             String internalName;
 
-            dp.set("CompressedFile", fname);
+            dp.set(COMPRESSED_KEY, fname);
 
-            internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml",
-                    fname);
+            internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml", fname);
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml",
-                        fname);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml", fname);
             }
 
             if (internalName == null) {
                 throw new Exception(
-                    "Couldnt find a .xml or .gml file inside the .zip file: " +
-                    fname);
+                    "Couldnt find a .xml or .gml file inside the .zip file: " 
+ fname);
             }
 
-            dp.set("File", internalName);
+            dp.set(FILE_KEY, internalName);
         } else if (extension_gml.equalsIgnoreCase(".gz")) {
-            dp.set("CompressedFile", fname);
-            dp.set("File", fname); // not useed
+            dp.set(COMPRESSED_KEY, fname);
+            dp.set(FILE_KEY, fname); // not useed
         } else {
-            dp.set("File", fname);
+            dp.set(FILE_KEY, fname);
         }
 
         if (extension_template.equalsIgnoreCase("zip")) {

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileOutputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileOutputDriver.java
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/GMLFileOutputDriver.java
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -42,7 +42,10 @@
 import com.vividsolutions.jump.workbench.ui.ErrorHandler;
 import com.vividsolutions.jump.workbench.ui.GMLFileDriverPanel;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
+
 public class GMLFileOutputDriver extends AbstractOutputDriver {
     private GMLFileDriverPanel panel;
     private GMLWriter writer = new GMLWriter();
@@ -55,7 +58,7 @@
         String fname = selectedFile.getAbsolutePath();
 
         DriverProperties dp = new DriverProperties();
-        dp.set("File", fname);
+        dp.set(FILE_KEY, fname);
         dp.set("TemplateFile", panel.getTemplateFile().getAbsolutePath());
         writer.write(layer.getFeatureCollectionWrapper(), dp);
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileInputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileInputDriver.java 
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileInputDriver.java 
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,15 +34,11 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.feature.FeatureCollection;
 import com.vividsolutions.jump.io.CompressedFile;
 import com.vividsolutions.jump.io.DriverProperties;
 import com.vividsolutions.jump.io.JMLReader;
-import com.vividsolutions.jump.io.ParseException;
-import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.LayerManager;
 import com.vividsolutions.jump.workbench.ui.AbstractDriverPanel;
 import com.vividsolutions.jump.workbench.ui.BasicFileDriverPanel;
@@ -50,7 +46,10 @@
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 import com.vividsolutions.jump.workbench.ui.WorkbenchFileFilter;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
+
 /**
  * @author Alan Chang
  * @version 1.0
@@ -89,10 +88,7 @@
         panel.setFileMustExist(true);
     }
 
-    public void input(LayerManager layerManager, String categoryName)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, 
-            com.vividsolutions.jump.io.IllegalParametersException, Exception {
+    public void input(LayerManager layerManager, String categoryName) throws 
Exception {
         String extension;
         File selectedFile = panel.getSelectedFile();
         FeatureCollection featureCollection;
@@ -105,38 +101,34 @@
         if (extension.equalsIgnoreCase("zip")) {
             String internalName;
 
-            dp.set("CompressedFile", name);
-            internalName = 
CompressedFile.getInternalZipFnameByExtension(".jml",
-                    name);
+            dp.set(COMPRESSED_KEY, name);
+            internalName = 
CompressedFile.getInternalZipFnameByExtension(".jml", name);
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml",
-                        name);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".gml", name);
             }
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml",
-                        name);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".xml", name);
             }
 
             if (internalName == null) {
                 throw new Exception(
-                    "Couldnt find a .jml, .xml, or .gml file inside the .zip 
file: " +
-                    name);
+                    "Couldnt find a .jml, .xml, or .gml file inside the .zip 
file: " + name);
             }
 
-            dp.set("File", internalName);
+            dp.set(FILE_KEY, internalName);
         } else if (extension.equalsIgnoreCase(".gz")) {
-            dp.set("CompressedFile", name);
-            dp.set("File", name); // not useed
+            dp.set(COMPRESSED_KEY, name);
+            dp.set(FILE_KEY, name); // not used
         } else {
-            dp.set("File", name);
+            dp.set(FILE_KEY, name);
         }
 
         // no "TemplateFile" specified, so read it from the top of the "File"
         featureCollection = jmlReader.read(dp);
 
-        Layer layer = layerManager.addLayer(categoryName,
+        layerManager.addLayer(categoryName,
                 GUIUtil.nameWithoutExtension(selectedFile), featureCollection);
     }
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileOutputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileOutputDriver.java
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/JMLFileOutputDriver.java
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,16 +34,13 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.io.DriverProperties;
 import com.vividsolutions.jump.io.GMLWriter;
-import com.vividsolutions.jump.io.JMLReader;
-import com.vividsolutions.jump.io.ParseException;
 import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
 public class JMLFileOutputDriver extends AbstractOutputDriver {
     private GMLWriter gmlWriter = new GMLWriter();
@@ -51,15 +48,13 @@
     public JMLFileOutputDriver() {
     }
 
-    public void output(Layer layer)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, Exception {
+    public void output(Layer layer) throws Exception {
         File selectedFile = driverManager.getSharedSaveBasicFileDriverPanel()
                                          .getSelectedFile();
         String fname = selectedFile.getAbsolutePath();
 
         DriverProperties dp = new DriverProperties();
-        dp.set("File", fname);
+        dp.set(FILE_KEY, fname);
         gmlWriter.write(layer.getFeatureCollectionWrapper(), dp);
     }
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapeFileInputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapeFileInputDriver.java
   2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapeFileInputDriver.java
   2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,15 +34,11 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.feature.FeatureCollection;
 import com.vividsolutions.jump.io.CompressedFile;
 import com.vividsolutions.jump.io.DriverProperties;
-import com.vividsolutions.jump.io.ParseException;
 import com.vividsolutions.jump.io.ShapefileReader;
-import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.LayerManager;
 import com.vividsolutions.jump.workbench.ui.AbstractDriverPanel;
 import com.vividsolutions.jump.workbench.ui.BasicFileDriverPanel;
@@ -50,7 +46,9 @@
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 import com.vividsolutions.jump.workbench.ui.WorkbenchFileFilter;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
 public class ShapeFileInputDriver extends AbstractInputDriver {
     private ShapefileReader reader = new ShapefileReader();
     private BasicFileDriverPanel panel;
@@ -66,10 +64,7 @@
         return panel;
     }
 
-    public void input(LayerManager layerManager, String categoryName)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jump.io.ParseException, 
-            com.vividsolutions.jump.io.IllegalParametersException, Exception {
+    public void input(LayerManager layerManager, String categoryName) throws 
Exception {
         String extension;
         File selectedFile = panel.getSelectedFile();
         String name = GUIUtil.nameWithoutExtension(selectedFile);
@@ -82,23 +77,21 @@
         if (extension.equalsIgnoreCase("zip")) {
             String internalName;
 
-            dp.set("CompressedFile", fname);
-            internalName = 
CompressedFile.getInternalZipFnameByExtension(".shp",
-                    fname);
+            dp.set(COMPRESSED_KEY, fname);
+            internalName = 
CompressedFile.getInternalZipFnameByExtension(".shp", fname);
 
             if (internalName == null) {
                 throw new Exception(
                     "Couldnt find a .shp file inside the .zip file: " + fname);
             }
 
-            dp.set("File", internalName);
+            dp.set(FILE_KEY, internalName);
         } else {
-            dp.set("File", fname);
+            dp.set(FILE_KEY, fname);
         }
 
         FeatureCollection featureCollection = reader.read(dp);
-        Layer layer = layerManager.addLayer(categoryName, name,
-                featureCollection);
+        layerManager.addLayer(categoryName, name, featureCollection);
     }
 
     public void initialize(DriverManager driverManager,

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapefileOutputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapefileOutputDriver.java
  2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/ShapefileOutputDriver.java
  2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,32 +34,28 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.io.DriverProperties;
-import com.vividsolutions.jump.io.ParseException;
-import com.vividsolutions.jump.io.ShapefileReader;
 import com.vividsolutions.jump.io.ShapefileWriter;
 import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
 public class ShapefileOutputDriver extends AbstractOutputDriver {
     private ShapefileWriter shapeWriter = new ShapefileWriter();
 
     public ShapefileOutputDriver() {
     }
 
-    public void output(Layer layer)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, Exception {
+    public void output(Layer layer) throws Exception {
         File selectedFile = driverManager.getSharedSaveBasicFileDriverPanel()
                                          .getSelectedFile();
         String fname = selectedFile.getAbsolutePath();
 
         DriverProperties dp = new DriverProperties();
-        dp.set("File", fname);
+        dp.set(FILE_KEY, fname);
         shapeWriter.write(layer.getFeatureCollectionWrapper(), dp);
     }
 

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileInputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileInputDriver.java 
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileInputDriver.java 
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -34,15 +34,11 @@
 package com.vividsolutions.jump.workbench.driver;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 
 import com.vividsolutions.jump.feature.FeatureCollection;
 import com.vividsolutions.jump.io.CompressedFile;
 import com.vividsolutions.jump.io.DriverProperties;
-import com.vividsolutions.jump.io.ParseException;
 import com.vividsolutions.jump.io.WKTReader;
-import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.LayerManager;
 import com.vividsolutions.jump.workbench.ui.AbstractDriverPanel;
 import com.vividsolutions.jump.workbench.ui.BasicFileDriverPanel;
@@ -50,7 +46,9 @@
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 import com.vividsolutions.jump.workbench.ui.WorkbenchFileFilter;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
 public class WKTFileInputDriver extends AbstractInputDriver {
     private WKTReader reader = new WKTReader();
     private BasicFileDriverPanel panel;
@@ -66,10 +64,7 @@
         return panel;
     }
 
-    public void input(LayerManager layerManager, String categoryName)
-        throws FileNotFoundException, IOException, ParseException, 
-            com.vividsolutions.jts.io.ParseException, 
-            com.vividsolutions.jump.io.IllegalParametersException, Exception {
+    public void input(LayerManager layerManager, String categoryName) throws 
Exception {
         String extension;
         File selectedFile = panel.getSelectedFile();
         String layerName = GUIUtil.nameWithoutExtension(selectedFile);
@@ -83,32 +78,28 @@
         if (extension.equalsIgnoreCase("zip")) {
             String internalName;
 
-            dp.set("CompressedFile", fname);
-            internalName = 
CompressedFile.getInternalZipFnameByExtension(".wkt",
-                    fname);
+            dp.set(COMPRESSED_KEY, fname);
+            internalName = 
CompressedFile.getInternalZipFnameByExtension(".wkt", fname);
 
             if (internalName == null) {
-                internalName = 
CompressedFile.getInternalZipFnameByExtension(".txt",
-                        fname);
+                internalName = 
CompressedFile.getInternalZipFnameByExtension(".txt", fname);
             }
 
             if (internalName == null) {
                 throw new Exception(
-                    "Couldnt find a .wkt, or .txt file inside the .zip file: " 
+
-                    fname);
+                    "Couldnt find a .wkt, or .txt file inside the .zip file: " 
+ fname);
             }
 
-            dp.set("File", internalName);
+            dp.set(FILE_KEY, internalName);
         } else if (extension.equalsIgnoreCase(".gz")) {
-            dp.set("CompressedFile", fname);
-            dp.set("File", fname); // not useed
+            dp.set(COMPRESSED_KEY, fname);
+            dp.set(FILE_KEY, fname); // not used
         } else {
-            dp.set("File", fname);
+            dp.set(FILE_KEY, fname);
         }
 
         FeatureCollection featureCollection = reader.read(dp);
-        Layer layer = layerManager.addLayer(categoryName, layerName,
-                featureCollection);
+        layerManager.addLayer(categoryName, layerName, featureCollection);
     }
 
     public void initialize(DriverManager driverManager,

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileOutputDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileOutputDriver.java
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/driver/WKTFileOutputDriver.java
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -35,13 +35,15 @@
 import java.io.File;
 
 import com.vividsolutions.jump.io.DriverProperties;
-import com.vividsolutions.jump.io.WKTReader;
 import com.vividsolutions.jump.io.WKTWriter;
 import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
 
+import static com.vividsolutions.jump.io.datasource.DataSource.*;
 
+
 public class WKTFileOutputDriver extends AbstractOutputDriver {
+
     private WKTWriter writer = new WKTWriter();
 
     public WKTFileOutputDriver() {
@@ -57,7 +59,7 @@
         String fname = selectedFile.getAbsolutePath();
 
         DriverProperties dp = new DriverProperties();
-        dp.set("File", fname);
+        dp.set(FILE_KEY, fname);
         writer.write(layer.getFeatureCollectionWrapper(), dp);
     }
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/EditablePlugIn.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/EditablePlugIn.java  
    2016-10-08 16:10:24 UTC (rev 5056)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/EditablePlugIn.java  
    2016-10-08 17:19:35 UTC (rev 5057)
@@ -38,7 +38,9 @@
 import javax.swing.JInternalFrame;
 
 import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.io.datasource.DataSource;
 import com.vividsolutions.jump.workbench.WorkbenchContext;
+import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.Layerable;
 import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.CheckBoxed;
@@ -75,7 +77,9 @@
     boolean makeEditable = !layers[0].isEditable();
     // set states for each
     for (Layerable layerable : layers) {
-      layerable.setEditable(makeEditable);
+      if (isWritable(layerable)) {
+        layerable.setEditable(makeEditable);
+      }
     }
 
     // show EditToolBox if we switched to editable
@@ -86,6 +90,19 @@
     return true;
   }
 
+  private boolean isWritable(Layerable layerable) {
+    if (layerable instanceof Layer) {
+      Layer layer = (Layer)layerable;
+      if (layer.getDataSourceQuery() == null ||
+              layer.getDataSourceQuery().getDataSource() == null) {
+        return true;
+      } else {
+        DataSource source = layer.getDataSourceQuery().getDataSource();
+        return (source.isWritable() && 
source.getProperties().get("CompressedFile") == null);
+      }
+    } else return false;
+  }
+
   public EnableCheck createEnableCheck(final WorkbenchContext 
workbenchContext) {
     EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext);
     MultiEnableCheck mec = new MultiEnableCheck();
@@ -126,12 +143,12 @@
     JInternalFrame frame = wbc.getWorkbench().getFrame()
         .getActiveInternalFrame();
     if (frame instanceof LayerNamePanelProxy) {
-      LayerNamePanel lnp = ((LayerNamePanelProxy) frame).getLayerNamePanel();
-      if (lnp instanceof LayerableNamePanel)
-        layers = ((LayerableNamePanel) lnp).getSelectedLayerables().toArray(
+      LayerNamePanel layerNamePanel = ((LayerNamePanelProxy) 
frame).getLayerNamePanel();
+      if (layerNamePanel instanceof LayerableNamePanel)
+        layers = ((LayerableNamePanel) 
layerNamePanel).getSelectedLayerables().toArray(
             new Layerable[] {});
       else
-        layers = lnp.getSelectedLayers();
+        layers = layerNamePanel.getSelectedLayers();
     }
 
     return layers;


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to