⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extendedagstoclayercontent.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.common.contextmenus;

import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.esri.adf.web.ags.data.AGSLocalMapResource;
import com.esri.adf.web.ags.data.AGSMapFunctionality;
import com.esri.adf.web.ags.data.AGSTocLayerContent;
import com.esri.adf.web.faces.event.TocEvent;
import com.esri.arcgisws.Fields;
import com.esri.arcgisws.LayerDescription;
import com.esri.arcgisws.MapLayerInfo;
import com.esri.solutions.jitk.web.ags.data.AGSFilterFunctionality;
import com.esri.solutions.jitk.web.tasks.filter.FilterTask;

public class ExtendedAGSTocLayerContent extends AGSTocLayerContent{
	private static final long serialVersionUID = 7302705850029483270L;
	public static final String FILTER_LAYER_CONTEXT_MENU_ITEM = "filterLayer";
	private static final Logger _logger = LogManager.getLogger(ExtendedAGSTocLayerContent.class);
	 
	public ExtendedAGSTocLayerContent(){
	}

	public void handleContextMenuEvent(String contextMenuItemValue, TocEvent args) throws Exception {
	    if (contextMenuItemValue.equals(FILTER_LAYER_CONTEXT_MENU_ITEM)) {        
	      TocEvent event = args;
	      AGSMapFunctionality mapFunc = this.tocFunc.getMapFunctionality();
	      MapLayerInfo layerInfo = mapFunc.getLayerInfo(this.layerDesc.getLayerID());
	      
	      LayerDescription desc = mapFunc.getLayerDescription(layerInfo.getLayerID());
	      String resourceId = event.getWebContext().getResourceId(mapFunc.getResource());
		  String mapSourceName = mapFunc.getResource().getAlias();
				
		  // See if this is an AGSLocalMapResource
		  if (mapFunc.getResource() instanceof AGSLocalMapResource){
			  mapSourceName = ((AGSLocalMapResource)mapFunc.getResource()).getServerObjectName();
		  }
		  
		  Fields fields = layerInfo.getFields();
		  String _layerName = null;
		  String _resourceName = null;
		  AGSFilterFunctionality agsFunc = null;
		  
		  agsFunc = (AGSFilterFunctionality)mapFunc.getResource().getFunctionality("AGSFilter");
		  
	      if (layerInfo.isHasAttributes() && (fields != null) && (agsFunc != null)) {
			  _resourceName = resourceId + "!" + layerInfo.getLayerID();
			  _layerName = mapSourceName + "." + layerInfo.getName();
			    
			  FacesContext facesContext = FacesContext.getCurrentInstance();    
		      FilterTask filterTask = (FilterTask) facesContext.getApplication().createValueBinding("#{FilterTask}").getValue(facesContext);
		            	  
		      // Set the properties for the FilterTask      	  
		      filterTask.setInputLayer(_layerName);
		      filterTask.inputLayerLabelSet(_layerName);
		      filterTask.setLayer(_resourceName);
		      filterTask.getUpdateAttributeList(_resourceName);
		      
		      // this is used to uniquely identify the node for changing the style in the TOC
		      String layerNameId = layerInfo.getName();
		      filterTask.setTextValue("");
		      
		      // Display the currently set definition expression
		      filterTask.setSql(desc.getDefinitionExpression());
		      _logger.debug("- ExtendedAGSTocLayerContent - Definition Expression: " + desc.getDefinitionExpression());
		      
		      // Set the domainvaluelist to null - display 'No Values'
		      filterTask.resetDomainValueList();
		      filterTask.setSelectedLayer(layerNameId);
		          
		      filterTask.getFilterTaskRenderer().setDisplayFilterTask(true);
		      event.getWebContext().refresh();
	      }
	
	      return;
	    }
	    
	    super.handleContextMenuEvent(contextMenuItemValue,args);
	}
  
	public List<SelectItem> getContextMenuItems() {
	    AGSMapFunctionality mapFunc = this.tocFunc.getMapFunctionality();
	    MapLayerInfo layerInfo = mapFunc.getLayerInfo(this.layerDesc.getLayerID());
	    Fields fields = layerInfo.getFields();   
	    List<SelectItem> contextMenuItems = null;
	         
	    int origContextMenuSize = super.getContextMenuItems().size();
	    contextMenuItems = new ArrayList<SelectItem>(origContextMenuSize + 1);
	    SelectItem reorderLayer = new SelectItem(FILTER_LAYER_CONTEXT_MENU_ITEM, "Filter", "Filter Layer");
	   
	    for (int i=0; i<origContextMenuSize; i++) {
	    	contextMenuItems.add((SelectItem)super.getContextMenuItems().get(i));
	    }
	    
	    if (layerInfo.isHasAttributes() && (fields != null) && 
	    		(!this.hasSingleFusedMapCache)) {
	    	contextMenuItems.add(reorderLayer);
	    }
	    
	    return contextMenuItems;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -