📄 jitktocrenderer.java
字号:
package com.esri.solutions.jitk.web.tasks.filter;
import java.util.Map;
import java.util.Set;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.esri.adf.web.data.WebToc;
import com.esri.adf.web.faces.component.TocControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.TocRenderer;
import com.esri.adf.web.util.XMLUtil;
import com.esri.aims.mtier.model.map.layer.Layer;
import com.esri.arcgisws.MapLayerInfo;
import com.esri.solutions.jitk.common.personalization.IPersonalizable;
import com.esri.solutions.jitk.common.personalization.IPersonalizationContext;
import com.esri.solutions.jitk.web.tasks.mapcomp.ISaveMapComposition;
public class JitkTocRenderer extends TocRenderer implements IPersonalizable {
private static final Logger _loggner = LogManager.getLogger(JitkTocRenderer.class);
private IPersonalizationContext personalCtx = null;
public void setSaveMapComposition(ISaveMapComposition saver) {
}
public void setPersonalizationContext(IPersonalizationContext ctx) {
personalCtx = ctx;
}
public Class<TocControl> getControlClass() {
return TocControl.class;
}
public Object getOriginalState(UIComponent component) {
Document xmlDoc = XMLUtil.newDocument();
renderOurOwnXML(XMLUtil.createElement(xmlDoc, "root", null, null), (TocControl) component);
return XMLUtil.transform(xmlDoc, null);
}
public void renderAjaxResponse(final FacesContext facesContext,
final UIComponent component,
final Object previousState,
final boolean b,
Element parentElement) {
if (! (((TocControl) component).getTocModel() instanceof WebToc))
return;
Document xmlDoc = XMLUtil.newDocument();
boolean filteredLayers = renderOurOwnXML(XMLUtil.createElement(xmlDoc, "root", null, null), component);
String newState = XMLUtil.transform(xmlDoc, null);
// if we have filtered layers then append the response
if (filteredLayers)
parentElement.appendChild(parentElement.getOwnerDocument().importNode(xmlDoc.getElementsByTagName("root").item(0).getFirstChild(), true));
_loggner.debug("JitkTocRenderer xml output: " + newState);
}
@SuppressWarnings("unchecked")
public boolean renderOurOwnXML(Element parentElement, final UIComponent aComponent) {
try {
boolean FilteredLayers = false;
if (personalCtx != null) {
Map mapFilterExpressions = (Map)personalCtx.getAttribute("FilterExpression");
if (mapFilterExpressions != null){
Set set = mapFilterExpressions.keySet();
Object[] setVals = set.toArray();
Element anElement = XMLUtil.createElement("filtered-layers", null, parentElement);
MapLayerInfo mapLayerInfo = null;
Layer layer = null;
for( Object obj : setVals){
//while (iter.hasNext()) {
Object lInfo = obj;
if (lInfo instanceof MapLayerInfo)
mapLayerInfo = (MapLayerInfo)lInfo;
else
layer = (Layer)lInfo;
String layerName = "";
if (mapLayerInfo != null){
layerName = mapLayerInfo.getName();
}
else if (layer != null){
layerName = layer.getName();
}
if (layerName != ""){
XMLUtil.createElement("Layer", layerName, anElement);
FilteredLayers = true;
}
}
}
}
return FilteredLayers;
} catch (Exception e) {
_loggner.debug(e.toString());
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -