Thanks for indulging me, everyone. I wish I could share all the code
now - I certainly hope to later. I'm sorry to say I find that ESRIA
example quite inscrutable as sample code, though the UI is certainly
nice.
So, to review where I am, I have a component that tiles its children
and resizes rather well (perhaps by accident). It derives from Canvas
(should possibly be UIComponent), and the updateDisplayList method
sets the x,y,width,height of the children (should possibly be calling
setActualSize, thought it currently doesn't assume that the children
are UIComponents, even though they are). The measure() method is
inherited from Canvas.
When an individual pod is maximized, the contents of the display list
is not changed. Rather updateDisplayList sets the visible property as
well. That's something I'm trying to rectify now, so that measure()
will be correct, but I'm running into some problems (eg. charting
classes expecting a parent). Any suggestions regarding this aspect?
I'm trying something like the following.
public function set selectedChild(child:DisplayObject) : void {
trace("selectedChild");
_selectedChild = child;
if (child == null) {
this.removeAllChildren();
for each (var child:DisplayObject in
_savedTiles) {
this.addChild(child);
}
_savedTiles = null;
} else {
_savedTiles = this.getChildren();
this.removeAllChildren();
this.addChild(_selectedChild);
}
invalidateSize();
}
I thought of using visible/includinLayout, but then I'd have to
introduce the child-is-UIComponent assumption (which I realize may
ultimately be necessary).
On Sat, Jun 7, 2008 at 9:35 AM, Daniel Gold <[EMAIL PROTECTED]> wrote:
> You may want to look at the code in PodLayoutManager.as from the Flex
> Dashboard example as it seems to be very similar to what you're doing
>
> http://examples.adobe.com/flex3/devnet/dashboard/main.html
>
>
> On Fri, Jun 6, 2008 at 12:04 AM, Josh McDonald <[EMAIL PROTECTED]> wrote:
>>
>> Measure can always be bigger than the actual width/height, that's what
>> it's for.
>>
>> On Fri, Jun 6, 2008 at 11:32 AM, Richard Rodseth <[EMAIL PROTECTED]>
>> wrote:
>>>
>>> No, I mean like zooming a window. I think the problem lies in how I
>>> tell the TiledCanvas that one of its children is the zoomed one
>>> (setting "visible" of all the others to false in updateDisplayList).
>>> Stay tuned.
>>>
>>> However, setting that aside, it also seems as though I might be
>>> commiting a hack if I allow the measured size of the TiledCanvas to
>>> remain larger than its bounds, even though it allows the scrolling to
>>> work (at least in the all-tiles-shown case).
>>>
>>> On Thu, Jun 5, 2008 at 5:46 PM, Josh McDonald <[EMAIL PROTECTED]> wrote:
>>> > I'm not sure exactly what you're doing, or what you're trying to
>>> > achieve
>>> > yet. By "expanding a tile" do you mean you're setting the minimum to be
>>> > bigger, or you're manually overriding the decisions the base Container
>>> > implementation makes in updateDisplayList()?
>>> >
>>> > On Fri, Jun 6, 2008 at 10:41 AM, Richard Rodseth <[EMAIL PROTECTED]>
>>> > wrote:
>>> >>
>>> >> The docs say:
>>> >>
>>> >> If the horizontalScrollPolicy is ScrollPolicy.AUTO, the horizontal
>>> >> scroll bar appears when all of the following are true:
>>> >>
>>> >> * One of the container's children extends beyond the left edge or
>>> >> right edge of the container.
>>> >> * The clipContent property is true.
>>> >> * The width and height of the container are large enough to
>>> >> reasonably accommodate a scroll bar.
>>> >>
>>> >> And sure enough, if I set a static minimum on tiledView, I get the
>>> >> desired effect.
>>> >>
>>> >> If I expand a tile and change the minimum to something else, any idea
>>> >> which invalidate method(s) I should call?
>>> >>
>>> >> On Thu, Jun 5, 2008 at 4:57 PM, Josh McDonald <[EMAIL PROTECTED]>
>>> >> wrote:
>>> >> > If you want to be able to measure your subcomponents, always use
>>> >> > setActualSize. I learned that the hard way recently :)
>>> >> >
>>> >> > I've recently been doing a whole bunch of measure and
>>> >> > updatedisplaylist
>>> >> > voodoo for a custom container, so I'll be slightly helpful!
>>> >> >
>>> >> > -Josh
>>> >> >
>>> >> > On Fri, Jun 6, 2008 at 9:36 AM, Richard Rodseth <[EMAIL PROTECTED]>
>>> >> > wrote:
>>> >> >>
>>> >> >> Clearly I haven't mastered layout and measurement.
>>> >> >>
>>> >> >> I've implemented a custom component which tiles its children in
>>> >> >> equal-sized tiles, but also has a state (not a flex state) where
>>> >> >> one
>>> >> >> tile fills the component.
>>> >> >>
>>> >> >> I subclassed Canvas and set the sizes and positions of children in
>>> >> >> updateDisplayList. I didn't override measure(), but it works very
>>> >> >> nicely, resizing children smoothly as it is resized.
>>> >> >>
>>> >> >> Now, however, I would like to set a minimum width and height for
>>> >> >> the
>>> >> >> tiled view, after which scroll bars appear. The minimum will be
>>> >> >> different if the component is in the one-tile-expanded case.
>>> >> >>
>>> >> >> Can I do this without further mods to my component?
>>> >> >> Should my updateDisplayList be calling setActualSize rather than
>>> >> >> setting x,y,width, height?
>>> >> >> Should I have a measure() implementation?
>>> >> >> How would it differ from the inherited one?
>>> >> >> In a scenario like the following, would I set the minWidth and
>>> >> >> minHeight on the parent or child?
>>> >> >> Or, to ask another way, do the the scrollpolicy and minimum
>>> >> >> properties
>>> >> >> always belong on the same component?
>>> >> >>
>>> >> >> <mx:Canvas id="scrollableArea" width="100%" height="100%"
>>> >> >> verticalScrollPolicy="auto"
>>> >> >> horizontalScrollPolicy="auto">
>>> >> >>
>>> >> >> <view:TiledCanvas id="tiledView"
>>> >> >> width="100%" height="100%"
>>> >> >> >
>>> >> >> </view:TiledCanvas>
>>> >> >> </mx:Canvas>
>>> >> >>
>>> >> >> Thanks.
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > "Therefore, send not to know For whom the bell tolls. It tolls for
>>> >> > thee."
>>> >> >
>>> >> > :: Josh 'G-Funk' McDonald
>>> >> > :: 0437 221 380 :: [EMAIL PROTECTED]
>>> >> >
>>> >
>>> >
>>> >
>>> > --
>>> > "Therefore, send not to know For whom the bell tolls. It tolls for
>>> > thee."
>>> >
>>> > :: Josh 'G-Funk' McDonald
>>> > :: 0437 221 380 :: [EMAIL PROTECTED]
>>> >
>>
>>
>>
>> --
>> "Therefore, send not to know For whom the bell tolls. It tolls for thee."
>>
>> :: Josh 'G-Funk' McDonald
>> :: 0437 221 380 :: [EMAIL PROTECTED]
>
>