That's what I've been deadling with for the past 2 days!

I won't suggest best practices, I'll just suggest what works as of 1:00pm 
this afternoon.

My model is much like yours, on ModelLocator, but it's not actually written 
to unless the user hits save or apply.  As such, I create a copy of the 
preferences object by passing the true one into a fucntion, which makes a 
copy, and uses that as something to bind to.  That way, all my bindings 
work, but they only affect the real data if the user hits save.

Psuedo code:

prefsWindow = PopUpManager.createPopUp(this, PrefsWindow, true);
prefsWindow.setFormData(ModelLocator.prefsObject);


// psudeo code in PrefsWindow
public var formData:Object;

public function setFormData(o:Object):Void
{
    // could be a specific ValueObject type as well
    // just DON'T set it to null, or delete it; this'll screw up the 
bindings
    formData = new Object();
    for(var p in o)
    {
        formData[p] = o[p];
    }
}

public function getFormData():Object
{
    return formData;
}

Then, in your main class, just replace your VO on the ModelLocator with the 
formData.  For avoiding references, see the earlier threads today about 
Object.copy.


----- Original Message ----- 
From: "charged2885" <[EMAIL PROTECTED]>
To: <flexcoders@yahoogroups.com>
Sent: Thursday, December 01, 2005 4:45 PM
Subject: [flexcoders] PreferencesWindow design pattern


Note, this example is mitigated. there are dozens of preferences i want my 
users to be
able to set. Anyways....

I have a simple preference i want my users to be able to set: 
showConsoleWindow. I have
created a simple PreferencesWindow with a CheckBox on it. This checkbox's 
selected
property is bound to ModelLocator.currentUser.preferences.showConsoleWindow.
currentUser is a UserVO object as described below:

class UserVO {
  preferences:PreferencesVO;
  username:String;
}

class PreferencesVO {
  showConsoleWindow:Boolean;
}

I'd like to offer a cancel button to my PreferencesWindow. however, since
showConsoleWindow is bound, this approach won't work. It seems I should 
first, create a
temporary preferences object to bind to. This is where my question comes in. 
How do I
create a copy of my ModelLocator.currentUser.preferences object?

Or would you implement this functionality differently? Please, I'm new to 
flex and I want to
do this "the right way". Thanks for your time.










--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
Yahoo! Groups Links







------------------------ Yahoo! Groups Sponsor --------------------~--> 
Most low income households are not online. Help bridge the digital divide today!
http://us.click.yahoo.com/I258zB/QnQLAA/TtwFAA/nhFolB/TM
--------------------------------------------------------------------~-> 

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to