You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@pivot.apache.org by Bill van Melle <bi...@gmail.com> on 2011/07/15 23:51:14 UTC

Scaling components

A while back I submitted a feature request for a "ScalePane", a container
that would automatically scale its contents to the container's actual size (
https://issues.apache.org/jira/browse/PIVOT-710). I find myself increasingly
in need of such a beast, or at least something like it -- I'd settle for a
container that I could set a scale factor on. Some of the work is already
done in the form of ScaleDecorator, but the decorator handles only the
output side. If you have any interactive content, the mouse hits are all
wrong (I include a simple demonstration of the issue below).

Anyway, I want to take a crack at implementing a scaling container, and
wondered if any of the experts here had suggestions for the right approach.
At first blush, it seems like I could add a ScaleDecorator, and then
override all the mouse-related events in the skin to scale the x,y
coordinates before passing them in to the container's component. Are there
other things to worry about?


The example: clicking on the first checkbox checks the second checkbox.

<Window title="Scale fail" maximized="true"
xmlns:bxml="http://pivot.apache.org/bxml"
xmlns:effects="org.apache.pivot.wtk.effects"
xmlns="org.apache.pivot.wtk">
<BoxPane>
<Border styles="{color:10,thickness:8,padding:4}">
<decorators>
<effects:ScaleDecorator scaleY="2" scaleX="2"
horizontalAlignment="left" verticalAlignment="top" />
</decorators>
<BoxPane orientation="vertical">
<Checkbox buttonData="Checkbox 1" tooltipText="This is the first checkbox"
/>
<Checkbox buttonData="Checkbox 2" tooltipText="This is the second checkbox"
/>
</BoxPane>
</Border>
</BoxPane>
</Window>

Re: Scaling components

Posted by Greg Brown <gk...@verizon.net>.
I don't think a Decorator is going to help here. Decorators are, by definition, non-interactive (they just "decorate"). You'll probably need to create a custom ScalePane class that overrides paint() and the mouse handling methods (there's currently no way to do that at the skin level).
G

On Jul 15, 2011, at 5:51 PM, Bill van Melle wrote:

> A while back I submitted a feature request for a "ScalePane", a container that would automatically scale its contents to the container's actual size (https://issues.apache.org/jira/browse/PIVOT-710). I find myself increasingly in need of such a beast, or at least something like it -- I'd settle for a container that I could set a scale factor on. Some of the work is already done in the form of ScaleDecorator, but the decorator handles only the output side. If you have any interactive content, the mouse hits are all wrong (I include a simple demonstration of the issue below).
> 
> Anyway, I want to take a crack at implementing a scaling container, and wondered if any of the experts here had suggestions for the right approach. At first blush, it seems like I could add a ScaleDecorator, and then override all the mouse-related events in the skin to scale the x,y coordinates before passing them in to the container's component. Are there other things to worry about?
> 
> 
> The example: clicking on the first checkbox checks the second checkbox.
> 
> <Window title="Scale fail" maximized="true"
> xmlns:bxml="http://pivot.apache.org/bxml"
> xmlns:effects="org.apache.pivot.wtk.effects"
> xmlns="org.apache.pivot.wtk">
> <BoxPane>
> <Border styles="{color:10,thickness:8,padding:4}">
> <decorators>
> <effects:ScaleDecorator scaleY="2" scaleX="2"
> horizontalAlignment="left" verticalAlignment="top" />
> </decorators>
> <BoxPane orientation="vertical">
> <Checkbox buttonData="Checkbox 1" tooltipText="This is the first checkbox" />
> <Checkbox buttonData="Checkbox 2" tooltipText="This is the second checkbox" />
> </BoxPane>
> </Border>
> </BoxPane>
> </Window>
>