diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 958204d..55bda12 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,3 +1,6 @@
+Esri welcomes contributions from anyone and everyone. Please see our
+[guidelines for contributing](https://github.com/esri/contributing).
+
# Contributing to ArcGIS Viewer for Flex
There are many ways you can contribute to the [ArcGIS Viewer for Flex](http://links.esri.com/flexviewer).
@@ -26,12 +29,11 @@ The [ArcGIS Viewer for Flex](http://links.esri.com/flexviewer) is built by the F
7. Test your code.
### Submitting changes
-1. Read the License section below.
-2. Push the changes in your feature branch to your repo.
-3. Submit a [pull request](https://help.github.com/articles/using-pull-requests) against the "develop" branch. Submitting a pull request will open a GitHub issue.
+1. Push the changes in your feature branch to your repo.
+2. Submit a [pull request](https://help.github.com/articles/using-pull-requests) against the "develop" branch. Submitting a pull request will open a GitHub issue.
* Clearly describe the issue including steps to reproduce; or if an enhancement, indicate the functionality you built.
## License
By contributing your code, you agree to license your contribution under the terms of the [Apache License 2.0](https://github.com/Esri/arcgis-viewer-flex/blob/master/license.txt). See item 5 of [https://github.com/Esri/arcgis-viewer-flex/blob/master/license.txt](https://github.com/Esri/arcgis-viewer-flex/blob/master/license.txt) for more details.
-[1]: https://github.com/Esri/arcgis-viewer-flex/wiki/Coding-Conventions
\ No newline at end of file
+[1]: https://github.com/Esri/arcgis-viewer-flex/wiki/Coding-Conventions
diff --git a/build.properties b/build.properties
index 8c034c6..81683c5 100644
--- a/build.properties
+++ b/build.properties
@@ -12,4 +12,4 @@ fb.debug.dir=bin-debug
fb.workspace.project.name=FlexViewer
# Locales to create resource modules for
-locale.modules=ar,da_DK,de_DE,en_US,es_ES,et_EE,fr_FR,he_IL,it_IT,ja_JP,ko_KR,lt_LT,lv_LV,nb_NO,nl_NL,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sv_SE,zh_CN
\ No newline at end of file
+locale.modules=ar,da_DK,de_DE,en_US,es_ES,et_EE,fi_FI,fr_FR,he_IL,it_IT,ja_JP,ko_KR,lt_LT,lv_LV,nb_NO,nl_NL,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sv_SE,zh_CN
diff --git a/build.xml b/build.xml
index bf8b861..565f1c5 100644
--- a/build.xml
+++ b/build.xml
@@ -154,6 +154,8 @@
//flashvars.resourceModuleURLs = "assets/locale/es_ES.swf";
//flashvars.localeChain = "et_EE";
//flashvars.resourceModuleURLs = "assets/locale/et_EE.swf";
+ //flashvars.localeChain = "fi_FI";
+ //flashvars.resourceModuleURLs = "assets/locale/fi_FI.swf";
//flashvars.localeChain = "fr_FR";
//flashvars.resourceModuleURLs = "assets/locale/fr_FR.swf";
//flashvars.localeChain = "he_IL";
diff --git a/locale/ar/ViewerStrings.properties b/locale/ar/ViewerStrings.properties
index fadc63b..7385a25 100644
--- a/locale/ar/ViewerStrings.properties
+++ b/locale/ar/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=حول ArcGIS Viewer for Flex...
-aboutText=يستخدم هذا التطبيق ArcGIS Viewer 3.4 for Flex.
+aboutText=يستخدم هذا التطبيق ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=تعلم المزيد
aboutCloseBtn=إغلاق
@@ -84,7 +84,7 @@ faultDetail=تفاصيل الخطأ: {0}
parseConfigErrorText=حدثت مشكلة أثناء تحليل ملف تكوين {0}
standalonePlayerExternalInterfaceErrorText=حدث خطأ ما. لا يعمل ExternalInterface في مشغل مستقل.
-layerFailedToLoad:فشل تحميل الطبقة {0}: {1}
+layerFailedToLoad=فشل تحميل الطبقة {0}: {1}
couldNotFetchBasemapData=تعذر إحضار بيانات خريطة الأساس:\n{0}
couldNotConnectToPortal=تعذر الاتصال بالمدخل.
couldNotQueryPortal=تعذر الاستعلام عن المدخل.
@@ -250,6 +250,8 @@ step1ErrorLabel=رجاء اختيار المساحة المرغوب فيها.
step2ErrorLabel=رجاء اختيار طبقات لاستخراجها.
emptyResultsLabel=تم إكمال المهمة ولكن لم تظهر أية نتائج.
saveDataFileLabel=تم إنشاء ملف البيانات. هل ترغب في حفظه؟
+selectAllLabel=تحديد الكل
+deselectAllLabel=إلغاء تحديد الكل
attributesLabel=البيانات الجدولية
diff --git a/locale/da_DK/ViewerStrings.properties b/locale/da_DK/ViewerStrings.properties
index aa20467..7cf8297 100644
--- a/locale/da_DK/ViewerStrings.properties
+++ b/locale/da_DK/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Om ArcGIS Viewer for Flex...
-aboutText=Denne applikation bruger ArcGIS Viewer 3.4 for Flex.
+aboutText=Denne applikation bruger ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Lær mere
aboutCloseBtn=Luk
@@ -84,7 +84,7 @@ faultDetail=Fejldetaljer: {0}
parseConfigErrorText=Der opstod et problem under analyse af konfigurationsfilen {0}
standalonePlayerExternalInterfaceErrorText=Der opstod en fejl. ExternalInterface fungerer ikke sammen med den enkeltstående afspiller.
-layerFailedToLoad:{0} lag kunne ikke indlæse: {1}
+layerFailedToLoad={0} lag kunne ikke indlæse: {1}
couldNotFetchBasemapData=Kunne ikke hente baggrundskortdata:\n{0}
couldNotConnectToPortal=Kunne ikke oprette forbindelse til portalen.
couldNotQueryPortal=Kunne ikke sende forespørgsel til portalen.
@@ -250,6 +250,8 @@ step1ErrorLabel=Vælg et interesseområde.
step2ErrorLabel=Vælg de lag, der skal udtrækkes.
emptyResultsLabel=Opgave fuldført, men der er ikke returneret nogen resultater.
saveDataFileLabel=Datafil oprettet. Vil du gemme den?
+selectAllLabel=Markér alle
+deselectAllLabel=Fravælg alle
attributesLabel=Attributter
diff --git a/locale/de_DE/ViewerStrings.properties b/locale/de_DE/ViewerStrings.properties
index 6beb94a..476f26a 100644
--- a/locale/de_DE/ViewerStrings.properties
+++ b/locale/de_DE/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Info zu ArcGIS Viewer for Flex...
-aboutText=Diese Anwendung verwendet ArcGIS Viewer 3.4 for Flex.
+aboutText=Diese Anwendung verwendet ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Weitere Informationen
aboutCloseBtn=Schließen
@@ -84,7 +84,7 @@ faultDetail=Fehlerdetails: {0}
parseConfigErrorText=Problem beim Parsen der Konfigurationsdatei {0}
standalonePlayerExternalInterfaceErrorText=Ein Fehler ist aufgetreten. ExternalInterface funktioniert nicht in eigenständigem Player.
-layerFailedToLoad:Layer "{0}" konnte nicht geladen werden: {1}
+layerFailedToLoad=Layer "{0}" konnte nicht geladen werden: {1}
couldNotFetchBasemapData=Grundkartendaten konnten nicht abgerufen werden:\n{0}
couldNotConnectToPortal=Verbindung zum Portal konnte nicht hergestellt werden.
couldNotQueryPortal=Portal konnte nicht abgefragt werden.
@@ -250,6 +250,8 @@ step1ErrorLabel=Wählen Sie einen Interessensbereich aus.
step2ErrorLabel=Wählen Sie die zu extrahierenden Layer aus.
emptyResultsLabel=Der Task wurde abgeschlossen, hat aber keine Ergebnisse zurückgegeben.
saveDataFileLabel=Die Datendatei wurde erstellt. Möchten Sie sie speichern?
+selectAllLabel=Alle auswählen
+deselectAllLabel=Auswahl für alle aufheben
attributesLabel=Attribute
diff --git a/locale/en_US/ViewerStrings.properties b/locale/en_US/ViewerStrings.properties
index 869f2b2..fd636eb 100644
--- a/locale/en_US/ViewerStrings.properties
+++ b/locale/en_US/ViewerStrings.properties
@@ -1,7 +1,7 @@
# -- UI related messages for the context menu on the map, in addition to messages from the api --
#
contextMenuText=About ArcGIS Viewer for Flex...
-aboutText=This application is using ArcGIS Viewer for Flex version 3.4.
+aboutText=This application is using ArcGIS Viewer for Flex version 3.5.
aboutLearnMoreBtn=Learn more
aboutCloseBtn=Close
@@ -84,7 +84,7 @@ faultDetail=Fault details: {0}
########## Errors
parseConfigErrorText=A problem occurred while parsing the configuration file {0}
standalonePlayerExternalInterfaceErrorText=Some error occurred. ExternalInterface doesn't work in Standalone player.
-layerFailedToLoad:{0} layer failed to load: {1}
+layerFailedToLoad={0} layer failed to load: {1}
couldNotFetchBasemapData=Could not fetch basemap data:\n{0}
couldNotConnectToPortal=Could not connect to Portal.
couldNotQueryPortal=Could not query portal.
@@ -250,6 +250,8 @@ step1ErrorLabel=Please select an area of interest.
step2ErrorLabel=Please select layers to extract.
emptyResultsLabel=Task completed but didn't return any results.
saveDataFileLabel=Data file created. Would you like to save it?
+selectAllLabel=Select all
+deselectAllLabel=Deselect all
########## Edit Widget
attributesLabel=Attributes
diff --git a/locale/es_ES/ViewerStrings.properties b/locale/es_ES/ViewerStrings.properties
index 74f9c24..87b7b3c 100644
--- a/locale/es_ES/ViewerStrings.properties
+++ b/locale/es_ES/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Acerca de ArcGIS Viewer for Flex...
-aboutText=Esta aplicación utiliza ArcGIS Viewer 3.4 for Flex.
+aboutText=Esta aplicación utiliza ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Más información
aboutCloseBtn=Cerrar
@@ -84,7 +84,7 @@ faultDetail=Detalles del fallo: {0}
parseConfigErrorText=Se encontró un problema mientras se analizaba el archivo de configuración {0}
standalonePlayerExternalInterfaceErrorText=Ha ocurrido un error. ExternalInterface no funciona en el reproductor independiente.
-layerFailedToLoad:No se pudo cargar la capa {0}: {1}
+layerFailedToLoad=No se pudo cargar la capa {0}: {1}
couldNotFetchBasemapData=No se pudieron recuperar los datos del mapa base:\n{0}
couldNotConnectToPortal=No se pudo conectar con el Portal.
couldNotQueryPortal=No se pudo consultar el portal.
@@ -250,6 +250,8 @@ step1ErrorLabel=Seleccione un área de interés.
step2ErrorLabel=Seleccione las capas para extraer.
emptyResultsLabel=La tarea se completó pero no produjo ningún resultado.
saveDataFileLabel=Se creó el archivo de datos. ¿Desea guardarlo?
+selectAllLabel=Seleccionar todo
+deselectAllLabel=Deseleccionar todo
attributesLabel=Atributos
diff --git a/locale/et_EE/ViewerStrings.properties b/locale/et_EE/ViewerStrings.properties
index 8f5648e..9ba04d7 100644
--- a/locale/et_EE/ViewerStrings.properties
+++ b/locale/et_EE/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=ArcGIS Viewer for Flex rakendusest...
-aboutText=Antud rakendus kasutab ArcGIS Viewer 3.4 for Flex versiooni.
+aboutText=Antud rakendus kasutab ArcGIS Viewer 3.5 for Flex versiooni.
aboutLearnMoreBtn=Loe lähemalt
aboutCloseBtn=Sulge
@@ -84,7 +84,7 @@ faultDetail=Vea detailid: {0}
parseConfigErrorText=Konfiguratsiooni faili parsimisel esines probleem: {0}
standalonePlayerExternalInterfaceErrorText=Tekkis viga. ExternalInterface ei toimi iseseisvas mängijas.
-layerFailedToLoad:{0} kihi laadimine ebaõnnestus: {1}
+layerFailedToLoad={0} kihi laadimine ebaõnnestus: {1}
couldNotFetchBasemapData=Ei õnnestunud saada aluskaardi andmeid:\n{0}
couldNotConnectToPortal=Ei õnnestunud portaaliga ühendust saada.
couldNotQueryPortal=Ei õnnestunud portaali pärida.
@@ -250,6 +250,8 @@ step1ErrorLabel=Palun valige huvipiirkond.
step2ErrorLabel=Palun valige väljavõtte kihid.
emptyResultsLabel=Ülesanne lõpetatud edukalt, kuid ei tagastanud ühtegi tulemust.
saveDataFileLabel=Fail andmetega on loodud. Kas soovite seda alla laadida?
+selectAllLabel=Vali kõik
+deselectAllLabel=Eemalda valik kõigilt
attributesLabel=Atribuudid
diff --git a/locale/fi_FI/ViewerStrings.properties b/locale/fi_FI/ViewerStrings.properties
new file mode 100755
index 0000000..648c244
--- /dev/null
+++ b/locale/fi_FI/ViewerStrings.properties
@@ -0,0 +1,372 @@
+
+
+contextMenuText=Tietoja: ArcGIS Viewer for Flex...
+aboutText=Tämä sovellus käyttää ArcGIS Viewer for Flex -versiota 3.5.
+aboutLearnMoreBtn=Lisätietoja
+aboutCloseBtn=Sulje
+
+
+
+close=Sulje
+minimize=Pienennä
+
+
+
+panelExpandTooltip=Laajenna ruutu napsauttamalla
+panelCollapseTooltip=Supista ruutu napsauttamalla
+
+
+locateExampleValueX=24.9253
+locateExampleValueY=60.1731
+
+
+yesLabel=Kyllä
+noLabel=Ei
+clearLabel=Tyhjennä
+deleteLabel=Poista
+loadingLabel=Ladataan...
+okLabel=OK
+cancelLabel=Peruuta
+errorLabel=Virhe
+problemLabel=Ongelma
+noFeatures=Kohteita ei löytynyt.
+resultsLabel=Tulokset
+saveLabel=Tallenna
+
+
+unitsFeet=Jalka
+unitsFeetAbbr=ft
+unitsKilometers=Kilometriä
+unitsKilometersAbbr=km
+unitsMeters=Metriä
+unitsMetersAbbr=m
+unitsMiles=Mailia
+unitsMilesAbbr=mi
+unitsYards=Jaardia
+unitsYardsAbbr=yd
+
+unitsAcres=Aaria
+unitsAcresAbbr=a
+unitsHectares=Hehtaaria
+unitsHectaresAbbr=ha
+unitsSquareFeet=Neliöjalkaa
+unitsSquareFeetAbbr=sq ft
+unitsSquareKilometers=Neliökilometriä
+unitsSquareKilometersAbbr=km2
+unitsSquareMeters=Neliömetriä
+unitsSquareMetersAbbr=m2
+unitsSquareMiles=Neliömailia
+unitsSquareMilesAbbr=sq mi
+unitsSquareYards=Neliöjaardia
+unitsSquareYardsAbbr=sq yd
+
+
+tocMapLayerZoomToLabel=Tarkenna kohteeseen
+tocMapLayerTransparencyLabel=Läpinäkyvyys
+tocMapLayerOpaqueLabel=Läpinäkymätön
+tocMapLayerTransparentLabel=Läpinäkyvä
+tocMapLayerMoveUpLabel=Siirrä ylös
+tocMapLayerMoveDownLabel=Siirrä alas
+tocMapLayerRemoveLabel=Poista
+tocMapLayerDescriptionLabel=Kuvaus
+tocMapLayerDownloadLabel=Lataa
+
+
+incorrectLayerTypeText={0} ei ole tuettu karttatasotyyppi. Käytä sen sijaan tyyppiä "arcims", "bing", "csv", "dynamic", "feature", "georss", "image", "kml", "osm", "tiled", "webtiled", "wms" tai "wmts".
+
+
+missingConfigFileText=Tiedostoa {0} ei löytynyt
+httpResponseStatus=http-vastauksen tila: {0}
+faultCode=Vikakoodi: {0}
+faultInfo=Vikatiedot: {0}
+faultDetail=Tarkat vikatiedot: {0}
+
+
+parseConfigErrorText=Määritystiedoston {0} jäsennyksessä esiintyi ongelma
+standalonePlayerExternalInterfaceErrorText=Tapahtui virhe. ExternalInterface ei toimi erillisessä toisto-ohjelmassa.
+layerFailedToLoad=Karttatason {0} lataaminen epäonnistui: {1}
+couldNotFetchBasemapData=Taustakartan tietojen haku epäonnistui:\n{0}
+couldNotConnectToPortal=Yhteyden muodostaminen portaaliin epäonnistui.
+couldNotQueryPortal=Portaalin kysely epäonnistui.
+couldNotQueryPortalItems=Portaalikohteiden kysely epäonnistui.
+serverMissingCrossDomain=GIS-palvelimesta puuttuu toimialueiden välinen määritystiedosto.
+serviceIsInaccessible=Palvelua ei ole, tai se ei ole käytettävissä.
+unauthorizedAccess=Sinulla ei ole oikeuksia tämän palvelun käyttämiseen.
+unknownErrorCause=Tuntematon virheen syy.
+resourceAccessDenied=Sinulla ei ole oikeuksia tämän resurssin käyttämiseen.
+signInAborted=Kirjautuminen keskeytettiin.
+invalidWidgetId=Virheellinen widgetId: {0}
+printTaskExecutionError=Virhe suoritettaessa tulostustehtävää:\n\n{0}
+gpServiceConnectionError=Yhteyttä ei voi luoda GP-palveluun:\n{0}\n\n{1}\n{2}
+locatorServiceConnectionError=Yhteyttä ei voi luoda paikanninpalveluun:\n{0}\n\n{1}\n{2}
+singleLineGeocodingNotSupportedError=Paikanninpalvelu ei tue yhden rivin geokoodausta.
+rssFeedParsingError=Ongelma RSS-syötteen jäsennyksessä. {0}
+httpResponseNotXMLError=HTTP-vastaus ei ole XML.
+unknownRSSFeedTypeError=RSS-syötteen tyyppiä ei voi määrittää.
+initializationError=Ongelma alustuksen aikana: {0}
+unableToDetermineGPExecutionType=Geoprosessoinnin suoritustyyppiä ei voi määrittää:
+projectionError=Geometrian projisoinnissa tapahtui virhe: {0}
+cannotRunTaskExecutionTypeUnknownError=Tehtävää ei voi suorittaa: tuntematon suoritustyyppi.
+layerDataRetrievalError=Karttatason tietoja ei voi hakea.
+couldNotDeleteFeature=Kohdetta ei voi poistaa.
+couldNotUpdateFeatureError=Kohdetta ei voi päivittää. Palautetaan vanha arvo.
+cannotDisplayResult=Tulosta ei voi näyttää kartalla.
+uploadSecurityError=Suojausvirhe lähetettäessä tiedostoa: {0}
+uploadIOError=IO-virhe lähetettäessä tiedostoa: {0}
+uploadUnknownError=Tuntematon virhe lähetettäessä tiedostoa.
+couldNotProcessUploadResponse=Lähetyksen valmistumisvastauksen käsittely epäonnistui.
+fileExceedsAllowedUploadSize=Tiedosto ylittää lähetettävien tiedostojen enimmäiskoon. ({0} Mt)
+fileUploadError=Tiedoston lähetysvirhe
+
+
+configFileCrossDomain=Mahdollinen toimialueiden välinen ongelma: {0}{1}
+
+
+openToolTip=Avaa yleiskatsauskartta napsauttamalla
+closeToolTip=Sulje yleiskatsauskartta napsauttamalla
+
+
+layerListLabel=Lisää...
+basemap=Taustakartta
+
+
+aboutLabel=Tietoja
+searchPrompt=Anna osoite
+searchResultTitleLabel=Sijainti
+noResultsFoundLabel=Tuloksia ei löytynyt
+
+
+fullExtentLabel=Koko laajuus
+panDownLabel=Panoroi alas
+panLeftLabel=Panoroi vasemmalle
+panRightLabel=Panoroi oikealle
+panUpLabel=Panoroi ylös
+previousExtentLabel=Edellinen laajuus
+nextExtentLabel=Seuraava laajuus
+panLabel=Vieritä
+zoomInLabel=Lähennä
+zoomOutLabel=Loitonna
+
+
+
+
+
+
+addTextLabel=Lisää teksti
+drawPointLabel=Piirrä piste
+drawLineLabel=Piirrä viiva
+drawFreehandLineLabel=Piirrä vapaankäden viiva
+drawPolygonLabel=Piirrä polygoni
+drawFreehandPolygonLabel=Piirrä vapaankäden polygoni
+drawRectangleLabel=Piirrä suorakulmio
+drawMapExtentLabel=Piirrä kartan laajuus
+drawCircleLabel=Piirrä ympyrä
+drawEllipseLabel=Piirrä ellipsi
+drawClearLabel=Tyhjennä piirrokset
+
+markerStyleCircle=Ympyrä
+markerStyleCross=Risti
+markerStyleDiamond=Vinoneliö
+markerStyleSquare=Neliö
+markerStyleTriangle=Kolmio
+markerStyleX=X
+
+textFont1=Arial
+textFont2=Courier New
+textFont3=Broadway
+textFont4=Comic Sans MS
+textFont5=Algerian
+textFont6=Verdana
+
+lineStyleSolid=Yhtenäinen
+lineStyleDash=Viiva
+lineStyleDot=Piste
+lineStyleDashDot=Viiva-piste
+lineStyleDashDotDot=Viiva-piste-piste
+
+fillStyleSolid=Yhtenäinen
+fillStyleBackwardDiagonal=Vinoviivoitus taaksepäin
+fillStyleCross=Risti
+fillStyleForwardDiagonal=Vinoviivoitus eteenpäin
+fillStyleHorizontal=Vaakasuuntainen
+fillStyleVertical=Pystysuuntainen
+
+
+
+markerAlphaLabel=Alfa
+markerColorLabel=Merkitsimen väri
+markerSizeLabel=Koko
+markerStyleLabel=Tyyli
+markerOutlineColorLabel=Reunaviivan väri
+markerOutlineWidthLabel=Leveys
+textLabel=Teksti
+textColorLabel=Väri
+textFontLabel=Fontti
+textSizeLabel=Koko
+textBoldLabel=B
+textBoldTooltip=Lihavointi
+textItalicLabel=I
+textItalicTooltip=Kursivointi
+textUnderlineLabel=U
+textUnderlineTooltip=Alleviivaus
+lineAlphaLabel=Alfa
+lineColorLabel=Viivan väri
+lineStyleLabel=Tyyli
+lineWidthLabel=Leveys
+fillAlphaLabel=Alfa
+fillColorLabel=Täyttöväri
+fillStyleLabel=Tyyli
+fillOutlineColorLabel=Reunaviivan väri
+fillOutlineWidthLabel=Leveys
+
+
+
+
+showMeasurementsLabel=Näytä mittaukset
+distanceUnitsLabel=Etäisyyden yksiköt
+areaUnitsLabel=Pinta-alayksiköt
+areaLabel=Alue:
+perimeterLabel=Ympärysmitta:
+lengthLabel=Pituus:
+
+
+bookmarksLabel=Kirjanmerkit
+addbookmarksLabel=Lisää kirjanmerkki
+addLabel=Lisää nykyinen laajuus kirjanmerkiksi nimeltä
+bookmarkSubmitLabel=Lisää kirjanmerkki
+bookmarkMissingNameLabel=Anna kirjanmerkin nimi.
+deleteBookmarkTooltip=Poista kirjanmerkki
+
+
+descLabel=Pura tiedot ja lataa zip-tiedosto
+step1Label=1. Valitse alue
+dataCurrentExtentLabel=1. Tiedot puretaan nykyisestä laajuudesta.
+step2Label=2. Valitse purettavat karttatasot
+step3Label=3. Valitse tiedostomuoto
+step4Label=4. Valitse rasterien muoto
+step5Label=5. SpatialReference
+extractButtonLabel=Pura
+step1ErrorLabel=Valitse kohdealue.
+step2ErrorLabel=Valitse purettavat karttatasot
+emptyResultsLabel=Tehtävä suoritettiin, mutta yhtään tulosta ei palautettu.
+saveDataFileLabel=Datatiedosto luotiin. Haluatko tallentaa sen?
+selectAllLabel=Valitse kaikki
+deselectAllLabel=Poista kaikkien valinta
+
+
+attributesLabel=Ominaisuustiedot
+attachmentsLabel=Liitteet
+relatedRecordsLabel=Liittyvät tietueet
+featureLayerOutOfScaleText=Vektorikarttataso on mittakaavavälin ulkopuolella
+showAttachmentsText=Liitteet
+showRelatedRecordsText=Liittyvät tietueet
+showAttributesText=Siirry takaisin
+selectTemplateText=Luo kohde valitsemalla malli
+noEditableLayersText=Ei muokattavia karttatasoja.
+noCreateCapabilityLayersText=Karttatasot eivät tue luontiominaisuutta
+layerNotSupportingAttachmentsText=Tämä karttataso ei tue liitteitä
+noAttachmentsText=Ei liitteitä
+chooseFileText=Valitse liitettävä tiedosto
+attachmentSubmitLabel=Lähetä
+attachmentCancelLabel=Peruuta
+singleAttachmentText=Kohteessa on {0} liite
+multipleAttachmentsText=Kohteessa on {0} liitettä
+
+
+layerListTitle=Karttatason näkyvyys
+
+
+locateSubmitLabel=Paikanna
+addressLabel=Osoite
+coordinatesLabel=Koordinaatit
+addressTitle=Anna osoite
+coordinatesTitle=Anna koordinaatit
+xLabel=Pituusaste (X)
+yLabel=Leveysaste (Y)
+locationsLabel=Löydetyt sijainnit:
+bingCulture=fi-FI
+requiredFields=Pakolliset kentät:
+requiredField=Pakollinen kenttä:
+deleteResultTooltip=Poista tulos
+resultScoreText=Pisteet:
+bingResultConfidenceText=Luotettavuus:
+
+
+printSubmitLabel=Tulosta
+printTitle=
+printSubtitle=
+printCopyright=
+printTitleLabel=Otsikko
+printSubtitleLabel=Alaotsikko
+printCopyrightLabel=Copyright
+printAuthorLabel=Tekijä
+printLayoutTemplatesLabel=Asettelumallit
+printFormatsLabel=Muodot
+printScaleLabel=Käytä tätä mittakaavaa
+
+
+filterTitleBarTooltip=Suodata tulokset
+showallTitleBarTooltip=Näytä kaikki
+filterButtonLabel=Suodata
+clearButtonLabel=Näytä kaikki
+featuresFoundLabel=Löydetyt kohteet: {0}
+
+
+drivingDirectionLabel=Ajosuunnat
+routeSubmitLabel=Hae reittiohjeet
+moveUpTooltip=Siirrä ylös
+moveDownTooltip=Siirrä alas
+addLocationTooltip=lisää sijainti napsauttamalla karttaa
+optionsLabel=Asetukset
+bestSequenceLabel=Etsi paras järjestys
+milesLabel=Mailia
+metricLabel=Km
+changeRouteSymbolLabel=Vaihda reittisymboli
+editRouteLabel=Muokkaa reittiä
+
+
+graphicalTitleBarTooltip=Valitse kohteet
+textTitleBarTooltip=Valitse ominaisuustiedon mukaan
+graphicalsearchLabel=Kohteiden valintaperuste
+textsearchLabel=Valitse ominaisuustiedon mukaan
+layerLabel=Hakutaso
+nolayerLabel=Hakutasoa ei ole määritetty.
+searchSubmitLabel=Etsi
+selectionLabel=Valitut kohteet:
+
+
+latitudeLabel=Leveysaste
+longitudeLabel=Pituusaste
+
+
+gpSubmitLabel=Lähetä
+inputLabel=Lähtöaineisto
+helpLabel=Ohje
+outputLabel=Tulosaineisto
+copyToClipboard=Kopioi leikepöydälle
+unsupportedInputType=Syötettä {0} ei tueta
+currentExtentWillBeUsedAsInput=Nykyistä laajuutta käytetään syötteenä.
+byURL=URL-osoitteen mukaan
+fileURL=Tiedoston URL-osoite
+uploadFile=Lähetä tiedosto
+or=tai
+format=Tiedostomuoto
+
+
+zoomLabel=Tarkenna kohteeseen
+
+
+helloContent=Muuta tämä teksti määritystiedostossa.
+
+
+widgetIDWidgetLabelTemplate=Widget-tunnus: {0}, widgetin tunnusteksti: {1}
+widgetIDWidgetStateTemplate=Widget-tunnus: {0}, widgetin tila: {1}
+itemLabelWidgetIDItemIDTemplate={0} Widget-tunnus: {1}
+
+
+layerSelectionLabel=Valitse karttataso
+drawToolMenuLabel=Valitse piirtotyökalu
+selectLabel=Valitse
+noLayersLabel=Ei karttatasoja
+noChartDataToDisplayLabel=Ei näytettäviä kaaviotietoja
+featureLayerNotVisibleText=Vektorikarttataso ei ole näkyvissä tai se on mittakaavan ulkopuolella
\ No newline at end of file
diff --git a/locale/fr_FR/ViewerStrings.properties b/locale/fr_FR/ViewerStrings.properties
index cd96f54..d77cd0e 100644
--- a/locale/fr_FR/ViewerStrings.properties
+++ b/locale/fr_FR/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=A propos d’ArcGIS Viewer for Flex...
-aboutText=Cette application utilise ArcGIS Viewer 3.4 for Flex.
+aboutText=Cette application utilise ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=En savoir plus
aboutCloseBtn=Fermer
@@ -84,7 +84,7 @@ faultDetail=Détails de l’erreur : {0}
parseConfigErrorText=Un problème est survenu lors de l’analyse du fichier de configuration {0}
standalonePlayerExternalInterfaceErrorText=Des erreurs se sont produites. ExternalInterface ne fonctionne pas dans un lecteur autonome.
-layerFailedToLoad:La couche {0} n’a pas été chargée : {1}
+layerFailedToLoad=La couche {0} n’a pas été chargée : {1}
couldNotFetchBasemapData=Impossible de récupérer les données du fond de carte :\n{0}
couldNotConnectToPortal=Impossible de se connecter au portail.
couldNotQueryPortal=Impossible d’interroger le portail.
@@ -250,6 +250,8 @@ step1ErrorLabel=Sélectionnez la zone qui vous intéresse.
step2ErrorLabel=Sélectionnez les couches à extraire.
emptyResultsLabel=La tâche est terminée, mais elle n’a renvoyé aucun résultat.
saveDataFileLabel=Le fichier de données a été créé. Voulez-vous l’enregistrer ?
+selectAllLabel=Tout sélectionner
+deselectAllLabel=Tout désélectionner
attributesLabel=Attributs
diff --git a/locale/he_IL/ViewerStrings.properties b/locale/he_IL/ViewerStrings.properties
index 8e06c43..2d9be1b 100644
--- a/locale/he_IL/ViewerStrings.properties
+++ b/locale/he_IL/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=אודות ArcGIS Viewer for Flex...
-aboutText=אפליקציה זו משתמשת ב- ArcGIS Viewer 3.4 for Flex.
+aboutText=אפליקציה זו משתמשת ב- ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=לימוד נוסף
aboutCloseBtn=סגור
@@ -84,7 +84,7 @@ faultDetail=פרטי תקלה: {0}
parseConfigErrorText=אירעה בעיה בזמן פריסת קובץ התצורה {0}
standalonePlayerExternalInterfaceErrorText=אירעה שגיאה כלשהי. ExternalInterface לא עובד ב- Standalone player.
-layerFailedToLoad:טעינת שכבה {0} נכשלה: {1}
+layerFailedToLoad=טעינת שכבה {0} נכשלה: {1}
couldNotFetchBasemapData=לא יכול להביא נתוני מפת בסיס:\n{0}
couldNotConnectToPortal=לא יכול להתחבר לפורטל.
couldNotQueryPortal=לא יכול לתשאל פורטל.
@@ -250,6 +250,8 @@ step1ErrorLabel=אנא בחר אזור עניין.
step2ErrorLabel=אנא בחר שכבות לגזירה
emptyResultsLabel=הרצת הכלי הסתיימה אך לא הוחזרו תוצאות.
saveDataFileLabel=נוצר קובץ נתונים. האם ברצונך לשמור אותו?
+selectAllLabel=בחר הכל
+deselectAllLabel=הסר בחירה מהכל
attributesLabel=מאפיינים
diff --git a/locale/it_IT/ViewerStrings.properties b/locale/it_IT/ViewerStrings.properties
index 0e0cd55..f7a8963 100644
--- a/locale/it_IT/ViewerStrings.properties
+++ b/locale/it_IT/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Informazioni su ArcGIS Viewer for Flex...
-aboutText=Quest´applicazione sta utilizzando ArcGIS Viewer 3.4 for Flex.
+aboutText=Quest´applicazione sta utilizzando ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Ulteriori informazioni
aboutCloseBtn=Chiudi
@@ -84,7 +84,7 @@ faultDetail=Dettagli errore: {0}
parseConfigErrorText=Problema durante l´analisi del file di configurazione {0}
standalonePlayerExternalInterfaceErrorText=Si è verificato un errore. ExternalInterface non funziona nel lettore autonomo.
-layerFailedToLoad:Impossibile caricare il layer {0}: {1}
+layerFailedToLoad=Impossibile caricare il layer {0}: {1}
couldNotFetchBasemapData=Impossibile recuperare i dati della mappa di base:\n{0}
couldNotConnectToPortal=Impossibile connettersi al Portale.
couldNotQueryPortal=Impossibile interrogare il Portale.
@@ -250,6 +250,8 @@ step1ErrorLabel=Selezionare un´area di interesse.
step2ErrorLabel=Selezionare i layer da estrarre.
emptyResultsLabel=Attività completata, ma non sono stati restituiti risultati.
saveDataFileLabel=File di dati creato. Salvarlo?
+selectAllLabel=Seleziona tutti
+deselectAllLabel=Deseleziona tutto
attributesLabel=Attributi
diff --git a/locale/ja_JP/ViewerStrings.properties b/locale/ja_JP/ViewerStrings.properties
index 378fc5a..e57c918 100644
--- a/locale/ja_JP/ViewerStrings.properties
+++ b/locale/ja_JP/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=ArcGIS Viewer for Flex について...
-aboutText=このアプリケーションは、ArcGIS Viewer 3.4 for Flex を使用しています。
+aboutText=このアプリケーションは、ArcGIS Viewer 3.5 for Flex を使用しています。
aboutLearnMoreBtn=詳細
aboutCloseBtn=閉じる
@@ -84,7 +84,7 @@ faultDetail=障害の詳細: {0}
parseConfigErrorText=構成ファイルの解析中に問題が発生しました{0}
standalonePlayerExternalInterfaceErrorText=エラーが発生しました。スタンドアロン版プレイヤーでは ExternalInterface は機能しません。
-layerFailedToLoad:{0} レイヤの読み込みに失敗しました: {1}
+layerFailedToLoad={0} レイヤの読み込みに失敗しました: {1}
couldNotFetchBasemapData=ベースマップ データをフェッチできません:\n{0}
couldNotConnectToPortal=ポータルに接続できません。
couldNotQueryPortal=ポータルのクエリができません。
@@ -250,6 +250,8 @@ step1ErrorLabel=対象エリアを選択してください。
step2ErrorLabel=抽出するレイヤを選択してください。
emptyResultsLabel=タスクは完了しましたが、返される結果がありませんでした。
saveDataFileLabel=データ ファイルが作成されました。保存しますか?
+selectAllLabel=すべて選択
+deselectAllLabel=すべて選択解除
attributesLabel=属性
diff --git a/locale/ko_KR/ViewerStrings.properties b/locale/ko_KR/ViewerStrings.properties
index 6421097..fe743be 100644
--- a/locale/ko_KR/ViewerStrings.properties
+++ b/locale/ko_KR/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=ArcGIS Viewer for Flex 정보...
-aboutText=이 응용프로그램은 ArcGIS Viewer 3.4 for Flex를 사용하고 있습니다.
+aboutText=이 응용프로그램은 ArcGIS Viewer 3.5 for Flex를 사용하고 있습니다.
aboutLearnMoreBtn=자세히 보기
aboutCloseBtn=닫기
@@ -84,7 +84,7 @@ faultDetail=오류 설명: {0}
parseConfigErrorText=구성 파일 {0}을(를) 구문 분석하는 동안 문제가 발생했습니다.
standalonePlayerExternalInterfaceErrorText=일부 오류가 발생했습니다. ExternalInterface는 Standalone 플레이어에서 작동하지 않습니다.
-layerFailedToLoad:{0} 레이어를 로드하지 못했습니다. {1}
+layerFailedToLoad={0} 레이어를 로드하지 못했습니다. {1}
couldNotFetchBasemapData=베이스맵 데이터를 가져올 수 없습니다.\n{0}
couldNotConnectToPortal=포털에 연결할 수 없습니다.
couldNotQueryPortal=포털을 쿼리할 수 없습니다.
@@ -250,6 +250,8 @@ step1ErrorLabel=원하는 영역을 선택하세요.
step2ErrorLabel=추출할 레이어를 선택하세요.
emptyResultsLabel=작업이 완료되었으나 결과를 반환하지 않았습니다.
saveDataFileLabel=데이터 파일이 생성되었습니다. 저장하시겠습니까?
+selectAllLabel=모두 선택
+deselectAllLabel=모두 선택 취소
attributesLabel=속성
diff --git a/locale/lt_LT/ViewerStrings.properties b/locale/lt_LT/ViewerStrings.properties
index 0cd1f39..d2e3a83 100644
--- a/locale/lt_LT/ViewerStrings.properties
+++ b/locale/lt_LT/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Apie ArcGIS Viewer for Flex...
-aboutText=Aplikacija naudoja ArcGIS Viewer 3.4 for Flex.
+aboutText=Aplikacija naudoja ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Plačiau
aboutCloseBtn=Uždaryti
@@ -84,7 +84,7 @@ faultDetail=Klaidos informacija: {0}
parseConfigErrorText=Problema apdorojant konfigūracijos failą: {0}
standalonePlayerExternalInterfaceErrorText=Klaida. ExternalInterface neveikia atskirame leistuve.
-layerFailedToLoad:Sluoksnio {0} nepavyko įkelti: {1}
+layerFailedToLoad=Sluoksnio {0} nepavyko įkelti: {1}
couldNotFetchBasemapData=Nepavyko gauti pagrindo žemėlapio duomenų:\n{0}
couldNotConnectToPortal=Nepavyko prisijungti prie Portalo.
couldNotQueryPortal=Nepavyko įvykdyti užklausos portale.
@@ -250,6 +250,8 @@ step1ErrorLabel=Prašome nurodyti norimą teritoriją.
step2ErrorLabel=Prašome pasirinkti norimus sluoksnius.
emptyResultsLabel=Užduotis įvykdyta, bet nieko negauta.
saveDataFileLabel=Duomenų failas sukurtas. Ar norite įrašyti?
+selectAllLabel=Pažymėti visus
+deselectAllLabel=Nužymėti visus
attributesLabel=Atributai
diff --git a/locale/lv_LV/ViewerStrings.properties b/locale/lv_LV/ViewerStrings.properties
index 3aed315..a402e38 100644
--- a/locale/lv_LV/ViewerStrings.properties
+++ b/locale/lv_LV/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Par ArcGIS Viewer for Flex...
-aboutText=Šī aplikācija izmanto ArcGIS Viewer 3.4 for Flex.
+aboutText=Šī aplikācija izmanto ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Uzziniet vairāk
aboutCloseBtn=Aizvērt
@@ -84,7 +84,7 @@ faultDetail=Kļūdas detaļas: {0}
parseConfigErrorText=Problēma radās analizējot konfigurācijas failu {0}
standalonePlayerExternalInterfaceErrorText=Kļūda. Savrupajā atskaņotājā ārējais interfeiss nedarbojas.
-layerFailedToLoad:{0} slāni neizdevās ielādēt: {1}
+layerFailedToLoad={0} slāni neizdevās ielādēt: {1}
couldNotFetchBasemapData=Neizdevās saistīt pamatkartes datus:\n{0}
couldNotConnectToPortal=Nevarēja izveidot savienojumu ar portālu.
couldNotQueryPortal=Vaicājums portālam neizdevās.
@@ -250,6 +250,8 @@ step1ErrorLabel=Lūdzu, izvēlieties interesējošo laukumu.
step2ErrorLabel=Lūdzu, izvēlieties slāņus, ko iegūt.
emptyResultsLabel=Uzdevums izpildīts, bet nav nekādu rezultātu.
saveDataFileLabel=Datu fails izveidots. Vai vēlaties to saglabāt?
+selectAllLabel=Izvēlieties visu
+deselectAllLabel=Atiezīmēt visu
attributesLabel=Atribūti
diff --git a/locale/nb_NO/ViewerStrings.properties b/locale/nb_NO/ViewerStrings.properties
index 3bbdcb8..481d617 100644
--- a/locale/nb_NO/ViewerStrings.properties
+++ b/locale/nb_NO/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Om ArcGIS Viewer for Flex...
-aboutText=Dette programmet bruker ArcGIS Viewer 3.4 for Flex.
+aboutText=Dette programmet bruker ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Lær mer
aboutCloseBtn=Lukk
@@ -84,7 +84,7 @@ faultDetail=Feildetaljer: {0}
parseConfigErrorText=Det oppstod et problem under lesing av konfigurasjonsfilen {0}
standalonePlayerExternalInterfaceErrorText=Det oppstod en feil. ExternalInterface fungerer ikke i frittstående spiller.
-layerFailedToLoad:{0} kartlag kunne ikke lastes inn: {1}
+layerFailedToLoad={0} kartlag kunne ikke lastes inn: {1}
couldNotFetchBasemapData=Kunne ikke hente bakgrunnskartdata:\n{0}
couldNotConnectToPortal=Kunne ikke koble til portalen.
couldNotQueryPortal=Kunne ikke spørre portalen.
@@ -250,6 +250,8 @@ step1ErrorLabel=Velg et område av interesse.
step2ErrorLabel=Velg lag som skal trekkes ut.
emptyResultsLabel=Oppgave fullført, men den returnerte ingen resultater.
saveDataFileLabel=Datafil opprettet. Vil du lagre den?
+selectAllLabel=Merk alt
+deselectAllLabel=Fjern merkingen på alle
attributesLabel=Attributter
diff --git a/locale/nl_NL/ViewerStrings.properties b/locale/nl_NL/ViewerStrings.properties
index 5180ea2..94b3996 100644
--- a/locale/nl_NL/ViewerStrings.properties
+++ b/locale/nl_NL/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Informatie over ArcGIS Viewer for Flex...
-aboutText=Deze applicatie maakt gebruikt van ArcGIS Viewer 3.4 for Flex.
+aboutText=Deze applicatie maakt gebruikt van ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Meer informatie
aboutCloseBtn=Sluiten
@@ -84,7 +84,7 @@ faultDetail=Probleemgegevens: {0}
parseConfigErrorText=Er is een probleem opgetreden tijdens het parseren van het configuratiebestand {0}
standalonePlayerExternalInterfaceErrorText=Er is een fout opgetreden. ExternalInterface werkt niet in een zelfstandige speler.
-layerFailedToLoad:{0}-laag kan niet worden geladen: {1}
+layerFailedToLoad={0}-laag kan niet worden geladen: {1}
couldNotFetchBasemapData=Kan geen basiskaartgegevens ophalen:\n{0}
couldNotConnectToPortal=Kan geen verbinding maken met het portaal.
couldNotQueryPortal=Kan geen query uitvoeren op het portaal.
@@ -250,6 +250,8 @@ step1ErrorLabel=Selecteer een interessegebied.
step2ErrorLabel=Selecteer lagen om op te halen.
emptyResultsLabel=De taak is voltooid, maar er zijn geen resultaten.
saveDataFileLabel=Het gegevensbestand is gemaakt. Wilt u het opslaan?
+selectAllLabel=Alles selecteren
+deselectAllLabel=Alles deselecteren
attributesLabel=Attributen
diff --git a/locale/pl_PL/ViewerStrings.properties b/locale/pl_PL/ViewerStrings.properties
index e0a50f2..ce12474 100644
--- a/locale/pl_PL/ViewerStrings.properties
+++ b/locale/pl_PL/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=O aplikacji ArcGIS Viewer for Flex...
-aboutText=Ta aplikacja używa ArcGIS Viewer 3.4 for Flex.
+aboutText=Ta aplikacja używa ArcGIS Viewer for Flex w wersji 3.5.
aboutLearnMoreBtn=Dowiedz się więcej
aboutCloseBtn=Zamknij
@@ -84,7 +84,7 @@ faultDetail=Szczegóły dot. usterki: {0}
parseConfigErrorText=Wystąpił problem podczas analizy pliku konfiguracyjnego {0}
standalonePlayerExternalInterfaceErrorText=Wystąpił błąd. ExternalInterface nie działa w autonomicznym odtwarzaczu.
-layerFailedToLoad:Ładowanie warstwy {0} nie powiodło się: {1}
+layerFailedToLoad=Ładowanie warstwy {0} nie powiodło się: {1}
couldNotFetchBasemapData=Pobieranie danych mapy bazowej nie powiodło się:\n{0}
couldNotConnectToPortal=Połączenie z portalem nie powiodło się.
couldNotQueryPortal=Nie można wywołać portalu.
@@ -250,6 +250,8 @@ step1ErrorLabel=Wybierz obszar zainteresowania.
step2ErrorLabel=Wybierz warstwy tematyczne do wyodrębnienia.
emptyResultsLabel=Zadanie zostało zakończone, ale nie zwróciło żadnych wyników.
saveDataFileLabel=Plik danych został utworzony. Czy chcesz go zapisać?
+selectAllLabel=Zaznacz wszystkie
+deselectAllLabel=Odznacz wszystko
attributesLabel=Atrybuty
diff --git a/locale/pt_BR/ViewerStrings.properties b/locale/pt_BR/ViewerStrings.properties
index 60f922b..39bd531 100644
--- a/locale/pt_BR/ViewerStrings.properties
+++ b/locale/pt_BR/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Sobre o ArcGIS Viewer for Flex...
-aboutText=Este aplicativo está utilizando ArcGIS Viewer 3.4 for Flex.
+aboutText=Este aplicativo está utilizando ArcGIS Viewer for Flex versão 3.5.
aboutLearnMoreBtn=Obter mais informações
aboutCloseBtn=Fechar
@@ -84,7 +84,7 @@ faultDetail=Detalhes da falha: {0}
parseConfigErrorText=Ocorreu um problema ao analisar o arquivo de configuração {0}
standalonePlayerExternalInterfaceErrorText=Ocorreu algum erro . O ExternalInterface não funciona na reprodução Standalone.
-layerFailedToLoad:{0} falha ao carregar camada: {1}
+layerFailedToLoad={0} falha ao carregar camada: {1}
couldNotFetchBasemapData=Não foi possível obter os dados do mapa base:\n{0}
couldNotConnectToPortal=Não foi possível conectar ao Portal.
couldNotQueryPortal=Não foi possível consultar o portal.
@@ -250,6 +250,8 @@ step1ErrorLabel=Selecione uma área de interesse.
step2ErrorLabel=Selecione as camadas para extrair.
emptyResultsLabel=Tarefa concluída, mas não retornou nenhum resultado.
saveDataFileLabel=Arquivo de dados criado. Deseja salvá-lo?
+selectAllLabel=Selecionar todos
+deselectAllLabel=Desselecionar todos
attributesLabel=Atributos
diff --git a/locale/pt_PT/ViewerStrings.properties b/locale/pt_PT/ViewerStrings.properties
index b1f950d..a70e24f 100644
--- a/locale/pt_PT/ViewerStrings.properties
+++ b/locale/pt_PT/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Sobre o ArcGIS Viewer for Flex...
-aboutText=Esta aplicação utiliza o ArcGIS Viewer 3.4 for Flex.
+aboutText=Esta aplicação utiliza o ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Obter mais informações
aboutCloseBtn=Fechar
@@ -84,7 +84,7 @@ faultDetail=Detalhes da falha: {0}
parseConfigErrorText=Ocorreu um problema ao analisar o ficheiro de configuração {0}
standalonePlayerExternalInterfaceErrorText=Ocorreu algum erro . O ExternalInterface não funciona na reprodução Standalone.
-layerFailedToLoad:{0} falha ao carregar camada: {1}
+layerFailedToLoad={0} falha ao carregar camada: {1}
couldNotFetchBasemapData=Não foi possível obter os dados do mapa base:\n{0}
couldNotConnectToPortal=Não foi possível ligar ao Portal.
couldNotQueryPortal=Não foi possível consultar o portal.
@@ -250,6 +250,8 @@ step1ErrorLabel=Selecione uma área de interesse.
step2ErrorLabel=Selecione as camadas a extrair.
emptyResultsLabel=A tarefa foi concluída mas não retornou nenhum resultado.
saveDataFileLabel=Ficheiro de dados criado. Deseja guardá-lo?
+selectAllLabel=Selecionar tudo
+deselectAllLabel=Desselecionar todos
attributesLabel=Atributos
diff --git a/locale/ro_RO/ViewerStrings.properties b/locale/ro_RO/ViewerStrings.properties
index c69460f..c8182d9 100644
--- a/locale/ro_RO/ViewerStrings.properties
+++ b/locale/ro_RO/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Despre ArcGIS Viewer for Flex...
-aboutText=Această aplicaţie utilizează ArcGIS Viewer 3.4 for Flex.
+aboutText=Această aplicaţie utilizează ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Aflaţi mai multe
aboutCloseBtn=Închidere
@@ -84,7 +84,7 @@ faultDetail=Detalii defecţiune: {0}
parseConfigErrorText=A survenit o eroare la analiza fişierului de configurare {0}
standalonePlayerExternalInterfaceErrorText=A survenit o eroare. Interfaţa externă nu funcţionează în playerul independent.
-layerFailedToLoad:Încărcarea stratului tematic {0} a eşuat: {1}
+layerFailedToLoad=Încărcarea stratului tematic {0} a eşuat: {1}
couldNotFetchBasemapData=Nu au putut fi preluate date pentru harta fundal:\n{0}
couldNotConnectToPortal=Nu a putut fi efectuată conectarea la Portal.
couldNotQueryPortal=Nu s-a putut interoga portalul.
@@ -250,6 +250,8 @@ step1ErrorLabel=Selectaţi o suprafaţă de interes.
step2ErrorLabel=Selectaţi straturi tematice de extras.
emptyResultsLabel=Operaţia a fost finalizată, însă nu a returnat niciun rezultat.
saveDataFileLabel=Fişier de date creat. Doriţi să îl salvaţi?
+selectAllLabel=Selectare globală
+deselectAllLabel=Deselectare globală
attributesLabel=Atribute
diff --git a/locale/ru_RU/ViewerStrings.properties b/locale/ru_RU/ViewerStrings.properties
index 1195d6f..273763c 100644
--- a/locale/ru_RU/ViewerStrings.properties
+++ b/locale/ru_RU/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=О программе ArcGIS Viewer for Flex...
-aboutText=Данное приложение использует ArcGIS Viewer 3.4 for Flex.
+aboutText=Данное приложение использует ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=См. Справку
aboutCloseBtn=Закрыть
@@ -43,22 +43,22 @@ unitsMetersAbbr=м
unitsMiles=Мили
unitsMilesAbbr=М
unitsYards=Ярды
-unitsYardsAbbr=яр.
+unitsYardsAbbr=яр
unitsAcres=Акры
-unitsAcresAbbr=ак.
+unitsAcresAbbr=ак
unitsHectares=Гектары
unitsHectaresAbbr=га
unitsSquareFeet=Квадратные футы
-unitsSquareFeetAbbr=кв. фт.
+unitsSquareFeetAbbr=кв. фт
unitsSquareKilometers=Квадратные километры
-unitsSquareKilometersAbbr=кв. км.
+unitsSquareKilometersAbbr=кв. км
unitsSquareMeters=Квадратные метры
-unitsSquareMetersAbbr=кв. м.
+unitsSquareMetersAbbr=кв. м
unitsSquareMiles=Квадратные мили
-unitsSquareMilesAbbr=кв. миль
+unitsSquareMilesAbbr=кв. М
unitsSquareYards=Квадратные ярды
-unitsSquareYardsAbbr=кв. яр.
+unitsSquareYardsAbbr=кв. яр
tocMapLayerZoomToLabel=Приблизить к
@@ -84,7 +84,7 @@ faultDetail=Сведения о сбое: {0}
parseConfigErrorText=Возникла проблема при синтаксическом анализе файла конфигурации {0}
standalonePlayerExternalInterfaceErrorText=Произошла ошибка. ExternalInterface не работает в автономном проигрывателе.
-layerFailedToLoad:{0} слою не удалось загрузить: {1}
+layerFailedToLoad={0} слою не удалось загрузить: {1}
couldNotFetchBasemapData=Не удалось получить данные базовой карты:\n{0}
couldNotConnectToPortal=Не удалось подключиться к порталу.
couldNotQueryPortal=Не удалось запросить портал.
@@ -250,6 +250,8 @@ step1ErrorLabel=Выберите область интереса.
step2ErrorLabel=Выберите слои для извлечения.
emptyResultsLabel=Задание выполнено, но результатов не получено.
saveDataFileLabel=Файл данных создан. Сохранить его?
+selectAllLabel=Выбрать все
+deselectAllLabel=Очистить всю выборку
attributesLabel=Атрибуты
diff --git a/locale/sv_SE/ViewerStrings.properties b/locale/sv_SE/ViewerStrings.properties
index 390de4d..741ee75 100644
--- a/locale/sv_SE/ViewerStrings.properties
+++ b/locale/sv_SE/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=Om ArcGIS Viewer for Flex...
-aboutText=Det här programmet använder ArcGIS Viewer 3.4 for Flex.
+aboutText=Det här programmet använder ArcGIS Viewer 3.5 for Flex.
aboutLearnMoreBtn=Läs mer
aboutCloseBtn=Stäng
@@ -84,7 +84,7 @@ faultDetail=Feldetaljer: {0}
parseConfigErrorText=Det uppstod ett problem när konfigurationsfilen {0} skulle parsas
standalonePlayerExternalInterfaceErrorText=Ett fel har inträffat. ExternalInterface fungerar inte i den fristående mediespelaren.
-layerFailedToLoad:Det gick inte att läsa in {0} lager: {1}
+layerFailedToLoad=Det gick inte att läsa in {0} lager: {1}
couldNotFetchBasemapData=Det gick inte att hämta data för baskartan:\n{0}
couldNotConnectToPortal=Det gick inte att ansluta till portalen.
couldNotQueryPortal=Det gick inte att söka i portalen.
@@ -250,6 +250,8 @@ step1ErrorLabel=Markera det område du är intresserad av.
step2ErrorLabel=Välj vilka lager som ska extraheras.
emptyResultsLabel=Åtgärden slutfördes, men inga resultat returnerades.
saveDataFileLabel=Datafilen har skapats. Vill du spara den?
+selectAllLabel=Markera alla
+deselectAllLabel=Avmarkera alla
attributesLabel=Attribut
diff --git a/locale/zh_CN/ViewerStrings.properties b/locale/zh_CN/ViewerStrings.properties
index 9ab8f47..5f96aa5 100644
--- a/locale/zh_CN/ViewerStrings.properties
+++ b/locale/zh_CN/ViewerStrings.properties
@@ -1,7 +1,7 @@
contextMenuText=关于 ArcGIS Viewer for Flex...
-aboutText=此应用程序正在使用 ArcGIS Viewer 3.4 for Flex。
+aboutText=此应用程序正在使用 ArcGIS Viewer 3.5 for Flex。
aboutLearnMoreBtn=了解更多信息
aboutCloseBtn=关闭
@@ -84,7 +84,7 @@ faultDetail=详细的错误信息: {0}
parseConfigErrorText=解析配置文件 {0} 时出现问题
standalonePlayerExternalInterfaceErrorText=出现了某个错误。ExternalInterface 在单独的播放器中无法正常运行。
-layerFailedToLoad:{0} 图层加载失败:{1}
+layerFailedToLoad={0} 图层加载失败:{1}
couldNotFetchBasemapData=无法获取底图数据:{0}
couldNotConnectToPortal=无法连接到门户。
couldNotQueryPortal=无法查询门户。
@@ -232,7 +232,7 @@ lengthLabel=长度:
bookmarksLabel=书签
addbookmarksLabel=添加书签
-addLabel=将当前范围作为书签添加,并赋予名称
+addLabel=将当前范围添加为指定书签
bookmarkSubmitLabel=添加书签
bookmarkMissingNameLabel=请输入书签的名称。
deleteBookmarkTooltip=删除书签
@@ -250,6 +250,8 @@ step1ErrorLabel=请选择一个感兴趣的区域。
step2ErrorLabel=请选择要提取的图层。
emptyResultsLabel=任务已完成但未返回任何结果。
saveDataFileLabel=数据文件已创建。是否要保存它?
+selectAllLabel=全选
+deselectAllLabel=取消全选
attributesLabel=属性
diff --git a/src/com/esri/viewer/WidgetTemplate.as b/src/com/esri/viewer/WidgetTemplate.as
index 6b43858..ee6c907 100644
--- a/src/com/esri/viewer/WidgetTemplate.as
+++ b/src/com/esri/viewer/WidgetTemplate.as
@@ -101,9 +101,13 @@ public class WidgetTemplate extends SkinnableContainer implements IWidgetTemplat
private static const WIDGET_STOP_DRAG:String = "stopDrag";
+ private static const DEFAULT_MIN_WIDTH:Number = 150;
+
+ private static const DEFAULT_MIN_HEIGHT:Number = 75;
+
private var _widgetId:Number;
- private var _widgetState:String = WIDGET_OPENED;
+ private var _widgetState:String;
private var _cursorID:int = 0;
@@ -118,11 +122,21 @@ public class WidgetTemplate extends SkinnableContainer implements IWidgetTemplat
private var _baseWidget:IBaseWidget;
+ private var _isPartOfPanel:Boolean;
+
+ [Bindable(event="isPartOfPanelChanged")]
+ public function get isPartOfPanel():Boolean
+ {
+ return _isPartOfPanel;
+ }
+
public function set baseWidget(value:IBaseWidget):void
{
_baseWidget = value;
+ _isPartOfPanel = value.isPartOfPanel;
+ dispatchEvent(new Event("isPartOfPanelChanged"));
- if (value.isPartOfPanel)
+ if (_isPartOfPanel)
{
this.enableIcon = this.enableCloseButton = this.enableMinimizeButton = this.enableDraging = false;
}
@@ -343,6 +357,8 @@ public class WidgetTemplate extends SkinnableContainer implements IWidgetTemplat
}
private var widgetMoveStarted:Boolean = false;
+ private var xResizeStart:Number;
+ private var yResizeStart:Number;
private function mouse_moveHandler(event:MouseEvent):void
{
@@ -471,6 +487,9 @@ public class WidgetTemplate extends SkinnableContainer implements IWidgetTemplat
{
if (_resizable)
{
+ xResizeStart = event.stageX
+ yResizeStart = event.stageY;
+
/*TODO: for now, it can't be resized when is not basic layout*/
stage.addEventListener(MouseEvent.MOUSE_MOVE, resize_moveHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, resize_upHandler);
@@ -493,53 +512,36 @@ public class WidgetTemplate extends SkinnableContainer implements IWidgetTemplat
private function resize_moveHandler(event:MouseEvent):void
{
- if (isRtl())
- {
- resize_moveHandler_rtl();
- }
- else
- {
- resize_moveHandler_normal();
- }
- }
+ // clear constraints
+ var widget:UIComponent = parent as UIComponent;
+ widget.left = widget.right = widget.top = widget.bottom = undefined;
- private function resize_moveHandler_normal():void
- {
- // if there is minWidth and minHeight specified on the container, use them while resizing
- const minimumResizeWidth:Number = minWidth ? minWidth : 200;
- const minimumResizeHeight:Number = minHeight ? minHeight : 100;
+ var xResizeEnd:Number = event.stageX;
+ var yResizeEnd:Number = event.stageY;
- if ((stage.mouseX < stage.width - 20) && (stage.mouseY < stage.height - 20))
+ var isWithinVerticalBoundaries:Boolean = (stage.mouseY < stage.height - 20);
+ var isWithinHorizontalBoundaries:Boolean = isRtl() ?
+ stage.mouseX > 20 : stage.mouseX < stage.width - 20;
+
+ if (isWithinHorizontalBoundaries && isWithinVerticalBoundaries)
{
- if ((stage.mouseX - parent.x) > minimumResizeWidth)
- {
- width = (stage.mouseX - parent.x);
- }
- if ((stage.mouseY - parent.y) > minimumResizeHeight)
- {
- height = (stage.mouseY - parent.y);
- }
- }
- }
+ // if there is minWidth and minHeight specified on the container, use them while resizing
+ const minimumResizeWidth:Number = minWidth ? minWidth : DEFAULT_MIN_WIDTH;
+ const minimumResizeHeight:Number = minHeight ? minHeight : DEFAULT_MIN_HEIGHT;
- private function resize_moveHandler_rtl():void
- {
- // if there is minWidth and minHeight specified on the container, use them while resizing
- const minimumResizeWidth:Number = minWidth ? minWidth : 200;
- const minimumResizeHeight:Number = minHeight ? minHeight : 100;
+ var deltaX:Number = xResizeEnd - xResizeStart;
+ var deltaY:Number = yResizeEnd - yResizeStart;
- var nextWidth:Number = stage.stageWidth - (stage.mouseX + parent.x);
- var nextHeight:Number = (stage.mouseY - parent.y);
+ var calculatedWidth:Number = isRtl() ? widgetWidth - deltaX : widgetWidth + deltaX;
+ var calculatedHeight:Number = widgetHeight + deltaY;
- if (stage.mouseX > 20 && (stage.mouseY < stage.height - 20))
- {
- if (nextWidth > minimumResizeWidth)
+ if (calculatedWidth > minimumResizeWidth)
{
- width = nextWidth;
+ width = calculatedWidth;
}
- if (nextHeight > minimumResizeHeight)
+ if (calculatedHeight > minimumResizeHeight)
{
- height = nextHeight;
+ height = calculatedHeight;
}
}
}
diff --git a/src/com/esri/viewer/components/GeocoderComponent.mxml b/src/com/esri/viewer/components/GeocoderComponent.mxml
index a115baf..5029bff 100644
--- a/src/com/esri/viewer/components/GeocoderComponent.mxml
+++ b/src/com/esri/viewer/components/GeocoderComponent.mxml
@@ -42,6 +42,8 @@
import com.esri.ags.symbols.Symbol;
import com.esri.ags.tasks.GeometryServiceSingleton;
import com.esri.ags.tasks.JSONTask;
+ import com.esri.ags.tasks.supportClasses.AddressCandidate;
+ import com.esri.ags.tasks.supportClasses.FindResult;
import com.esri.ags.tasks.supportClasses.ProjectParameters;
import com.esri.ags.utils.WebMercatorUtil;
import com.esri.viewer.BaseWidget;
@@ -68,8 +70,9 @@
[Bindable]
private var map:Map;
- [Bindable]
- private var searchResultTitleLabel:String;
+ private var searchResultTitle:String;
+
+ private var searchResultDescription:String;
private var _mapServicesConfigured:Boolean;
@@ -190,26 +193,27 @@
geocoder.autoComplete = configXML.autocomplete != "false";
- const configMaxLocations:int = parseInt(configXML.maxlocations[0])
+ const configMaxLocations:int = parseInt(configXML.maxlocations[0]);
if (!isNaN(configMaxLocations) && configMaxLocations > 0)
{
geocoder.maxLocations = configMaxLocations;
}
- const configMinChars:int = parseInt(configXML.minchars[0])
+ const configMinChars:int = parseInt(configXML.minchars[0]);
if (configMinChars && configMinChars > 0)
{
geocoder.minCharacters = configMinChars;
}
- const configSearchDelay:int = parseInt(configXML.searchdelay[0])
+ const configSearchDelay:int = parseInt(configXML.searchdelay[0]);
if (configSearchDelay && configSearchDelay > 0)
{
geocoder.searchDelay = configSearchDelay;
}
geocoder.prompt = configXML.labels.searchprompt[0] || hostBaseWidget.getDefaultString("searchPrompt");
- searchResultTitleLabel = configXML.labels.searchresulttitle[0] || hostBaseWidget.getDefaultString("searchResultTitleLabel");
+ searchResultTitle = configXML.result.title[0] || configXML.labels.searchresulttitle[0] || hostBaseWidget.getDefaultString("searchResultTitleLabel");
+ searchResultDescription = configXML.result.description[0];
configureResultSymbols();
configureResultGraphic();
@@ -368,10 +372,10 @@
{
if (configXML.symbols[0])
{
- const smsColor:uint = configXML.symbols.simplemarkersymbol.@color || 0xFF0000;
+ const smsColor:uint = (configXML.symbols.simplemarkersymbol.@color[0] != null) ? configXML.symbols.simplemarkersymbol.@color : 0xFF0000;
const smsAlpha:Number = (configXML.symbols.simplemarkersymbol.@alpha[0] != null) ? configXML.symbols.simplemarkersymbol.@alpha : 0.8;
const smsSize:Number = (configXML.symbols.simplemarkersymbol.@size[0] != null) ? configXML.symbols.simplemarkersymbol.@size : 15;
- const smsOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000;
+ const smsOutlineColor:uint = (configXML.symbols.simplefillsymbol.outline.@color[0] != null) ? configXML.symbols.simplefillsymbol.outline.@color : 0xFF0000;
const smsOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8;
const smsOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2;
@@ -381,15 +385,15 @@
smsOutlineAlpha,
smsOutlineWidth));
- const slsColor:uint = configXML.symbols.simplelinesymbol.@color || 0xFF0000;
+ const slsColor:uint = (configXML.symbols.simplelinesymbol.@color[0] != null) ? configXML.symbols.simplelinesymbol.@color : 0xFF0000;
const slsAlpha:Number = (configXML.symbols.simplelinesymbol.@alpha[0] != null) ? configXML.symbols.simplelinesymbol.@alpha : 0.8;
const slsWidth:Number = (configXML.symbols.simplelinesymbol.@width[0] != null) ? configXML.symbols.simplelinesymbol.@width : 2;
resultSimpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, slsColor, slsAlpha, slsWidth);
- const sfsColor:uint = configXML.symbols.simplefillsymbol.@color || 0xFF0000;
+ const sfsColor:uint = (configXML.symbols.simplefillsymbol.@color[0] != null) ? configXML.symbols.simplefillsymbol.@color : 0xFF0000;
const sfsAlpha:Number = (configXML.symbols.simplefillsymbol.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.@alpha : 0.5;
- const sfsOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000;
+ const sfsOutlineColor:uint = (configXML.symbols.simplefillsymbol.outline.@color[0] != null) ? configXML.symbols.simplefillsymbol.outline.@color : 0xFF0000;
const sfsOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8;
const sfsOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2;
@@ -403,7 +407,7 @@
private function configureResultGraphic():void
{
- searchResultGraphic = new com.esri.ags.Graphic()
+ searchResultGraphic = new Graphic();
const clearFeatureLabel:String = configXML.labels.clearfeaturelabel[0] || hostBaseWidget.getDefaultString("clearLabel");
const customContextMenu:ContextMenu = new ContextMenu();
customContextMenu.hideBuiltInItems();
@@ -452,12 +456,13 @@
searchResultGraphic.geometry = searchResult.geometry;
searchResultGraphic.symbol = getSymbolForGeometryType(searchResultGraphic.geometry.type);
+ searchResultGraphic.attributes = getAttributes(searchResult.data);
var resultExtent:Extent = searchResult.extent;
const popUpInfo:PopUpInfo = new PopUpInfo();
- popUpInfo.description = searchResult.label;
- popUpInfo.title = searchResultTitleLabel;
- popUpInfo.showZoomToButton = false; //hide the zoom to button as map would be zoomed-in
+ popUpInfo.description = searchResultDescription ? searchResultDescription : searchResult.label;
+ popUpInfo.title = searchResultTitle;
+ popUpInfo.showZoomToButton = false; //hide the zoom to button as map would be zoomed-in
const infoWindowRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
infoWindowRenderer.properties = { popUpInfo: popUpInfo };
@@ -494,6 +499,23 @@
infoWindowShow(resultPoint);
}
+ private function getAttributes(data:Object):Object
+ {
+ var findResult:FindResult = data as FindResult;
+ if (findResult && findResult.feature)
+ {
+ return findResult.feature.attributes;
+ }
+
+ var addressCandidate:AddressCandidate = data as AddressCandidate;
+ if (addressCandidate)
+ {
+ return addressCandidate.attributes;
+ }
+
+ return null;
+ }
+
private function getSymbolForGeometryType(geometryType:String):Symbol
{
var symbol:Symbol;
diff --git a/src/com/esri/viewer/components/toc/TOC.as b/src/com/esri/viewer/components/toc/TOC.as
index 8cae071..7cbcc9a 100644
--- a/src/com/esri/viewer/components/toc/TOC.as
+++ b/src/com/esri/viewer/components/toc/TOC.as
@@ -60,6 +60,8 @@ public class TOC extends Tree
dataProvider = _tocRoots;
itemRenderer = new ClassFactory(TocItemRenderer);
iconFunction = tocItemIcon;
+ dataTipField = "label";
+ showDataTips = true;
this.map = map;
@@ -107,6 +109,8 @@ public class TOC extends Tree
// include legend items
private var _includeLegendItems:Boolean;
+ // show layer menu
+ private var _showLayerMenu:Boolean;
private var _expandLayerItemsPending:Boolean;
private var _pendingItemsToExpand:Array = [];
@@ -370,6 +374,28 @@ public class TOC extends Tree
onFilterChange();
dispatchEvent(new Event("includeLegendItemsChanged"));
}
+
+ //--------------------------------------------------------------------------
+ // showLayerMenu
+ //--------------------------------------------------------------------------
+
+ [Bindable("showLayerMenuChanged")]
+ /**
+ * Whether to show layer menu.
+ */
+ public function get showLayerMenu():Boolean
+ {
+ return _showLayerMenu;
+ }
+
+ /**
+ * @private
+ */
+ public function set showLayerMenu(value:Boolean):void
+ {
+ _showLayerMenu = value;
+ dispatchEvent(new Event("showLayerMenuChanged"));
+ }
//--------------------------------------------------------------------------
//
@@ -480,7 +506,7 @@ public class TOC extends Tree
}
var layer:Layer = event.layer;
- var index:int = event.index;
+ var index:int = getEffectiveTOCIndex(layer, event.index);
if (isGraphicsLayer(layer) || isHiddenLayer(layer) || isLayerExcluded(layer))
{
@@ -565,6 +591,20 @@ public class TOC extends Tree
}
}
+ private function getEffectiveTOCIndex(layer:Layer, index:Number):int
+ {
+ var result:int = 0;
+ for each (var layerId:String in getNewLayerIds(map.layerIds))
+ {
+ if (layer.id == layerId)
+ {
+ break;
+ }
+ result++;
+ }
+ return result;
+ }
+
private function getNewLayerIds(layerIds:Array):Array
{
var result:Array = [];
diff --git a/src/com/esri/viewer/components/toc/tocClasses/TocItemRenderer.as b/src/com/esri/viewer/components/toc/tocClasses/TocItemRenderer.as
index 9036d90..e58aabd 100644
--- a/src/com/esri/viewer/components/toc/tocClasses/TocItemRenderer.as
+++ b/src/com/esri/viewer/components/toc/tocClasses/TocItemRenderer.as
@@ -18,7 +18,7 @@ package com.esri.viewer.components.toc.tocClasses
import com.esri.ags.layers.Layer;
import com.esri.ags.layers.TiledMapServiceLayer;
-import com.esri.ags.symbols.Symbol;
+import com.esri.ags.layers.supportClasses.LegendItemInfo;
import com.esri.viewer.AppEvent;
import com.esri.viewer.components.toc.TOC;
import com.esri.viewer.components.toc.controls.CheckBoxIndeterminate;
@@ -33,6 +33,7 @@ import mx.core.FlexGlobals;
import mx.core.UIComponent;
import spark.components.Group;
+import spark.primitives.BitmapImage;
/**
* A custom tree item renderer for a map Table of Contents.
@@ -60,7 +61,7 @@ public class TocItemRenderer extends TreeItemRenderer
private var _tocLayerMenu:TocLayerMenu;
- [Embed(source="assets/images/Context_menu11.png")]
+ [Embed(source="/assets/images/Context_menu11.png")]
[Bindable]
public var contextCls:Class;
@@ -96,16 +97,22 @@ public class TocItemRenderer extends TreeItemRenderer
if (value is TocLegendItem)
{
_legendSwatchContainer.removeAllElements();
-
- var symbol:Symbol = TocLegendItem(value).legendItemInfo.symbol;
- if (symbol)
+
+ var legendItemInfo:LegendItemInfo = TocLegendItem(value).legendItemInfo;
+ if (legendItemInfo.imageURL) // WMS
{
- var swatch:UIComponent = symbol.createSwatch(LEGEND_SWATCH_SIZE, LEGEND_SWATCH_SIZE);
+ var legendImg:BitmapImage = new BitmapImage();
+ legendImg.source = legendItemInfo.imageURL;
+ _legendSwatchContainer.addElement(legendImg);
+ }
+ else if (legendItemInfo.symbol)
+ {
+ var swatch:UIComponent = legendItemInfo.symbol.createSwatch(LEGEND_SWATCH_SIZE, LEGEND_SWATCH_SIZE);
if (swatch)
{
_legendSwatchContainer.addElement(swatch);
}
- }
+ }
}
}
@@ -171,7 +178,7 @@ public class TocItemRenderer extends TreeItemRenderer
// Hide the checkbox for child items of tiled map services
var checkboxVisible:Boolean = true;
- if (isTiledLayerChild(item) || (item is TocLegendItem))
+ if (isTiledLayerChild(item) || (item is TocLegendItem) || (item is TocWMSLayerInfoItem))
{
checkboxVisible = false;
}
@@ -180,8 +187,8 @@ public class TocItemRenderer extends TreeItemRenderer
// show legend for TocLegendItem
_legendSwatchContainer.visible = item is TocLegendItem;
- // hide the option button if this is not a layer
- if (!isLayerItem(item))
+ // hide the option button if this is not a layer or TOC.showLayerMenu=false
+ if (!isLayerItem(item) || !TOC(this.parent.parent).showLayerMenu)
{
_layerMenuImage.visible = false;
}
diff --git a/src/com/esri/viewer/components/toc/tocClasses/TocLayerMenu.mxml b/src/com/esri/viewer/components/toc/tocClasses/TocLayerMenu.mxml
index a38da38..ea98cb8 100644
--- a/src/com/esri/viewer/components/toc/tocClasses/TocLayerMenu.mxml
+++ b/src/com/esri/viewer/components/toc/tocClasses/TocLayerMenu.mxml
@@ -32,8 +32,8 @@
import com.esri.ags.Map;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.geometry.Extent;
+ import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import com.esri.ags.layers.FeatureLayer;
- import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.KMLLayer;
import com.esri.ags.layers.Layer;
import com.esri.ags.layers.OpenStreetMapLayer;
@@ -208,72 +208,159 @@
private function moveUpLabel_clickHandler(event:MouseEvent):void
{
- var currentIndex:Number = 0;
- for each (var layer:Layer in getLayersAfterRemovingHiddenLayers(_map.layers as ArrayCollection))
+ var mapLayers:ArrayCollection = _map.layers as ArrayCollection;
+ var currentIndex:int = mapLayers.getItemIndex(_layer);
+ var layer:Layer;
+ var arrOfFeatureLayers:Array;
+ if (_layer is ArcGISDynamicMapServiceLayer)
{
- if (_layer == layer)
+ arrOfFeatureLayers = [];
+ var dynamicMapServiceLayer:ArcGISDynamicMapServiceLayer = ArcGISDynamicMapServiceLayer(_layer);
+ for each (layer in mapLayers)
{
- break;
+ if (layer is FeatureLayer && layer.name.indexOf("hiddenLayer_") != -1)
+ {
+ var featureServiceURL:String = FeatureLayer(layer).url.substring(0, FeatureLayer(layer).url.lastIndexOf("/"));
+ var mapServiceURL:String = featureServiceURL.replace("FeatureServer", "MapServer");
+ if (mapServiceURL == dynamicMapServiceLayer.url)
+ {
+ arrOfFeatureLayers.push(layer);
+ }
+ }
}
- currentIndex++;
+ }
+ var nextIndex:int = currentIndex + 1;
+ if (arrOfFeatureLayers && arrOfFeatureLayers.length > 0)
+ {
+ nextIndex += arrOfFeatureLayers.length;
}
- _map.reorderLayer(_layer.id, currentIndex + 1);
- remove();
- }
-
- private function moveDownLabel_clickHandler(event:MouseEvent):void
- {
- var currentIndex:Number = 0;
- for each (var layer:Layer in getLayersAfterRemovingHiddenLayers(_map.layers as ArrayCollection))
+ if (mapLayers.getItemAt(nextIndex) && mapLayers.getItemAt(nextIndex) is ArcGISDynamicMapServiceLayer)
{
- if (_layer == layer)
+ var arr:Array = [];
+ var dynamicMapServiceLayer1:ArcGISDynamicMapServiceLayer = ArcGISDynamicMapServiceLayer(mapLayers.getItemAt(nextIndex));
+ for each (layer in mapLayers)
{
- break;
+ if (layer is FeatureLayer && layer.name.indexOf("hiddenLayer_") != -1)
+ {
+ var featureServiceURL1:String = FeatureLayer(layer).url.substring(0, FeatureLayer(layer).url.lastIndexOf("/"));
+ var mapServiceURL1:String = featureServiceURL1.replace("FeatureServer", "MapServer");
+ if (mapServiceURL1 == dynamicMapServiceLayer1.url)
+ {
+ arr.push(layer);
+ }
+ }
}
- currentIndex++;
+ nextIndex += arr.length;
+ }
+ if (arrOfFeatureLayers && arrOfFeatureLayers.length > 0)
+ {
+ for each (var featureLayer:FeatureLayer in arrOfFeatureLayers)
+ {
+ _map.reorderLayer(featureLayer.id, nextIndex);
+ }
+ _map.reorderLayer(_layer.id, nextIndex - 1);
+ }
+ else
+ {
+ _map.reorderLayer(_layer.id, nextIndex);
}
- _map.reorderLayer(_layer.id, currentIndex - 1);
remove();
}
- private function getLayersAfterRemovingHiddenLayers(layers:ArrayCollection):Array
+ private function moveDownLabel_clickHandler(event:MouseEvent):void
{
- var result:Array = [];
- for (var i:int = 0; i < layers.length; i++)
- {
- const layer:Layer = layers.getItemAt(i) as Layer;
- if (layer.name.indexOf("hiddenLayer_") != -1 || (layer is GraphicsLayer && !(layer is FeatureLayer)) || islayerExcludedAndNotBaseMap(layer))
+ var mapLayers:ArrayCollection = _map.layers as ArrayCollection;
+ var currentIndex:int = mapLayers.getItemIndex(_layer);
+ var layer:Layer;
+ var arrOfFeatureLayers:Array;
+ if (mapLayers.getItemAt(currentIndex - 1) is FeatureLayer && FeatureLayer(mapLayers.getItemAt(currentIndex - 1)).name.indexOf("hiddenLayer_") != -1)
+ {
+ if (_layer is ArcGISDynamicMapServiceLayer)
{
- continue;
+ arrOfFeatureLayers = [];
+ var dynamicMapServiceLayer:ArcGISDynamicMapServiceLayer = ArcGISDynamicMapServiceLayer(_layer);
+ for each (layer in mapLayers)
+ {
+ if (layer is FeatureLayer && layer.name.indexOf("hiddenLayer_") != -1)
+ {
+ var featureServiceURL:String = FeatureLayer(layer).url.substring(0, FeatureLayer(layer).url.lastIndexOf("/"));
+ var mapServiceURL:String = featureServiceURL.replace("FeatureServer", "MapServer");
+ if (mapServiceURL == dynamicMapServiceLayer.url)
+ {
+ arrOfFeatureLayers.push(layer);
+ }
+ }
+ }
}
- result.push(layers.getItemAt(i));
- }
- return result;
- }
-
- private function islayerExcludedAndNotBaseMap(layer:Layer):Boolean
- {
- var exclude:Boolean;
- for each (var item:* in _toc.excludeLayers)
- {
- if ((item === layer || item == layer.name) || (item == layer.id))
+
+ var index:Number = currentIndex - 1;
+ var arr:Array = [];
+ while(mapLayers.getItemAt(index) is FeatureLayer && FeatureLayer(mapLayers.getItemAt(index)).name.indexOf("hiddenLayer_") != -1)
{
- exclude = true;
- for each (var item1:* in _toc.basemapLayers)
+ arr.push(FeatureLayer(mapLayers.getItemAt(index)));
+ index--;
+ }
+ if (mapLayers.getItemAt(index) && mapLayers.getItemAt(index) is ArcGISDynamicMapServiceLayer)
+ {
+ var dynamicMapServiceLayer1:ArcGISDynamicMapServiceLayer = ArcGISDynamicMapServiceLayer(mapLayers.getItemAt(index));
+ var featureLayersAddedFromMapService:Boolean = true;
+ for each (var featureLayer:FeatureLayer in arr)
{
- if (item1 === item)
+ var featureServiceURL1:String = featureLayer.url.substring(0, featureLayer.url.lastIndexOf("/"));
+ var mapServiceURL1:String = featureServiceURL1.replace("FeatureServer", "MapServer");
+ if (mapServiceURL1 != dynamicMapServiceLayer1.url)
{
- exclude = false;
+ featureLayersAddedFromMapService = false;
break;
- }
+ }
+ }
+ if (featureLayersAddedFromMapService)
+ {
+ if (arrOfFeatureLayers && arrOfFeatureLayers.length > 0)
+ {
+ for each (var featureLayer1:FeatureLayer in arrOfFeatureLayers)
+ {
+ _map.reorderLayer(featureLayer1.id, index);
+ }
+ }
+ _map.reorderLayer(_layer.id, index);
}
- if (!exclude)
+ }
+ else
+ {
+ _map.reorderLayer(_layer.id, index);
+ }
+ }
+ else if (_layer is ArcGISDynamicMapServiceLayer)
+ {
+ arrOfFeatureLayers = [];
+ var dynamicMapServiceLayer2:ArcGISDynamicMapServiceLayer = ArcGISDynamicMapServiceLayer(_layer);
+ for each (layer in mapLayers)
+ {
+ if (layer is FeatureLayer && layer.name.indexOf("hiddenLayer_") != -1)
{
- break;
+ var featureServiceURL2:String = FeatureLayer(layer).url.substring(0, FeatureLayer(layer).url.lastIndexOf("/"));
+ var mapServiceURL2:String = featureServiceURL2.replace("FeatureServer", "MapServer");
+ if (mapServiceURL2 == dynamicMapServiceLayer2.url)
+ {
+ arrOfFeatureLayers.push(layer);
+ }
}
}
+ if (arrOfFeatureLayers && arrOfFeatureLayers.length > 0)
+ {
+ for each (var featureLayer2:FeatureLayer in arrOfFeatureLayers.reverse())
+ {
+ _map.reorderLayer(featureLayer2.id, currentIndex - 1);
+ }
+ }
+ _map.reorderLayer(_layer.id, currentIndex - 1);
}
- return exclude;
+ else
+ {
+ _map.reorderLayer(_layer.id, currentIndex - 1);
+ }
+ remove();
}
private function descriptionOrDownloadLabel_clickHandler(event:MouseEvent):void
diff --git a/src/com/esri/viewer/components/toc/tocClasses/TocMapLayerItem.as b/src/com/esri/viewer/components/toc/tocClasses/TocMapLayerItem.as
index b8ac2e0..ba9f209 100644
--- a/src/com/esri/viewer/components/toc/tocClasses/TocMapLayerItem.as
+++ b/src/com/esri/viewer/components/toc/tocClasses/TocMapLayerItem.as
@@ -25,11 +25,13 @@ import com.esri.ags.layers.ArcIMSMapServiceLayer;
import com.esri.ags.layers.ILegendSupport;
import com.esri.ags.layers.KMLLayer;
import com.esri.ags.layers.Layer;
+import com.esri.ags.layers.WMSLayer;
import com.esri.ags.layers.supportClasses.KMLFeatureInfo;
import com.esri.ags.layers.supportClasses.KMLFolder;
import com.esri.ags.layers.supportClasses.LayerInfo;
import com.esri.ags.layers.supportClasses.LayerLegendInfo;
import com.esri.ags.layers.supportClasses.LegendItemInfo;
+import com.esri.ags.layers.supportClasses.WMSLayerInfo;
import com.esri.viewer.ViewerContainer;
import com.esri.viewer.components.toc.utils.MapUtil;
import com.esri.viewer.utils.MapServiceUtil;
@@ -38,6 +40,7 @@ import flash.events.Event;
import mx.binding.utils.ChangeWatcher;
import mx.collections.ArrayCollection;
+import mx.collections.ArrayList;
import mx.events.CollectionEvent;
import mx.events.FlexEvent;
import mx.rpc.AsyncResponder;
@@ -414,6 +417,7 @@ public class TocMapLayerItem extends TocItem
{
children = null;
var layerInfos:Array; // of LayerInfo
+ var wmsLayerInfos:Array; // of WMSLayerInfo
if (layer is ArcGISTiledMapServiceLayer)
{
@@ -457,6 +461,10 @@ public class TocMapLayerItem extends TocItem
{
layerInfos = ArcIMSMapServiceLayer(layer).layerInfos;
}
+ else if (layer is WMSLayer)
+ {
+ wmsLayerInfos = WMSLayer(layer).layerInfos;
+ }
else if (layer is KMLLayer)
{
createKMLLayerTocItems(this, KMLLayer(layer));
@@ -470,16 +478,26 @@ public class TocMapLayerItem extends TocItem
addChild(createTocLayer(this, layerInfo1, layerInfos, layerInfo1.defaultVisibility, isTocLayerInfoItemInScale(layerInfo1)));
}
}
+ else if (wmsLayerInfos)
+ {
+ var wmsVisibleLayers:ArrayList = WMSLayer(layer).visibleLayers as ArrayList;
+ for each (var wmsLayerInfo:WMSLayerInfo in wmsLayerInfos)
+ {
+ if (wmsVisibleLayers.source.indexOf(wmsLayerInfo.name) !== -1)
+ {
+ addChild(createWMSTocLayer(this, wmsLayerInfo));
+ }
+ }
+ }
else if (_layerLegendInfos && _layerLegendInfos.length)
{
- var layerLegendInfo:LayerLegendInfo = _layerLegendInfos[0];
- if (layerLegendInfo)
+ for each (var layerLegendInfo:LayerLegendInfo in _layerLegendInfos)
{
for each (var legendItemInfo:LegendItemInfo in layerLegendInfo.legendItemInfos)
{
addChild(new TocLegendItem(this, legendItemInfo));
}
- }
+ }
}
}
@@ -644,7 +662,23 @@ public class TocMapLayerItem extends TocItem
return item;
}
-
+
+ private function createWMSTocLayer(parentItem:TocItem, wmsLayerInfo:WMSLayerInfo):TocWMSLayerInfoItem
+ {
+ var item:TocWMSLayerInfoItem = new TocWMSLayerInfoItem(parentItem, wmsLayerInfo);
+
+ var layerLegendInfo:LayerLegendInfo = getWMSLayerLegendInfo(wmsLayerInfo.name);
+ if (layerLegendInfo)
+ {
+ for each (var legendItemInfo:LegendItemInfo in layerLegendInfo.legendItemInfos)
+ {
+ item.addChild(new TocLegendItem(item, legendItemInfo));
+ }
+ }
+
+ return item;
+ }
+
private function getLayerLegendInfo(layerId:Number):LayerLegendInfo
{
var result:LayerLegendInfo;
@@ -660,6 +694,22 @@ public class TocMapLayerItem extends TocItem
return result;
}
+
+ private function getWMSLayerLegendInfo(wmsLayerId:String):LayerLegendInfo
+ {
+ var result:LayerLegendInfo;
+
+ for each (var layerLegendInfo:LayerLegendInfo in _layerLegendInfos)
+ {
+ if (layerLegendInfo.layerId == wmsLayerId)
+ {
+ result = layerLegendInfo;
+ break;
+ }
+ }
+
+ return result;
+ }
private function createKmlFolderTocItem(parentItem:TocItem, folder:KMLFolder, folders:Array, layer:KMLLayer):TocKmlFolderItem
{
diff --git a/src/com/esri/viewer/components/toc/tocClasses/TocWMSLayerInfoItem.as b/src/com/esri/viewer/components/toc/tocClasses/TocWMSLayerInfoItem.as
new file mode 100644
index 0000000..0544180
--- /dev/null
+++ b/src/com/esri/viewer/components/toc/tocClasses/TocWMSLayerInfoItem.as
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2010-2013 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.
+///////////////////////////////////////////////////////////////////////////
+package com.esri.viewer.components.toc.tocClasses
+{
+
+import com.esri.ags.layers.supportClasses.WMSLayerInfo;
+
+/**
+ * A TOC item representing a member layer of a WMS service.
+ *
+ * @private
+ */
+public class TocWMSLayerInfoItem extends TocItem
+{
+ public function TocWMSLayerInfoItem(parentItem:TocItem, wmsLayerInfo:WMSLayerInfo)
+ {
+ super(parentItem);
+
+ _wmsLayerInfo = wmsLayerInfo;
+ label = wmsLayerInfo.title;
+ }
+
+ //--------------------------------------------------------------------------
+ // Property: wmsLayerInfo
+ //--------------------------------------------------------------------------
+
+ private var _wmsLayerInfo:WMSLayerInfo;
+
+ /**
+ * The wms layer info that backs this TOC item.
+ */
+ public function get wmsLayerInfo():WMSLayerInfo
+ {
+ return _wmsLayerInfo;
+ }
+}
+
+}
diff --git a/src/com/esri/viewer/managers/LayerCreationProperties.as b/src/com/esri/viewer/managers/LayerCreationProperties.as
index d87d2a9..2411cb9 100644
--- a/src/com/esri/viewer/managers/LayerCreationProperties.as
+++ b/src/com/esri/viewer/managers/LayerCreationProperties.as
@@ -51,6 +51,7 @@ public class LayerCreationProperties
public var mode:String;
public var noData:String;
public var password:String;
+ public var portalURL:String;
public var proxyUrl:String;
public var renderer:IRenderer;
public var serviceHost:String;
@@ -109,6 +110,7 @@ public class LayerCreationProperties
creationProps.mode = layerObject.mode;
creationProps.noData = layerObject.noData;
creationProps.password = layerObject.password;
+ creationProps.portalURL = layerObject.portalURL;
creationProps.proxyUrl = layerObject.proxyUrl;
creationProps.renderer = layerObject.renderer;
creationProps.serviceHost = layerObject.serviceHost;
diff --git a/src/com/esri/viewer/managers/LayerCreator.as b/src/com/esri/viewer/managers/LayerCreator.as
index dd55ea6..c7268e7 100644
--- a/src/com/esri/viewer/managers/LayerCreator.as
+++ b/src/com/esri/viewer/managers/LayerCreator.as
@@ -576,6 +576,10 @@ public class LayerCreator
csvLayer.latitudeFieldName = layerCreationProperties.latitudeFieldName;
csvLayer.longitudeFieldName = layerCreationProperties.longitudeFieldName;
csvLayer.showInLegend = layerCreationProperties.showInLegend;
+ if (layerCreationProperties.portalURL)
+ {
+ csvLayer.portalURL = layerCreationProperties.portalURL;
+ }
if (layerCreationProperties.copyright != null)
{
csvLayer.copyright = layerCreationProperties.copyright;
diff --git a/src/com/esri/viewer/managers/UIManager.as b/src/com/esri/viewer/managers/UIManager.as
index 390b30e..9c8511a 100644
--- a/src/com/esri/viewer/managers/UIManager.as
+++ b/src/com/esri/viewer/managers/UIManager.as
@@ -449,6 +449,13 @@ public class UIManager extends EventDispatcher
topLevelStyleManager.setStyleDeclaration("mx.charts.chartClasses.DataTip", cssStyleDeclarationChartDataTips, false);
}
+ // Style the divider used when using widgetcontainers
+ var cssStyleDeclarationMxDividedBox:CSSStyleDeclaration = topLevelStyleManager.getStyleDeclaration("mx.containers.DividedBox");
+ if (numberOfStyleColors > 4)
+ {
+ cssStyleDeclarationMxDividedBox.setStyle("_dividerFillColors", [titleColor,titleColor]);
+ }
+
var cssStyleDeclarationModal:CSSStyleDeclaration = topLevelStyleManager.getStyleDeclaration("global")
cssStyleDeclarationModal.setStyle("modalTransparencyColor", 0x777777);
cssStyleDeclarationModal.setStyle("modalTransparencyBlur", 1);
diff --git a/src/com/esri/viewer/skins/WidgetTemplateSkin.mxml b/src/com/esri/viewer/skins/WidgetTemplateSkin.mxml
index df25794..7842928 100644
--- a/src/com/esri/viewer/skins/WidgetTemplateSkin.mxml
+++ b/src/com/esri/viewer/skins/WidgetTemplateSkin.mxml
@@ -25,14 +25,10 @@
xmlns:components="com.esri.viewer.components.*"
creationComplete="init()"
preinitialize="preinitializeHandler(event)">
-
-
-
-
-
[HostComponent("com.esri.viewer.WidgetTemplate")]
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+ radiusX="{hostComponent.isPartOfPanel ? 0 : 5}"
+ radiusY="{hostComponent.isPartOfPanel ? 0 : 5}">
+ color="{hostComponent.isPartOfPanel ? getStyle('contentBackgroundColor') : getStyle('borderColor')}"/>
+ left="{hostComponent.isPartOfPanel ? 0 : 1}" right="{hostComponent.isPartOfPanel ? 0 : 1}" top="{hostComponent.isPartOfPanel ? 0 : 1}"
+ topLeftRadiusX="{hostComponent.isPartOfPanel ? 0 : 5}"
+ topRightRadiusX="{hostComponent.isPartOfPanel ? 0 : 5}">
diff --git a/src/com/esri/viewer/utils/LayerObjectUtil.as b/src/com/esri/viewer/utils/LayerObjectUtil.as
index 8e2161c..64dc4dc 100644
--- a/src/com/esri/viewer/utils/LayerObjectUtil.as
+++ b/src/com/esri/viewer/utils/LayerObjectUtil.as
@@ -133,6 +133,7 @@ public class LayerObjectUtil
var skipGetCapabilities:String = obj.@skipgetcapabilities[0];
var version:String = obj.@version[0];
var url:String = obj.@url;
+ var portalURL:String = obj.@portalurl[0];
var serviceURL:String = obj.@serviceurl[0];
var serviceMode:String = obj.@servicemode[0];
var tileMatrixSetId:String = obj.@tilematrixsetid[0];
@@ -248,6 +249,7 @@ public class LayerObjectUtil
mode: mode,
noData: noData,
password: password,
+ portalURL: portalURL,
proxyUrl: proxyUrl,
renderer: renderer,
serviceHost: serviceHost,
diff --git a/src/config-all.xml b/src/config-all.xml
index 51aaf4a..4df9018 100644
--- a/src/config-all.xml
+++ b/src/config-all.xml
@@ -29,7 +29,7 @@
@@ -120,7 +120,7 @@
url="widgets/LayerList/LayerListWidget.swf"/>
diff --git a/src/version.xml b/src/version.xml
index 17c5e97..95e638a 100644
--- a/src/version.xml
+++ b/src/version.xml
@@ -1,2 +1,2 @@
-
+
diff --git a/src/widgets/AttributeTable/AttributeTableWidget.mxml b/src/widgets/AttributeTable/AttributeTableWidget.mxml
index 6bc314d..c1518b3 100644
--- a/src/widgets/AttributeTable/AttributeTableWidget.mxml
+++ b/src/widgets/AttributeTable/AttributeTableWidget.mxml
@@ -88,9 +88,9 @@
}
else
{
- wTemplate.width = map.width - map.width / 100 - Number(this.left);
- wTemplate.minWidth = 800;
- wTemplate.height = wTemplate.minHeight = 300;
+ var iconOffset:Number = wTemplate.icon ? (wTemplate.icon.width * 0.5) : 0;
+ wTemplate.width = map.width - map.width / 100 - Number(this.left) - Number(this.right) - iconOffset;
+ wTemplate.height = 300;
}
}
@@ -351,41 +351,49 @@
if (index < layersUsedInAttributeTable.length)
{
var layer:Layer = layersUsedInAttributeTable[index] as Layer;
- if (layer.loaded)
+ if (layer.name.indexOf("hiddenLayer_") == -1)
{
- if (layer is FeatureLayer && layer.name.indexOf("hiddenLayer_") == -1)
+ if (layer.loaded)
{
- layer.removeEventListener(FlexEvent.HIDE, featureLayer_hideShowHandler);
- layer.removeEventListener(FlexEvent.SHOW, featureLayer_hideShowHandler);
-
- layer.addEventListener(FlexEvent.HIDE, featureLayer_hideShowHandler);
- layer.addEventListener(FlexEvent.SHOW, featureLayer_hideShowHandler);
-
- arrFinalLayers.push(layer);
- featureLayers.push(layer);
- index++;
- getAllFeatureLayers(index, featureLayers);
+ if (layer is FeatureLayer)
+ {
+ layer.removeEventListener(FlexEvent.HIDE, featureLayer_hideShowHandler);
+ layer.removeEventListener(FlexEvent.SHOW, featureLayer_hideShowHandler);
+
+ layer.addEventListener(FlexEvent.HIDE, featureLayer_hideShowHandler);
+ layer.addEventListener(FlexEvent.SHOW, featureLayer_hideShowHandler);
+
+ arrFinalLayers.push(layer);
+ featureLayers.push(layer);
+ index++;
+ getAllFeatureLayers(index, featureLayers);
+ }
+ else if (layer is ArcGISDynamicMapServiceLayer)
+ {
+ createFeatureLayersFromDynamicMapService(ArcGISDynamicMapServiceLayer(layer), index);
+ }
+ else
+ {
+ index++;
+ getAllFeatureLayers(index, featureLayers);
+ }
}
- else if (layer is ArcGISDynamicMapServiceLayer && layer.name.indexOf("hiddenLayer_") == -1)
+ else if (layer.loadFault)
{
- createFeatureLayersFromDynamicMapService(ArcGISDynamicMapServiceLayer(layer), index);
+ index++;
+ getAllFeatureLayers(index, featureLayers);
}
else
{
- index++;
- getAllFeatureLayers(index, featureLayers);
+ // listen for load
+ layer.addEventListener(LayerEvent.LOAD, featureLayer_loadHandler);
}
}
- else if (layer.loadFault)
+ else
{
index++;
getAllFeatureLayers(index, featureLayers);
}
- else
- {
- // listen for load
- layer.addEventListener(LayerEvent.LOAD, featureLayer_loadHandler);
- }
}
else
{
diff --git a/src/widgets/Bookmark/BookmarkDataGroup.as b/src/widgets/Bookmark/BookmarkDataGroup.as
index f47b8de..451062c 100644
--- a/src/widgets/Bookmark/BookmarkDataGroup.as
+++ b/src/widgets/Bookmark/BookmarkDataGroup.as
@@ -49,14 +49,10 @@ public class BookmarkDataGroup extends List
private function focusHandler(event:FocusEvent):void
{
- if (event.type == FocusEvent.FOCUS_IN)
+ if (selectedIndex == -1 && event.type == FocusEvent.FOCUS_IN)
{
selectedIndex = 0;
}
- else if (event.type == FocusEvent.FOCUS_OUT)
- {
- selectedIndex = -1;
- }
}
//--------------------------------------------------------------------------
diff --git a/src/widgets/Chart/ChartWidget.mxml b/src/widgets/Chart/ChartWidget.mxml
index d107651..81e2f32 100644
--- a/src/widgets/Chart/ChartWidget.mxml
+++ b/src/widgets/Chart/ChartWidget.mxml
@@ -18,7 +18,6 @@
-->
-1)
+ {
+ updateLayerSelectionMessage();
+ clearChartAndSelectionHighlights()
+ updateSelectedChartLayerDefinition();
+ }
}
private function updateLayerSelectionMessage():void
diff --git a/src/widgets/DataExtract/DataExtractWidget.mxml b/src/widgets/DataExtract/DataExtractWidget.mxml
index 3deddf7..901dd5b 100644
--- a/src/widgets/DataExtract/DataExtractWidget.mxml
+++ b/src/widgets/DataExtract/DataExtractWidget.mxml
@@ -37,7 +37,6 @@
import com.esri.ags.geometry.Polygon;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.symbols.Symbol;
- import com.esri.ags.tasks.GeometryService;
import com.esri.ags.tasks.GeometryServiceSingleton;
import com.esri.ags.tasks.JSONTask;
import com.esri.ags.tasks.supportClasses.GPMessage;
@@ -50,11 +49,13 @@
import com.esri.viewer.utils.ErrorMessageUtil;
import mx.collections.ArrayCollection;
+ import mx.collections.ArrayList;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.rpc.AsyncResponder;
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
+ import mx.utils.ObjectProxy;
private var dataUrl:String = "";
private var file:FileReference;
@@ -68,17 +69,17 @@
private var drawSymbol:Symbol;
[Bindable]
private var exposeLayers:Boolean = true; //later set to FALSE!!
- private var formatChoiceList:ArrayCollection;
- private var rasterFormatChoiceList:ArrayCollection;
+ private var formatChoiceList:ArrayList;
+ private var rasterFormatChoiceList:ArrayList;
[Bindable]
private var rasterFormatChoiceListVisible:Boolean;
- private var spatialReferenceChoiceList:ArrayCollection;
+ private var spatialReferenceChoiceList:ArrayList;
[Bindable]
private var spatialReferenceChoiceListVisible:Boolean;
[Bindable]
private var gpURL:String;
[Bindable]
- private var layers:ArrayCollection;
+ private var layers:ArrayList;
private var excludeLayers:Array = [];
[Bindable]
private var useCurrentExtentAsAIO:Boolean = false;
@@ -102,6 +103,10 @@
[Bindable]
private var clearLabel:String;
[Bindable]
+ private var selectAllLabel:String;
+ [Bindable]
+ private var deselectAllLabel:String;
+ [Bindable]
private var dataCurrentExtentLabel:String;
[Bindable]
private var step2Label:String;
@@ -127,8 +132,8 @@
}
else
{
- wTemplate.width = wTemplate.minWidth = 320;
- wTemplate.height = wTemplate.minHeight = 300;
+ wTemplate.width;
+ wTemplate.height;
}
}
@@ -204,6 +209,8 @@
step2ErrorLabel = configXML.labels.step2errorlabel[0] || getDefaultString("step2ErrorLabel");
emptyResultsLabel = configXML.labels.emptyresultslabel[0] || getDefaultString("emptyResultsLabel");
saveDataFileLabel = configXML.labels.savedatafilelabel[0] || getDefaultString("saveDataFileLabel");
+ selectAllLabel = configXML.labels.selectalllabel[0] || getDefaultString("selectAllLabel");
+ deselectAllLabel = configXML.labels.deselectalllabel[0] || getDefaultString("deselectAllLabel");
initGraphicContextMenu();
}
@@ -632,20 +639,20 @@
{
if (params[i].name == "Layers_to_Clip")
{
- layers = new ArrayCollection();
+ layers = new ArrayList();
exposeLayers = true;
for each (var layer:Object in params[i].choiceList)
{
if (excludeLayers.indexOf(layer) == -1)
{
- var obj:Object = { label: layer, selected: false };
+ var obj:ObjectProxy = new ObjectProxy({ label: layer, selected: false });
layers.addItem(obj);
}
}
}
if (params[i].name == "Feature_Format")
{
- formatChoiceList = new ArrayCollection();
+ formatChoiceList = new ArrayList();
for each (var format:String in params[i].choiceList)
{
const fileLabel:String = format.substring(0, format.indexOf("-") - 1);
@@ -657,7 +664,7 @@
if (params[i].name == "Raster_Format")
{
rasterFormatChoiceListVisible = true;
- rasterFormatChoiceList = new ArrayCollection();
+ rasterFormatChoiceList = new ArrayList();
for each (var rasterFormat:String in params[i].choiceList)
{
const fileLabel1:String = rasterFormat.substring(0, rasterFormat.indexOf("-") - 1);
@@ -668,7 +675,7 @@
if (params[i].name == "Spatial_Reference")
{
spatialReferenceChoiceListVisible = true;
- spatialReferenceChoiceList = new ArrayCollection();
+ spatialReferenceChoiceList = new ArrayList();
for each (var spatialReferenceString:String in params[i].choiceList)
{
spatialReferenceChoiceList.addItem({ data: spatialReferenceString, label: spatialReferenceString });
@@ -701,6 +708,15 @@
{
createGPParamsAndExtract(event.result as Array);
}
+
+ private function toggleLayerSelection(value:Boolean):void
+ {
+ var allLayers:Array = layers.source;
+ for each (var layerObject:Object in allLayers)
+ {
+ layerObject.selected = value;
+ }
+ }
]]>
@@ -742,7 +758,9 @@
gap="4"
verticalAlign="middle">
-
+
+
+
-
+
+
+
-
+
+
+
+
+
-
+
@@ -830,6 +858,7 @@
horizontalAlign="left"
useVirtualLayout="true"/>
+
@@ -839,6 +868,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/widgets/Directions/DirectionsWidget.mxml b/src/widgets/Directions/DirectionsWidget.mxml
index 24c99d0..c2c9ad4 100644
--- a/src/widgets/Directions/DirectionsWidget.mxml
+++ b/src/widgets/Directions/DirectionsWidget.mxml
@@ -47,9 +47,8 @@
}
else
{
- wTemplate.height = map.height - map.height / 100 - Number(this.top);
- wTemplate.minHeight = 800;
- wTemplate.width = wTemplate.minWidth = 300;
+ wTemplate.height = map.height - map.height / 100 - Number(this.top) - Number(this.bottom);
+ wTemplate.width = 300;
}
}
@@ -116,8 +115,8 @@
directionsGeocoderOptions.searchDelay = configSearchDelay;
}
if (geocoderOptionsXML.locatoroptions.length() > 0 && !locatorDisabled)
- {
- directionsGeocoderOptions.locatorOptions = parseLocatorOptions(configXML.locatoroptions[0]);
+ {
+ directionsGeocoderOptions.locatorOptions = parseLocatorOptions(geocoderOptionsXML.locatoroptions[0]);
}
if (geocoderOptionsXML.mapservices.length() > 0 && geocoderOptionsXML.mapservices.@enabled != "false")
{
diff --git a/src/widgets/Draw/DrawWidget.mxml b/src/widgets/Draw/DrawWidget.mxml
index 71166de..20cf0f0 100644
--- a/src/widgets/Draw/DrawWidget.mxml
+++ b/src/widgets/Draw/DrawWidget.mxml
@@ -207,8 +207,8 @@
}
else
{
- wTemplate.width = wTemplate.minWidth = 420;
- wTemplate.height = wTemplate.minHeight = 300;
+ wTemplate.width = 420;
+ wTemplate.height = 300;
}
}
diff --git a/src/widgets/Edit/EditWidget.mxml b/src/widgets/Edit/EditWidget.mxml
index 264c5a1..a4ab76c 100644
--- a/src/widgets/Edit/EditWidget.mxml
+++ b/src/widgets/Edit/EditWidget.mxml
@@ -43,7 +43,6 @@
import com.esri.ags.events.FeatureLayerEvent;
import com.esri.ags.events.LayerEvent;
import com.esri.ags.events.MapEvent;
- import com.esri.ags.geometry.Geometry;
import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import com.esri.ags.layers.ArcGISTiledMapServiceLayer;
import com.esri.ags.layers.FeatureLayer;
@@ -102,7 +101,6 @@
private var visibleLayersChangeWatcher:ChangeWatcher;
private var activeFeatureChangeWatcher:ChangeWatcher;
private var layerToSettings:Dictionary = new Dictionary /*layer,settingsObject*/;
- private var featureLayerToSelectionColor:Dictionary = new Dictionary /*FeatureLayer,SelectionColor*/;
private function basewidget_initializeHandler():void
{
@@ -113,8 +111,8 @@
}
else
{
- wTemplate.width = wTemplate.minWidth = 310;
- wTemplate.height = wTemplate.minHeight = 310;
+ wTemplate.width = 310;
+ wTemplate.height = 310;
}
}
@@ -482,7 +480,6 @@
//store the renderer info for each layer on map
storeInfoWindowRenderer();
editor.map = map;
- updateSelectionColor(featureLayers);
editor.featureLayers = featureLayers;
// infowindowLabel on the AttributeInspector
editor.attributeInspector.infoWindowLabel = attributesLabel;
@@ -620,7 +617,6 @@
else
{
deactivateEditor();
- updateSelectionColor(featureLayers);
editor.featureLayers = featureLayers;
//store the renderer info for each layer on map
storeInfoWindowRenderer();
@@ -778,7 +774,6 @@
featureLayers.unshift(event.layer);
deactivateEditor();
editor.map = map;
- updateSelectionColor(featureLayers);
editor.featureLayers = featureLayers;
}
else if (event.layer is ArcGISDynamicMapServiceLayer)
@@ -1433,23 +1428,6 @@
return result;
}
- private function updateSelectionColor(featureLayers:Array):void
- {
- if (!editor.toolbarVisible)
- {
- for each (var featureLayer:FeatureLayer in featureLayers)
- {
- if (!featureLayerToSelectionColor[featureLayer] &&
- featureLayer.layerDetails &&
- (featureLayer.layerDetails.geometryType == Geometry.POLYGON || featureLayer.layerDetails.geometryType == Geometry.POLYLINE))
- {
- featureLayerToSelectionColor[featureLayer] = featureLayer.selectionColor;
- featureLayer.selectionColor = NaN;
- }
- }
- }
- }
-
private function widgetClosedHandler(event:Event):void
{
disablePanZoomNavigationWidget = false;
@@ -1460,10 +1438,6 @@
// clear feature layer selection
for each (var featureLayer:FeatureLayer in featureLayers)
{
- if (featureLayerToSelectionColor[featureLayer]) // restore selection color
- {
- featureLayer.selectionColor = featureLayerToSelectionColor[featureLayer];
- }
if (featureLayer.selectedFeatures.length > 0)
{
featureLayer.clearSelection();
diff --git a/src/widgets/GeoRSS/GeoRSSWidget.mxml b/src/widgets/GeoRSS/GeoRSSWidget.mxml
index 8f30868..add0308 100644
--- a/src/widgets/GeoRSS/GeoRSSWidget.mxml
+++ b/src/widgets/GeoRSS/GeoRSSWidget.mxml
@@ -106,8 +106,6 @@
{
wTemplate.width = 330;
wTemplate.height = 300;
- wTemplate.minWidth = 300
- wTemplate.minHeight = 100;
}
}
@@ -138,15 +136,15 @@
resultMarkerSymbol = new PictureMarkerSymbol(resultMarkerSymbolURL, resultMarkerSymbolWidth, resultMarkerSymbolHeight, resultMarkerSymbolXOffset, resultMarkerSymbolYOffset);
//line symbol
- const resultLineSymbolColor:uint = configXML.symbols.simplelinesymbol.@color || 0xFF0000;
+ const resultLineSymbolColor:uint = (configXML.symbols.simplelinesymbol.@color[0] != null) ? configXML.symbols.simplelinesymbol.@color : 0xFF0000;
const resultLineSymbolAlpha:Number = (configXML.symbols.simplelinesymbol.@alpha[0] != null) ? configXML.symbols.simplelinesymbol.@alpha : 0.8;
const resultLineSymbolWidth:Number = (configXML.symbols.simplelinesymbol.@width[0] != null) ? configXML.symbols.simplelinesymbol.@width : 2;
resultLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultLineSymbolColor, resultLineSymbolAlpha, resultLineSymbolWidth);
// fill symbol
- const resultFillSymbolColor:uint = configXML.symbols.simplefillsymbol.@color || 0xFF0000;
+ const resultFillSymbolColor:uint = (configXML.symbols.simplefillsymbol.@color[0] != null) ? configXML.symbols.simplefillsymbol.@color : 0xFF0000;
const resultFillSymbolAlpha:Number = (configXML.symbols.simplefillsymbol.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.@alpha : 0.5;
- const resultFillSymbolOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000;
+ const resultFillSymbolOutlineColor:uint = (configXML.symbols.simplefillsymbol.outline.@color[0] != null) ? configXML.symbols.simplefillsymbol.outline.@color : 0xFF0000;
const resultFillSymbolOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8;
const resultFillSymbolOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2;
resultFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, resultFillSymbolColor, resultFillSymbolAlpha, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultFillSymbolOutlineColor, resultFillSymbolOutlineAlpha, resultFillSymbolOutlineWidth));
diff --git a/src/widgets/Geoprocessing/GeoprocessingWidget.mxml b/src/widgets/Geoprocessing/GeoprocessingWidget.mxml
index 496294e..52da2ee 100644
--- a/src/widgets/Geoprocessing/GeoprocessingWidget.mxml
+++ b/src/widgets/Geoprocessing/GeoprocessingWidget.mxml
@@ -127,7 +127,6 @@
{
wTemplate.width = 368;
wTemplate.height = 250;
- wTemplate.minWidth = wTemplate.minHeight = 200;
}
}
diff --git a/src/widgets/LayerList/LayerListWidget.mxml b/src/widgets/LayerList/LayerListWidget.mxml
index 4c00816..61ecb74 100644
--- a/src/widgets/LayerList/LayerListWidget.mxml
+++ b/src/widgets/LayerList/LayerListWidget.mxml
@@ -32,6 +32,7 @@
[Bindable]
private var title:String;
private var includeLegendItems:Boolean = true; // include legend items in the TOC
+ private var showLayerMenu:Boolean = true; // show layer menu in the TOC
private function basewidget_initializeHandler():void
{
@@ -59,6 +60,10 @@
{
includeLegendItems = configXML.includelegenditems == "true";
}
+ if (configXML.showlayermenu.length())
+ {
+ showLayerMenu = configXML.showlayermenu == "true";
+ }
}
if (configData && configData.opLayers.length > 0) // do not initialize TOC if there are no operational layers
@@ -75,6 +80,7 @@
toc.basemapLayers = getBasemapLayers();
toc.excludeGraphicsLayers = true;
toc.includeLegendItems = includeLegendItems;
+ toc.showLayerMenu = showLayerMenu;
toc.expandLayerItems = expandLayerItems;
}
diff --git a/src/widgets/Legend/LegendWidget.mxml b/src/widgets/Legend/LegendWidget.mxml
index 6d39ac1..2a447c9 100644
--- a/src/widgets/Legend/LegendWidget.mxml
+++ b/src/widgets/Legend/LegendWidget.mxml
@@ -26,8 +26,13 @@
0)
- {
- setInterval(dynLayer.refresh, autoRefresh * 1000);
- }
- if (visibleLayers)
- {
- var vizLayers:Array = visibleLayers.split(",");
- dynLayer.visibleLayers = new ArrayCollection(vizLayers);
- }
- if (proxyUrl && useProxy)
- {
- dynLayer.proxyURL = proxyUrl;
- }
- layerToAdd = dynlayer;
- break;
- }
- case "feature":
- {
- var featureLayer:FeatureLayer = new FeatureLayer(urlBaseMap);
- featureLayer.alpha = alpha;
- featureLayer.id = label;
- featureLayer.visible = visible;
- featureLayer.outFields = [ '*' ];
- featureLayer.token = token;
- featureLayer.useAMF = useamf;
- if (mode)
- {
- featureLayer.mode = mode;
- }
- if (proxyUrl && useProxy)
- {
- featureLayer.proxyURL = proxyUrl;
- }
- if (definitionExpression && definitionExpression != "")
- {
- featureLayer.definitionExpression = definitionExpression;
- }
- layerToAdd = featureLayer;
- break;
- }
- case "bing":
- {
- var veTiledLayer:VETiledLayer = new VETiledLayer();
- veTiledLayer.alpha = alpha;
- veTiledLayer.id = label;
- veTiledLayer.visible = visible;
- veTiledLayer.key = bingMapKey;
- if (style)
- {
- veTiledLayer.mapStyle = style;
- }
- if (culture)
- {
- veTiledLayer.culture = culture;
- }
- layerToAdd = veTiledLayer;
- break;
- }
- case "image":
- {
- var imgLayer:ArcGISImageServiceLayer = new ArcGISImageServiceLayer(urlBaseMap);
- imgLayer.alpha = alpha;
- imgLayer.id = label;
- imgLayer.visible = visible;
- imgLayer.noData = noData;
- imgLayer.token = token;
- if (proxyUrl && useProxy)
- {
- imgLayer.proxyURL = proxyUrl;
- }
- layerToAdd = imgLayer;
- break;
- }
- case "arcims":
- {
- var arcimsLayer:ArcIMSMapServiceLayer = new ArcIMSMapServiceLayer();
- arcimsLayer.alpha = alpha;
- arcimsLayer.id = label;
- arcimsLayer.visible = visible;
- arcimsLayer.serviceHost = serviceHost;
- arcimsLayer.serviceName = serviceName;
- if (autoRefresh > 0)
- {
- setInterval(arcimsLayer.refresh, autoRefresh * 1000);
- }
- if (visibleLayers)
- {
- var visLayers:Array = visibleLayers.split(",");
- arcimsLayer.visibleLayers = new ArrayCollection(visLayers);
- }
- if (proxyUrl && useProxy)
- {
- arcimsLayer.proxyURL = proxyUrl;
- }
- layerToAdd = arcimsLayer;
- break;
- }
- case "osm":
- {
- var osmLayer:OpenStreetMapLayer = new OpenStreetMapLayer();
- osmLayer.alpha = alpha;
- osmLayer.id = label;
- osmLayer.name = label;
- osmLayer.visible = visible;
- layerToAdd = osmLayer;
- break;
- }
- }
-
+ layerToAdd = LayerCreator.createLayerFromLayerObject(basemapLayerObject);
if (layerToAdd)
{
overviewMap.addLayer(layerToAdd);
@@ -344,7 +183,6 @@
}
AppEvent.addListener(AppEvent.BASEMAP_SWITCH, viewContainer_basemapSwitchHandler);
}
- // collapsible
if (configXML.collapsible.length() > 0)
{
isCollapsible = configXML.collapsible == "true";
@@ -357,7 +195,7 @@
{
currentState = "noncollapsible";
}
- if (currentState == "collapsed") // turn layer(s) off if component is collapsed
+ if (currentState == "collapsed")
{
for each (var layer:Layer in overviewMap.layers)
{
@@ -405,14 +243,7 @@
{
if (layer.id == basemapLabel)
{
- if (layer.id == selectedLabel)
- {
- layer.visible = true;
- }
- else
- {
- layer.visible = false;
- }
+ layer.visible = (layer.id == selectedLabel);
}
}
}
@@ -422,25 +253,20 @@
private function overviewMap_loadHandler(event:MapEvent):void
{
- graphicsLayer.name = "overviewMapGraphicsLayer";
- graphicsLayer.symbol = currentExtentSym;
- overviewMap.addLayer(graphicsLayer);
-
- overviewGraphic.geometry = map.extent;
- overviewGraphic.addEventListener(MouseEvent.MOUSE_DOWN, overviewGraphic_mouseDownHandler);
+ startTrackingIfMapsLoaded();
+ }
- //update map extent when mouse moves out of the overview map
- overviewMap.addEventListener(MouseEvent.ROLL_OUT, overviewMap_mouseRollOutHandler);
+ private function startTrackingIfMapsLoaded():void
+ {
+ if (map && map.loaded && overviewMap && overviewMap.loaded)
+ {
+ map.addEventListener(ExtentEvent.EXTENT_CHANGE, map_extentChangeHandler);
+ overviewMap.addEventListener(MouseEvent.ROLL_OUT, overviewMap_mouseRollOutHandler);
+ overviewGraphic.addEventListener(MouseEvent.MOUSE_DOWN, overviewGraphic_mouseDownHandler);
- graphicsLayer.add(overviewGraphic);
+ updateOverviewExtentFromMap();
- if (map.loaded)
- {
- trackMapExtent();
- }
- else
- {
- map.addEventListener(MapEvent.LOAD, map_loadHandler);
+ overviewMap.defaultGraphicsLayer.add(overviewGraphic);
}
}
@@ -450,7 +276,6 @@
overviewMap.addEventListener(MouseEvent.MOUSE_UP, overviewMap_mouseUpHandler);
overviewMap.addEventListener(MouseEvent.MOUSE_MOVE, overviewMap_mouseMoveHandler);
- var overviewCenterMapPoint:MapPoint = overviewGraphic.geometry.extent.center;
var mouseMapPoint:MapPoint = overviewMap.toMapFromStage(event.stageX, event.stageY);
lastMouseMapX = mouseMapPoint.x;
lastMouseMapY = mouseMapPoint.y;
@@ -461,8 +286,6 @@
hasOverviewGraphicBeenMoved = true;
var overviewPolygon:Polygon = overviewGraphic.geometry as Polygon;
- var overviewCenterMapPoint:MapPoint = overviewPolygon.extent.center;
-
var mouseMapPoint:MapPoint = overviewMap.toMapFromStage(event.stageX, event.stageY);
var deltaMapX:Number = mouseMapPoint.x - lastMouseMapX;
var deltaMapY:Number = mouseMapPoint.y - lastMouseMapY;
@@ -485,7 +308,6 @@
overviewMap.removeEventListener(MouseEvent.MOUSE_MOVE, overviewMap_mouseMoveHandler);
overviewMap.removeEventListener(MouseEvent.MOUSE_UP, overviewMap_mouseUpHandler);
overviewGraphic.addEventListener(MouseEvent.MOUSE_DOWN, overviewGraphic_mouseDownHandler);
-
if (hasOverviewGraphicBeenMoved)
{
hasOverviewGraphicBeenMoved = false;
@@ -511,12 +333,6 @@
}
}
- private function trackMapExtent():void
- {
- map.addEventListener(ExtentEvent.EXTENT_CHANGE, map_extentChangeHandler);
- updateOverviewExtentFromMap();
- }
-
private function updateOverviewExtentFromMap():void
{
overviewMap.extent = map.extent.expand(3);
@@ -533,7 +349,7 @@
private function map_loadHandler(event:MapEvent):void
{
map.removeEventListener(MapEvent.LOAD, map_loadHandler);
- trackMapExtent();
+ startTrackingIfMapsLoaded();
}
private function sequence_effectStartHandler(event:EffectEvent):void
@@ -568,14 +384,11 @@
private function sequence_effectEndHandler(event:EffectEvent):void
{
- if (currentState == "collapsed") // turn layer(s) off if component is collapsed
+ if (currentState == "collapsed")
{
for each (var layer:Layer in overviewMap.layers)
{
- if (!(layer is GraphicsLayer && layer.name == "overviewMapGraphicsLayer"))
- {
- layer.visible = false;
- }
+ layer.visible = false;
}
}
}
diff --git a/src/widgets/Print/ExportWebMapForm.mxml b/src/widgets/Print/ExportWebMapForm.mxml
index c29cac0..30f3ee4 100644
--- a/src/widgets/Print/ExportWebMapForm.mxml
+++ b/src/widgets/Print/ExportWebMapForm.mxml
@@ -93,6 +93,11 @@
printTask.addEventListener(FaultEvent.FAULT, printTaskInitialization_faultHandler, false, 0, true);
printTask.url = configXML.taskurl;
+ const useProxy:Boolean = (configXML.useproxy.length() > 0) && (configXML.useproxy == "true");
+ if (useProxy && hostBaseWidget.configData.proxyUrl)
+ {
+ printTask.proxyURL = hostBaseWidget.configData.proxyUrl;
+ }
printTask.getServiceInfo();
printButton.label = configXML.labels.submitlabel[0] || hostBaseWidget.getDefaultString("printSubmitLabel");
}
@@ -194,25 +199,32 @@
return result;
}
- private function map_zoomEndHandler(event:ZoomEvent):void
+ private function printTask_executeCompleteHandler(event:PrintEvent):void
{
- if (!scaleCheckbox.selected)
- {
- updatePrintScale();
- }
+ swfMessage.visible = false;
+ var paramValue:ParameterValue = event.executeResult.results[0];
+ var dataFile:DataFile = paramValue.value as DataFile;
+ navigateToURL(new URLRequest(dataFile.url));
}
- private function updatePrintScale():void
+ private function printTask_getResultDataCompleteHandler(event:PrintEvent):void
{
- scaleInput.text = Math.round(hostBaseWidget.map.scale).toString();
+ swfMessage.visible = false;
+ var dataFile:DataFile = event.parameterValue.value as DataFile;
+ navigateToURL(new URLRequest(dataFile.url));
}
- private function printTask_executeCompleteHandler(event:PrintEvent):void
+ protected function printTask_getServiceInfoCompleteHandler(event:PrintEvent):void
{
- swfMessage.visible = false;
- var paramValue:ParameterValue = event.executeResult.results[0];
- var dataFile:DataFile = paramValue.value as DataFile;
- navigateToURL(new URLRequest(dataFile.url));
+ printTask.removeEventListener(PrintEvent.GET_SERVICE_INFO_COMPLETE, printTask_getServiceInfoCompleteHandler);
+ printTask.removeEventListener(FaultEvent.FAULT, printTaskInitialization_faultHandler);
+ printTask.addEventListener(FaultEvent.FAULT, printTask_faultHandler);
+
+ initNonPrintServiceProperties();
+ initLayoutTemplates(event.serviceInfo);
+ initFormats(event.serviceInfo);
+
+ printButton.enabled = true;
}
protected function printTask_faultHandler(event:FaultEvent):void
@@ -236,24 +248,13 @@
ErrorMessageUtil.makeHTMLSafe(fault.toString()));
}
- private function printTask_getResultDataCompleteHandler(event:PrintEvent):void
- {
- swfMessage.visible = false;
- var dataFile:DataFile = event.parameterValue.value as DataFile;
- navigateToURL(new URLRequest(dataFile.url));
- }
-
- protected function printTask_getServiceInfoCompleteHandler(event:PrintEvent):void
+ private function initNonPrintServiceProperties():void
{
- printTask.removeEventListener(PrintEvent.GET_SERVICE_INFO_COMPLETE, printTask_getServiceInfoCompleteHandler);
- printTask.removeEventListener(FaultEvent.FAULT, printTaskInitialization_faultHandler);
- printTask.addEventListener(FaultEvent.FAULT, printTask_faultHandler);
-
- initNonPrintServiceProperties();
- initLayoutTemplates(event.serviceInfo);
- initFormats(event.serviceInfo);
-
- printButton.enabled = true;
+ initTitle();
+ initCopyright();
+ initAuthor();
+ initUseScale();
+ initDPI();
}
private function initTitle():void
@@ -325,6 +326,28 @@
}
}
+ private function map_zoomEndHandler(event:ZoomEvent):void
+ {
+ if (!scaleCheckbox.selected)
+ {
+ updatePrintScale();
+ }
+ }
+
+ private function updatePrintScale():void
+ {
+ scaleInput.text = Math.round(hostBaseWidget.map.scale).toString();
+ }
+
+ private function initDPI():void
+ {
+ var parsedDPI:Number = parseFloat(configXML.dpi[0]);
+ if (!isNaN(parsedDPI))
+ {
+ exportOptions.dpi = parsedDPI;
+ }
+ }
+
private function initLayoutTemplates(serviceInfo:PrintServiceInfo):void
{
var layoutTemplatesVisibility:Boolean = true;
@@ -467,14 +490,6 @@
printButton.enabled = true;
}
-
- private function initNonPrintServiceProperties():void
- {
- initTitle();
- initCopyright();
- initAuthor();
- initUseScale();
- }
]]>
@@ -493,6 +508,10 @@
+
+
+
+
diff --git a/src/widgets/Query/QueryWidget.mxml b/src/widgets/Query/QueryWidget.mxml
index e473781..07c0cbf 100644
--- a/src/widgets/Query/QueryWidget.mxml
+++ b/src/widgets/Query/QueryWidget.mxml
@@ -183,15 +183,15 @@
resultMarkerSymbol = new PictureMarkerSymbol(resultMarkerSymbolURL, resultMarkerSymbolWidth, resultMarkerSymbolHeight, resultMarkerSymbolXOffset, resultMarkerSymbolYOffset);
//line symbol
- const resultLineSymbolColor:uint = configXML.symbols.simplelinesymbol.@color || 0xFF0000;
+ const resultLineSymbolColor:uint = (configXML.symbols.simplelinesymbol.@color[0] != null) ? configXML.symbols.simplelinesymbol.@color : 0xFF0000;
const resultLineSymbolAlpha:Number = (configXML.symbols.simplelinesymbol.@alpha[0] != null) ? configXML.symbols.simplelinesymbol.@alpha : 0.8;
const resultLineSymbolWidth:Number = (configXML.symbols.simplelinesymbol.@width[0] != null) ? configXML.symbols.simplelinesymbol.@width : 2;
resultLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultLineSymbolColor, resultLineSymbolAlpha, resultLineSymbolWidth);
// fill symbol
- const resultFillSymbolColor:uint = configXML.symbols.simplefillsymbol.@color || 0xFF0000;
+ const resultFillSymbolColor:uint = (configXML.symbols.simplefillsymbol.@color[0] != null) ? configXML.symbols.simplefillsymbol.@color : 0xFF0000;
const resultFillSymbolAlpha:Number = (configXML.symbols.simplefillsymbol.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.@alpha : 0.5;
- const resultFillSymbolOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000;
+ const resultFillSymbolOutlineColor:uint = (configXML.symbols.simplefillsymbol.outline.@color[0] != null) ? configXML.symbols.simplefillsymbol.outline.@color : 0xFF0000;
const resultFillSymbolOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8;
const resultFillSymbolOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2;
resultFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, resultFillSymbolColor, resultFillSymbolAlpha, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultFillSymbolOutlineColor, resultFillSymbolOutlineAlpha, resultFillSymbolOutlineWidth));
@@ -366,7 +366,7 @@
{
FeatureSetUtil.sortFeaturesByFieldName(featureSet, orderByFields);
}
-
+
if (queryResultAC)
{
queryResultAC.removeAll();
@@ -407,41 +407,59 @@
queryTitleField = featureSet.displayFieldName;
}
+ var defaultSymbol:Symbol = getMatchingDefaultSymbol(featureSet.geometryType);
+ var resultAttributes:ResultAttributes;
+ var infoWindowRenderer:ClassFactory;
+
for each (var graphic:Graphic in featureSet.features)
{
- var resultAttributes:ResultAttributes =
- ResultAttributes.toResultAttributes(queryFields, graphic, featureSet, queryLayer, layerDetails, widgetTitle, queryTitleField, queryLinkField, queryLinkAlias);
+ graphic.symbol = defaultSymbol;
+
+ resultAttributes =
+ ResultAttributes.toResultAttributes(queryFields, graphic, featureSet,
+ queryLayer, layerDetails, widgetTitle,
+ queryTitleField, queryLinkField, queryLinkAlias);
+
graphicToResultAttributes[graphic] = resultAttributes;
- var searchResult:ResultItem = new ResultItem(graphic, resultAttributes);
- result.addItem(searchResult);
+ result.addItem(new ResultItem(graphic, resultAttributes));
- var infoWindowRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
+ infoWindowRenderer = new ClassFactory(PopUpRenderer);
infoWindowRenderer.properties = { popUpInfo: configurePopUpInfo(resultAttributes)};
graphic.infoWindowRenderer = infoWindowRenderer;
}
+
resultFeatureLayer.visible = true;
resultFeatureLayer.featureCollection = new FeatureCollection(featureSet, layerDetails);
- switch (featureSet.geometryType)
+ resultFeatureLayer.renderer = new SimpleRenderer(defaultSymbol);
+
+ return result;
+ }
+
+ private function getMatchingDefaultSymbol(geometryType:String):Symbol
+ {
+ var defaultSymbol:Symbol;
+
+ switch (geometryType)
{
case Geometry.MAPPOINT:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultMarkerSymbol);
+ defaultSymbol = resultMarkerSymbol;
break;
}
case Geometry.POLYLINE:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultLineSymbol);
+ defaultSymbol = resultLineSymbol;
break;
}
case Geometry.POLYGON:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultFillSymbol);
+ defaultSymbol = resultFillSymbol;
break;
}
}
- return result;
+ return defaultSymbol;
}
private function configurePopUpInfo(resultAttributes:ResultAttributes):PopUpInfo
@@ -462,6 +480,7 @@
if (isImageLink)
{
var popUpMediaInfo:PopUpMediaInfo = new PopUpMediaInfo;
+ popUpMediaInfo.type = PopUpMediaInfo.IMAGE;
popUpMediaInfo.imageLinkURL = link;
popUpMediaInfo.imageSourceURL = link;
popUpInfo.popUpMediaInfos = [ popUpMediaInfo ];
diff --git a/src/widgets/Search/SearchWidget.mxml b/src/widgets/Search/SearchWidget.mxml
index 26fd64e..4331393 100644
--- a/src/widgets/Search/SearchWidget.mxml
+++ b/src/widgets/Search/SearchWidget.mxml
@@ -75,9 +75,11 @@
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
+ import mx.core.LayoutDirection;
import mx.events.FlexEvent;
import mx.rpc.AsyncResponder;
import mx.rpc.events.FaultEvent;
+ import mx.utils.StringUtil;
import spark.components.supportClasses.ItemRenderer;
@@ -215,6 +217,7 @@
layer.addEventListener(LayerEvent.LOAD, searchLayer_loadHandler);
layer.addEventListener(LayerEvent.LOAD_ERROR, searchLayer_faultHandler);
layer.url = lyrURL;
+ layer.name = buildLayerName(lyrLabel);
if (useProxy && configData.proxyUrl)
{
@@ -270,14 +273,14 @@
const resultMarkerSymbolYOffset:Number = (configXML.symbols.picturemarkersymbol.@yoffset != null) ? configXML.symbols.picturemarkersymbol.@yoffset : 0;
resultMarkerSymbol = new PictureMarkerSymbol(resultMarkerSymbolURL, resultMarkerSymbolWidth, resultMarkerSymbolHeight, resultMarkerSymbolXOffset, resultMarkerSymbolYOffset);
- const resultLineSymbolColor:uint = configXML.symbols.simplelinesymbol.@color || 0xFF0000;
+ const resultLineSymbolColor:uint = (configXML.symbols.simplelinesymbol.@color[0] != null) ? configXML.symbols.simplelinesymbol.@color : 0xFF0000;
const resultLineSymbolAlpha:Number = (configXML.symbols.simplelinesymbol.@alpha[0] != null) ? configXML.symbols.simplelinesymbol.@alpha : 0.8;
const resultLineSymbolWidth:Number = (configXML.symbols.simplelinesymbol.@width[0] != null) ? configXML.symbols.simplelinesymbol.@width : 2;
resultLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultLineSymbolColor, resultLineSymbolAlpha, resultLineSymbolWidth);
- const resultFillSymbolColor:uint = configXML.symbols.simplefillsymbol.@color || 0xFF0000;
+ const resultFillSymbolColor:uint = (configXML.symbols.simplefillsymbol.@color[0] != null) ? configXML.symbols.simplefillsymbol.@color : 0xFF0000;
const resultFillSymbolAlpha:Number = (configXML.symbols.simplefillsymbol.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.@alpha : 0.5;
- const resultFillSymbolOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000;
+ const resultFillSymbolOutlineColor:uint = (configXML.symbols.simplefillsymbol.outline.@color[0] != null) ? configXML.symbols.simplefillsymbol.outline.@color : 0xFF0000;
const resultFillSymbolOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8;
const resultFillSymbolOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2;
resultFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, resultFillSymbolColor, resultFillSymbolAlpha, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, resultFillSymbolOutlineColor, resultFillSymbolOutlineAlpha, resultFillSymbolOutlineWidth));
@@ -286,9 +289,6 @@
resultFeatureLayer.visible = false;
resultFeatureLayer.isEditable = false;
- var layerName:String = configXML.layername || widgetTitle;
- resultFeatureLayer.name = shareResults ? layerName : "hiddenLayer_" + layerName;
-
var clustererParser:ClustererParser = new ClustererParser();
var clusterer:IClusterer = clustererParser.parseClusterer(configXML.clustering[0]);
if (clusterer)
@@ -297,7 +297,6 @@
}
resultFeatureLayer.addEventListener(FlexEvent.HIDE, resultFeatureLayer_hideHandler);
- map.addLayer(resultFeatureLayer);
var userTolerance:Number = configXML.tolerance;
if (userTolerance > 0)
@@ -326,6 +325,25 @@
AppEvent.addListener(AppEvent.DATA_PUBLISH, sharedDataUpdated);
}
+ private function buildLayerName(name:String):String
+ {
+ var widgetName:String = configXML.layername || widgetTitle;
+ name = name ? name : widgetName;
+
+ if (widgetName == name)
+ {
+ return shareResults ? widgetName : "hiddenLayer_" + widgetName;
+ }
+
+ var layerNameTemplate:String =
+ (layoutDirection == LayoutDirection.LTR) ? "{0} - {1}" : "{1} - {0}";
+
+ layerNameTemplate =
+ shareResults ? layerNameTemplate : "hiddenLayer_" + layerNameTemplate;
+
+ return StringUtil.substitute(layerNameTemplate, widgetName, name);
+ }
+
private function searchLayer_loadHandler(event:LayerEvent):void
{
var layer:FeatureLayer = event.layer as FeatureLayer;
@@ -541,6 +559,7 @@
showLoadErrorMessage(event);
}
+
return;
}
@@ -567,48 +586,64 @@
query.orderByFields = orderByFields;
}
- queryLayer.queryFeatures(query, new AsyncResponder(onResult, onFault, queryFields));
+ var queryOptions:Object =
+ {
+ supportsServerSideSorting: supportsServerSideSorting,
+ orderByFields: orderByFields,
+ queryFields: queryFields
+ };
+
+ queryLayer.queryFeatures(
+ query, new AsyncResponder(queryFeatures_resultHandler,
+ queryFeatures_faultHandler,
+ queryOptions));
+
showMessage(loadingLabel, true);
showStateResults();
+ }
+ }
- function onResult(featureSet:FeatureSet, token:XMLList = null):void
+ private function queryFeatures_resultHandler(featureSet:FeatureSet, queryOptions:Object):void
+ {
+ try
+ {
+ if (!queryOptions.supportsServerSideSorting && queryOptions.orderByFields)
{
- try
- {
- if (!supportsServerSideSorting && orderByFields)
- {
- FeatureSetUtil.sortFeaturesByFieldName(featureSet, orderByFields);
- }
-
- if (searchResultAC)
- {
- searchResultAC.removeAll();
- }
- searchResultAC = createSearchResults(featureSet, token);
+ FeatureSetUtil.sortFeaturesByFieldName(featureSet, queryOptions.orderByFields);
+ }
- addSharedData(widgetTitle, searchResultAC);
- if (featureSet.features.length < 1)
- {
- showMessage(noResultLabel, false);
- }
- else
- {
- showMessage(selectionLabel + " " + featureSet.features.length, false);
- }
- }
- catch (error:Error)
- {
- showMessage(error.message, false);
- }
+ if (searchResultAC)
+ {
+ searchResultAC.removeAll();
}
+ searchResultAC = createSearchResults(featureSet, queryOptions.queryFields);
- function onFault(info:Object, token:Object = null):void
+ addSharedData(widgetTitle, searchResultAC);
+ if (featureSet.features.length < 1)
{
- showMessage(info.toString(), false);
+ showMessage(noResultLabel, false);
}
+ else
+ {
+ showMessage(selectionLabel + " " + featureSet.features.length, false);
+ }
+ }
+ catch (error:Error)
+ {
+ showMessage(error.message, false);
+ }
+
+ if (!resultFeatureLayer.map)
+ {
+ map.addLayer(resultFeatureLayer);
}
}
+ private function queryFeatures_faultHandler(info:Object, queryOptions:Object):void
+ {
+ showMessage(info.toString(), false);
+ }
+
private function queryFeaturesGraphical(geom:Geometry):void
{
hideInfoWindow();
@@ -637,6 +672,7 @@
showLoadErrorMessage(event);
}
+
return;
}
@@ -662,45 +698,20 @@
query.orderByFields = orderByFields;
}
- queryLayer.queryFeatures(query, new AsyncResponder(onResult, onFault, queryFields));
- showMessage(loadingLabel, true);
- showStateResults();
-
- function onResult(featureSet:FeatureSet, token:XMLList = null):void
- {
- try
+ var queryOptions:Object =
{
- if (!supportsServerSideSorting && orderByFields)
- {
- FeatureSetUtil.sortFeaturesByFieldName(featureSet, orderByFields);
- }
-
- if (searchResultAC)
- {
- searchResultAC.removeAll();
- }
- searchResultAC = createSearchResults(featureSet, token);
+ supportsServerSideSorting: supportsServerSideSorting,
+ orderByFields: orderByFields,
+ queryFields: queryFields
+ };
- addSharedData(widgetTitle, searchResultAC);
- if (featureSet.features.length < 1)
- {
- showMessage(noResultLabel, false);
- }
- else
- {
- showMessage(selectionLabel + " " + featureSet.features.length, false);
- }
- }
- catch (error:Error)
- {
- showMessage(error.message, false);
- }
- }
+ queryLayer.queryFeatures(
+ query, new AsyncResponder(queryFeatures_resultHandler,
+ queryFeatures_faultHandler,
+ queryOptions));
- function onFault(info:Object, token:Object = null):void
- {
- showMessage(info.toString(), false);
- }
+ showMessage(loadingLabel, true);
+ showStateResults();
}
}
@@ -714,44 +725,61 @@
queryTitleField = featureSet.displayFieldName;
}
+ var defaultSymbol:Symbol = getMatchingDefaultSymbol(featureSet.geometryType);
+ var resultAttributes:ResultAttributes;
+ var infoWindowRenderer:ClassFactory;
+
for each (var graphic:Graphic in featureSet.features)
{
- var resultAttributes:ResultAttributes =
- ResultAttributes.toResultAttributes(queryFields, graphic, featureSet, queryLayer, layerDetails, widgetTitle, queryTitleField, queryLinkField, queryLinkAlias);
+ graphic.symbol = defaultSymbol;
- var searchResult:ResultItem = new ResultItem(graphic, resultAttributes);
- result.addItem(searchResult);
+ resultAttributes =
+ ResultAttributes.toResultAttributes(queryFields, graphic, featureSet,
+ queryLayer, layerDetails, widgetTitle,
+ queryTitleField, queryLinkField, queryLinkAlias);
- var infoWindowRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
+ result.addItem(new ResultItem(graphic, resultAttributes));
+
+ infoWindowRenderer = new ClassFactory(PopUpRenderer);
infoWindowRenderer.properties = { popUpInfo: configurePopUpInfo(resultAttributes)};
graphic.infoWindowRenderer = infoWindowRenderer;
}
+
resultFeatureLayer.outFields = queryLayer.outFields;
resultFeatureLayer.visible = true;
resultFeatureLayer.featureCollection = new FeatureCollection(featureSet, layerDetails);
- switch (featureSet.geometryType)
+ resultFeatureLayer.name = queryLayer.name;
+ resultFeatureLayer.renderer = new SimpleRenderer(defaultSymbol);
+
+ return result;
+ }
+
+ private function getMatchingDefaultSymbol(geometryType:String):Symbol
+ {
+ var defaultSymbol:Symbol;
+
+ switch (geometryType)
{
case Geometry.MAPPOINT:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultMarkerSymbol);
+ defaultSymbol = resultMarkerSymbol;
break;
}
case Geometry.POLYLINE:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultLineSymbol);
+ defaultSymbol = resultLineSymbol;
break;
}
case Geometry.POLYGON:
{
- resultFeatureLayer.renderer = new SimpleRenderer(resultFillSymbol);
+ defaultSymbol = resultFillSymbol;
break;
}
}
- return result;
+ return defaultSymbol;
}
-
private function configurePopUpInfo(resultAttributes:ResultAttributes):PopUpInfo
{
var popUpInfo:PopUpInfo = new PopUpInfo;
@@ -770,6 +798,7 @@
if (isImageLink)
{
var popUpMediaInfo:PopUpMediaInfo = new PopUpMediaInfo;
+ popUpMediaInfo.type = PopUpMediaInfo.IMAGE;
popUpMediaInfo.imageLinkURL = link;
popUpMediaInfo.imageSourceURL = link;
popUpInfo.popUpMediaInfos = [ popUpMediaInfo ];
@@ -1171,5 +1200,4 @@
-
diff --git a/src/widgets/Time/TimeWidget.mxml b/src/widgets/Time/TimeWidget.mxml
index 1d31d8b..2ae8904 100644
--- a/src/widgets/Time/TimeWidget.mxml
+++ b/src/widgets/Time/TimeWidget.mxml
@@ -58,8 +58,8 @@
}
else
{
- wTemplate.width = wTemplate.minWidth = 335;
- wTemplate.height = wTemplate.minHeight = 115;
+ wTemplate.width = 335;
+ wTemplate.height = 115;
}
}
diff --git a/src/widgets/WidgetContainer/WidgetContainer.mxml b/src/widgets/WidgetContainer/WidgetContainer.mxml
index d96b815..39b7477 100644
--- a/src/widgets/WidgetContainer/WidgetContainer.mxml
+++ b/src/widgets/WidgetContainer/WidgetContainer.mxml
@@ -249,7 +249,6 @@
** --------------------------------------------------*/
private var scrollint:uint;
- private var scrollinterval:uint;
private var scrolldist:Number;
private var dist:Number = 10;
private var scrolldir:String;
@@ -346,6 +345,12 @@
private function scrollToWidgetStart(params:Array):void
{
+ if (widgetlayout != HORIZONTAL &&
+ widgetlayout != VERTICAL)
+ {
+ return;
+ }
+
var wObj:DisplayObject = params[0];
if (containWidget(wObj as IVisualElement) < 0)
{
@@ -353,7 +358,7 @@
return;
}
- var boxRect:Rectangle = widgetContainer.getRect(this);
+ var boxRect:Rectangle = widgetContainer.getVisibleRect(this);
var screenW:Number = boxRect.width;
var screenH:Number = boxRect.height;
@@ -385,7 +390,26 @@
var topDelta:Number = verticalY - wTop;
var bottomDelta:Number = wBottom - (screenH + verticalY);
- if ((rightDelta > 0) || (leftDelta > 0) || (topDelta > 0) || (bottomDelta > 0))
+ if (rightDelta <= 0 && leftDelta <= 0 &&
+ topDelta <= 0 && bottomDelta <= 0)
+ {
+ return;
+ }
+
+ if (widgetlayout == HORIZONTAL)
+ {
+ if (leftDelta > 0)
+ {
+ scrolldist = leftDelta;
+ scrolldir = RIGHT;
+ }
+ else if (rightDelta > 0)
+ {
+ scrolldist = rightDelta;
+ scrolldir = LEFT;
+ }
+ }
+ else if (widgetlayout == VERTICAL)
{
if (topDelta > 0)
{
@@ -397,22 +421,19 @@
scrolldist = bottomDelta;
scrolldir = DOWN;
}
- else if (leftDelta > 0)
- {
- scrolldist = leftDelta;
- scrolldir = RIGHT;
- }
- else if (rightDelta > 0)
- {
- scrolldist = rightDelta;
- scrolldir = LEFT;
- }
- scrollinterval = setInterval(scrollToWidgetAction, 30, params);
- dist = 0;
}
+
+ var scrollInterval:uint = setInterval(
+ function():void
+ {
+ scrollToWidgetAction(scrollInterval);
+ },
+ 30);
+
+ dist = 0;
}
- private function scrollToWidgetAction(params:Array):void
+ private function scrollToWidgetAction(interval:uint):void
{
if (dist < scrolldist)
{
@@ -436,7 +457,7 @@
}
else
{
- clearInterval(scrollinterval);
+ clearInterval(interval);
}
}
diff --git a/src/widgets/supportClasses/ResultAttributes.as b/src/widgets/supportClasses/ResultAttributes.as
index b0ba7b4..212ef3b 100644
--- a/src/widgets/supportClasses/ResultAttributes.as
+++ b/src/widgets/supportClasses/ResultAttributes.as
@@ -132,35 +132,41 @@ public class ResultAttributes
}
}
- if (titleField && fieldName.toUpperCase() == titleField.toUpperCase())
+ var upperCaseFieldName:String = fieldName.toUpperCase();
+ if (titleField && upperCaseFieldName == titleField.toUpperCase())
{
title = value;
}
- else if (linkField && fieldName.toUpperCase() == linkField.toUpperCase())
+ else if (linkField && upperCaseFieldName == linkField.toUpperCase())
{
link = value;
linkAlias = linkAlias;
}
- else if (fieldName.toUpperCase() != "SHAPE_LENGTH" && fieldName.toUpperCase() != "SHAPE_AREA")
+ else
{
- var fieldLabel:String;
-
- if (fieldXML && fieldXML.@alias[0])
- {
- fieldLabel = fieldXML.@alias[0];
- }
- else
+ var isShapeMeasurementField:Boolean = (upperCaseFieldName == "SHAPE_LENGTH" || upperCaseFieldName == "SHAPE_AREA");
+ var isUserDefinedField:Boolean = fields && fields.field.(@name == fieldName).length() > 0;
+ if (!isShapeMeasurementField || isUserDefinedField)
{
- fieldLabel = featureSet.fieldAliases[fieldName];
- }
+ var fieldLabel:String;
- if (FlexGlobals.topLevelApplication.layoutDirection == LayoutDirection.RTL)
- {
- content += value + " :" + fieldLabel + "\n";
- }
- else
- {
- content += fieldLabel + ": " + value + "\n";
+ if (fieldXML && fieldXML.@alias[0])
+ {
+ fieldLabel = fieldXML.@alias[0];
+ }
+ else
+ {
+ fieldLabel = featureSet.fieldAliases[fieldName];
+ }
+
+ if (FlexGlobals.topLevelApplication.layoutDirection == LayoutDirection.RTL)
+ {
+ content += value + " :" + fieldLabel + "\n";
+ }
+ else
+ {
+ content += fieldLabel + ": " + value + "\n";
+ }
}
}
}