Revision: 5831
          http://sourceforge.net/p/jump-pilot/code/5831
Author:   michaudm
Date:     2018-06-04 06:40:20 +0000 (Mon, 04 Jun 2018)
Log Message:
-----------
Clean code of EnsureAllLayersHaveSRIDStylePlugIn

Modified Paths:
--------------
    core/trunk/src/com/vividsolutions/jump/workbench/model/LayerManager.java
    
core/trunk/src/org/openjump/core/ccordsys/srid/EnsureAllLayersHaveSRIDStylePlugIn.java

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/model/LayerManager.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/model/LayerManager.java    
2018-06-03 22:37:16 UTC (rev 5830)
+++ core/trunk/src/com/vividsolutions/jump/workbench/model/LayerManager.java    
2018-06-04 06:40:20 UTC (rev 5831)
@@ -80,7 +80,6 @@
     // itself immediately [Jon Aquino]
     private ArrayList<WeakReference<Layerable>> layerReferencesToDispose = new 
ArrayList<>();
     private boolean firingEvents = true;
-    // TODO Can a LayerListener still be there if the layer has been removed ? 
(see #419)
     private ArrayList<LayerListener> layerListeners = new ArrayList<>();
     private Iterator<Color> firstColors;
     private Blackboard blackboard = new Blackboard();

Modified: 
core/trunk/src/org/openjump/core/ccordsys/srid/EnsureAllLayersHaveSRIDStylePlugIn.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ccordsys/srid/EnsureAllLayersHaveSRIDStylePlugIn.java
      2018-06-03 22:37:16 UTC (rev 5830)
+++ 
core/trunk/src/org/openjump/core/ccordsys/srid/EnsureAllLayersHaveSRIDStylePlugIn.java
      2018-06-04 06:40:20 UTC (rev 5831)
@@ -3,98 +3,109 @@
 import java.awt.event.ContainerAdapter;
 import java.awt.event.ContainerEvent;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Iterator;
 
 import javax.swing.JInternalFrame;
 
 import com.vividsolutions.jump.coordsys.CoordinateSystem;
-import com.vividsolutions.jump.feature.Feature;
 import com.vividsolutions.jump.util.Block;
 import com.vividsolutions.jump.workbench.model.*;
 import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.ui.WorkbenchFrame;
+
 /**
  * Adds the SRIDStyle to every layer that JUMP encounters.
  */
 public class EnsureAllLayersHaveSRIDStylePlugIn extends AbstractPlugIn {
-    public void initialize(PlugInContext context) throws Exception {
-        initializeCurrentAndFutureInternalFrames(context.getWorkbenchFrame(),
-                new Block() {
-                    private Collection initializedFrames = new ArrayList();
-                    public Object yield(Object internalFrame) {
-                        if (!initializedFrames.contains(internalFrame)) {
-                            initialize((JInternalFrame) internalFrame);
-                            initializedFrames.add(internalFrame);
-                        }
-                        return null;
-                    }
-                });
-    }
-    private void initialize(JInternalFrame internalFrame) {
-        if (!(internalFrame instanceof LayerManagerProxy)) {
-            return;
+
+  public void initialize(PlugInContext context) throws Exception {
+
+    initializeCurrentAndFutureInternalFrames(context.getWorkbenchFrame(), new 
Block() {
+
+      private Collection<JInternalFrame> initializedFrames = new ArrayList<>();
+
+      public Object yield(Object internalFrame) {
+        if (internalFrame instanceof JInternalFrame &&
+                !initializedFrames.contains(internalFrame)) {
+          initialize((JInternalFrame) internalFrame);
+          initializedFrames.add((JInternalFrame) internalFrame);
         }
-        initialize(((LayerManagerProxy) internalFrame).getLayerManager());
+        return null;
+      }
+    });
+  }
+
+  private void initialize(JInternalFrame internalFrame) {
+
+    if (!(internalFrame instanceof LayerManagerProxy)) {
+      return;
     }
-    private void initialize(final LayerManager layerManager) {
-        for (Iterator i = layerManager.iterator(); i.hasNext();) {
-            Layer layer = (Layer) i.next();
-            ensureHasSRIDStyle(layer);
+    initialize(((LayerManagerProxy) internalFrame).getLayerManager());
+  }
+
+  private void initialize(final LayerManager layerManager) {
+
+    for (Layer layer : layerManager.getLayers()) {
+      ensureHasSRIDStyle(layer);
+    }
+
+    LayerListener layerListener = new LayerListener() {
+
+      public void featuresChanged(FeatureEvent e) { }
+
+      public void layerChanged(LayerEvent e) {
+        if (e.getLayerable() instanceof Layer) {
+          ensureHasSRIDStyle((Layer) e.getLayerable());
+          if (e.getType() == LayerEventType.REMOVED) {
+            layerManager.removeLayerListener(this);
+          }
         }
-        LayerListener layerListener = new LayerListener() {
-            public void featuresChanged(FeatureEvent e) {
-            }
-            public void layerChanged(LayerEvent e) {
-                if (e.getLayerable() instanceof Layer) {
-                    ensureHasSRIDStyle((Layer) e.getLayerable());
-                }
-                if (e.getType() == LayerEventType.REMOVED) {
-                    layerManager.removeLayerListener(this);
-                }
-            }
-            public void categoryChanged(CategoryEvent e) {
-            }
-        };
-        layerManager.addLayerListener(layerListener);
+      }
+
+      public void categoryChanged(CategoryEvent e) { }
+    };
+
+    layerManager.addLayerListener(layerListener);
+  }
+
+  private void ensureHasSRIDStyle(Layer layer) {
+    if (layer.getStyle(SRIDStyle.class) != null) {
+      return;
     }
-    private void ensureHasSRIDStyle(Layer layer) {
-        if (layer.getStyle(SRIDStyle.class) != null) {
-            return;
-        }
-        SRIDStyle sridStyle = new SRIDStyle();
-        int srid = sridStyle.getSRID();
+    SRIDStyle sridStyle = new SRIDStyle();
+    int srid = sridStyle.getSRID();
         
-        // freshly loaded featcolls only set the featureschema's property
-        CoordinateSystem cs = 
layer.getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem();
-        if (!cs.equals(CoordinateSystem.UNSPECIFIED)) {
-          srid = cs.getEPSGCode();
-        }
-        // OR fetch it from first geometry
-        else if (layer.getFeatureCollectionWrapper().size() > 0) {
-            srid = ((Feature) layer.getFeatureCollectionWrapper()
-                    .iterator().next()).getGeometry().getSRID();
-        }
-        sridStyle.setSRID(srid);
-        layer.addStyle(sridStyle);
+    // freshly loaded featcolls only set the featureschema's property
+    CoordinateSystem cs = layer.getFeatureCollectionWrapper()
+            .getFeatureSchema().getCoordinateSystem();
+    if (!cs.equals(CoordinateSystem.UNSPECIFIED)) {
+      srid = cs.getEPSGCode();
     }
-    private void initializeCurrentAndFutureInternalFrames(
-            WorkbenchFrame workbenchFrame, final Block block) {
-        workbenchFrame.getDesktopPane().addContainerListener(
-                new ContainerAdapter() {
-                    public void componentAdded(ContainerEvent e) {
-                        if (!(e.getChild() instanceof JInternalFrame)) {
-                            return;
-                        }
-                        block.yield((JInternalFrame) e.getChild());
-                    }
-                });
-        for (Iterator i = Arrays.asList(workbenchFrame.getInternalFrames())
-                .iterator(); i.hasNext();) {
-            JInternalFrame internalFrame = (JInternalFrame) i.next();
-            block.yield(internalFrame);
-        }
+    // OR fetch it from first geometry
+    else if (layer.getFeatureCollectionWrapper().size() > 0) {
+      srid = layer.getFeatureCollectionWrapper()
+              .iterator().next().getGeometry().getSRID();
     }
+    sridStyle.setSRID(srid);
+    layer.addStyle(sridStyle);
+  }
+
+  private void initializeCurrentAndFutureInternalFrames(
+          WorkbenchFrame workbenchFrame, final Block block) {
+
+    workbenchFrame.getDesktopPane().addContainerListener(
+            new ContainerAdapter() {
+              public void componentAdded(ContainerEvent e) {
+                if (!(e.getChild() instanceof JInternalFrame)) {
+                  return;
+                }
+                block.yield(e.getChild());
+              }
+            });
+
+    for (JInternalFrame internalFrame : workbenchFrame.getInternalFrames()) {
+      block.yield(internalFrame);
+    }
+  }
 }


------------------------------------------------------------------------------
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
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to