[flexcoders] Any way to remove or style the bottom border of the TabBar?

2008-03-03 Thread David_M_Barrett
Do you know of any way to change the bottom border of the TabBar so
the active tab blends seamlessly with the box below?  (I'm trying to
manually construct a TabNavigator; the standard one doesn't quite work
with my layout.)

The easiest way to see what I'm talking about is to take a look at the
demo here:

http://quinthar.com/TabDemo.swf

The code follows:



http://www.adobe.com/2006/mxml"; xmlns="*"> 

  

  

 

   

.activetab { backgroundColor: #FF }  

  

 





  

 
  

   

   

   

 


Any ideas?  Thanks!

-david



[flexcoders] Re: What is the most permissive crossdomain.xml policy file?

2008-01-30 Thread David_M_Barrett
Ok, so I've learned that if I host the SWF on an HTTPS server, then it works.  
Which brings 
me to two questions:

1) Is there any way to have an HTTP-hosted SWF access HTTPS resources?
2) Is there any way to have a filesystem-hosted SWF access HTTPS resources?

If so, what are the compiler and crossdomain settings I need to use to 
accomplish this?  
Thanks!

-david

PS: I'm posting my lessons as I go to http://bottomupflash.com; feel free to 
follow along.

--- In flexcoders@yahoogroups.com, "David_M_Barrett" <[EMAIL PROTECTED]> wrote:
>
> What need I do to allow a SWF to access my web service?  I have a web service 
> here:
> 
>  https://data.expensify.com
> 
> I've configured it to respond with the absolute maximally-permissive 
> crossdomain.xml:
> 
>  https://data.expensify.com/crossdomain.xml
> 
> HTTP/1.1 200 OK
> Content-Type: text/x-cross-domain-policy
> X-Permitted-Cross-Domain-Policies: all
> Content-Length: 299
> 
> 
> http://www.w3.org/2001/XMLSchema-instance"; 
> 
xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd";>
> 
> 
> 
> 
> I have a SWF I'm hosting on http://127.0.0.1/Expensify.swf.  I've configured 
> my mm.cfg 
to 
> enable policy-file logging, and it logs:
> 
> OK: Root-level SWF loaded: http://127.0.0.1/Expensify.swf
> OK: Policy file accepted: https://data.expensify.com/crossdomain.xml
> Error: Request for resource at https://data.expensify.com/x by 
> requestor 
from 
> http://127.0.0.1/Expensify.swf is denied due to lack of policy file 
> permissions.
> 
> Any clues what I need to do?  It was working just fine before, but now is 
> broken with the 
> switch to the latest Flash player.
> 
> Basically, how can I configure data.expensify.com to say "really, seriously, 
> *ANYBODY* 
> from *ANYWHERE* at *ANY TIME* can call me.  *REALLY*." 
> 
> -david
>





[flexcoders] What is the most permissive crossdomain.xml policy file?

2008-01-29 Thread David_M_Barrett
What need I do to allow a SWF to access my web service?  I have a web service 
here:

 https://data.expensify.com

I've configured it to respond with the absolute maximally-permissive 
crossdomain.xml:

 https://data.expensify.com/crossdomain.xml

HTTP/1.1 200 OK
Content-Type: text/x-cross-domain-policy
X-Permitted-Cross-Domain-Policies: all
Content-Length: 299


http://www.w3.org/2001/XMLSchema-instance"; 
xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd";>




I have a SWF I'm hosting on http://127.0.0.1/Expensify.swf.  I've configured my 
mm.cfg to 
enable policy-file logging, and it logs:

OK: Root-level SWF loaded: http://127.0.0.1/Expensify.swf
OK: Policy file accepted: https://data.expensify.com/crossdomain.xml
Error: Request for resource at https://data.expensify.com/x by 
requestor from 
http://127.0.0.1/Expensify.swf is denied due to lack of policy file permissions.

Any clues what I need to do?  It was working just fine before, but now is 
broken with the 
switch to the latest Flash player.

Basically, how can I configure data.expensify.com to say "really, seriously, 
*ANYBODY* 
from *ANYWHERE* at *ANY TIME* can call me.  *REALLY*." 

-david



[flexcoders] Right way to customize drag/drop between two DataGrids?

2008-01-27 Thread David_M_Barrett
I have two DataGrids, the "menu" and the "receipt".  I want to be able to:

1) Add items to the receipt by dragging from the menu
2) Remove items from the receipt by dragging back to the menu

With the following constraints:

a) The menu should never change
b) A receipt can never contain more than one of a given item

This seems like it should be really straightforward, but I can't figure it out. 
 What would 
you suggest?  What I think should work (but doesn't) is the following:

Set "dragEnabled" and "dropEnabled" to "true" on both the menu and receipt 
DataGrids.  
This accomplishes requirement (1) above, but fails all the other.

Next, set "dragMoveEnabled" on the receipt.  This accomplishes requirements (1) 
and (2) 
above (ie, dragging from the menu to the receipt correctly adds it to the 
receipt without 
modifying the menu, dragging from the receipt correctly removes it, and 
dragging from 
the receipt to itself does nothing), but fails the two constraints (nothing 
prevents adding 
the same item to the receipt multiple times, and items dragged from the receipt 
to the 
menu modify the menu).

So, we're most of the way there with only a couple changes.  But I can't find 
any way to 
enforce these constraints.  Some options I've tried/considered for the first 
constraint:

i) Override whatever function on the menu actually does the "adding" to simply 
make it do 
nothing.  Unfortunately, it appears that the "add" code is actually some secret 
part of the 
DataGrid itself, and can't be overridden.  Overriding "dragDrop" doesn't do it, 
because it's 
added after "dragDrop" actually runs.

2) Override "dragDrop" on the menu to remove the item right after it's added.  
Unfortunately, "dragDrop" runs *before* the item has been added, so it can't 
remove what 
doesn't yet exist.

3) Override "dragComplete" on both the receipt and the menu to determine if the 
item is 
being added to the menu, and if so remove it.  However, the "dragEvent" passed 
in to 
"dragComplete" doesn't seem to have any awareness of the drop target -- 
"currentTarget" 
and "dragInitiator" both point to the *source* of the drag (ie, the receipt) 
not the 
*destination* (the menu).  Thus it has no way of knowing if we're dragging from 
a receipt 
to the menu, or between receipts.

4) Skip all this drag/drop junk entirely and add a listener to the menu's 
DataProvider that 
simply watches for any ADD CollectionEvent and immediately removes it.  But 
this 
complicates actually adding things to the menu via other means (the menu can be 
modified, just not by the drag/drop).

The best I can come up with is overriding "dragDrop" on the menu to set some 
sort of 
global variable saying "the last drop operation went to me, at location X".  
Then override 
"dragComplete" on both menu and receipt to check "if the last drop operation 
went to the 
menu, erase whatever was added from location X".

Alternatively, override the menu's "dragDrop" to set a global "please delete 
whatever was 
added" variable, and then check this in the CollectionEvent listener -- if set, 
delete any 
additions and clear the variable.

But ug, those are pretty nasty.  Surely there must be a better way?


As for the second constraint (a receipt can contain only one of a given item), 
I'm not even 
sure where to start.  I considered overriding "dragEnter" to simply refuse the 
drag/drop 
operation if the receipt already contained the item, but I couldn't get 
anything to work on 
that, so I'll focus on the first constraint first.

Any suggestions?  Thanks!

-david