diff --git a/src/PopupMenu.js b/src/PopupMenu.js
new file mode 100644
index 0000000..232e212
--- /dev/null
+++ b/src/PopupMenu.js
@@ -0,0 +1,187 @@
+define([
+ 'dojo/_base/declare',
+ 'dojo/_base/array',
+ 'dojo/_base/html',
+ 'dojo/_base/lang',
+ 'dojo/query',
+ 'dojo/on',
+ 'dojo/Deferred',
+ 'jimu/dijit/DropMenu',
+ 'dijit/_TemplatedMixin',
+ 'dijit/form/HorizontalSlider',
+ 'dijit/form/HorizontalRuleLabels',
+ 'dojo/text!./PopupMenu.html',
+ 'dojo/dom-style',
+ './NlsStrings',
+ './PopupMenuInfo'
+], function(declare, array, html, lang, query, on, Deferred, DropMenu,
+_TemplatedMixin, HorizSlider, HorzRuleLabels, template, domStyle, NlsStrings, PopupMenuInfo) {
+ return declare([DropMenu, _TemplatedMixin], {
+ templateString: template,
+ popupMenuInfo: null,
+ _popupMenuInfoDef: null,
+ _deniedItems: null,
+ _layerInfo: null,
+ constructor: function() {
+ this.nls = NlsStrings.value;
+ this._deniedItems = [];
+ this._popupMenuInfoDef = new Deferred();
+ },
+
+ _getDropMenuPosition: function(){
+ return {
+ top: "28px",
+ //left: "-107px"
+ left: 12 - html.getStyle(this.dropMenuNode, 'width') + 'px'
+ };
+ },
+
+ _getTransNodePosition: function() {
+ return {
+ top: "15px",
+ //left: "-107px"
+ left: -174 - html.getStyle(this.dropMenuNode, 'width') + 'px'
+ };
+ },
+
+ _onBtnClick: function(){
+ // if(!this.dropMenuNode){
+ // PopupMenuInfo.create(this._layerInfo, this._appConfig)
+ // .then(lang.hitch(this, function(popupMenuInfo) {
+ // this.items = popupMenuInfo.getDisplayItems();
+ // this.popupMenuInfo = popupMenuInfo;
+ // this._createDropMenuNode();
+ // this.own(on(this.dropMenuNode, 'click', lang.hitch(this, function(evt){
+ // evt.stopPropagation();
+ // })));
+ // this._popupMenuInfoDef.resolve(popupMenuInfo);
+ // }));
+ // }
+ },
+
+ btnClick: function() {
+ if(!this.dropMenuNode){
+ PopupMenuInfo.create(this._layerInfo, this._appConfig)
+ .then(lang.hitch(this, function(popupMenuInfo) {
+ this.items = popupMenuInfo.getDisplayItems();
+ this.popupMenuInfo = popupMenuInfo;
+ this._createDropMenuNode();
+ this.own(on(this.dropMenuNode, 'click', lang.hitch(this, function(evt){
+ evt.stopPropagation();
+ })));
+ this._popupMenuInfoDef.resolve(popupMenuInfo);
+ }));
+ }
+ },
+
+ getPopupMenuInfo: function() {
+ // var def = new Deferred();
+ // if(this.popupMenuInfo) {
+ // def.resolve(this.popupMenuInfo);
+ // } else {
+ // PopupMenuInfo.create(this._layerInfo).then(lang.hitch(this, function(popupMenuInfo) {
+ // this.popupMenuInfo = popupMenuInfo;
+ // def.resolve(popupMenuInfo);
+ // }));
+ // }
+ // return def;
+ return this._popupMenuInfoDef;
+ },
+
+ // will call after openDropMenu
+ _refresh: function() {
+ this._denyItems();
+ },
+
+ _denyItems: function() {
+ var itemNodes = query("div[class~='menu-item']", this.dropMenuNode)
+ .forEach(function(itemNode){
+ html.removeClass(itemNode, "menu-item-dissable");
+ });
+ array.forEach(this._deniedItems, function(itemKey) {
+ itemNodes.forEach(function(itemNode){
+ if (html.getAttr(itemNode, 'itemId') === itemKey) {
+ html.addClass(itemNode, "menu-item-dissable");
+ if(itemKey === 'url') {
+ query(".menu-item-description", itemNode).forEach(function(itemA){
+ html.setAttr(itemA, 'href', '#');
+ html.removeAttr(itemA, 'target');
+ });
+ }
+ }
+ });
+ }, this);
+ },
+
+ selectItem: function(item){
+ var index = this._deniedItems.indexOf(item.key);
+ if (index === -1) {
+ this.emit('onMenuClick', item);
+ }
+ },
+
+ openDropMenu: function(deniedItemsDef){
+ // if (deniedItems) {
+ // this._deniedItems = deniedItems;
+ // } else {
+ // this._deniedItems = [];
+ // }
+
+ deniedItemsDef.then(lang.hitch(this, function(deniedItems) {
+ this._deniedItems = deniedItems;
+ this._refresh();
+ }));
+ this.inherited(arguments);
+ },
+
+ closeDropMenu: function(){
+ this.inherited(arguments);
+ this.hideTransNode();
+ },
+
+ // about transparcency
+ _onTransparencyDivClick: function(evt) {
+ // summary:
+ // response to click transparency in popummenu.
+ evt.stopPropagation();
+ },
+
+ showTransNode: function(transValue) {
+ /* global isRTL */
+ if (!this.transHorizSlider) {
+ this._createTransparencyWidget();
+ this.transHorizSlider.set("value", 1 - transValue);
+ }
+ domStyle.set(this.transparencyDiv, "top", this._getTransNodePosition().top);
+ if(isRTL) {
+ domStyle.set(this.transparencyDiv, "right", this._getTransNodePosition().left);
+ } else {
+ domStyle.set(this.transparencyDiv, "left", this._getTransNodePosition().left);
+ }
+ domStyle.set(this.transparencyDiv, "display", "block");
+ },
+
+ hideTransNode: function() {
+ domStyle.set(this.transparencyDiv, "display", "none");
+ },
+
+ _createTransparencyWidget: function() {
+ this.transHorizSlider= new HorizSlider({
+ minimum: 0,
+ maximum: 1,
+ intermediateChanges: true
+ }, this.transparencyBody);
+
+ this.own(this.transHorizSlider.on("change", lang.hitch(this, function(newTransValue){
+ var data = {newTransValue: newTransValue};
+ this.emit('onMenuClick', {key: 'transparencyChanged'}, data);
+ })));
+
+ new HorzRuleLabels({
+ container: "bottomDecoration"
+ }, this.transparencyRule);
+ }
+
+
+ });
+});
diff --git a/src/PopupMenuInfo.js b/src/PopupMenuInfo.js
new file mode 100644
index 0000000..92830a7
--- /dev/null
+++ b/src/PopupMenuInfo.js
@@ -0,0 +1,361 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2014 Esri. All Rights Reserved.
+//
+// Licensed under the Apache License Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+///////////////////////////////////////////////////////////////////////////
+
+define([
+ 'dojo/_base/declare',
+ 'dojo/_base/array',
+ 'dojo/_base/lang',
+ 'dojo/Deferred',
+ 'dojo/promise/all',
+ 'jimu/portalUrlUtils',
+ 'jimu/WidgetManager',
+ './NlsStrings'
+], function(declare, array, lang, Deferred, all, portalUrlUtils, WidgetManager, NlsStrings) {
+ var clazz = declare([], {
+
+ _candidateMenuItems: null,
+ //_deniedItems: null,
+ _displayItems: null,
+ _layerInfo: null,
+ _layerType: null,
+ _appConfig: null,
+
+ constructor: function(layerInfo, displayItemInfos, layerType, appConfig) {
+ this.nls = NlsStrings.value;
+ this._layerInfo = layerInfo;
+ this._layerType = layerType;
+ this._appConfig = appConfig;
+ this._initCandidateMenuItems();
+ this._initDisplayItems(displayItemInfos);
+ },
+
+ _getATagLabel: function() {
+ var url;
+ var label;
+ var itemLayerId = this._layerInfo._isItemLayer && this._layerInfo._isItemLayer();
+
+ if(itemLayerId) {
+ url = portalUrlUtils.
+ getItemDetailsPageUrl(portalUrlUtils.getStandardPortalUrl(this._appConfig.portalUrl),
+ itemLayerId);
+ label = this.nls.itemShowItemDetails;
+ } else if(this._layerInfo.layerObject &&
+ this._layerInfo.layerObject.url &&
+ (this._layerType === "CSVLayer" || this._layerType === "KMLLayer")) {
+ url = this._layerInfo.layerObject.url;
+ label = this.nls.itemDownload;
+ } else if(this._layerInfo.layerObject && this._layerInfo.layerObject.url) {
+ url = this._layerInfo.layerObject.url;
+ label = this.nls.itemDesc;
+ } else {
+ url = '';
+ label = this.nls.itemDesc;
+ }
+
+ return '';
+ },
+
+
+ _initCandidateMenuItems: function() {
+ //descriptionTitle: NlsStrings.value.itemDesc,
+ // var layerObjectUrl = (this._layerInfo.layerObject && this._layerInfo.layerObject.url) ?
+ // this._layerInfo.layerObject.url :
+ // '';
+ this._candidateMenuItems = [{
+ key: 'separator',
+ label: ''
+ },{
+ key: 'empty',
+ label: this.nls.empty
+ },{
+ key: 'zoomto',
+ label: this.nls.itemZoomTo
+ },{
+ key: 'transparency',
+ label: this.nls.itemTransparency
+ },{
+ key: 'moveup',
+ label: this.nls.itemMoveUp
+ },{
+ key: 'movedown',
+ label: this.nls.itemMoveDown
+ },{
+ key: 'table',
+ label: this.nls.itemToAttributeTable
+ },{
+ key: 'controlPopup',
+ label: this.nls.removePopup
+ },{
+ key: 'url',
+ label: this._getATagLabel()
+ }];
+ },
+
+ _initDisplayItems: function(displayItemInfos) {
+ this._displayItems = [];
+ // according to candidate itmes to init displayItems
+ array.forEach(displayItemInfos, function(itemInfo) {
+ array.forEach(this._candidateMenuItems, function(item){
+ if(itemInfo.key === item.key) {
+ this._displayItems.push(lang.clone(item));
+ if(itemInfo.onClick) {
+ this._displayItem.onClick = itemInfo.onClick;
+ }
+ }
+ }, this);
+ }, this);
+ },
+
+ getDeniedItems: function() {
+ var defRet = new Deferred();
+ var dynamicDeniedItems = [];
+
+ if (this._layerInfo.isFirst) {
+ dynamicDeniedItems.push('moveup');
+ } else if (this._layerInfo.isLast) {
+ dynamicDeniedItems.push('movedown');
+ }
+
+ if(!this._layerInfo.layerObject || !this._layerInfo.layerObject.url) {
+ dynamicDeniedItems.push('url');
+ }
+
+ var loadInfoTemplateDef = this._layerInfo.loadInfoTemplate();
+ var getSupportTableInfoDef = this._layerInfo.getSupportTableInfo();
+
+ all({
+ infoTemplate: loadInfoTemplateDef,
+ supportTableInfo: getSupportTableInfoDef
+ }).then(lang.hitch(this._layerInfo, function(result){
+
+ // deny controlPopup
+ if(!result.infoTemplate) {
+ dynamicDeniedItems.push('controlPopup');
+ }
+
+ // deny table.
+ var supportTableInfo = result.supportTableInfo;
+ var attributeTableWidgets = WidgetManager.getInstance().getWidgetsByName("AttributeTable");
+ var hasAttributeTable = attributeTableWidgets.length > 0 &&
+ attributeTableWidgets[0].visible;
+ if (!hasAttributeTable ||
+ !supportTableInfo.isSupportedLayer ||
+ !supportTableInfo.isSupportQuery) {
+ dynamicDeniedItems.push('table');
+ }
+ defRet.resolve(dynamicDeniedItems/*this.***.deniedItems.concat(dynamicDeniedItems)*/);
+ }), function() {
+ defRet.resolve(dynamicDeniedItems/*this.***.deniedItems.concat(dynamicDeniedItems)*/);
+ });
+
+ return defRet;
+ },
+
+ getDisplayItems: function() {
+ return this._displayItems;
+ },
+
+ onPopupMenuClick: function(evt) {
+ var result = {
+ closeMenu: true
+ };
+ switch (evt.itemKey) {
+ case 'zoomto'/*this.nls.itemZoomTo'Zoom to'*/:
+ this._onItemZoomToClick(evt);
+ break;
+ case 'moveup'/*this.nls.itemMoveUp'Move up'*/:
+ this._onMoveUpItemClick(evt);
+ break;
+ case 'movedown'/*this.nls.itemMoveDown'Move down'*/:
+ this._onMoveDownItemClick(evt);
+ break;
+ case 'table'/*this.nls.itemToAttributeTable'Open attribute table'*/:
+ this._onTableItemClick(evt);
+ break;
+ case 'transparencyChanged':
+ this._onTransparencyChanged(evt);
+ result.closeMenu = false;
+ break;
+ case 'controlPopup':
+ this._onControlPopup();
+ break;
+
+ }
+ return result;
+ },
+
+ /**********************************
+ * Respond events respectively.
+ *
+ * event format:
+ // evt = {
+ // itemKey: item key
+ // extraData: estra data,
+ // layerListWidget: layerListWidget,
+ // layerListView: layerListView
+ // }, result;
+ **********************************/
+ _onItemZoomToClick: function(evt) {
+ /*jshint unused: false*/
+ //this.map.setExtent(this.getExtent());
+ this._layerInfo.getExtent().then(lang.hitch(this, function(geometries) {
+ this._layerInfo.map.setExtent(geometries[0]);
+ }));
+ },
+
+ _onMoveUpItemClick: function(evt) {
+ if (!this._layerInfo.isFirst) {
+ evt.layerListView.moveUpLayer(this._layerInfo.id);
+ }
+ },
+
+ _onMoveDownItemClick: function(evt) {
+ if (!this._layerInfo.isLast) {
+ evt.layerListView.moveDownLayer(this._layerInfo.id);
+ }
+ },
+
+ _onTableItemClick: function(evt) {
+ // new version, send layerInfo object.
+ this._layerInfo.getLayerType().then(lang.hitch(this, function(layerType){
+ if (this._layerInfo._getLayerTypesOfSupportTable().indexOf(layerType) >= 0) {
+ evt.layerListWidget.publishData({
+ 'target': 'AttributeTable',
+ 'layer': this._layerInfo
+ });
+ }
+ }));
+ },
+
+ _onTransparencyChanged: function(evt) {
+ this._layerInfo.setOpacity(1 - evt.extraData.newTransValue);
+ },
+
+ _onControlPopup: function(evt) {
+ /*jshint unused: false*/
+ if(this._layerInfo.controlPopupInfo.enablePopup) {
+ this._layerInfo.disablePopup();
+ } else {
+ this._layerInfo.enablePopup();
+ }
+ this._layerInfo.map.infoWindow.hide();
+ }
+ });
+
+ clazz.create = function(layerInfo, appConfig) {
+ var retDef = new Deferred();
+ var isRootLayer = layerInfo.isRootLayer();
+ var defaultItemInfos = [{
+ key: 'url',
+ onClick: null
+ }];
+
+ var itemInfoCategoreList = {
+ 'RootLayer': [{
+ key: 'zoomto'
+ },{
+ key: 'transparency'
+ },{
+ key:'separator'
+ },{
+ key: 'moveup'
+ },{
+ key: 'movedown'
+ },{
+ key:'separator'
+ },{
+ key: 'url'
+ }],
+ 'RootLayerAndFeatureLayer': [{
+ key: 'zoomto'
+ }, {
+ key: 'transparency'
+ }, {
+ key:'separator'
+ },{
+ key: 'controlPopup'
+ }, {
+ key:'separator'
+ },{
+ key: 'moveup'
+ }, {
+ key: 'movedown'
+ }, {
+ key:'separator'
+ }, {
+ key: 'table'
+ }, {
+ key:'separator'
+ },{
+ key: 'url'
+ }],
+ 'FeatureLayer': [{
+ key: 'controlPopup'
+ }, {
+ key:'separator'
+ }, {
+ key: 'table'
+ }, {
+ key:'separator'
+ }, {
+ key: 'url'
+ }],
+ 'GroupLayer': [{
+ key: 'url'
+ }],
+ 'Table': [{
+ key: 'table'
+ }, {
+ key:'separator'
+ }, {
+ key: 'url'
+ }],
+ 'default': defaultItemInfos
+ };
+
+ layerInfo.getLayerType().then(lang.hitch(this, function(layerType){
+ var itemInfoCategory = "";
+ if(isRootLayer && (layerType === "FeatureLayer" ||
+ layerType === "CSVLayer" ||
+ layerType ==="ArcGISImageServiceLayer")) {
+ itemInfoCategory = "RootLayerAndFeatureLayer";
+ } else if(isRootLayer ) {
+ itemInfoCategory = "RootLayer";
+ } else if(layerType === "FeatureLayer" || layerType === "CSVLayer") {
+ itemInfoCategory = "FeatureLayer";
+ } else if(layerType === "GroupLayer") {
+ itemInfoCategory = "GroupLayer";
+ } else if(layerType === "Table") {
+ itemInfoCategory = "Table";
+ } else {
+ //default condition
+ itemInfoCategory = "default";
+ }
+ retDef.resolve(new clazz(layerInfo,
+ itemInfoCategoreList[itemInfoCategory],
+ layerType,
+ appConfig));
+ }), lang.hitch(this, function() {
+ //return default popupmenu info.
+ retDef.resolve(new clazz(layerInfo, [{key:'empty'}]));
+ }));
+ return retDef;
+ };
+
+
+ return clazz;
+});
\ No newline at end of file
diff --git a/src/Widget.html b/src/Widget.html
new file mode 100644
index 0000000..2e35479
--- /dev/null
+++ b/src/Widget.html
@@ -0,0 +1,7 @@
+
+
+
${nls.titleLayers}
+
+
+
+
diff --git a/src/Widget.js b/src/Widget.js
new file mode 100644
index 0000000..4b3af70
--- /dev/null
+++ b/src/Widget.js
@@ -0,0 +1,343 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2014 Esri. All Rights Reserved.
+//
+// Licensed under the Apache License Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+///////////////////////////////////////////////////////////////////////////
+
+define([
+ 'jimu/BaseWidget',
+ 'dojo/_base/declare',
+ 'dojo/_base/lang',
+ 'dojo/_base/array',
+ 'dojo/dom-attr',
+ "dojo/topic",
+ 'dojo/dom-construct',
+ 'dojo/dom-geometry',
+ 'dojo/dom',
+ 'dojo/on',
+ 'dojo/_base/unload',
+ 'dojo/aspect',
+ 'dojo/query',
+ './LayerListView',
+ './PopupMenu',
+ 'dojo/dom-style',
+ './NlsStrings',
+ 'jimu/LayerInfos/LayerInfoFactory',
+ 'jimu/LayerInfos/LayerInfos',
+ 'dojo/promise/all'
+ ],
+ function(BaseWidget, declare, lang, array,domAttr,topic, domConstruct, domGeometry, dom, on, baseUnload,
+ aspect, query, LayerListView, PopupMenu, domStyle, NlsStrings, LayerInfoFactory,
+ LayerInfos, all) {
+ var clazz = declare([BaseWidget], {
+ /*jshint unused: false*/
+ //these two properties is defined in the BaseWiget
+ baseClass: 'jimu-widget-layerList',
+ name: 'layerList',
+ //layerListView: Object{}
+ // A module is responsible for show layers list
+ layerListView: null,
+
+ //operLayerInfos: Object{}
+ // operational layer infos
+ operLayerInfos: null,
+
+ startup: function() {
+ NlsStrings.value = this.nls;
+
+ // summary:
+ // this function will be called when widget is started.
+ // description:
+ // according to webmap or basemap to create LayerInfos instance
+ // and initialize operLayerInfos;
+ // show layers list;
+ // bind events of layerList and create popup menu.
+ // var mapLayers;
+ // LayerInfoFactory.getInstance(this.map).init().then(lang.hitch(this, function(){
+ // if (this.map.itemId) {
+ // this.operLayerInfos =
+ // new LayerInfos(this.map.itemInfo.itemData.baseMap.baseMapLayers,
+ // this.map.itemInfo.itemData.operationalLayers,
+ // this.map);
+ // } else {
+ // mapLayers = this._obtainMapLayers();
+ // this.operLayerInfos = new LayerInfos(mapLayers.basemapLayers,
+ // mapLayers.operationalLayers, this.map);
+ // }
+
+ // this.showLayers();
+ // this.bindEvents();
+ // dom.setSelectable(this.layersSection, false);
+ // }));
+
+ if (this.map.itemId) {
+ LayerInfos.getInstance(this.map, this.map.itemInfo).then(lang.hitch(this, function(operLayerInfos) {
+ this.operLayerInfos = operLayerInfos;
+ this.showLayers();
+ //this.bindEvents();
+ this.own(on(this.operLayerInfos, 'layerInfosChanged', lang.hitch(this, this._onLayerInfosChanged)));
+ dom.setSelectable(this.layersSection, false);
+ if (this.layerListView) this.layerListView._adjustToState();
+ }));
+ } else {
+ var itemInfo = this._obtainMapLayers();
+ LayerInfos.getInstance(this.map, itemInfo).then(lang.hitch(this, function(operLayerInfos) {
+ this.operLayerInfos = operLayerInfos;
+ this.showLayers();
+ //this.bindEvents();
+ this.own(on(this.operLayerInfos, 'layerInfosChanged', lang.hitch(this, this._onLayerInfosChanged)));
+ dom.setSelectable(this.layersSection, false);
+ if (this.layerListView) this.layerListView._adjustToState();
+ }));
+ }
+ this._registerMapZoom();
+ this._setVersionTitle();
+ },
+ _registerMapZoom:function(){
+ //this will grey out layer nodes when zoomed out of scale
+ if (!this._zoomHandler) {
+ var map = this.map;
+ this._zoomHandler = this.own(
+ on(map, 'zoom-end', lang.hitch(this, function () {
+ if (this.layerListView) this.layerListView._adjustToState();
+ }))
+ );
+ }
+ },
+ destroy: function() {
+ this._clearLayers();
+ this.inherited(arguments);
+ },
+
+ _obtainMapLayers: function() {
+ // summary:
+ // obtain basemap layers and operational layers if the map is not webmap.
+ var basemapLayers = [],
+ operLayers = [];
+ // emulate a webmapItemInfo.
+ var retObj = {
+ itemData: {
+ baseMap: {
+ baseMapLayers: []
+ },
+ operationalLayers: []
+ }
+ };
+ // array.forEach(this.map.layerIds.concat(this.map.graphicsLayerIds), function(layerId) {
+ // var layer = this.map.getLayer(layerId);
+ // if (layer.isOperationalLayer) {
+ // operLayers.push({
+ // layerObject: layer,
+ // title: layer.label || layer.title || layer.name || layer.id || " ",
+ // id: layer.id || " "
+ // });
+ // } else {
+ // basemapLayers.push({
+ // layerObject: layer,
+ // id: layer.id || " "
+ // });
+ // }
+ // }, this);
+
+ array.forEach(this.map.graphicsLayerIds, function(layerId) {
+ var layer = this.map.getLayer(layerId);
+ if (layer.isOperationalLayer) {
+ operLayers.push({
+ layerObject: layer,
+ title: layer.label || layer.title || layer.name || layer.id || " ",
+ id: layer.id || " "
+ });
+ }
+ }, this);
+ array.forEach(this.map.layerIds, function(layerId) {
+ var layer = this.map.getLayer(layerId);
+ if (layer.isOperationalLayer) {
+ operLayers.push({
+ layerObject: layer,
+ title: layer.label || layer.title || layer.name || layer.id || " ",
+ id: layer.id || " "
+ });
+ } else {
+ basemapLayers.push({
+ layerObject: layer,
+ id: layer.id || " "
+ });
+ }
+ }, this);
+
+ retObj.itemData.baseMap.baseMapLayers = basemapLayers;
+ retObj.itemData.operationalLayers = operLayers;
+ return retObj;
+ },
+
+
+
+ _layerFilter: function(layerId, basemapLayers, operLayers) {
+ var layer = this.map.getLayer(layerId);
+ if (layer.isOperationalLayer) {
+ operLayers.push({
+ layerObject: layer,
+ title: layer.label || layer.title || layer.name || layer.id || " ",
+ id: layer.id || " "
+ });
+ } else {
+ basemapLayers.push({
+ layerObject: layer,
+ id: layer.id || " "
+ });
+ }
+ },
+
+ showLayers: function() {
+ // summary:
+ // create a LayerListView module used to draw layers list in browser.
+ this.layerListView = new LayerListView({
+ operLayerInfos: this.operLayerInfos,
+ layerListWidget: this,
+ config: this.config,
+ map:this.map
+ }).placeAt(this.layerListBody);
+ },
+
+ _createPopupMenu: function() {
+ // summary:
+ // popup menu is a dijit used to do some operations of layer
+ this.popupMenu = new PopupMenu({
+ layerListWidget: this
+ });
+ domConstruct.place(this.popupMenu.domNode, this.domNode);
+ },
+
+ _clearLayers: function() {
+ // summary:
+ // clear layer list
+ //domConstruct.empty(this.layerListTable);
+ if (this.layerListView && this.layerListView.destroyRecursive) {
+ this.layerListView.destroyRecursive();
+ }
+ },
+
+ flag: true,
+
+ bindEvents: function() {
+ // summary:
+ // bind events are listened by this module
+ var handleRemove, handleRemoves, scaleChangeHandle;
+ //this.own(aspect.after(this.map, "onLayerAddResult",
+ // lang.hitch(this, this._onLayersChange)));
+ this.own(on(this.map, "layer-add-result", lang.hitch(this, this._onLayersChange)));
+ //handleRemove = aspect.after(this.map, "onLayerRemove",
+ // lang.hitch(this, this._onLayersChange));
+ handleRemove = on(this.map, "layer-remove", lang.hitch(this, this._onLayersChange));
+ this.own(handleRemove);
+ //aspect.after(this.map, "onLayerReorder", lang.hitch(this, this._onLayersChange));
+ //this.own(on(this.map, "LayersAddResult", lang.hitch(this, this._onLayersChangeAdds)));
+ //this.own(on(this.map, "layers-add-result", lang.hitch(this, this._onLayersChange)));
+ //handleRemoves = aspect.after(this.map, "onLayersRemoved",
+ // lang.hitch(this, this._onLayersChange));
+ //handleRemoves = on(this.map, "layers-removed", lang.hitch(this, this._onLayersChange));
+ //this.own(handleRemoves);
+ //aspect.after(this.map, "onLayersReorder", lang.hitch(this, this._onLayersChange));
+
+ //this.own(on(this.map, "extent-change", lang.hitch(this, this._onLayersScaleChange)));
+
+ baseUnload.addOnUnload(function() {
+ handleRemove.remove();
+ handleRemoves.remove();
+ //scaleChangeHandle.remove();
+ });
+
+ // map infowindow
+ // on(this.map.infoWindow, "show", lang.hitch(this, function(){
+ // all(this.map.infoWindow.deferreds).then(lang.hitch(this, function() {
+ // var features = [];
+ // if (this.map.infoWindow.features.length > 0) {
+ // features.push(this.map.infoWindow.features[0]);
+ // this.flag = true;
+ // }
+ // this.map.infoWindow.setFeatures(features);
+ // }), function() {
+
+ // });
+
+ // }));
+
+ // on(this.map.infoWindow, "hide", lang.hitch(this, function(){
+ // if (this.flag) {
+ // this.map.infoWindow.show();
+ // this.flag = false;
+ // }
+ // }));
+ },
+
+ _onLayersChange: function(evt) {
+ /*jshint unused: false*/
+ // summary:
+ // response to any layer change.
+ // description:
+ // udate LayerInfos data, cleare layer list and redraw
+ if (evt.layer.declaredClass !== "esri.layers.GraphicsLayer") {
+ this.operLayerInfos.update();
+ this._clearLayers();
+ this.showLayers();
+ }
+ },
+
+ _onLayerInfosChanged: function (layerInfo, changedType) {
+ this._clearLayers();
+ this.showLayers();
+ },
+ _setVersionTitle: function () {
+ var labelNode = this._getLabelNode(this);
+ var manifestInfo = this.manifest;
+ var devVersion = manifestInfo.version;
+ var devWabVersion = manifestInfo.developedAgainst || manifestInfo.wabVersion;
+ var codeSourcedFrom = manifestInfo.codeSourcedFrom;
+ var client = manifestInfo.client;
+
+ var title = "Dev version: " + devVersion + "\n";
+ title += "Developed/Modified against: WAB" + devWabVersion + "\n";
+ title += "Client: " + client + "\n";
+ if (codeSourcedFrom) {
+ title += "Code sourced from: " + codeSourcedFrom + "\n";
+ }
+
+ if (labelNode) {
+ domAttr.set(labelNode, 'title', title);
+ }
+
+ },
+ _getLabelNode: function (widget) {
+ var labelNode;
+ if (!(widget.labelNode) && !(widget.titleLabelNode)) {
+ if (widget.getParent()) {
+ labelNode = this._getLabelNode(widget.getParent());
+ }
+ } else {
+ labelNode = widget.labelNode || widget.titleLabelNode;
+ }
+ return labelNode;
+
+ }
+ //_onLayersScaleChange: function (event) {
+ // console.log("mapScale");
+ // var mapScale = this.map.getScale();
+ // console.log(mapScale);
+ // console.log(this.operLayerInfos);
+
+ //}
+
+ });
+ //clazz.hasConfig = false;
+ return clazz;
+ });
diff --git a/src/config.json b/src/config.json
new file mode 100644
index 0000000..8b59ee5
--- /dev/null
+++ b/src/config.json
@@ -0,0 +1,33 @@
+{
+ "showLegend": true,
+ "metadataTool": {
+ "path": "/exts/LayerMetadata/getMetadata?layer={layerId}&f=pjson",
+ "metadataParseConfig": [
+ {
+ "label": "",
+ "path": "description",
+ "source":"mxd"
+ },
+ {
+ "label":"Credit",
+ "path":"copyrightText",
+ "source":"mxd"
+ },
+ {
+ "label":"Use Limitation",
+ "path":"dataIdInfo->resConst->Consts->useLimit",
+ "source":"soe"
+ },
+ {
+ "label":"Last Updated",
+ "path":"dataIdInfo->idCitation->date->reviseDate",
+ "source":"soe"
+ }
+
+ ]
+ }
+
+}
+
+
+
diff --git a/src/css/images/current_basemap_indicator.png b/src/css/images/current_basemap_indicator.png
new file mode 100644
index 0000000..df226a6
Binary files /dev/null and b/src/css/images/current_basemap_indicator.png differ
diff --git a/src/css/style.css b/src/css/style.css
new file mode 100644
index 0000000..4c92a6b
--- /dev/null
+++ b/src/css/style.css
@@ -0,0 +1,407 @@
+
+.jimu-widget-layerList{
+ position: relative;
+}
+
+.jimu-widget-layerList .jimu-hr{
+ margin-top: 15px;
+}
+
+.jimu-widget-layerList .layers-section{
+ margin-top: 0px;
+}
+
+
+.jimu-widget-layerList .layers-section .layers-list{
+ width: 100%;
+}
+
+.jimu-widget-layerList .layers-section .layer-list-title{
+ height: 16px;
+ font-size: 14px;
+ /*border: 1px solid #000000;*/
+ color: #86909c;
+ margin-top: 14px;
+}
+
+.jimu-widget-layerList .layer-list-body {
+ /*overflow: auto;*/
+}
+
+.jimu-widget-layerList .layer-list-table{
+ width: 100%;
+ border-spacing: 0px;
+}
+
+.jimu-widget-layerList .layers-list-body{
+ border: 0px solid #999;
+}
+
+.jimu-widget-layerList .jimu-widget-row{
+
+}
+
+.jimu-widget-layerList .layer-row{
+ background-color: #ffffff;
+ height: 40px;
+}
+
+.jimu-widget-layerList .layer-row-mouseover{
+ background-color: #e3ecf2;
+}
+
+.jimu-widget-layerList .jimu-widget-row-selected{
+ background-color: #d9dde0;
+;
+}
+
+.jimu-widget-layerList .jimu-widget-row-active{
+ background-color: #009cff;
+}
+
+.jimu-widget-layerList .jimu-widget-row-selected .col-layer-label{
+ color: #333;
+}
+.jimu-widget-layerList .jimu-widget-row-active .col-layer-label{
+ color: #fff;
+}
+
+
+.jimu-widget-layerList .col{
+ border: 0px solid;/*remove*/
+ border-bottom: 0px solid #ffffff;
+ /*************/
+}
+
+.jimu-widget-layerList .col1{
+}
+
+.jimu-widget-layerList .col2{
+ width: auto;
+ word-break: break-word;
+ cursor: pointer;
+}
+
+.jimu-widget-layerList .col3{
+ width: 24px;
+}
+.jimu-widget-layerList .col4{
+ width: 24px;
+}
+
+.jimu-widget-layerList .begin-blank-div{
+ /*float: left;*/
+ width: 12px;
+ height: 2px;
+}
+
+.jimu-widget-layerList .col-showLegend{
+ width: 17px;
+ text-align: center;
+}
+
+.jimu-widget-layerList .showLegend-div{
+ width: 13px;
+ height: 13px;
+ cursor: pointer;
+ font-size: 2px;
+ /*************/
+}
+
+.jimu-widget-layerList .showLegend-image{
+ /*
+ position: relative;
+ top: -1px;
+ left: 3px;
+ */
+ margin-top: 4px;
+ font-size: 3px;
+ padding-left: 3px;
+}
+
+.jimu-rtl .jimu-widget-layerList .showLegend-image{
+ padding-left: 0;
+ padding-right: 3px;
+}
+
+.jimu-widget-layerList .layers-list-imageShowLegend-down{
+ -moz-transform: scale(1) rotate(270deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
+ -webkit-transform: scale(1) rotate(270deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
+ -o-transform: scale(1) rotate(270deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
+ -ms-transform: scale(1) rotate(270deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
+ transform: scale(1) rotate(270deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
+}
+
+.jimu-widget-layerList .layers-list-imageShowLegend-down-div{
+ background-color: #d9dde0;
+}
+
+.jimu-widget-layerList .noLegend-div{
+ /*float: left;*/
+ width: 33px;
+ text-align: right;
+ display: none;
+}
+.jimu-widget-layerList .noLegend-image{
+ display: block;
+ margin: 0 auto;
+}
+
+.jimu-widget-layerList .col-blank{
+ width:17px;
+}
+.jimu-widget-layerList .col-select{
+ width: 17px;
+ /*text-align: center;*/
+}
+
+.jimu-widget-layerList .col-reserve-blank{
+ width: 25px;
+}
+
+.jimu-widget-layerList .col-content{
+ color: #686868;
+ font-size: 12px;
+}
+
+.jimu-widget-layerList .div-select{
+ position: relative;
+ font-size: 2px;
+ /*************/
+}
+
+.jimu-widget-layerList .div-select .checkbox{
+ cursor: auto;
+}
+
+.jimu-widget-layerList .div-content{
+ position: relative;
+ /*************/
+ color: #686868;
+ font-size: 12px;
+ border: 0px solid;
+
+}
+
+.jimu-widget-layerList .col-popupMenu{
+ width: 17px;
+ text-align: center;
+}
+.jimu-widget-layerList .col-select .jimu-selection-box{
+ margin-top: 5px;
+}
+.jimu-widget-layerList .layers-list-body .col-layer-label{
+ color: #686868;
+}
+
+.jimu-widget-layerList .layer-sub-node{
+ display: none;
+ width:100%;
+ border-spacing: 0px;
+}
+
+.jimu-widget-layerList .legend-node-td{
+}
+
+.jimu-widget-layerList .legend-div{
+ overflow: hidden;
+ font-size: 11px;
+}
+
+.jimu-widget-layerList .legend-symbol{
+}
+
+.jimu-widget-layerList .legend-label{
+ margin-top: 17px;
+ color: #686868;
+ font-size: 11px;
+}
+
+.jimu-widget-layerList .layers-list-popupMenu-div{
+ position: relative;
+ width: 16px;
+ height: 40px;
+ /*background-color: #d9dde0;*/
+ cursor: pointer;
+ border-radius: 2px;
+ /*************/
+ float: right;
+ /*margin-right: 4px;*/
+ padding-top: 14px;
+}
+
+.jimu-widget-layerList .layers-list-popupMenu-div .jimu-loading{
+ width: 20px;
+ height: 20px;
+ margin-top: -11px;
+ margin-left: -11px;
+}
+
+.jimu-rtl .jimu-widget-layerList .layers-list-popupMenu-div .jimu-loading{
+ margin-right: -11px;
+}
+
+.jimu-widget-layerList .layers-list-popupMenu-div-selected{
+ width: 13px;
+ height: 13px;
+ background-color: #ffffff;
+ border-radius: 2px;
+}
+
+.jimu-widget-layerList .layers-list-popupMenu-image{
+ position: absolute;
+ top: 5px;
+ left: 3px;
+}
+
+/*
+.jimu-widget-layerList .popup-menu-body{
+ position: absolute;
+ background-color: #d9dde0;
+ width:126px;
+ height:164px;
+ outline-color:#ffffff;
+ outline-style:solid;
+ outline-width:1px;
+ overflow:auto;
+ color: #686868;
+ font-size: 12px;
+ z-index: 2;
+}
+
+
+.jimu-widget-layerList .popup-menu .popup-menu-hr{
+ border-top: 1px solid #ffffff;
+ margin-left: 1px;
+ margin-right: 1px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+.jimu-widget-layerList .popup-menu .popup-menu-row{
+ background-color: #d9dde0;
+ height: 25px;
+ padding-top: 5px;
+ padding-left: 10px;
+ text-align: left;
+ cursor: pointer;
+ text-decoration: none;
+}
+.jimu-widget-layerList .popup-menu .popup-menu-row-a{
+ text-decoration: none;
+ color: #686868;
+}
+.jimu-widget-layerList .popup-menu .popup-menu-row-selected{
+ text-decoration: underline;
+}
+
+.jimu-widget-layerList .popup-menu .popup-menu-row-dissable{
+ color:#c1c1c1;
+}
+
+.jimu-widget-layerList .popup-menu .popup-menu-row .popup-menu-row-transparency{
+ width:100px;
+}
+*/
+
+.jimu-widget-layerList .popup-menu-transparency-body {
+ position: absolute;
+ background-color: #d9dde0;
+ outline-color:#ffffff;
+ outline-style:solid;
+ outline-width:1px;
+ width:184px;
+ height:50px;
+ padding-left: 2%;
+ padding-right: 2%;
+ color: #686868;
+ z-index: 2;
+ font-size: 12px;
+ display: none;
+}
+
+.jimu-widget-layerList .popup-menu-transparency-body .transparency-rule{
+}
+
+.jimu-widget-layerList .popup-menu-transparency-body .label {
+ overflow: hidden;
+ margin-top: 2px;
+ margin-bottom: 1px;
+}
+
+/*
+.jimu-widget-layerList .popup-menu-transparency-body .label .label-left{
+ float: left;
+}
+
+.jimu-widget-layerList .popup-menu-transparency-body .label .label-right{
+ float: right;
+}
+*/
+/***********************************/
+
+.jimu-widget-layerList .jimu-dropmenu .jimu-icon-btn{
+ width: 13px;
+ height: 13px;
+ min-height: 13px;
+ min-width: 13px;
+ border-radius: 2px;
+}
+
+.jimu-widget-layerList .jimu-dropmenu .jimu-icon-btn-selected{
+ background-color: #ffffff;
+ border: 1px solid #ffffff;
+}
+
+.jimu-widget-layerList .jimu-dropmenu .drop-menu{
+ /*width:126px;
+ height:164px;*/
+ outline-color:#ffffff;
+ outline-style:solid;
+ outline-width:1px;
+ overflow:auto;
+ color: #686868;
+ font-size: 12px;
+ z-index: 2;
+ min-width: 119px;
+ right: 0px;
+}
+
+.jimu-rtl .jimu-widget-layerList .jimu-dropmenu .drop-menu{
+ left: 0px;
+}
+
+.jimu-widget-layerList .jimu-dropmenu .menu-item{
+ line-height: 25px;
+ white-space: nowrap;
+}
+
+.jimu-widget-layerList .jimu-dropmenu .menu-item-dissable{
+ color:#c1c1c1;
+}
+
+.jimu-widget-layerList .legends-loading-img{
+ width: 30px;
+ height: 30px;
+}
+
+.jimu-widget-layerList .jimu-dropmenu .menu-item .menu-item-description{
+ text-decoration: none;
+ color: inherit;
+ display: block;
+}
+
+
+.jimu-widget-layerList .layers-list-metaData-div {
+ position:relative;
+ float:right;
+ width:16px;
+ height:16px;
+ cursor: pointer;
+ background:transparent url("../images/metadata.png") center center no-repeat;
+
+}
+.jimu-widget-layerList .LayerOutOfScale{
+ color: grey;
+ opacity: 0.5;
+}
diff --git a/src/images/icon.png b/src/images/icon.png
new file mode 100644
index 0000000..527ec04
Binary files /dev/null and b/src/images/icon.png differ
diff --git a/src/images/loading.gif b/src/images/loading.gif
new file mode 100644
index 0000000..630b6cd
Binary files /dev/null and b/src/images/loading.gif differ
diff --git a/src/images/metadata.png b/src/images/metadata.png
new file mode 100644
index 0000000..bda8a3d
Binary files /dev/null and b/src/images/metadata.png differ
diff --git a/src/images/noLegend.png b/src/images/noLegend.png
new file mode 100644
index 0000000..b7daad0
Binary files /dev/null and b/src/images/noLegend.png differ
diff --git a/src/images/table.png b/src/images/table.png
new file mode 100644
index 0000000..ea1c21b
Binary files /dev/null and b/src/images/table.png differ
diff --git a/src/images/v.png b/src/images/v.png
new file mode 100644
index 0000000..5503eb7
Binary files /dev/null and b/src/images/v.png differ
diff --git a/src/images/v_left.png b/src/images/v_left.png
new file mode 100644
index 0000000..48e89c9
Binary files /dev/null and b/src/images/v_left.png differ
diff --git a/src/images/v_right.png b/src/images/v_right.png
new file mode 100644
index 0000000..b25b386
Binary files /dev/null and b/src/images/v_right.png differ
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..6a3c56f
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,13 @@
+{
+ "name": "LayerListWidget",
+ "2D": true,
+ "platform": "HTML",
+ "version": "11795",
+ "client":"GISCO",
+ "developedAgainst":"1.3",
+ "wabVersion":"1.3",
+ "author": "Esri R&D Center Beijing",
+ "description": "",
+ "copyright": "",
+ "license": "http://www.apache.org/licenses/LICENSE-2.0"
+}
\ No newline at end of file
diff --git a/src/nls/ar/strings.js b/src/nls/ar/strings.js
new file mode 100644
index 0000000..83ec49f
--- /dev/null
+++ b/src/nls/ar/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "قائمة الطبقات",
+ titleBasemap: "خرائط الأساس",
+ titleLayers: "الطبقات التشغيلية",
+ labelLayer: "اسم الطبقة",
+ itemZoomTo: "تكبير إلى",
+ itemTransparency: "معدل الشفافية:",
+ itemTransparent: "شفاف",
+ itemOpaque: "غير شفاف",
+ itemMoveUp: "نقل لأعلى",
+ itemMoveDown: "نقل لأسفل",
+ itemDesc: "الوصف",
+ itemDownload: "تنزيل",
+ itemToAttributeTable: "فتح جدول البيانات الجدولية",
+ itemShowItemDetails: "إظهار تفاصيل العنصر",
+ empty: "فارغ",
+ removePopup: "إزالة العنصر المنبثق",
+ enablePopup: "تمكين العنصر المنبثق"
+ })
+);
diff --git a/src/nls/cs/strings.js b/src/nls/cs/strings.js
new file mode 100644
index 0000000..e747aad
--- /dev/null
+++ b/src/nls/cs/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Seznam vrstev",
+ titleBasemap: "Podkladové mapy",
+ titleLayers: "Operační vrstvy",
+ labelLayer: "Název vrstvy",
+ itemZoomTo: "Přiblížit na",
+ itemTransparency: "Průhlednost",
+ itemTransparent: "Průhledná",
+ itemOpaque: "Neprůhledná",
+ itemMoveUp: "Přesunout nahoru",
+ itemMoveDown: "Přesunout dolů",
+ itemDesc: "Popis",
+ itemDownload: "Stáhnout",
+ itemToAttributeTable: "Otevřít atributovou tabulku",
+ itemShowItemDetails: "Ukázat podrobnosti položky",
+ empty: "prázdné",
+ removePopup: "Odebrat vyskakovací okno",
+ enablePopup: "Povolit vyskakovací okno"
+ })
+);
diff --git a/src/nls/da/strings.js b/src/nls/da/strings.js
new file mode 100644
index 0000000..2aad6c8
--- /dev/null
+++ b/src/nls/da/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lagliste",
+ titleBasemap: "Baggrundskort",
+ titleLayers: "Operationelle lag",
+ labelLayer: "Navn på lag",
+ itemZoomTo: "Zoom til",
+ itemTransparency: "Gennemsigtighed",
+ itemTransparent: "Gennemsigtig",
+ itemOpaque: "Uigennemsigtig",
+ itemMoveUp: "Flyt op",
+ itemMoveDown: "Flyt ned",
+ itemDesc: "Beskrivelse",
+ itemDownload: "Hent",
+ itemToAttributeTable: "Åbn attributtabel",
+ itemShowItemDetails: "Vil elementoplysninger",
+ empty: "tom",
+ removePopup: "Fjern pop-up",
+ enablePopup: "Aktivér pop-up"
+ })
+);
diff --git a/src/nls/de/strings.js b/src/nls/de/strings.js
new file mode 100644
index 0000000..472ac25
--- /dev/null
+++ b/src/nls/de/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Layer-Liste",
+ titleBasemap: "Grundkarten",
+ titleLayers: "Operationale Layer",
+ labelLayer: "Layer-Name",
+ itemZoomTo: "Zoomen auf",
+ itemTransparency: "Transparenz",
+ itemTransparent: "Transparent",
+ itemOpaque: "Nicht transparent",
+ itemMoveUp: "Nach oben verschieben",
+ itemMoveDown: "Nach unten verschieben",
+ itemDesc: "Beschreibung",
+ itemDownload: "Herunterladen",
+ itemToAttributeTable: "Attributtabelle öffnen",
+ itemShowItemDetails: "Elementdetails anzeigen",
+ empty: "leer",
+ removePopup: "Pop-up entfernen",
+ enablePopup: "Pop-up aktivieren"
+ })
+);
diff --git a/src/nls/el/strings.js b/src/nls/el/strings.js
new file mode 100644
index 0000000..88a568d
--- /dev/null
+++ b/src/nls/el/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Λίστα θεματικών επιπέδων",
+ titleBasemap: "Υπόβαθρα",
+ titleLayers: "Επιχειρησιακά επίπεδα",
+ labelLayer: "Όνομα θεματικού επιπέδου",
+ itemZoomTo: "Εστίαση",
+ itemTransparency: "Διαφάνεια",
+ itemTransparent: "Διαφανές",
+ itemOpaque: "Αδιαφανές",
+ itemMoveUp: "Μετακίνηση προς τα επάνω",
+ itemMoveDown: "Μετακίνηση προς τα κάτω",
+ itemDesc: "Περιγραφή",
+ itemDownload: "Λήψη",
+ itemToAttributeTable: "Άνοιγμα Πίνακα Περιγραφικών Γνωρισμάτων",
+ itemShowItemDetails: "Εμφάνιση λεπτομερειών αντικειμένου",
+ empty: "κενό",
+ removePopup: "Κατάργηση αναδυόμενου παραθύρου",
+ enablePopup: "Ενεργοποίηση αναδυόμενου παραθύρου"
+ })
+);
diff --git a/src/nls/es/strings.js b/src/nls/es/strings.js
new file mode 100644
index 0000000..a16da8c
--- /dev/null
+++ b/src/nls/es/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lista de capas",
+ titleBasemap: "Mapas base",
+ titleLayers: "Capas operativas",
+ labelLayer: "Nombre de capa",
+ itemZoomTo: "Acercar a",
+ itemTransparency: "Transparencia",
+ itemTransparent: "Transparente",
+ itemOpaque: "Opaco",
+ itemMoveUp: "Mover hacia arriba",
+ itemMoveDown: "Mover hacia abajo",
+ itemDesc: "Descripción",
+ itemDownload: "Descargar",
+ itemToAttributeTable: "Abrir tabla de atributos",
+ itemShowItemDetails: "Mostrar detalles del elemento",
+ empty: "vacío",
+ removePopup: "Quitar elemento emergente",
+ enablePopup: "Habilitar elemento emergente"
+ })
+);
diff --git a/src/nls/et/strings.js b/src/nls/et/strings.js
new file mode 100644
index 0000000..8d3d6fd
--- /dev/null
+++ b/src/nls/et/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Kihiloend",
+ titleBasemap: "Aluskaardid",
+ titleLayers: "Töökihid",
+ labelLayer: "Kihi nimi",
+ itemZoomTo: "Suumi",
+ itemTransparency: "Läbipaistvus",
+ itemTransparent: "Läbipaistev",
+ itemOpaque: "Läbipaistmatu",
+ itemMoveUp: "Liiguta ülespoole",
+ itemMoveDown: "Liiguta allapoole",
+ itemDesc: "Kirjeldus",
+ itemDownload: "Laadi alla",
+ itemToAttributeTable: "Ava atribuudi tabel",
+ itemShowItemDetails: "Näita sisuobjekti detaile",
+ empty: "tühi",
+ removePopup: "Eemalda hüpikaken",
+ enablePopup: "Luba hüpikaken"
+ })
+);
diff --git a/src/nls/fi/strings.js b/src/nls/fi/strings.js
new file mode 100644
index 0000000..67da2f6
--- /dev/null
+++ b/src/nls/fi/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Karttatasot",
+ titleBasemap: "Taustakartat",
+ titleLayers: "Toiminnalliset karttatasot",
+ labelLayer: "Karttatason nimi",
+ itemZoomTo: "Tarkenna kohteeseen",
+ itemTransparency: "Läpinäkyvyys",
+ itemTransparent: "Läpinäkyvä",
+ itemOpaque: "Läpinäkymätön",
+ itemMoveUp: "Siirrä ylös",
+ itemMoveDown: "Siirrä alas",
+ itemDesc: "Kuvaus",
+ itemDownload: "Lataa",
+ itemToAttributeTable: "Avaa ominaisuustietotaulu",
+ itemShowItemDetails: "Näytä kohteen tiedot",
+ empty: "tyhjä",
+ removePopup: "Poista ponnahdusikkuna",
+ enablePopup: "Ota ponnahdusikkunat käyttöön"
+ })
+);
diff --git a/src/nls/fr/strings.js b/src/nls/fr/strings.js
new file mode 100644
index 0000000..c8fe7b3
--- /dev/null
+++ b/src/nls/fr/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Liste des couches",
+ titleBasemap: "Fonds de carte",
+ titleLayers: "Couches opérationnelles",
+ labelLayer: "Nom de la couche",
+ itemZoomTo: "Zoom",
+ itemTransparency: "Transparence",
+ itemTransparent: "Transparent",
+ itemOpaque: "Opaque",
+ itemMoveUp: "Monter",
+ itemMoveDown: "Descendre",
+ itemDesc: "Description",
+ itemDownload: "Télécharger",
+ itemToAttributeTable: "Ouvrir la table attributaire",
+ itemShowItemDetails: "Afficher les détails de l\'élément",
+ empty: "vide",
+ removePopup: "Supprimer la fenêtre contextuelle",
+ enablePopup: "Activer la fenêtre contextuelle"
+ })
+);
diff --git a/src/nls/he/strings.js b/src/nls/he/strings.js
new file mode 100644
index 0000000..9dc8178
--- /dev/null
+++ b/src/nls/he/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "רשימת שכבות",
+ titleBasemap: "מפות בסיס",
+ titleLayers: "שכבות תפעוליות",
+ labelLayer: "שם שכבה",
+ itemZoomTo: "התמקד אל",
+ itemTransparency: "שקיפות",
+ itemTransparent: "שקוף",
+ itemOpaque: "אטום",
+ itemMoveUp: "הזז למעלה",
+ itemMoveDown: "הזז למטה",
+ itemDesc: "תיאור",
+ itemDownload: "הורדה",
+ itemToAttributeTable: "פתח טבלת מאפיינים",
+ itemShowItemDetails: "הצג פרטי פריט",
+ empty: "ריק",
+ removePopup: "הסר חלון קופץ",
+ enablePopup: "הפעל חלון קופץ"
+ })
+);
diff --git a/src/nls/it/strings.js b/src/nls/it/strings.js
new file mode 100644
index 0000000..671c6f5
--- /dev/null
+++ b/src/nls/it/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Elenco layer",
+ titleBasemap: "Mappe di base",
+ titleLayers: "Layer operativi",
+ labelLayer: "Nome layer",
+ itemZoomTo: "Zoom a",
+ itemTransparency: "Trasparenza",
+ itemTransparent: "Trasparente",
+ itemOpaque: "Opaco",
+ itemMoveUp: "Sposta su",
+ itemMoveDown: "Sposta giù",
+ itemDesc: "Descrizione",
+ itemDownload: "Download",
+ itemToAttributeTable: "Apri tabella attributi",
+ itemShowItemDetails: "Mostra dettagli elemento",
+ empty: "vuoto",
+ removePopup: "Rimuovi popup",
+ enablePopup: "Abilita popup"
+ })
+);
diff --git a/src/nls/ja/strings.js b/src/nls/ja/strings.js
new file mode 100644
index 0000000..35dd5c6
--- /dev/null
+++ b/src/nls/ja/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "レイヤー リスト",
+ titleBasemap: "ベースマップ",
+ titleLayers: "操作レイヤー",
+ labelLayer: "レイヤー名",
+ itemZoomTo: "ズーム",
+ itemTransparency: "透過表示",
+ itemTransparent: "透明",
+ itemOpaque: "不透明",
+ itemMoveUp: "上に移動",
+ itemMoveDown: "下に移動",
+ itemDesc: "説明",
+ itemDownload: "ダウンロード",
+ itemToAttributeTable: "属性テーブルを開く",
+ itemShowItemDetails: "アイテムの詳細を表示",
+ empty: "空",
+ removePopup: "ポップアップの削除",
+ enablePopup: "ポップアップの有効化"
+ })
+);
diff --git a/src/nls/ko/strings.js b/src/nls/ko/strings.js
new file mode 100644
index 0000000..fb9c861
--- /dev/null
+++ b/src/nls/ko/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "레이어 목록",
+ titleBasemap: "베이스맵",
+ titleLayers: "운영 레이어",
+ labelLayer: "레이어 이름",
+ itemZoomTo: "확대",
+ itemTransparency: "투명도",
+ itemTransparent: "투명",
+ itemOpaque: "불투명",
+ itemMoveUp: "위로 이동",
+ itemMoveDown: "아래로 이동",
+ itemDesc: "설명",
+ itemDownload: "다운로드",
+ itemToAttributeTable: "속성 테이블 열기",
+ itemShowItemDetails: "항목 세부정보 보기",
+ empty: "비어 있음",
+ removePopup: "팝업 제거",
+ enablePopup: "팝업 활성화"
+ })
+);
diff --git a/src/nls/lt/strings.js b/src/nls/lt/strings.js
new file mode 100644
index 0000000..4be06ab
--- /dev/null
+++ b/src/nls/lt/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Sluoksniai",
+ titleBasemap: "Pagrindo žemėlapiai",
+ titleLayers: "Darbiniai sluoksniai",
+ labelLayer: "Sluoksnio pavadinimas",
+ itemZoomTo: "Parodyti visą",
+ itemTransparency: "Permatomumas",
+ itemTransparent: "Permatomas",
+ itemOpaque: "Nepermatomas",
+ itemMoveUp: "Pakelti aukštyn",
+ itemMoveDown: "Nuleisti žemyn",
+ itemDesc: "Aprašas",
+ itemDownload: "Atsiųsti",
+ itemToAttributeTable: "Atidaryti atributų lentelę",
+ itemShowItemDetails: "Rodyti elemento aprašą",
+ empty: "tuščia",
+ removePopup: "Pašalinti iškylančius langus",
+ enablePopup: "Įjungti iškylančius langus"
+ })
+);
diff --git a/src/nls/lv/strings.js b/src/nls/lv/strings.js
new file mode 100644
index 0000000..a61018a
--- /dev/null
+++ b/src/nls/lv/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Slāņu saraksts",
+ titleBasemap: "Pamatkartes",
+ titleLayers: "Operacionālie slāņi",
+ labelLayer: "Slāņa nosaukums",
+ itemZoomTo: "Pietuvināt",
+ itemTransparency: "Caurspīdīgums",
+ itemTransparent: "Caurspīdīgs",
+ itemOpaque: "Necaurredzams",
+ itemMoveUp: "Pārvietot uz augšu",
+ itemMoveDown: "Pārvietot uz leju",
+ itemDesc: "Apraksts",
+ itemDownload: "Lejupielāde",
+ itemToAttributeTable: "Atvērt atribūtu tabulu",
+ itemShowItemDetails: "Parādīt vienību detaļas",
+ empty: "tukšs",
+ removePopup: "Noņemt uznirstošo logu",
+ enablePopup: "Aktivizēt uznirstošo logu"
+ })
+);
diff --git a/src/nls/nb/strings.js b/src/nls/nb/strings.js
new file mode 100644
index 0000000..1e267a6
--- /dev/null
+++ b/src/nls/nb/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Kartlagliste",
+ titleBasemap: "Bakgrunnskart",
+ titleLayers: "Operative kartlag",
+ labelLayer: "Lagnavn",
+ itemZoomTo: "Zoom til",
+ itemTransparency: "Gjennomsiktighet",
+ itemTransparent: "Gjennomsiktighet",
+ itemOpaque: "Ugjennomsiktig",
+ itemMoveUp: "Flytt opp",
+ itemMoveDown: "Flytt ned",
+ itemDesc: "Beskrivelse",
+ itemDownload: "Last ned",
+ itemToAttributeTable: "Åpne attributtabell",
+ itemShowItemDetails: "Vis elementdetaljene",
+ empty: "tom",
+ removePopup: "Fjern popup",
+ enablePopup: "Aktiver popup"
+ })
+);
diff --git a/src/nls/nl/strings.js b/src/nls/nl/strings.js
new file mode 100644
index 0000000..e1cde33
--- /dev/null
+++ b/src/nls/nl/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lijst met lagen",
+ titleBasemap: "Basiskaarten",
+ titleLayers: "Operationele lagen",
+ labelLayer: "Laagnaam",
+ itemZoomTo: "Zoomen naar",
+ itemTransparency: "Transparant",
+ itemTransparent: "Transparant",
+ itemOpaque: "Niet transparant",
+ itemMoveUp: "Naar boven verplaatsen",
+ itemMoveDown: "Naar beneden verplaatsen",
+ itemDesc: "Beschrijving",
+ itemDownload: "Downloaden",
+ itemToAttributeTable: "Attribuuttabel openen",
+ itemShowItemDetails: "Itemdetails weergeven",
+ empty: "leeg",
+ removePopup: "Pop-up verwijderen",
+ enablePopup: "Pop-up inschakelen"
+ })
+);
diff --git a/src/nls/pl/strings.js b/src/nls/pl/strings.js
new file mode 100644
index 0000000..c02379c
--- /dev/null
+++ b/src/nls/pl/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lista warstw",
+ titleBasemap: "Mapy bazowe",
+ titleLayers: "Warstwy operacyjne",
+ labelLayer: "Nazwa warstwy tematycznej",
+ itemZoomTo: "Powiększ do",
+ itemTransparency: "Przezroczystość",
+ itemTransparent: "Przezroczysty",
+ itemOpaque: "Nieprzezroczysty",
+ itemMoveUp: "Przesuń w górę",
+ itemMoveDown: "Przesuń w dół",
+ itemDesc: "Opis",
+ itemDownload: "Pobierz",
+ itemToAttributeTable: "Otwórz tabelę atrybutów",
+ itemShowItemDetails: "Pokaż szczegóły elementu",
+ empty: "puste",
+ removePopup: "Wyłącz okna podręczne",
+ enablePopup: "Włącz okna podręczne"
+ })
+);
diff --git a/src/nls/pt-br/strings.js b/src/nls/pt-br/strings.js
new file mode 100644
index 0000000..4e2e350
--- /dev/null
+++ b/src/nls/pt-br/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lista de Camada",
+ titleBasemap: "Mapas Base",
+ titleLayers: "Camadas Operacionais",
+ labelLayer: "Nome da Camada",
+ itemZoomTo: "Zoom para",
+ itemTransparency: "Transparência",
+ itemTransparent: "Transparente",
+ itemOpaque: "Opaco",
+ itemMoveUp: "Mover para cima",
+ itemMoveDown: "Mover para baixo",
+ itemDesc: "Descrição",
+ itemDownload: "Download",
+ itemToAttributeTable: "Abrir Tabela de Atributo",
+ itemShowItemDetails: "Mostrar Detalhes do Item",
+ empty: "vazio",
+ removePopup: "Remover Pop-up",
+ enablePopup: "Habilitar Pop-up"
+ })
+);
diff --git a/src/nls/pt-pt/strings.js b/src/nls/pt-pt/strings.js
new file mode 100644
index 0000000..c0c6196
--- /dev/null
+++ b/src/nls/pt-pt/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lista de Camadas",
+ titleBasemap: "Mapas base",
+ titleLayers: "Camadas Operacionais",
+ labelLayer: "Nome da Camada",
+ itemZoomTo: "Efetuar zoom para",
+ itemTransparency: "Transparência",
+ itemTransparent: "Transparente",
+ itemOpaque: "Opaco",
+ itemMoveUp: "Mover para cima",
+ itemMoveDown: "Mover para baixo",
+ itemDesc: "Descrição",
+ itemDownload: "Descarregar",
+ itemToAttributeTable: "Abrir tabela de atributos",
+ itemShowItemDetails: "Mostrar Detalhes do Item",
+ empty: "vazio",
+ removePopup: "Remover Janela Pop-up",
+ enablePopup: "Ativar Janela Pop-up"
+ })
+);
diff --git a/src/nls/ro/strings.js b/src/nls/ro/strings.js
new file mode 100644
index 0000000..7f6dca8
--- /dev/null
+++ b/src/nls/ro/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Listă de straturi tematice",
+ titleBasemap: "Hărţi fundal",
+ titleLayers: "Straturi tematice operaţionale",
+ labelLayer: "Nume strat tematic",
+ itemZoomTo: "Transfocare la",
+ itemTransparency: "Transparenţă",
+ itemTransparent: "Transparent",
+ itemOpaque: "Opac",
+ itemMoveUp: "Deplasare în sus",
+ itemMoveDown: "Deplasare în jos",
+ itemDesc: "Descriere",
+ itemDownload: "Descărcare",
+ itemToAttributeTable: "Deschidere tabel de atribute",
+ itemShowItemDetails: "Afişare detalii element",
+ empty: "gol",
+ removePopup: "Eliminare pop-up",
+ enablePopup: "Activare pop-up"
+ })
+);
diff --git a/src/nls/ru/strings.js b/src/nls/ru/strings.js
new file mode 100644
index 0000000..107bcbc
--- /dev/null
+++ b/src/nls/ru/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Список слоев",
+ titleBasemap: "Базовые карты",
+ titleLayers: "Рабочие слои",
+ labelLayer: "Имя слоя",
+ itemZoomTo: "Приблизить к",
+ itemTransparency: "Прозрачность",
+ itemTransparent: "Прозрачный",
+ itemOpaque: "Непрозрачный",
+ itemMoveUp: "Выше",
+ itemMoveDown: "Ниже",
+ itemDesc: "Описание",
+ itemDownload: "Загрузить",
+ itemToAttributeTable: "Открыть таблицу атрибутов",
+ itemShowItemDetails: "Показать информацию об элементе",
+ empty: "пусто",
+ removePopup: "Удалить всплывающее окно",
+ enablePopup: "Включить всплывающее окно"
+ })
+);
diff --git a/src/nls/strings.js b/src/nls/strings.js
new file mode 100644
index 0000000..4a3cf54
--- /dev/null
+++ b/src/nls/strings.js
@@ -0,0 +1,50 @@
+define({
+ root: ({
+ _widgetLabel: "Layer List Widget",
+ titleBasemap: "Basemaps",
+ titleLayers: "Operational Layers",
+ labelLayer: "Layer Name",
+ itemZoomTo: "Zoom to",
+ itemTransparency: "Transparency",
+ itemTransparent: "Transparent",
+ itemOpaque: "Opaque",
+ itemMoveUp: "Move up",
+ itemMoveDown: "Move down",
+ itemDesc: "Description",
+ itemDownload: "Download",
+ itemToAttributeTable: "Open Attribute Table",
+ itemShowItemDetails: "Show Item Details",
+ empty: "empty",
+ removePopup: "Remove Pop-up",
+ enablePopup: "Enable Pop-up",
+ metadataWarning: "No additional information available for this layer",
+ ok: "OK"
+ }),
+ "ar": 1,
+ "cs": 1,
+ "da": 1,
+ "de": 1,
+ "el": 1,
+ "es": 1,
+ "et": 1,
+ "fi": 1,
+ "fr": 1,
+ "he": 1,
+ "it": 1,
+ "ja": 1,
+ "ko": 1,
+ "lt": 1,
+ "lv": 1,
+ "nb": 1,
+ "nl": 1,
+ "pl": 1,
+ "pt-br": 1,
+ "pt-pt": 1,
+ "ro": 1,
+ "ru": 1,
+ "sv": 1,
+ "th": 1,
+ "tr": 1,
+ "vi": 1,
+ "zh-cn": 1
+});
diff --git a/src/nls/sv/strings.js b/src/nls/sv/strings.js
new file mode 100644
index 0000000..aa2da53
--- /dev/null
+++ b/src/nls/sv/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Lagerlista",
+ titleBasemap: "Baskartor",
+ titleLayers: "Funktionslager",
+ labelLayer: "Lagernamn",
+ itemZoomTo: "Zooma till",
+ itemTransparency: "Transparens",
+ itemTransparent: "Transparent",
+ itemOpaque: "Opak",
+ itemMoveUp: "Flytta uppåt",
+ itemMoveDown: "Flytta nedåt",
+ itemDesc: "Beskrivning",
+ itemDownload: "Hämta",
+ itemToAttributeTable: "Öppna attributtabell",
+ itemShowItemDetails: "Visa objektinformation",
+ empty: "tom",
+ removePopup: "Ta bort popup-ruta",
+ enablePopup: "Aktivera popup-ruta"
+ })
+);
diff --git a/src/nls/th/strings.js b/src/nls/th/strings.js
new file mode 100644
index 0000000..36076c7
--- /dev/null
+++ b/src/nls/th/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "รายการชั้นข้อมูล",
+ titleBasemap: "แผนที่ฐาน",
+ titleLayers: "ชั้นข้อมูลกระบวนการทำงาน",
+ labelLayer: "ชื่อชั้นข้อมูล",
+ itemZoomTo: "ขยายไปยัง",
+ itemTransparency: "โปร่งแสง",
+ itemTransparent: "โปร่งแสง",
+ itemOpaque: "ทึบแสง",
+ itemMoveUp: "เลื่อนขึ้น",
+ itemMoveDown: "เลื่อนลง",
+ itemDesc: "คำอธิบาย",
+ itemDownload: "ดาวน์โหลด",
+ itemToAttributeTable: "เปิดตารางข้อมูลคุณลักษณะ",
+ itemShowItemDetails: "แสดงรายละเอียดข้อมูล",
+ empty: "ว่าง",
+ removePopup: "ลบป๊อปอัพ",
+ enablePopup: "ใช้ป๊อปอัพ"
+ })
+);
diff --git a/src/nls/tr/strings.js b/src/nls/tr/strings.js
new file mode 100644
index 0000000..1a3dae8
--- /dev/null
+++ b/src/nls/tr/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Katman Listesi",
+ titleBasemap: "Altlık haritaları",
+ titleLayers: "Operasyonel Katmanlar",
+ labelLayer: "Katman Adı",
+ itemZoomTo: "Şuna Yakınlaştır",
+ itemTransparency: "Saydamlık",
+ itemTransparent: "Saydam",
+ itemOpaque: "Opak",
+ itemMoveUp: "Yukarı taşı",
+ itemMoveDown: "Aşağı taşı",
+ itemDesc: "Açıklama",
+ itemDownload: "İndir",
+ itemToAttributeTable: "Öznitelik Tablosunu Aç",
+ itemShowItemDetails: "Öğe Ayrıntılarını Göster",
+ empty: "boş",
+ removePopup: "Açılan Pencereyi Kaldır",
+ enablePopup: "Açılan Pencereyi Etkinleştir"
+ })
+);
diff --git a/src/nls/vi/strings.js b/src/nls/vi/strings.js
new file mode 100644
index 0000000..f6c5c60
--- /dev/null
+++ b/src/nls/vi/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "Danh sách Lớp",
+ titleBasemap: "Bản đồ nền",
+ titleLayers: "Các lớp hoạt động",
+ labelLayer: "Tên lớp",
+ itemZoomTo: "Phóng tới",
+ itemTransparency: "Độ trong suốt",
+ itemTransparent: "Độ trong suốt",
+ itemOpaque: "Độ mờ",
+ itemMoveUp: "Di chuyển lên trên",
+ itemMoveDown: "Di chuyển xuống dưới",
+ itemDesc: "Mô tả",
+ itemDownload: "Tải xuống",
+ itemToAttributeTable: "Mở Bảng Thuộc tính",
+ itemShowItemDetails: "Hiện Chi tiết của Mục",
+ empty: "trống",
+ removePopup: "Ẩn cửa sổ pop-up",
+ enablePopup: "Bật Cửa sổ pop-up"
+ })
+);
diff --git a/src/nls/zh-cn/strings.js b/src/nls/zh-cn/strings.js
new file mode 100644
index 0000000..a8bcfa7
--- /dev/null
+++ b/src/nls/zh-cn/strings.js
@@ -0,0 +1,21 @@
+define(
+ ({
+ _widgetLabel: "图层列表",
+ titleBasemap: "底图",
+ titleLayers: "业务图层",
+ labelLayer: "图层名称",
+ itemZoomTo: "缩放至",
+ itemTransparency: "透明度",
+ itemTransparent: "透明",
+ itemOpaque: "不透明",
+ itemMoveUp: "上移",
+ itemMoveDown: "下移",
+ itemDesc: "描述",
+ itemDownload: "下载",
+ itemToAttributeTable: "打开属性表",
+ itemShowItemDetails: "显示项目详细信息",
+ empty: "空",
+ removePopup: "移除弹出窗口",
+ enablePopup: "启用弹出窗口"
+ })
+);
diff --git a/src/setting/Setting.html b/src/setting/Setting.html
new file mode 100644
index 0000000..fa5a18a
--- /dev/null
+++ b/src/setting/Setting.html
@@ -0,0 +1,4 @@
+
diff --git a/src/setting/Setting.js b/src/setting/Setting.js
new file mode 100644
index 0000000..61a978f
--- /dev/null
+++ b/src/setting/Setting.js
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2014 Esri. All Rights Reserved.
+//
+// Licensed under the Apache License Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+///////////////////////////////////////////////////////////////////////////
+
+define([
+ 'dojo/_base/declare',
+ 'jimu/BaseWidgetSetting',
+ 'dijit/_WidgetsInTemplateMixin',
+ 'dijit/form/CheckBox'
+ ],
+ function(
+ declare,
+ BaseWidgetSetting,
+ _WidgetsInTemplateMixin) {
+ return declare([BaseWidgetSetting, _WidgetsInTemplateMixin], {
+
+ baseClass: 'jimu-widget-layerList-setting',
+
+ startup: function() {
+ this.inherited(arguments);
+ this.setConfig(this.config);
+ },
+
+ setConfig: function(config) {
+ this.showLegend.setChecked(config.showLegend);
+ },
+
+ getConfig: function () {
+ var config = {
+ showLegend: "true",
+ metadataTool: null
+ };
+ config.showLegend = this.showLegend.checked;
+ config.metadataTool = this.config.metadataTool ? this.config.metadataTool : null;
+ return config;
+ }
+
+ });
+ });
diff --git a/src/setting/css/style.css b/src/setting/css/style.css
new file mode 100644
index 0000000..0091716
--- /dev/null
+++ b/src/setting/css/style.css
@@ -0,0 +1,3 @@
+.jimu-widget-layerList-setting .show-legend-checkbox {
+ margin-left: 24px;
+}
diff --git a/src/setting/nls/ar/strings.js b/src/setting/nls/ar/strings.js
new file mode 100644
index 0000000..cf57d61
--- /dev/null
+++ b/src/setting/nls/ar/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "إظهار وسيلة الإيضاح"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/cs/strings.js b/src/setting/nls/cs/strings.js
new file mode 100644
index 0000000..18d315a
--- /dev/null
+++ b/src/setting/nls/cs/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Zobrazit legendu"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/da/strings.js b/src/setting/nls/da/strings.js
new file mode 100644
index 0000000..75641f8
--- /dev/null
+++ b/src/setting/nls/da/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Vis signaturforklaring"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/de/strings.js b/src/setting/nls/de/strings.js
new file mode 100644
index 0000000..c4d4eea
--- /dev/null
+++ b/src/setting/nls/de/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Legende anzeigen"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/el/strings.js b/src/setting/nls/el/strings.js
new file mode 100644
index 0000000..fcd99f9
--- /dev/null
+++ b/src/setting/nls/el/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Εμφάνιση υπομνήματος"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/es/strings.js b/src/setting/nls/es/strings.js
new file mode 100644
index 0000000..70c8fad
--- /dev/null
+++ b/src/setting/nls/es/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Mostrar leyenda"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/et/strings.js b/src/setting/nls/et/strings.js
new file mode 100644
index 0000000..1077470
--- /dev/null
+++ b/src/setting/nls/et/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Näita legendi"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/fi/strings.js b/src/setting/nls/fi/strings.js
new file mode 100644
index 0000000..2537dfd
--- /dev/null
+++ b/src/setting/nls/fi/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Näytä selite"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/fr/strings.js b/src/setting/nls/fr/strings.js
new file mode 100644
index 0000000..e627b3a
--- /dev/null
+++ b/src/setting/nls/fr/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Afficher la légende"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/he/strings.js b/src/setting/nls/he/strings.js
new file mode 100644
index 0000000..7ccc9a5
--- /dev/null
+++ b/src/setting/nls/he/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "הצג מקרא"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/it/strings.js b/src/setting/nls/it/strings.js
new file mode 100644
index 0000000..62ed5c9
--- /dev/null
+++ b/src/setting/nls/it/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Mostra legenda"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/ja/strings.js b/src/setting/nls/ja/strings.js
new file mode 100644
index 0000000..55d003a
--- /dev/null
+++ b/src/setting/nls/ja/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "凡例を表示"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/ko/strings.js b/src/setting/nls/ko/strings.js
new file mode 100644
index 0000000..44cb577
--- /dev/null
+++ b/src/setting/nls/ko/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "범례 표시"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/lt/strings.js b/src/setting/nls/lt/strings.js
new file mode 100644
index 0000000..e622a59
--- /dev/null
+++ b/src/setting/nls/lt/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Rodyti legendą"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/lv/strings.js b/src/setting/nls/lv/strings.js
new file mode 100644
index 0000000..89653e2
--- /dev/null
+++ b/src/setting/nls/lv/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Rādīt leģendu"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/nb/strings.js b/src/setting/nls/nb/strings.js
new file mode 100644
index 0000000..84ac5d3
--- /dev/null
+++ b/src/setting/nls/nb/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Vis tegnforklaring"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/nl/strings.js b/src/setting/nls/nl/strings.js
new file mode 100644
index 0000000..1bbb7bb
--- /dev/null
+++ b/src/setting/nls/nl/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Legenda weergeven"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/pl/strings.js b/src/setting/nls/pl/strings.js
new file mode 100644
index 0000000..da44175
--- /dev/null
+++ b/src/setting/nls/pl/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Pokaż legendę"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/pt-br/strings.js b/src/setting/nls/pt-br/strings.js
new file mode 100644
index 0000000..ded61f0
--- /dev/null
+++ b/src/setting/nls/pt-br/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Mostrar legenda"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/pt-pt/strings.js b/src/setting/nls/pt-pt/strings.js
new file mode 100644
index 0000000..58a1f6c
--- /dev/null
+++ b/src/setting/nls/pt-pt/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Exibir legenda"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/ro/strings.js b/src/setting/nls/ro/strings.js
new file mode 100644
index 0000000..d8d90b1
--- /dev/null
+++ b/src/setting/nls/ro/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Afişare legendă"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/ru/strings.js b/src/setting/nls/ru/strings.js
new file mode 100644
index 0000000..fe7c453
--- /dev/null
+++ b/src/setting/nls/ru/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Показать легенду"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/strings.js b/src/setting/nls/strings.js
new file mode 100644
index 0000000..8f77e7c
--- /dev/null
+++ b/src/setting/nls/strings.js
@@ -0,0 +1,32 @@
+define({
+ root: ({
+ showLegend: "Show Legend"
+ }),
+ "ar": 1,
+ "cs": 1,
+ "da": 1,
+ "de": 1,
+ "el": 1,
+ "es": 1,
+ "et": 1,
+ "fi": 1,
+ "fr": 1,
+ "he": 1,
+ "it": 1,
+ "ja": 1,
+ "ko": 1,
+ "lt": 1,
+ "lv": 1,
+ "nb": 1,
+ "nl": 1,
+ "pl": 1,
+ "pt-br": 1,
+ "pt-pt": 1,
+ "ro": 1,
+ "ru": 1,
+ "sv": 1,
+ "th": 1,
+ "tr": 1,
+ "vi": 1,
+ "zh-cn": 1
+});
\ No newline at end of file
diff --git a/src/setting/nls/sv/strings.js b/src/setting/nls/sv/strings.js
new file mode 100644
index 0000000..c946310
--- /dev/null
+++ b/src/setting/nls/sv/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Visa förklaring"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/th/strings.js b/src/setting/nls/th/strings.js
new file mode 100644
index 0000000..ad4ab1d
--- /dev/null
+++ b/src/setting/nls/th/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "แสดงคำอธิบายสัญลักษณ์"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/tr/strings.js b/src/setting/nls/tr/strings.js
new file mode 100644
index 0000000..bcf18c2
--- /dev/null
+++ b/src/setting/nls/tr/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Gösterimi Göster"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/vi/strings.js b/src/setting/nls/vi/strings.js
new file mode 100644
index 0000000..ef741a2
--- /dev/null
+++ b/src/setting/nls/vi/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "Hiển thị Chú giải"
+ })
+);
\ No newline at end of file
diff --git a/src/setting/nls/zh-cn/strings.js b/src/setting/nls/zh-cn/strings.js
new file mode 100644
index 0000000..4ea2dc5
--- /dev/null
+++ b/src/setting/nls/zh-cn/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ showLegend: "显示图例"
+ })
+);
\ No newline at end of file