blob: bd77d58a9f861d18094e1bf234dfd977b225d17c [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->
<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%" creationComplete="matchRB_clickHandler()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var _locales:ArrayCollection = new ArrayCollection(['en-US','de-DE','ja-JP','ru-RU','zh-CN','fr-FR']);
[Bindable]
private var _strArrColl:ArrayCollection = new ArrayCollection(['ö','Ö','A','a.bc','a','Ä','côte','ä','A','ア','ァ','あ','中','abc','WO','a','ae','Æ','côté','coté','Ô','OE','Œ','ぁ','wo']);
[Bindable]
private var _resultArrColl:ArrayCollection = new ArrayCollection();
[Bindable]
private var _collatorInstance:*;
protected function sortRB_clickHandler():void
{
//create sortingCollator instance
_collatorInstance = new SortingCollator();
_collatorInstance = sortingCollator;
sortStr();
}
protected function matchRB_clickHandler():void
{
//create sortingCollator instance
_collatorInstance = new MatchingCollator();
_collatorInstance = matchingCollator;
sortStr();
}
private function sortStr():void
{
//sort strings in original arrayCollection
_strArrColl.source.sort(_collatorInstance.compare);
_strArrColl.refresh();
//format above sorted array to let those strings which with same value show in one line within the list
_resultArrColl.source = showResult(_strArrColl.source);
_resultArrColl.refresh();
}
//function that make strings with same value show in the same line
private function showResult(arr:Array):Array
{
var indexVal:String = arr[0];
//the array used to put same strings into one element
var reVal:Array = new Array();
var j:int = 0;
reVal[j]='';
for(var i:int = 0; i<arr.length; i++)
{
if(_collatorInstance.compare(arr[i],indexVal) == 0)
{
reVal[j] += ' ' + arr[i];
}
else
{
indexVal = arr[i];
j++;
reVal[j]='';
i--;
}
}
return reVal;
}
]]>
</fx:Script>
<fx:Declarations>
<s:SortingCollator id="sortingCollator"/>
<s:MatchingCollator id="matchingCollator"/>
</fx:Declarations>
<s:Panel title="Spark Collator" width="100%" height="100%">
<s:layout>
<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" />
</s:layout>
<s:Form id="myForm" height="100%" width="100%">
<s:Label text="Customize Collator options and find out the string sorting results: "/>
<s:Spacer height="15"/>
<s:FormItem label="Collator Type:" toolTip="Please select a Collator type first!">
<s:HGroup>
<s:RadioButton id="sortRB" groupName="collatorType" label="SortingCollator" click="sortRB_clickHandler()"/>
<s:RadioButton id="matchRB" groupName="collatorType" label="MatchingCollator" selected="true" click="matchRB_clickHandler()"/>
</s:HGroup>
</s:FormItem>
<s:FormItem label="Locale:">
<s:ComboBox id="localeCB" dataProvider="{_locales}" selectedIndex="0"
change="_collatorInstance.setStyle('locale',localeCB.selectedItem); sortStr()"/>
</s:FormItem>
<s:FormItem label="Collator Options:" toolTip="Customize below options to see the sorting result.">
<s:CheckBox id="ignCaseCB" label="ignoreCase" selected="{_collatorInstance.ignoreCase}"
change="_collatorInstance.ignoreCase = ignCaseCB.selected; sortStr()"/>
<s:CheckBox id="ignDiacriticsCB" label="ignoreDiacritics" selected="{_collatorInstance.ignoreDiacritics}"
change="_collatorInstance.ignoreDiacritics = ignDiacriticsCB.selected; sortStr()"/>
<s:CheckBox id="ignSymbolsCB" label="ignoreSymbols" selected="{_collatorInstance.ignoreSymbols}"
change="_collatorInstance.ignoreSymbols = ignSymbolsCB.selected; sortStr()"/>
<s:CheckBox id="ignKanaTypeCB" label="ignoreKanaType" selected="{_collatorInstance.ignoreKanaType}"
change="_collatorInstance.ignoreKanaType = ignKanaTypeCB.selected; sortStr()"/>
<s:CheckBox id="ignCharacterWidthCB" label="ignoreCharacterWidth" selected="{_collatorInstance.ignoreCharacterWidth}"
change="_collatorInstance.ignoreCharacterWidth = ignCharacterWidthCB.selected; sortStr()"/>
</s:FormItem>
<s:Label text="============================================================================"/>
<s:HGroup>
<s:FormItem label="Sorting Result:">
<s:List id="sCltResult" dataProvider="{_resultArrColl}" toolTip="Strings that are equal will show within one line."/>
</s:FormItem>
</s:HGroup>
</s:Form>
</s:Panel>
</s:Module>