Revision: 5919 http://sourceforge.net/p/jump-pilot/code/5919 Author: michaudm Date: 2018-08-22 06:49:20 +0000 (Wed, 22 Aug 2018) Log Message: ----------- Fix LayerView to make it compatible with project persistence
Modified Paths: -------------- core/trunk/ChangeLog core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/AddNewLayerViewPlugIn.java core/trunk/src/org/openjump/core/ui/plugin/file/open/OpenProjectWizard.java Added Paths: ----------- core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java2xml Modified: core/trunk/ChangeLog =================================================================== --- core/trunk/ChangeLog 2018-08-21 20:33:57 UTC (rev 5918) +++ core/trunk/ChangeLog 2018-08-22 06:49:20 UTC (rev 5919) @@ -3,6 +3,9 @@ # 2. make sure that lines break at 80 chars for constricted display situations #<-------------------------------- 80 chars ----------------------------------># +2018-08-22 mmichaud <m.michael.mich...@orange.fr> + * Fix LayerView to make it compatible with project persistence + 2018-08-19 mmichaud <m.michael.mich...@orange.fr> * Add two plugins : - GenerateUniqueRandomIdPlugIn (menu tools/edit attributes) Modified: core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java 2018-08-21 20:33:57 UTC (rev 5918) +++ core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java 2018-08-22 06:49:20 UTC (rev 5919) @@ -1,7 +1,8 @@ package com.vividsolutions.jump.workbench.model; -import com.vividsolutions.jump.feature.FeatureCollection; +import com.vividsolutions.jump.feature.*; +import java.util.ArrayList; import java.util.Collection; public class LayerView extends Layer { @@ -8,16 +9,44 @@ private Layer layer; - public LayerView(Layer layer) { - super(layer.getName(), layer.getBasicStyle().getFillColor(), layer.getFeatureCollectionWrapper(), layer.getLayerManager()); + /** + * Called by Java2XML + */ + public LayerView() { + } + + // 2018-08-22 : add layerName attribute (original name of the underlying layer) + // to increase compatibility with java2xml and to make it possible to build the + // LayerView from the xml project file before the underlying Layer is completely + // initialized + String layerName; + public String getLayerName() { + return layerName; + } + public void setLayerName(String layerName) { + this.layerName = layerName; + } + + @Override + public void setLayerManager(LayerManager layerManager) { + super.setLayerManager(layerManager); + this.layer = layerManager.getLayer(getLayerName()); + } + + public LayerView(final String layerName, LayerManager layerManager) { + super(layerName, + layerManager.generateLayerFillColor(), + layerManager.getLayer(layerName).getFeatureCollectionWrapper(), + layerManager); + this.layerName = layerName; + this.layer = layerManager.getLayer(layerName); boolean firingEvents = getLayerManager().isFiringEvents(); getLayerManager().setFiringEvents(false); try { - setName(getName().replaceAll(layer.getName(),"").trim()); + setName(getName().replaceAll(this.layer.getName(),"").trim()); } finally { getLayerManager().setFiringEvents(firingEvents); } - this.layer = layer; } @@ -43,6 +72,28 @@ super.setFeatureCollectionWrapper(observableFeatureCollection); } + + @Override + public FeatureCollectionWrapper getFeatureCollectionWrapper() { + // When the LayerView is build from the project xml file, it may be built + // before underlying Layer is defined... + if (layer != null) { + return layer.getFeatureCollectionWrapper(); + } else { + // ... in this case, try again to load data from the underlying Layer + // next time the application need to display the data. + this.layer = getLayerManager().getLayer(layerName); + if (this.layer != null) { + return layer.getFeatureCollectionWrapper(); + } else { + return new ObservableFeatureCollection( + FeatureDatasetFactory.createFromGeometry(new ArrayList<Feature>()) + ); + } + } + } + + public Layer getLayer() { return layer; } Added: core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java2xml =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java2xml (rev 0) +++ core/trunk/src/com/vividsolutions/jump/workbench/model/LayerView.java2xml 2018-08-22 06:49:20 UTC (rev 5919) @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<root> + <attribute xml-name="layerName" java-name="layerName"/> + <attribute xml-name="name" java-name="name"/> + <attribute xml-name="visible" java-name="visible"/> + <attribute xml-name="editable" java-name="editable"/> + <attribute xml-name="selectable" java-name="selectable"/> + <attribute xml-name="read-only" java-name="readonly"/> + <element xml-name="scaleDependentRendering"> + <attribute xml-name="enabled" java-name="scaleDependentRenderingEnabled"/> + <element xml-name="minScale" java-name="minScale"/> + <element xml-name="maxScale" java-name="maxScale"/> + </element> + <element xml-name="description" java-name="description"/> + <!--element xml-name="data-source-query" java-name="dataSourceQuery"/--> + <attribute xml-name="drawnLast" java-name="drawingLast"/> + <attribute xml-name="synchronizedLineColor" java-name="synchronizingLineColor"/> + <element xml-name="styles"> + <element xml-name="style" java-name="style"/> + </element> + <!--element xml-name="feature-schema-operation" java-name="featureSchemaOperation"/--> +</root> \ No newline at end of file Modified: core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java 2018-08-21 20:33:57 UTC (rev 5918) +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java 2018-08-22 06:49:20 UTC (rev 5919) @@ -276,8 +276,8 @@ Layerable layerable = (Layerable) value; if (layerable instanceof LayerView) { LayerView view = (LayerView)layerable; - label.setText("-> " + view.getLayer().getName() + " - " + - view.getName().replaceAll(view.getLayer().getName(), "")); + label.setText("-> " + view.getLayerName() + " - " + + view.getName().replaceAll(view.getLayerName(), "")); } else { label.setText(layerable.getName()); } Modified: core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/AddNewLayerViewPlugIn.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/AddNewLayerViewPlugIn.java 2018-08-21 20:33:57 UTC (rev 5918) +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/AddNewLayerViewPlugIn.java 2018-08-22 06:49:20 UTC (rev 5919) @@ -16,7 +16,7 @@ Layer[] layers = context.getLayerNamePanel().getSelectedLayers(); if (layers.length != 1) return false; Layer layer = layers[0]; - LayerView layerView = new LayerView(layer); + LayerView layerView = new LayerView(layer.getName(), layer.getLayerManager()); int index = context.getLayerManager().getCategory(layer).indexOf(layer); context.getLayerManager().getCategory(layer).add(++index, layerView); layerView.setEditable(false); Modified: core/trunk/src/org/openjump/core/ui/plugin/file/open/OpenProjectWizard.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/open/OpenProjectWizard.java 2018-08-21 20:33:57 UTC (rev 5918) +++ core/trunk/src/org/openjump/core/ui/plugin/file/open/OpenProjectWizard.java 2018-08-22 06:49:20 UTC (rev 5919) @@ -18,6 +18,7 @@ import javax.xml.namespace.QName; import com.vividsolutions.jump.workbench.Logger; +import com.vividsolutions.jump.workbench.model.*; import org.openjump.core.ccordsys.utils.ProjUtils; import org.openjump.core.model.TaskEvent; import org.openjump.core.model.TaskListener; @@ -45,11 +46,6 @@ import com.vividsolutions.jump.util.java2xml.XML2Java; import com.vividsolutions.jump.workbench.JUMPWorkbench; import com.vividsolutions.jump.workbench.WorkbenchContext; -import com.vividsolutions.jump.workbench.model.Category; -import com.vividsolutions.jump.workbench.model.Layer; -import com.vividsolutions.jump.workbench.model.LayerManager; -import com.vividsolutions.jump.workbench.model.Layerable; -import com.vividsolutions.jump.workbench.model.Task; import com.vividsolutions.jump.workbench.plugin.PlugInManager; import com.vividsolutions.jump.workbench.ui.GUIUtil; import com.vividsolutions.jump.workbench.ui.TaskFrame; @@ -200,6 +196,9 @@ List<Layer> layers = layerManager.getLayers(); List<Layer> layersToBeRemoved = new ArrayList<>(); for (Layer layer : layers) { + if (layer instanceof LayerView) { + continue; // no datasource for LayerView + } DataSourceQuery dataSourceQuery = layer.getDataSourceQuery(); DataSource dataSource = dataSourceQuery.getDataSource(); if (dataSource == null) { @@ -299,7 +298,10 @@ } layerable.setLayerManager(newLayerManager); - if (layerable instanceof Layer) { + if (layerable instanceof LayerView) { + layerable.setLayerManager(newLayerManager); + } + else if (layerable instanceof Layer) { Layer layer = (Layer) layerable; File layerFile = getLayerFileProperty(layer); if (!updateOnlyMissingResources || !layerFile.exists()) { ------------------------------------------------------------------------------ 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