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 <[email protected]>
+ * Fix LayerView to make it compatible with project persistence
+
2018-08-19 mmichaud <[email protected]>
* 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel