/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cismap.commons.gui.layerwidget;
import org.jdom.Element;
import java.awt.EventQueue;
import java.awt.Image;
import java.util.*;
import javax.swing.JTree;
import javax.swing.event.EventListenerList;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreePath;
import de.cismet.cismap.commons.*;
import de.cismet.cismap.commons.featureservice.*;
import de.cismet.cismap.commons.interaction.CismapBroker;
import de.cismet.cismap.commons.interaction.events.ActiveLayerEvent;
import de.cismet.cismap.commons.raster.wms.AbstractWMS;
import de.cismet.cismap.commons.raster.wms.WMSLayer;
import de.cismet.cismap.commons.raster.wms.WMSServiceLayer;
import de.cismet.cismap.commons.raster.wms.featuresupportlayer.SimpleFeatureSupportingRasterLayer;
import de.cismet.cismap.commons.rasterservice.FeatureAwareRasterService;
import de.cismet.cismap.commons.rasterservice.MapService;
import de.cismet.cismap.commons.retrieval.RetrievalEvent;
import de.cismet.cismap.commons.retrieval.RetrievalListener;
import de.cismet.cismap.commons.wms.capabilities.WMSCapabilities;
import de.cismet.tools.PropertyEqualsProvider;
import de.cismet.tools.Static2DTools;
import de.cismet.tools.configuration.Configurable;
import de.cismet.tools.configuration.NoWriteError;
import de.cismet.tools.gui.treetable.AbstractTreeTableModel;
import de.cismet.tools.gui.treetable.TreeTableModel;
import de.cismet.tools.gui.treetable.TreeTableModelAdapter;
/**
* DOCUMENT ME!
*
* @author thorsten.hell@cismet.de
* @version $Revision$, $Date$
*/
public class ActiveLayerModel extends AbstractTreeTableModel implements MappingModel, Configurable {
//~ Static fields/initializers ---------------------------------------------
protected static final boolean DEBUG = Debug.DEBUG;
//~ Instance fields --------------------------------------------------------
Vector layers = new Vector();
Vector<MappingModelListener> mappingModelListeners = new Vector();
BoundingBox initialBoundingBox;
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private HashMap<String, XBoundingBox> homes = new HashMap<String, XBoundingBox>();
private Crs srs;
private String preferredRasterFormat;
private String preferredTransparentPref;
private String preferredBGColor;
private String preferredExceptionsFormat;
private TreeTableModelAdapter tableModel;
private boolean initalLayerConfigurationFromServer = false;
private HashMap<String, Element> masterLayerHashmap = new HashMap<String, Element>();
private Crs defaultHomeSrs;
private List<TreeModelListener> listenerWithOutProgress = new ArrayList<TreeModelListener>();
//~ Constructors -----------------------------------------------------------
/**
* Erstellt eine neue ActiveLayerModel-Instanz.
*/
public ActiveLayerModel() {
super("Layer"); // NOI18N
setDefaults();
this.tableModel = new TreeTableModelAdapter(this, new JTree());
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
private void setDefaults() {
// srs="EPSG:4326";
preferredRasterFormat = "image/png"; // NOI18N
preferredBGColor = "0xF0F0F0"; // NOI18N
// preferredExceptionsFormat="application/vnd.ogc.se_inimage";
preferredExceptionsFormat = "application/vnd.ogc.se_xml"; // NOI18N
initialBoundingBox = new BoundingBox(-180, -90, 180, 90);
// srs="EPSG:31466";
// preferredRasterFormat="image/png";
// preferredBGColor="0xF0F0F0";
// preferredExceptionsFormat="application/vnd.ogc.se_inimage";
// initialBoundingBox=new BoundingBox(2569442.79,5668858.33,2593744.91,5688416.22);
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
*/
public synchronized void addEmptyLayerCollection(final LayerCollection layer) {
layers.add(layer);
layer.setModel(this);
fireTreeStructureChanged(
this,
new Object[] { root },
null,
new Object[] { layer });
}
/**
* DOCUMENT ME!
*
* @param path DOCUMENT ME!
* @param layer DOCUMENT ME!
*/
public synchronized void addEmptyLayerCollection(final TreePath path, final LayerCollection layer) {
final Object parentCollection = path.getLastPathComponent();
if (parentCollection instanceof LayerCollection) {
final LayerCollection collection = (LayerCollection)parentCollection;
collection.add(layer);
layer.setModel(this);
fireTreeStructureChanged(
this,
path.getPath(),
null,
new Object[] { layer });
}
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
* @param index DOCUMENT ME!
*/
public synchronized void addLayerCollection(final LayerCollection layer, final int index) {
layers.add(index, layer);
registerLayerFromLayerCollection(layer);
fireTreeStructureChanged(
this,
new Object[] { root },
null,
null);
}
/**
* DOCUMENT ME!
*
* @param lc DOCUMENT ME!
*/
private void registerLayerFromLayerCollection(final LayerCollection lc) {
for (final Object o : lc) {
if (o instanceof LayerCollection) {
registerLayerFromLayerCollection((LayerCollection)o);
} else if (o instanceof RetrievalServiceLayer) {
registerRetrievalServiceLayer((RetrievalServiceLayer)o);
}
}
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
* @param index DOCUMENT ME!
*/
public synchronized void addLayer(final Object layer, final int index) {
if (layer instanceof LayerCollection) {
addLayerCollection((LayerCollection)layer, index);
} else if (layer instanceof RetrievalServiceLayer) {
addLayer((RetrievalServiceLayer)layer, index);
}
}
/**
* Fuegt dem Layer-Vektor einen neuen RetrievalServiceLayer hinzu.
*
* @param layer neuer RetrievalServiceLayer
*/
@Override
public synchronized void addLayer(final RetrievalServiceLayer layer) {
addLayer(layer, layers.size());
}
/**
* Fuegt dem Layer-Vektor einen neuen RetrievalServiceLayer hinzu.
*
* @param layer neuer RetrievalServiceLayer
* @param index the index of the layer in the layer list
*
* @throws IllegalArgumentException DOCUMENT ME!
*/
public synchronized void addLayer(final RetrievalServiceLayer layer, final int index) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("addLayer: " + layer.getName()); // NOI18N
}
}
if (layers.contains(layer)) {
throw new IllegalArgumentException("Layer '" + layer.getName() + "' already exists"); // NOI18N
} else if (layer instanceof PropertyEqualsProvider) {
for (final Object o : layers) {
if ((o instanceof PropertyEqualsProvider) && ((PropertyEqualsProvider)o).propertyEquals(layer)) {
throw new IllegalArgumentException("Layer '" + layer.getName() + "' already exists"); // NOI18N
}
}
}
registerRetrievalServiceLayer(layer);
// Das eigentliche Hinzufuegen des neuen Layers
layers.add(index, layer);
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("layer '" + layer.getName() + "' added"); // NOI18N
}
}
fireTreeStructureChanged(
this,
new Object[] { root },
null,
null);
reorderLayer();
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
*/
public void registerRetrievalServiceLayer(final RetrievalServiceLayer layer) {
final RetrievalServiceLayer currentLayer = layer;
final ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer(currentLayer);
CismapBroker.getInstance().fireLayerAdded(ale);
// ale.setCapabilities(wmsLayer.getWmsCapabilities());
CidsLayerFactory.wmsSpecificConfiguration(
layer,
preferredBGColor,
preferredExceptionsFormat,
preferredRasterFormat,
srs);
layer.addRetrievalListener(new RetrievalListener() {
@Override
public void retrievalStarted(final RetrievalEvent e) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug(currentLayer.getName() + "[" + e.getRequestIdentifier() + "]: retrievalStarted"); // NOI18N
}
}
// currentLayer.setProgress(-1);
fireProgressChanged(currentLayer);
}
@Override
public void retrievalProgress(final RetrievalEvent e) {
// currentLayer.setProgress((int) (e.getPercentageDone() * 100));
fireProgressChanged(currentLayer);
}
@Override
public void retrievalComplete(final RetrievalEvent e) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug(currentLayer.getName() + "[" + e.getRequestIdentifier() + "]: retrievalComplete"); // NOI18N
}
}
// currentLayer.setProgress(100);
fireProgressChanged(currentLayer);
if (e.isHasErrors()) {
retrievalError(e);
} else {
currentLayer.setErrorObject(null);
}
}
@Override
public void retrievalAborted(final RetrievalEvent e) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug(currentLayer.getName() + "[" + e.getRequestIdentifier() + "]: retrievalAborted"); // NOI18N
}
}
// currentLayer.setProgress(0);
fireProgressChanged(currentLayer);
}
@Override
public void retrievalError(final RetrievalEvent e) {
if (DEBUG) {
log.warn(
currentLayer.getName()
+ "["
+ e.getRequestIdentifier()
+ "]: retrievalError: "
+ e.getErrorType()
+ " (hasErrors="
+ currentLayer.hasErrors()
+ ")"); // NOI18N
}
currentLayer.setProgress(0);
fireProgressChanged(currentLayer);
if (e.getRetrievedObject() != null) {
Object errorObject = e.getRetrievedObject();
if (errorObject instanceof Image) {
// Static2DTools.scaleImage((Image)errorObject,0.7);
final Image i = Static2DTools.removeUnusedBorder((Image)errorObject, 5, 0.7);
errorObject = i;
} else if (e.getRetrievedObject() instanceof String) {
String message = (String)e.getRetrievedObject();
message = message.replaceAll("<.*?>", "");
if (e.getErrorType().equals(RetrievalEvent.SERVERERROR)) {
errorObject = org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.retrievalError(RetrievalEvent).errorObject.servererror",
new Object[] { message }); // NOI18N
} else {
if (message != null) {
errorObject = org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.retrievalError(RetrievalEvent).errorObject.noServererror",
new Object[] { message }); // NOI18N
} else {
errorObject = org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.retrievalError(RetrievalEvent).errorObject.noServererror",
new Object[] {}); // NOI18N
}
}
} // Hier kommt jetzt HTML Fehlermeldung, Internal
// und XML. Das muss reichen
// else if ()
currentLayer.setErrorObject(errorObject);
} else if (DEBUG) {
log.warn("no error object supplied"); // NOI18N
}
}
});
if (layer instanceof ModeLayer) {
fireMapServiceAdded((MapService)((ModeLayer)layer).getCurrentLayer());
} else if (layer instanceof MapService) {
fireMapServiceAdded(((MapService)layer));
} else {
log.warn("fireMapServiceAdded event not fired, layer is no MapService:" + layer); // NOI18N
}
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("RetrievalListener added on layer '" + currentLayer.getName() + "'"); // NOI18N
}
}
}
/**
* DOCUMENT ME!
*/
public void refreshWebFeatureServices() {
final Object[] oa = layers.toArray();
final Vector<WebFeatureService> removedLayer = new Vector<WebFeatureService>();
for (int i = 0; i < oa.length; i++) {
if (oa[i] instanceof WebFeatureService) {
removedLayer.add((WebFeatureService)oa[i]);
removeLayer(oa[i], null);
}
}
for (final WebFeatureService tmp : removedLayer) {
addLayer((WebFeatureService)tmp.clone());
}
}
/**
* DOCUMENT ME!
*/
public void refreshShapeFileLayer() {
final Object[] oa = layers.toArray();
for (int i = 0; i < oa.length; i++) {
if (oa[i] instanceof ShapeFileFeatureService) {
((ShapeFileFeatureService)oa[i]).getPNode().removeAllChildren();
((ShapeFileFeatureService)oa[i]).setCrs(srs);
if (((ShapeFileFeatureService)oa[i]).isInitialized()) {
((ShapeFileFeatureService)oa[i]).refreshFeatures();
}
}
}
}
/**
* DOCUMENT ME!
*/
public void removeAllLayers() {
final Object[] oa = layers.toArray();
for (int i = 0; i < oa.length; i++) {
final Object elem = oa[i];
removeLayer(elem, null);
}
}
//J-
public void removeLayer(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
removeLayer(layer, treePath);
}
//J+
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
* @param treePath DOCUMENT ME!
*/
public void removeLayer(final Object layer, final TreePath treePath) {
if ((treePath != null) && !treePath.getParentPath().getLastPathComponent().equals(getRoot())) {
final Object parent = treePath.getParentPath().getLastPathComponent();
if (parent instanceof LayerCollection) {
((LayerCollection)parent).remove(layer);
fireTreeStructureChanged(this, new Object[] { layer }, null, null);
}
} else {
if (layer instanceof RetrievalServiceLayer) {
removeLayer((RetrievalServiceLayer)layer);
} else if (layer instanceof LayerCollection) {
layers.remove(layer);
fireTreeStructureChanged(this, new Object[] { layer }, null, null);
} else if ((treePath != null) && (layer instanceof WMSLayer)) { // Kinderlayer
final TreePath parentPath = treePath.getParentPath();
if (parentPath.getLastPathComponent() instanceof WMSServiceLayer) {
((WMSServiceLayer)parentPath.getLastPathComponent()).removeLayer((WMSLayer)layer);
}
fireTreeStructureChanged(
this,
new Object[] { root, (WMSServiceLayer)parentPath.getLastPathComponent() },
null,
null);
final ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer((WMSLayer)layer);
CismapBroker.getInstance().fireLayerRemoved(ale);
}
}
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
*/
@Override
public void removeLayer(final RetrievalServiceLayer layer) {
final RetrievalServiceLayer wmsServiceLayer = ((RetrievalServiceLayer)layer);
layers.remove(wmsServiceLayer);
final ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer(wmsServiceLayer);
CismapBroker.getInstance().fireLayerRemoved(ale);
fireTreeStructureChanged(
this,
new Object[] { root },
null,
null);
fireMapServiceRemoved((MapService)wmsServiceLayer);
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
*/
public void removeLayer(final Object layer) {
if (layer instanceof LayerCollection) {
removeLayerCollection((LayerCollection)layer);
} else if (layer instanceof RetrievalServiceLayer) {
removeLayer((RetrievalServiceLayer)layer);
}
}
/**
* DOCUMENT ME!
*
* @param layer DOCUMENT ME!
*/
public void removeLayerCollection(final LayerCollection layer) {
layers.remove(layer);
final ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer(layer);
CismapBroker.getInstance().fireLayerRemoved(ale);
fireTreeStructureChanged(
this,
new Object[] { root },
null,
null);
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*/
public void disableLayer(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
final ActiveLayerEvent activeLayerEvent = new ActiveLayerEvent();
if (layer instanceof RetrievalServiceLayer) {
final RetrievalServiceLayer wmsServiceLayer = ((RetrievalServiceLayer)layer);
wmsServiceLayer.setEnabled(!wmsServiceLayer.isEnabled());
activeLayerEvent.setLayer(layer);
CismapBroker.getInstance().fireLayerAvailabilityChanged(activeLayerEvent);
if (wmsServiceLayer.isEnabled()) {
wmsServiceLayer.setRefreshNeeded(true);
wmsServiceLayer.retrieve(true);
}
fireTreeNodesChanged(
this,
new Object[] { root },
null,
null);
} else if (layer instanceof WMSLayer) { // Kinderlayer
final TreePath parentPath = treePath.getParentPath();
((WMSLayer)layer).setEnabled(!((WMSLayer)layer).isEnabled());
activeLayerEvent.setLayer(layer);
CismapBroker.getInstance().fireLayerAvailabilityChanged(activeLayerEvent);
((WMSServiceLayer)parentPath.getLastPathComponent()).setRefreshNeeded(true);
fireTreeNodesChanged(
this,
new Object[] { root, (WMSServiceLayer)parentPath.getLastPathComponent() },
null,
null);
}
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*/
public void handleVisibility(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
if (layer instanceof RetrievalServiceLayer) {
final RetrievalServiceLayer wmsServiceLayer = ((RetrievalServiceLayer)layer);
final boolean flag = !wmsServiceLayer.getPNode().getVisible();
if (wmsServiceLayer instanceof AbstractWMS) {
((AbstractWMS)wmsServiceLayer).setVisible(flag);
} else if (wmsServiceLayer instanceof ModeLayer) {
((ModeLayer)wmsServiceLayer).setVisible(flag);
} else if (wmsServiceLayer instanceof AbstractFeatureService) {
((AbstractFeatureService)wmsServiceLayer).setVisible(flag);
}
wmsServiceLayer.getPNode().setVisible(flag);
fireTreeNodesChanged(
this,
new Object[] { root },
null,
null);
final ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer(wmsServiceLayer);
CismapBroker.getInstance().fireLayerVisibilityChanged(ale);
}
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isVisible(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
if (layer instanceof RetrievalServiceLayer) {
final RetrievalServiceLayer wmsServiceLayer = ((RetrievalServiceLayer)layer);
return wmsServiceLayer.getPNode().getVisible();
}
return false;
}
/**
* DOCUMENT ME!
*
* @param source DOCUMENT ME!
* @param destination DOCUMENT ME!
* @param index DOCUMENT ME!
* @param layer DOCUMENT ME!
*/
public void moveLayer(final TreePath source, final TreePath destination, final int index, final Object layer) {
int indexOfRemovedObject = 0;
if (source.getLastPathComponent().equals(getRoot())) {
indexOfRemovedObject = layers.indexOf(layer);
layers.remove(layer);
} else if (source.getLastPathComponent() instanceof LayerCollection) {
indexOfRemovedObject = ((LayerCollection)source.getLastPathComponent()).indexOf(layer);
((LayerCollection)source.getLastPathComponent()).remove(layer);
}
if (destination.getLastPathComponent().equals(getRoot())) {
layers.add(layers.size() - index, layer);
} else if (destination.getLastPathComponent() instanceof LayerCollection) {
final LayerCollection collection = ((LayerCollection)destination.getLastPathComponent());
collection.add(collection.size() - index, layer);
}
// fireTreeStructureChanged(
// this,
// new Object[] { root },
// null,
// null);
fireTreeStructureChanged(
this,
source.getPath(),
new int[] { indexOfRemovedObject },
new Object[] { layer });
fireTreeStructureChanged(
this,
destination.getPath(),
null,
new Object[] { layer });
reorderLayer();
}
/**
* DOCUMENT ME!
*/
private void reorderLayer() {
final TreeMap<Integer, MapService> map = getMapServices();
MapService lastService = null;
for (final Integer key : map.keySet()) {
final MapService s = map.get(key);
if (lastService == null) {
lastService = s;
} else {
if ((s.getPNode() != null) && (lastService.getPNode() != null)) {
s.getPNode().moveInFrontOf(lastService.getPNode());
} else {
log.warn("reorder layer on a service without a pnode");
}
lastService = s;
}
}
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*/
public void moveLayerUp(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
if (layer instanceof RetrievalServiceLayer) {
final MapService l = (MapService)layer;
final int pos = layers.indexOf(l);
if ((pos + 1) != layers.size()) {
layers.remove(l);
layers.add(pos + 1, l);
if (layers.get(pos) instanceof MapService) {
l.getPNode().moveInFrontOf(((MapService)layers.get(pos)).getPNode());
}
fireTreeStructureChanged(
this,
new Object[] { root },
new int[] { pos, pos + 1 },
new Object[] { layers.get(pos), l });
}
} else if (layer instanceof WMSLayer) {
final WMSLayer l = (WMSLayer)layer;
final WMSServiceLayer parent = (WMSServiceLayer)treePath.getParentPath().getLastPathComponent();
final int pos = parent.getWMSLayers().indexOf(l);
if ((pos + 1) != parent.getWMSLayers().size()) {
parent.getWMSLayers().remove(l);
parent.getWMSLayers().add(pos + 1, l);
parent.setRefreshNeeded(true);
fireTreeStructureChanged(
this,
new Object[] { root, parent },
null,
null);
}
}
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*/
public void moveLayerDown(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
if (layer instanceof MapService) {
final MapService l = (MapService)layer;
final int pos = layers.indexOf(l);
if (pos != 0) {
layers.remove(l);
layers.add(pos - 1, l);
if (layers.get(pos) instanceof MapService) {
l.getPNode().moveInBackOf(((MapService)layers.get(pos)).getPNode());
}
fireTreeStructureChanged(
this,
new Object[] { root },
new int[] { pos - 1, pos },
new Object[] { l, layers.get(pos) });
}
} else if (layer instanceof WMSLayer) {
final WMSLayer l = (WMSLayer)layer;
final WMSServiceLayer parent = (WMSServiceLayer)treePath.getParentPath().getLastPathComponent();
final int pos = parent.getWMSLayers().indexOf(l);
if (pos != 0) {
parent.getWMSLayers().remove(l);
parent.getWMSLayers().add(pos - 1, l);
parent.setRefreshNeeded(true);
fireTreeStructureChanged(
this,
new Object[] { root, parent },
null,
null);
}
}
}
/**
* DOCUMENT ME!
*
* @param treePath DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public int getLayerPosition(final TreePath treePath) {
final Object layer = treePath.getLastPathComponent();
if (layer instanceof MapService) {
final MapService l = (MapService)layer;
final int pos = layers.indexOf(l);
return pos;
} else if (layer instanceof WMSLayer) {
final WMSLayer l = (WMSLayer)layer;
final WMSServiceLayer parent = (WMSServiceLayer)treePath.getParentPath().getLastPathComponent();
final int pos = parent.getWMSLayers().indexOf(l);
return pos;
}
return 0;
}
/**
* DOCUMENT ME!
*
* @param column DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public Class getColumnClass(final int column) {
switch (column) {
case 1: {
return TreeTableModel.class;
}
// case 2:
// return Boolean.class;
default: {
return Object.class;
}
}
}
/**
* Returns the number of children of <code>parent</code>. Returns 0 if the node is a leaf or if it has no children.
* <code>parent</code> must be a node previously obtained from this data source.
*
* @param parent a node in the tree, obtained from this data source
*
* @return the number of children of the node <code>parent</code>
*/
@Override
public int getChildCount(final Object parent) {
if (parent == super.getRoot()) {
return layers.size();
}
if (parent instanceof WMSServiceLayer) {
final WMSServiceLayer wmsServiceLayer = (WMSServiceLayer)parent;
if (wmsServiceLayer.getWMSLayers().size() > 1) {
return wmsServiceLayer.getWMSLayers().size();
} else {
return 0;
}
} else if (parent instanceof LayerCollection) {
return ((LayerCollection)parent).size();
} else {
return 0;
}
}
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public boolean isLeaf(final Object node) {
return getChildCount(node) == 0;
}
// public int getChildCount(final Object parent, boolean layerCollectionsSupported) {
// if (parent == super.getRoot()) {
// if (layerCollectionsSupported) {
// return layers.size();
// } else {
// int count = 0;
//
// for (Object o : layers) {
// if (o instanceof LayerCollection) {
// count += getLayerCount((LayerCollection)o);
// } else {
// ++count;
// }
// }
// }
// }
//
// if (parent instanceof WMSServiceLayer) {
// final WMSServiceLayer wmsServiceLayer = (WMSServiceLayer)parent;
// if (wmsServiceLayer.getWMSLayers().size() > 1) {
// return wmsServiceLayer.getWMSLayers().size();
// } else {
// return 0;
// }
// } else if (parent instanceof LayerCollection) {
// if (layerCollectionsSupported) {
// return ((LayerCollection)parent).size();
// } else {
// return getLayerCount((LayerCollection)parent);
// }
// } else {
// return 0;
// }
// }
//
// private int getLayerCount(LayerCollection l) {
// int count = 0;
//
// for (Object o : l) {
// if (o instanceof LayerCollection) {
// count += getLayerCount((LayerCollection)o);
// } else {
// ++count;
// }
// }
//
// return count;
// }
//
/**
* Returns the value to be displayed for node <code>node</code>, at column number <code>column</code>.
*
* @param node DOCUMENT ME!
* @param column DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public Object getValueAt(final Object node, final int column) {
if (node instanceof RetrievalServiceLayer) {
return ((RetrievalServiceLayer)node);
} else if (node instanceof WMSLayer) {
return ((WMSLayer)node);
} else if (node instanceof LayerCollection) {
return ((LayerCollection)node);
} else {
return "ROOT 0"; // NOI18N
}
}
/**
* Returns the name for column number <code>column</code>.
*
* @param column DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public String getColumnName(final int column) {
switch (column) {
case (0): {
return " "; // NOI18N
}
case (1): {
return org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.getColumnName(int).return.layer"); // NOI18N
}
case (2): {
return org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.getColumnName(int).return.style"); // NOI18N
}
case (3): {
return org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.getColumnName(int).return.info"); // NOI18N
}
case (4): {
return org.openide.util.NbBundle.getMessage(
ActiveLayerModel.class,
"ActiveLayerModel.getColumnName(int).return.fortschrittTransparent"); // NOI18N
}
case (5): {
return ""; // NOI18N
}
default: {
return ""; // NOI18N
}
}
}
/**
* Returns the child of <code>parent</code> at index <code>index</code> in the parent's child array. <code>
* parent</code> must be a node previously obtained from this data source. This should not return <code>null</code>
* if <code>index</code> is a valid index for <code>parent</code> (that is <code>index >= 0 && index <
* getChildCount(parent</code>)).
*
* @param parent a node in the tree, obtained from this data source
* @param index DOCUMENT ME!
*
* @return the child of <code>parent</code> at index <code>index</code>
*/
@Override
public Object getChild(final Object parent, final int index) {
// Hier wird die Reihenfolge festgelegt
if (parent == root) {
return layers.get(layers.size() - 1 - index);
} else if (parent instanceof WMSServiceLayer) {
return ((WMSServiceLayer)parent).getWMSLayers()
.get(((WMSServiceLayer)parent).getWMSLayers().size() - 1 - index);
} else if (parent instanceof LayerCollection) {
return ((LayerCollection)parent).get(((LayerCollection)parent).size() - 1 - index);
} else {
return null;
}
}
/**
* public Object getChild(final Object parent, final int index, boolean supportLayerCollection) { // Hier wird die
* Reihenfolge festgelegt if (parent == root) { return layers.get(layers.size() - 1 - index); } else if (parent
* instanceof WMSServiceLayer) { return ((WMSServiceLayer)parent).getWMSLayers()
* .get(((WMSServiceLayer)parent).getWMSLayers().size() - 1 - index); } else if (parent instanceof LayerCollection)
* { return ((LayerCollection)parent).get(((LayerCollection)parent).size() - 1 - index); } else { return null; } }.
*
* @param parent DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private int getLayerCollectionCount(final Object parent) {
int count = 0;
Collection col;
if (parent == root) {
col = layers;
} else if (parent instanceof LayerCollection) {
col = (LayerCollection)parent;
} else {
return 0;
}
for (final Object o : col) {
if (!(o instanceof LayerCollection)) {
++count;
}
}
return count;
}
/**
* Returns the number ofs availible column.
*
* @return DOCUMENT ME!
*/
@Override
public int getColumnCount() {
return 6;
}
/**
* By default, make the column with the Tree in it the only editable one. Making this column editable causes the
* JTable to forward mouse and keyboard events in the Tree column to the underlying JTree.
*
* @param node DOCUMENT ME!
* @param column DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public boolean isCellEditable(final Object node, final int column) {
switch (column) {
case 0: {
return true;
}
case 1: {
if ((node instanceof WMSServiceLayer) && (((WMSServiceLayer)node).getWMSLayers().size() > 1)) {
return true;
} else if ((node instanceof LayerCollection) && (((LayerCollection)node).size() > 0)) {
return true;
} else {
return false;
}
}
case 2: {
if ((node instanceof WMSServiceLayer) && (((WMSServiceLayer)node).getWMSLayers().size() > 1)) {
return false;
} else if ((node instanceof WMSServiceLayer) && (((WMSServiceLayer)node).getWMSLayers().size() == 1)
&& (((WMSLayer)((WMSServiceLayer)node).getWMSLayers().get(0)).getOgcCapabilitiesLayer()
.getStyles().length > 1)) {
return true;
} else if ((node instanceof WMSLayer)
&& (((WMSLayer)node).getOgcCapabilitiesLayer().getStyles().length > 1)) {
return true;
} else if (node instanceof AbstractFeatureService) {
return true;
} else {
return false;
}
}
case 3: {
if (node instanceof LayerInfoProvider) {
return ((LayerInfoProvider)node).isQueryable();
} else {
return false;
}
}
// if (node instanceof WMSServiceLayer && ((WMSServiceLayer) node).getWMSLayers().size() > 1) {
// return false;
// } else {
// if (node instanceof WMSLayer) {
// return ((WMSLayer) node).getOgcCapabilitiesLayer().isQueryable();
// } else if (node instanceof WMSServiceLayer && ((WMSServiceLayer) node).getWMSLayers().get(0) instanceof WMSLayer) {
// return ((WMSLayer) (((WMSServiceLayer) node).getWMSLayers().get(0))).getOgcCapabilitiesLayer().isQueryable();
// } else {
// return false;
// }
// }
case 4: {
if (node instanceof RetrievalServiceLayer) {
return true;
} else {
return false;
}
}
case 5: {
return true;
}
}
final boolean retValue;
retValue = super.isCellEditable(node, column);
// return retValue;
return true;
}
/**
* DOCUMENT ME!
*
* @param aValue DOCUMENT ME!
* @param node DOCUMENT ME!
* @param column DOCUMENT ME!
*/
@Override
public void setValueAt(final Object aValue, final Object node, final int column) {
if (column == 1) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("node:" + node); // NOI18N
}
}
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("aValue:" + aValue); // NOI18N
}
}
if (node instanceof LayerCollection) {
((LayerCollection)node).setName(aValue.toString());
this.fireTreeNodesChanged(
this,
new Object[] { root },
null,
null);
} else {
((WMSServiceLayer)node).setName(aValue.toString());
this.fireTreeNodesChanged(
this,
new Object[] { root, node },
null,
null);
}
} else if (column == 3) {
// if (aValue instanceof WMSLayer)
}
super.setValueAt(aValue, node, column);
}
/**
* DOCUMENT ME!
*
* @param mml DOCUMENT ME!
*/
@Override
public void removeMappingModelListener(final de.cismet.cismap.commons.MappingModelListener mml) {
mappingModelListeners.remove(mml);
}
/**
* DOCUMENT ME!
*
* @param mml DOCUMENT ME!
*/
@Override
public void addMappingModelListener(final de.cismet.cismap.commons.MappingModelListener mml) {
mappingModelListeners.add(mml);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public java.util.TreeMap<Integer, MapService> getMapServices() {
final List l = new ArrayList(layers);
final Iterator it = l.iterator();
final TreeMap<Integer, MapService> tm = new TreeMap();
int counter = 0;
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof MapService) {
tm.put(new Integer(counter++), (MapService)o);
} else if (o instanceof LayerCollection) {
for (final MapService ms : getMapServicesFromLayerCollection((LayerCollection)o)) {
tm.put(new Integer(counter++), ms);
}
} else {
log.warn("service is not of type MapService: " + o); // NOI18N
}
}
return tm;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public java.util.TreeMap<Integer, Object> getMapServicesAndCollections() {
final Iterator it = layers.iterator();
final TreeMap<Integer, Object> tm = new TreeMap();
int counter = 0;
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof MapService) {
tm.put(new Integer(counter++), (MapService)o);
} else if (o instanceof LayerCollection) {
tm.put(new Integer(counter++), (LayerCollection)o);
} else {
log.warn("service is not of type MapService: " + o); // NOI18N
}
}
return tm;
}
/**
* DOCUMENT ME!
*
* @param col DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public List<MapService> getMapServicesFromLayerCollection(final LayerCollection col) {
final List<MapService> resultList = new ArrayList<MapService>();
for (final Object o : col) {
if (o instanceof MapService) {
resultList.add((MapService)o);
} else if (o instanceof LayerCollection) {
resultList.addAll(getMapServicesFromLayerCollection((LayerCollection)o));
}
}
return resultList;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public HashMap getHomeBoundingBoxes() {
return homes;
}
/**
* DOCUMENT ME!
*
* @param xbb DOCUMENT ME!
*/
public void addHome(final XBoundingBox xbb) {
homes.put(xbb.getSrs(), xbb);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public de.cismet.cismap.commons.BoundingBox getInitialBoundingBox() {
if ((srs == null) && (defaultHomeSrs == null)) {
log.warn("SRS and default SRS are not set, yet");
return null;
}
XBoundingBox homeBox = homes.get(srs.getCode());
if (homeBox == null) {
if (log.isDebugEnabled()) {
log.debug("No home found for srs " + srs.getCode());
}
final XBoundingBox defaultBox = homes.get(defaultHomeSrs.getCode());
if (defaultBox != null) {
try {
final CrsTransformer transformer = new CrsTransformer(srs.getCode());
homeBox = transformer.transformBoundingBox(defaultBox);
} catch (Exception e) {
log.error("Error while transforming coordinates from " + defaultBox.getSrs() + " to " + srs, e);
}
} else {
if (log.isDebugEnabled()) {
log.debug("No default bunding box (home) found. ");
}
}
}
if (homeBox == null) {
log.error("home bounding box == null for srs " + srs.getCode());
}
return homeBox;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public Crs getSrs() {
return srs;
}
/**
* DOCUMENT ME!
*
* @param srs DOCUMENT ME!
*
* @deprecated the method setSrs(Crs srs) should be used instead. This method only exists for compatibility with
* cids_custom_wuppertal
*/
public void setSrs(final String srs) {
setSrs(new Crs(srs, srs, srs, true, false));
}
/**
* DOCUMENT ME!
*
* @param srs DOCUMENT ME!
*/
public void setSrs(final Crs srs) {
if (this.defaultHomeSrs == null) {
this.defaultHomeSrs = srs;
}
for (final Object layer : this.layers) {
CidsLayerFactory.setLayerToCrs(srs, layer);
}
this.srs = srs;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getPreferredRasterFormat() {
return preferredRasterFormat;
}
/**
* DOCUMENT ME!
*
* @param preferredRasterFormat DOCUMENT ME!
*/
public void setPreferredRasterFormat(final String preferredRasterFormat) {
this.preferredRasterFormat = preferredRasterFormat;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getPreferredTransparentPref() {
return preferredTransparentPref;
}
/**
* DOCUMENT ME!
*
* @param preferredTransparentPref DOCUMENT ME!
*/
public void setPreferredTransparentPref(final String preferredTransparentPref) {
this.preferredTransparentPref = preferredTransparentPref;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getPreferredBGColor() {
return preferredBGColor;
}
/**
* DOCUMENT ME!
*
* @param preferredBGColor DOCUMENT ME!
*/
public void setPreferredBGColor(final String preferredBGColor) {
this.preferredBGColor = preferredBGColor;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getPreferredExceptionsFormat() {
return preferredExceptionsFormat;
}
/**
* DOCUMENT ME!
*
* @param preferredExceptionsFormat DOCUMENT ME!
*/
public void setPreferredExceptionsFormat(final String preferredExceptionsFormat) {
this.preferredExceptionsFormat = preferredExceptionsFormat;
}
/**
* DOCUMENT ME!
*
* @param sl DOCUMENT ME!
*/
public void fireProgressChanged(final ServiceLayer sl) {
final int pos = layers.indexOf(sl);
if (pos >= 0) {
this.fireTreeNodesProgressChanged(this, new Object[] { root, sl }, null, null);
fireTableChanged(null);
}
}
/**
* DOCUMENT ME!
*
* @param l DOCUMENT ME!
*/
public void addTreeModelWithoutProgressListener(final TreeModelListener l) {
super.addTreeModelListener(l);
listenerWithOutProgress.add(l);
}
/**
* DOCUMENT ME!
*
* @param l DOCUMENT ME!
*/
public void removeTreeModelWithoutProgressListener(final TreeModelListener l) {
super.removeTreeModelListener(l);
listenerWithOutProgress.remove(l);
}
/**
* Notify all listeners that have registered interest for notification on this event type. The event instance is
* lazily created using the parameters passed into the fire method.
*
* @param source DOCUMENT ME!
* @param path DOCUMENT ME!
* @param childIndices DOCUMENT ME!
* @param children DOCUMENT ME!
*
* @see EventListenerList
*/
protected void fireTreeNodesProgressChanged(final Object source,
final Object[] path,
final int[] childIndices,
final Object[] children) {
// Guaranteed to return a non-null array
final Object[] listeners = listenerList.getListenerList();
TreeModelEvent e = null;
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if ((listeners[i] == TreeModelListener.class) && !listenerWithOutProgress.contains(listeners[i + 1])) {
// Lazily create the event:
if (e == null) {
e = new TreeModelEvent(source, path,
childIndices, children);
}
((TreeModelListener)listeners[i + 1]).treeNodesChanged(e);
}
}
}
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
public void fireTableChanged(final TableModelEvent e) {
// Guaranteed to return a non-null array
final Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == TableModelListener.class) {
((TableModelListener)listeners[i + 1]).tableChanged(e);
}
}
}
/**
* DOCUMENT ME!
*
* @param rasterService DOCUMENT ME!
*/
public void fireMapServiceAdded(final MapService rasterService) {
final Vector v = new Vector(mappingModelListeners);
final Iterator it = v.iterator();
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof MappingModelListener) {
final MappingModelListener mml = (MappingModelListener)o;
mml.mapServiceAdded(rasterService);
}
}
}
/**
* DOCUMENT ME!
*
* @param rasterService DOCUMENT ME!
*/
public void fireMapServiceRemoved(final MapService rasterService) {
final Iterator it = mappingModelListeners.iterator();
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof MappingModelListener) {
final MappingModelListener mml = (MappingModelListener)o;
mml.mapServiceRemoved(rasterService);
}
}
}
/**
* Configurable.
*
* @return DOCUMENT ME!
*
* @throws NoWriteError DOCUMENT ME!
*/
@Override
public Element getConfiguration() throws NoWriteError {
final Element conf = new Element("cismapActiveLayerConfiguration"); // NOI18N
// Zuerst alle RasterLayer
final Iterator<Integer> it = getMapServicesAndCollections().keySet().iterator();
final Element allLayerConf = new Element("Layers"); // Sollte irgendwann zu "Layers" umgewandelt werden
// (TODO)//NOI18N
int counter = 0;
while (it.hasNext()) {
final Object service = layers.get(it.next());
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("saving configuration of service: '" + service + "'"); // NOI18N
}
}
if (service instanceof ServiceLayer) {
// es reicht völlig aus, die Layer Position erst beim Speichern der
// Konfiugration zu setzten und nicht bei jedem Aufruf von moveLayerUp/Down.
((ServiceLayer)service).setLayerPosition(counter);
}
if (service instanceof SimpleFeatureSupportingRasterLayer) {
// wird nicht gespeichert
} else {
final Element layerConf = CidsLayerFactory.getElement(service);
allLayerConf.addContent(layerConf);
counter++;
}
}
if (counter == 0) {
// ToDo Why ?
// throw new NoWriteError();
}
conf.addContent(allLayerConf);
// Alle FeatureService Layer
// AppFeatureLayer
return conf;
}
/**
* ToDo abstract class or interface for all layer should implement a key string method then every layer developer
* has to define a string which uniquely identifies the developed layer.
*
* @param e layerelement DOCUMENT ME!
*/
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
@Override
public void masterConfigure(final Element e) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("MasterConfigure(): " + this.getClass().getName());
}
}
masterLayerHashmap.clear();
if (initalLayerConfigurationFromServer) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("Layerkonfiguration vom Server wird geladen");
}
}
try {
Element layersElement = e.getChild("cismapActiveLayerConfiguration").getChild("Layers"); // NOI18N
if (layersElement == null) {
log.warn("LayerElement nicht gefunden! Suche nach altem Kind \"RasterLayers\""); // NOI18N
layersElement = e.getChild("cismapActiveLayerConfiguration").getChild("RasterLayers"); // NOI18N
if (layersElement == null) {
log.error("Kein valides Layerelement gefunden."); // NOI18N
return;
}
}
final Element[] orderedLayers = CidsLayerFactory.orderLayers(layersElement);
for (final Element curLayerElement : orderedLayers) {
final String curKeyString = CidsLayerFactory.getKeyforLayerElement(curLayerElement);
if (curKeyString != null) {
if (log.isDebugEnabled()) {
log.debug("Adding element: " + curLayerElement + " with key: " + curKeyString);
}
masterLayerHashmap.put(curKeyString, curLayerElement);
} else {
log.warn("Es war nicht möglich einen Keystring für das Element: " + curLayerElement
+ " zu erzeugen");
}
}
} catch (Exception ex) {
log.warn("Kann die Layerkonfiguration des Servers nicht laden", ex);
}
} else {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("Es wird keine Layerkonfiguration vom Server geladen ");
}
}
}
}
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
@Override
public synchronized void configure(final Element e) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("ActiveLayerModel configure(" + e.getName() + ")"); // NOI18N
}
}
try {
final Element conf = e.getChild("cismapActiveLayerConfiguration"); // NOI18N
final List<String> links = LayerWidget.getCapabilities(conf, new ArrayList<String>());
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("Capabilties links: " + links); // NOI18N
}
}
final HashMap<String, WMSCapabilities> capabilities = new HashMap<String, WMSCapabilities>();
if (links.size() > 0) {
createLayers(conf, capabilities);
} else {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("No Capabilities links"); // NOI18N
}
}
createLayers(conf, capabilities);
}
} catch (Throwable ex) {
log.error("Error during the configuration of the ActiveLayerModell", ex); // NOI18N
}
}
/**
* DOCUMENT ME!
*
* @param conf DOCUMENT ME!
* @param capabilities DOCUMENT ME!
*/
private void createLayers(final Element conf, final HashMap<String, WMSCapabilities> capabilities) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("removing all existing layers"); // NOI18N
}
}
removeAllLayers();
Element layerElement = conf.getChild("Layers"); // NOI18N
if (layerElement == null) {
log.warn("LayerElement not found! Check for old version child \"RasterLayers\""); // NOI18N
layerElement = conf.getChild("RasterLayers"); // NOI18N
if (layerElement == null) {
log.error("no valid layers element found"); // NOI18N
return;
}
}
log.info("restoring " + layerElement.getChildren().size() + " layers from xml configuration"); // NOI18N
final Element[] orderedLayers = CidsLayerFactory.orderLayers(layerElement);
for (final Element element : orderedLayers) {
createLayer(element, capabilities);
}
}
/**
* DOCUMENT ME!
*
* @param element DOCUMENT ME!
* @param capabilities DOCUMENT ME!
*/
private void createLayer(final Element element, final HashMap<String, WMSCapabilities> capabilities) {
if (DEBUG) {
if (log.isDebugEnabled()) {
log.debug("trying to add Layer '" + element.getName() + "'"); // NOI18N
}
}
final String currentKeyString = CidsLayerFactory.getKeyforLayerElement(element);
if (isInitalLayerConfigurationFromServer()
&& !masterLayerHashmap.containsKey(currentKeyString)) {
log.info("Layer in Serverkonfiguration nicht vorhanden, wird nicht hinzugefügt KeyString: "
+ currentKeyString);
return;
}
try {
final ServiceLayer layer = CidsLayerFactory.createLayer(element, capabilities, this);
if (layer != null) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
try {
log.info(
"addLayer ("
+ layer.getName()
+ ")"); // NOI18N
if (layer instanceof ActiveLayerModelStore) {
((ActiveLayerModelStore)layer).setActiveLayerModel(ActiveLayerModel.this);
}
addLayer(layer, layers.size());
// without the following event, the featureInfoWidget does not know this layer
ActiveLayerEvent ale = new ActiveLayerEvent();
ale.setLayer(layer);
CismapBroker.getInstance().fireLayerInformationStatusChanged(ale);
if (layer instanceof ChildrenProvider) {
final ChildrenProvider childrenProvider = (ChildrenProvider)layer;
for (final Object child : childrenProvider.getChildren()) {
ale = new ActiveLayerEvent();
ale.setLayer(child);
CismapBroker.getInstance().fireLayerInformationStatusChanged(ale);
}
}
} catch (IllegalArgumentException schonVorhanden) {
log.warn(
"Layer '"
+ layer.getName()
+ "' already existed. Do not add the Layer. \n"
+ schonVorhanden.getMessage()); // NOI18N
}
} catch (Exception e) {
log.error("Error while initialising WMS", e);
}
}
});
}
} catch (Throwable t) {
log.error("Layer layer '" + element.getName() + "' could not be created: \n" + t.getMessage(), t); // NOI18N
}
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Deprecated
@Override
public java.util.TreeMap getRasterServices() {
return getMapServices();
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public java.util.TreeMap getFeatureServices() {
return new TreeMap();
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isInitalLayerConfigurationFromServer() {
return initalLayerConfigurationFromServer;
}
/**
* DOCUMENT ME!
*
* @param initalLayerConfigurationFromServer DOCUMENT ME!
*/
public void setInitalLayerConfigurationFromServer(final boolean initalLayerConfigurationFromServer) {
this.initalLayerConfigurationFromServer = initalLayerConfigurationFromServer;
}
/**
* DOCUMENT ME!
*
* @return the defaultSrs
*/
public Crs getDefaultHomeSrs() {
return defaultHomeSrs;
}
/**
* DOCUMENT ME!
*
* @param defaultSrs the defaultSrs to set
*/
public void setDefaultHomeSrs(final Crs defaultSrs) {
this.defaultHomeSrs = defaultSrs;
}
}