1 || newValue < 0) { needToRevert = true; }
break;
case "ratio":
if (newValue > 255 || newValue < 0) { needToRevert = true; }
break;
}
}
if (needToRevert)
{
data[event.dataField] = _editValue;
gradientValues.dataProvider.replaceItemAt(data, index);
return;
}
// update the filter
updateFilter();
}
private function checkForItemDelete(event:ListEvent):void
{
var cell:Button = event.itemRenderer as Button;
if (cell != null)
{
_gradients.removeItemAt(_gradients.getItemIndex(cell.data));
updateFilter();
}
}
private function changeFilterValue(event:Event):void
{
// update the filter
updateFilter();
}
private function addNewGradient(event:MouseEvent):void
{
var gradient:actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor = new actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor(addColorValue.selectedColor, addAlphaValue.value, addRatioValue.value);
_gradients.addItem(gradient);
updateFilter();
}
// ------- DataGrid utility methods -------
private function colorFormatter(data:Object, column:DataGridColumn):String
{
var c:actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor = data as actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor;
if (c != null)
{
return actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_ColorStringFormatter.formatColorHex24(c.color);
}
else
{
return "";
}
}
// ------- Private methods -------
private function updateFilter():void
{
var blurX:Number = blurXValue.value;
var blurY:Number = blurYValue.value;
var strength:Number = strengthValue.value;
var quality:int = qualityValue.selectedItem.data;
var angle:Number = angleValue.value;
var distance:Number = distanceValue.value;
var knockout:Boolean = knockoutValue.selected;
var type:String = typeValue.selectedItem.data;
var colors:Array = _gradients.toArray();
_filterFactory.modifyFilter(distance, angle, colors, blurX, blurY, strength, quality, type, knockout);
}
private function getDefaultGradientValues():void
{
if (_gradients == null)
{
_gradients = new ArrayCollection();
var sort:Sort = new Sort();
sort.fields = [new SortField("ratio")];
_gradients.sort = sort;
_gradients.refresh();
}
else
{
_gradients.removeAll();
}
_gradients.addItem(new actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor(0xFFFFFF, 1, 0));
_gradients.addItem(new actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor(0xFF0000, .25, 128));
_gradients.addItem(new actionscript_book_FilterWorkbench_com_example_programmingas3_filterWorkbench_GradientColor(0x000000, 1, 255));
gradientValues.dataProvider = _gradients;
}
]]>