Thanks Tom! On Sep 27, 2013, at 1:12 PM, Tom Eugelink <[email protected]> wrote:
> > Hi Richard, > > I tried to reproduce the bug and so far it has not occurred anymore. So it > seems it has magically resolved itself. > > Regards, > > Tom > > > On 2013-09-26 21:56, Richard Bair wrote: >> Hi Tom, >> >> Did this issue ever get resolved? It sounds very strange indeed, and we >> should have a JIRA filed for it if there is not one already. >> >> Thanks >> Richard >> >> On Apr 8, 2013, at 3:48 AM, Tom Eugelink <[email protected]> wrote: >> >>> Hi Werner, >>> >>> It indeed is very similar (my code is public on Github, so no use adding it >>> here), especially the selectedToggleProperty listener. I chose to reuse as >>> much of the existing approach, being the getUserData(). >>> >>> What would be of interest to me is: >>> - the exact declaration of the enumValueProperty >>> - how you listen to changes on enumValueProperty >>> - and of course: what happens if you hide/disable the toggles with only one >>> listener attached >>> >>> Tom >>> >>> >>> On 2013-04-08 11:51, Werner Lehmann wrote: >>>> Hi Tom, >>>> >>>> I did something similar: toggle group for toggles which correspond to enum >>>> members. This one assume that the toggles correspond to the enum members >>>> in their declared order. It also uses an invalidation listener and >>>> disabling/enabling a toggle keeps the listener functional as I just tested >>>> with a test application. >>>> >>>> public class MintEnumToggleGroup<E extends Enum<E>> extends ToggleGroup >>>> { >>>> public MintEnumToggleGroup(Class<E> enumClass) >>>> { >>>> this.enumClass = enumClass; >>>> >>>> selectedToggleProperty().addListener(new InvalidationListener() >>>> { >>>> @Override >>>> public void invalidated(Observable observable) >>>> { >>>> Toggle toggle = getSelectedToggle(); >>>> E value = null; >>>> if (toggle != null) >>>> { >>>> int ordinal = >>>> MintEnumToggleGroup.this.getToggles().indexOf(toggle); >>>> value = MintEnumToggleGroup.this.enumClass >>>> .getEnumConstants()[ordinal]; >>>> } >>>> if (enumValue.get() != value) >>>> enumValue.set(value); >>>> } >>>> }); >>>> >>>> ... >>>> } >>>> >>>> /** >>>> * Bidirectionally bindable property representing the enum member >>>> * of the selected toggle. >>>> */ >>>> public ObjectProperty<E> enumValueProperty() { return enumValue; } >>>> public E getEnumValue() { return enumValueProperty().get(); } >>>> public void setEnumValue(E value) { enumValueProperty().set(value); } >>>> } >>>> >>>> >>>> Looks similar to what you are doing. Let me know if you want to look at >>>> the full source (toggle group and testcase). >>>> >>>> Rgds >>>> Werner >>>> >>>> On 07.04.2013 21:28, Tom Eugelink wrote: >>>>> Again some strange behavior I could use some pointers with. In JFXtras >>>>> I've created an extended ToggleGroup which has a value property. >>>>> https://github.com/JFXtras/jfxtras-labs/blob/2.2/src/main/java/jfxtras/labs/scene/control/ToggleGroupValue.java >>>>> >>>>> Basically what it does is listen to the selectedToggleProperty of >>>>> ToggleGroup, and upon invalidation gets the user data associated with the >>>>> now active toggle and puts that in the valueProperty. Simple, and now you >>>>> can register and listen to the value of the toggle group. Which is >>>>> exactly what I do in my basketball application by registering to the >>>>> invalidated event. >>>>> toggleGroup.valueProperty().addListener(new InvalidationListener() >>>>> {...}); >>>>> >>>>> Now I have one very strange behavior; if I disable or hide the toggles, >>>>> and then re-enable/show them again, the invalidation listener is no >>>>> longer called. Some how it seems to have been removed from the listeners >>>>> list. But the API documentation explicitly says it is a strong reference. >>>>> http://docs.oracle.com/javafx/2/api/javafx/beans/Observable.html#addListener(javafx.beans.InvalidationListener) >>>>> >>>>> If I add a second dummy listener, then the first listener is not removed >>>>> when disabled/hidden. >>>>> >>>>> It very much reeks like a garbage collection thing. Any suggestions? >>>>> >>>>> Tom >>> > >
