I'm not sure I understand: you have many service subclasses, each of
them associated with a tab? If so, they can take the tab as an
argument to the constructor:

    abstract class TabService extends Service {
        protected MyAbstractService(Tab tab) {
            tab.selectedProperty().addListener((obs, old, selected) -> {
                if(selected) {
                    restart();
                } else {
                    cancel();
                }
            });
        }
    }

    class FooService extends TabService {
        public FooService(Tab tab) {
            super(tab);
        }
    }

Alternatively, you can have a Tab subclass that takes Service as
constructor argument.

Alternatively, you can have a static helper method that binds the
service to the tab and use it from any class:

    static bind(Service service, Tab tab) {
        tab.selectedProperty().addListener((obs, old, selected) -> {
            if(selected) {
                service.restart();
            } else {
                service.cancel();
            }
        });
    }

Was that an answer to your question?

Best,
Tomas

On Wed, Jul 30, 2014 at 3:44 PM, Peter Penzov <[email protected]> wrote:
> Hi Tomas,
>   I'm not 100% sure but I tested the proposed code and it seems that it's
> working. One more question. I have too many Java Classes into which I need
> to implement this. Is there a quick and easy way to get the Tab Object into
> the service class where I need to implement this?
>
> BR,
> Peter
>
>
> On Wed, Jul 30, 2014 at 1:22 PM, Tomas Mikula <[email protected]>
> wrote:
>>
>> What about
>>
>>     tab.selectedProperty().addListener((obs, old, selected) -> {
>>         if(selected) {
>>             service.restart();
>>         } else {
>>             service.cancel();
>>         }
>>     });
>>
>> ?
>>
>> Best,
>> Tomas
>>
>> On Wed, Jul 30, 2014 at 9:07 AM, Peter Penzov <[email protected]>
>> wrote:
>> > Hi All,
>> >    I have a TabPane with JavaFX service which displays some data. I'm
>> > interested is there a way to pause the service when I switch the tabs
>> > and
>> > the service is not visible? It 'will same me a lot of CPU resources if
>> > there is a way to implement this.
>> >
>> > BR,
>> > Peter
>
>

Reply via email to