Disabling user input in a Flex Application

by Peter deHaan on February 20, 2008

in Application

I’ve seen this come up a few times in various lists, and figured maybe somebody out there may find this useful.

The following example shows how you can prevent user input in a Flex application by setting the enabled property to false in the <mx:Application /> tag, or by setting the Application.application.enabled property.

Any suggestions? Leave them in the comments!

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/02/20/disabling-user-input-in-a-flex-application/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            private function disableApplication():void {
                Application.application.enabled = false;
                btn.enabled = false;
                setTimeout(enableApplication, 3000);
            }

            private function enableApplication():void {
                btn.enabled = true;
                Application.application.enabled = true;
            }
        ]]>
    </mx:Script>

    <mx:Array id="arr">
        <mx:Object product="Flex" version="3" />
        <mx:Object product="Flash" version="CS3" />
        <mx:Object product="Dreamweaver" version="CS3" />
        <mx:Object product="Fireworks" version="CS3" />
        <mx:Object product="Photoshop" version="CS3" />
        <mx:Object product="Illustrator" version="CS3" />
    </mx:Array>

    <mx:ApplicationControlBar dock="true">
        <mx:Button id="btn"
                label="Disable Application (3 seconds)"
                emphasized="true"
                click="disableApplication();" />
    </mx:ApplicationControlBar>

    <mx:DataGrid id="dataGrid" dataProvider="{arr}">
        <mx:columns>
            <mx:DataGridColumn dataField="product"
                    headerText="Product:" />
            <mx:DataGridColumn dataField="version"
                    headerText="Version:" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

View source is enabled in the following example.

{ 6 comments… read them below or add one }

1 Jim Thompson July 7, 2008 at 7:25 am

Can the disabled state be styled?

Reply

2 John September 23, 2008 at 2:14 am

That was my question too, can it be styled?

Reply

3 Steve October 20, 2008 at 5:12 pm

can the disabled application’s transparency be changed?

Reply

4 peterd October 20, 2008 at 5:19 pm

Sure,

You could do something like the following to set the disabled background color and alpha of the disabled state:

<mx:Style>
    Application {
        backgroundDisabledColor: black;
        disabledOverlayAlpha: 0.9;
    }
</mx:Style>

Peter

Reply

5 Lexi November 4, 2008 at 10:05 am

A fantastic site, and brilliant effort. A great piece of work.,

Reply

6 om February 9, 2009 at 8:34 am

I’ve tried this, but it does not work if a popup is opened.
The background view is correctly disabled but the user can still interact with the popup.
Any solution for this?

Thanx ;)

Reply

Leave a Comment

Sorry, this blog is terrible at eating HTML comments.
If you're pasting any HTML/XML/MXML code, you need to convert your < characters to &lt; and your > characters to &gt; .

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree

Previous post:

Next post: