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