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

📄 labelredliningtask.java

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

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.data.symbol.WebSymbol;
import com.esri.adf.web.data.symbol.WebTrueTypeMarkerSymbol;
import com.esri.adf.web.faces.event.MapEvent;
import com.esri.adf.web.faces.event.TaskEvent;
import com.esri.solutions.jitk.web.tasks.GraphicsDrawingTask;

/**
 * This task supports adding annotation text to the map.
 */
public class LabelRedliningTask extends GraphicsDrawingTask {
	private static final long serialVersionUID = -66925870555772880L;
	private static final Logger _logger = Logger.getLogger(LabelRedliningTask.class);
	private static final String LABEL_REDLINING_TASK = "Label Redlining Task";

	private String footerNote = null;
	private String _labelText = null;
	private String _labelColor = "0,0,0";
	private String _sizeParam = null;
	private String _fontParam = null;
	private String _font = null;
	private String _labelSize = null;
	private String _fontPreview = "Arial";
	private String _selectLabelFeatures = "0";
	private String _annoText = "Label";
	private String _deleteLabelMessage = null;
	private String _deleteSelectedLabelMessage = null;
	
	public LabelRedliningTask() {
		setTaskInfo(new LabelRedliningTaskInfo());
		setTaskName(LABEL_REDLINING_TASK);
	}

	/**
	 * Get footer note
	 */
	public String getFooterNote() {
		return this.footerNote;
	}

	/**
	 * Set footer note
	 */
	public void setFooterNote(String footerNote) {
		this.footerNote = footerNote;
	}
	
	public void setSizeParam(String sizeParam){
		this._sizeParam = sizeParam;
	}

	public String getSizeParam(){
		return this._sizeParam;
	}

	public void setFontParam(String fontParam){
		this._fontParam = fontParam;
	}

	public String getFontParam(){
		return this._fontParam;
	}

	public Map<String, String> getFontList() {
		
		Map<String, String> fonts = new LinkedHashMap<String, String>();
		fonts.put("arial", "Arial");
		fonts.put("courier new", "Courier New");
		fonts.put("georgia", "Georgia");
		fonts.put("tahoma", "Tahoma");
		fonts.put("times new roman", "Times");
		fonts.put("verdana", "Verdana");
		
		return fonts;
	}

	public Map<String, String> getSizeList() {
		
		Map<String, String> sizes = new LinkedHashMap<String, String>();
		sizes.put("8", "8");
		sizes.put("9", "9");
		sizes.put("10", "10");
		sizes.put("11", "11");
		sizes.put("12", "12");
		sizes.put("14", "14");
		sizes.put("16", "16");
		sizes.put("18", "18");
		sizes.put("20", "20");
		sizes.put("22", "22");
		sizes.put("24", "24");
		sizes.put("26", "26");
		sizes.put("28", "28");
		sizes.put("36", "36");
		sizes.put("48", "48");
		sizes.put("72", "72");
		
		return sizes;
	}

	public void setLabelText(String labelText) {
		this._labelText = labelText;
	}

	public String getLabelText() {
		return this._labelText;
	}

	public void setLabelColor(String labelColor) {
		this._labelColor = labelColor;
	}

	public String getLabelColor() {
		return this._labelColor;
	}

	public void setFont(String font) {
		this._font = font;
	}

	public String getFont() {
		return (this._font == null) ? this._fontParam : this._font;
	}

	/**
	 * Set delete label message
	 */
	public void setDeleteLabelMessage(String deleteLabelMessage) {
		this._deleteLabelMessage = deleteLabelMessage;
	}

	/**
	 * Get delete label message
	 */
	public String getDeleteLabelMessage() {
		return this._deleteLabelMessage;
	}

	/**
	 * Get delete selected label message
	 */
	public String getDeleteSelectedLabelMessage() {
		return this._deleteSelectedLabelMessage;
	}

	/**
	 * Set delete selected label message
	 */
	public void setDeleteSelectedLabelMessage(String deleteSelectedLabelMessage) {
		this._deleteSelectedLabelMessage = deleteSelectedLabelMessage;
	}

	/**
	 * Set select label font size
	 */
	public void setLabelSize(String labelSize) {
		this._labelSize = labelSize;
	}

	/**
	 * Get select label font size
	 */
	public String getLabelSize() {
		return (this._labelSize == null) ? this._sizeParam : this._labelSize;
	}

	/**
	 * Set font preview. Currently not used.
	 */
	public void setFontPreview(String fontPreview) {
		this._fontPreview = fontPreview;
	}

	/**
	 * Get font preview. Currently not used.
	 */
	public String getFontPreview(){
		return this._fontPreview;
	}

	/**
	 * Select selected label features.
	 */
	public void setSelectLabelFeatures(String selectLabelFeatures){
		this._selectLabelFeatures = selectLabelFeatures;
	}

	/**
	 * Get selected label features
	 */
	public String getSelectLabelFeatures(){
		return this._selectLabelFeatures;
	}

	/**
	 * Set annotation text
	 */
	public void setAnnoText(String annoText){
		this._annoText = annoText;
	}

	/**
	 * Get annotation text
	 */
	public String getAnnoText(){
		return this._annoText;
	}

	/**
	 * Delete all labels event
	 */
	public void deleteAllLabels(TaskEvent event) {
		
		try {
			_logger.info("Deleting all label redlines from map.");
			requestTaskRender();
			
			mgResource.deleteAllLabels();
			setSelectLabelFeatures("0");
			
			event.getWebContext().refresh();
		
		} 
		catch (Exception ex) {
			renderExceptionMessage(ex);
			_logger.error("Could not delete all label redlines from map.", ex);
		}
	}

	/**
	 * Find label graphic element event.
	 */
	public void findElement(MapEvent event){
		
		try {
			_logger.info("Selecting label redlines for deletion.");
			requestTaskRender();
			
			mgResource.clearVertexSelection();
			mgResource.clearSelections();
			
			// Init LayerInfos in case they haven't been initialized yet
			if(mgResource.getLayerInfos().size() != 1) {
				List<String> layerNames = new ArrayList<String>();
				layerNames.add(mgResource.getLabelLayerName());
				mgResource.setLayerInfos(layerNames);
			}
			
			setSelectLabelFeatures(Integer.toString(mgResource.selectShapes((WebExtent) event.getWebGeometry().toMapGeometry(event.getWebContext().getWebMap()), 1, false)));
		
			event.getWebContext().refresh();
			
		} 
		catch (Exception ex) {
			renderExceptionMessage(ex);
			_logger.error("Could not select label redlines for deletion: ", ex);
		}
	}

	/**
	 * Delete selected label(s) event.
	 */
	public void deleteSelectLabels(TaskEvent event){
		
		try {
			_logger.info("Deleting selected label redlines.");
			requestTaskRender();
			
			mgResource.deleteSelectedShapes();
			mgResource.clearSelections();
			setSelectLabelFeatures("0");
			
			event.getWebContext().getWebQuery().clearGraphics();
			event.getWebContext().refresh();
			
		} 
		catch (Exception ex) {
			renderExceptionMessage(ex);
			_logger.error("Could not delete selected label redlines.");			
		}
	}

	/**
	 * Clear select label events
	 */
	public void clearSelectLabels(TaskEvent event){
		
		try {
			_logger.info("Clearing label(s) from map");
			requestTaskRender();
			
			mgResource.clearSelections();
			setSelectLabelFeatures("0");
		
			event.getWebContext().refresh();
			
		} 
		catch (Exception ex) {
			renderExceptionMessage(ex);
			_logger.error("Could not clear selected labels");			
		}		
	}

	/**
	 * Place a label event
	 */
	public void placeLabel(MapEvent event) {		
		
		try {
			_logger.info("Placing label on map.");
			requestTaskRender();
			
			mgResource.addGraphicFeature(event.getWebGeometry().toMapGeometry(event.getWebContext().getWebMap()), getTrueTypeMarkerSymbol());
			
			event.getWebContext().refresh();
		
		} 
		catch (Exception ex) {
			renderExceptionMessage(ex);
			_logger.error("Could not place label on map.", ex);
		}
	}

	protected WebSymbol getTrueTypeMarkerSymbol() {
		WebTrueTypeMarkerSymbol pSymbol = new WebTrueTypeMarkerSymbol();
		pSymbol.setAntialiasing(false);
		pSymbol.setFontColor(getLabelColor());
		pSymbol.setFontName(getFont());
		pSymbol.setFontSize(Integer.parseInt(getLabelSize()));
		pSymbol.setFontStyle(WebTrueTypeMarkerSymbol.REGULAR);
		pSymbol.setAntialiasing(true);
		pSymbol.addTextValue(getAnnoText());
		
		return pSymbol;
	}
}

⌨️ 快捷键说明

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