Hey Mark, Do you think it is worth trying to have all of these APIs call a common function? I think I'm seeing the same code more than once.
On 5/2/13 4:48 PM, "mkess...@apache.org" <mkess...@apache.org> wrote: > Updated Branches: > refs/heads/develop 7d20cec89 -> 3053c3295 > > > FLEX-33524: Added convenience feature to enable/disable buttons in a > ButtonBar/TabBar. > > > Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo > Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/3053c329 > Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/3053c329 > Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/3053c329 > > Branch: refs/heads/develop > Commit: 3053c3295e6c14b291e2aa5a947b1d88e9650a6f > Parents: 7d20cec > Author: Mark Kessler <kesslerconsult...@gmail.com> > Authored: Thu May 2 19:41:46 2013 -0400 > Committer: Mark Kessler <kesslerconsult...@gmail.com> > Committed: Thu May 2 19:44:51 2013 -0400 > > ---------------------------------------------------------------------- > .../components/supportClasses/ButtonBarBase.as | 198 ++++++++++++++- > 1 files changed, 197 insertions(+), 1 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/3053c329/frameworks/proje > cts/spark/src/spark/components/supportClasses/ButtonBarBase.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase. > as > b/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase. > as > index 233a210..b41504e 100644 > --- > a/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase. > as > +++ > b/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase. > as > @@ -513,7 +513,203 @@ public class ButtonBarBase extends ListBase > // Methods > // > > //-------------------------------------------------------------------------- > - > + > + /** > + * Disable a ButtonBar's Button referencing it by the ButtonBarbutton's > <code>label</code>. > + * > + * <p>The function takes a single argument which is the ButtonBarButtons > label.</p> > + * <pre>myButtonBar.disableButton("My Button Label")</pre> > + * > + * @param labelValue Is the ButtonBarButton label > + * @param fieldName Field used for comparing the label > + * > + * @langversion 3.0 > + * @playerversion Flash 11.1 > + * @playerversion AIR 3.4 > + * @productversion Flex 4.10 > + */ > + public function disableButton(labelValue:String, fieldName:String = > ""):void > + { > + var btnCurrent:ButtonBarButton = null; > + var buttonIndex:int = -1; > + > + > + if (!dataGroup || labelValue == "" || labelValue == null) > + { > + return; > + } > + > + if (fieldName == "" || fieldName == null) > + { > + buttonIndex = findRowIndex(labelField, labelValue); > + } > + else > + { > + buttonIndex = findRowIndex(fieldName, labelValue); > + } > + > + if (buttonIndex == -1) > + { > + return; > + } > + > + > + btnCurrent = dataGroup.getElementAt(buttonIndex) as ButtonBarButton; > + btnCurrent.enabled = false; > + } > + > + > + /** > + * Disables several of a ButtonBar's Buttons, referencing them by the > ButtonBarbutton's <code>label</code>. > + * > + * <p>The function takes a single argument which is the ButtonBarButtons > label.</p> > + * <pre>myButtonBar.disableButtons(["My Button Label1", "My > Label2"])</pre> > + * > + * @param labelValues Is an array of ButtonBarButton labels. > + * @param fieldName Field used for comparing the label > + * > + * @langversion 3.0 > + * @playerversion Flash 11.1 > + * @playerversion AIR 3.4 > + * @productversion Flex 4.10 > + */ > + public function disableButtons(labelValues:Array, fieldName:String = > ""):void > + { > + var btnCurrent:ButtonBarButton = null; > + var buttonIndices:Array; > + var indicesTotal:uint = 0; > + var loopingIndex:uint = 0; > + > + > + if (!dataGroup || labelValues.length < 1 || labelValues == null) > + { > + return; > + } > + > + if (fieldName == "" || fieldName == null) > + { > + buttonIndices = findRowIndices(labelField, labelValues); > + } > + else > + { > + buttonIndices = findRowIndices(fieldName, labelValues); > + } > + > + > + indicesTotal = buttonIndices.length > + > + if (indicesTotal == 0) > + { > + return; > + } > + > + > + for (loopingIndex; loopingIndex < indicesTotal; loopingIndex++) > + { > + btnCurrent = dataGroup.getElementAt(buttonIndices[loopingIndex]) > as ButtonBarButton; > + btnCurrent.enabled = false; > + } > + } > + > + > + /** > + * Enable a ButtonBar's Button referencing it by the ButtonBarbutton's > <code>label</code>. > + * > + * <p>The function takes a single argument which is the ButtonBarButtons > label.</p> > + * <pre>myButtonBar.enableButton("My Button Label")</pre> > + * > + * @param labelValue Is the ButtonBarButton label > + * @param fieldName Field used for comparing the label > + * > + * @langversion 3.0 > + * @playerversion Flash 11.1 > + * @playerversion AIR 3.4 > + * @productversion Flex 4.10 > + */ > + public function enableButton(labelValue:String, fieldName:String = > ""):void > + { > + var btnCurrent:ButtonBarButton = null; > + var buttonIndex:int = -1; > + > + > + if (!dataGroup || labelValue == "" || labelValue == null) > + { > + return; > + } > + > + if (fieldName == "" || fieldName == null) > + { > + buttonIndex = findRowIndex(labelField, labelValue); > + } > + else > + { > + buttonIndex = findRowIndex(fieldName, labelValue); > + } > + > + if (buttonIndex == -1) > + { > + return; > + } > + > + > + btnCurrent = dataGroup.getElementAt(buttonIndex) as ButtonBarButton; > + btnCurrent.enabled = true; > + } > + > + > + /** > + * Disables several of a ButtonBar's Buttons, referencing them by the > ButtonBarbutton's <code>label</code>. > + * > + * <p>The function takes a single argument which is the ButtonBarButtons > label.</p> > + * <pre>myButtonBar.enableButtons(["My Button Label1", "My > Label2"])</pre> > + * > + * @param labelValues Is an array of ButtonBarButton labels. > + * @param fieldName Field used for comparing the label > + * > + * @langversion 3.0 > + * @playerversion Flash 11.1 > + * @playerversion AIR 3.4 > + * @productversion Flex 4.10 > + */ > + public function enableButtons(labelValues:Array, fieldName:String = > ""):void > + { > + var btnCurrent:ButtonBarButton = null; > + var buttonIndices:Array; > + var indicesTotal:uint = 0; > + var loopingIndex:uint = 0; > + > + > + if (!dataGroup || labelValues.length < 1 || labelValues == null) > + { > + return; > + } > + > + if (fieldName == "" || fieldName == null) > + { > + buttonIndices = findRowIndices(labelField, labelValues); > + } > + else > + { > + buttonIndices = findRowIndices(fieldName, labelValues); > + } > + > + > + indicesTotal = buttonIndices.length > + > + if (indicesTotal == 0) > + { > + return; > + } > + > + > + for (loopingIndex; loopingIndex < indicesTotal; loopingIndex++) > + { > + btnCurrent = dataGroup.getElementAt(buttonIndices[loopingIndex]) > as ButtonBarButton; > + btnCurrent.enabled = true; > + } > + } > + > + > /** > * @private > */ > -- Alex Harui Flex SDK Team Adobe Systems, Inc. http://blogs.adobe.com/aharui