📄 labelredliningtask.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 + -