How to pause service when it's not visible in TabPane

Tomas Mikula tomas.mikula at gmail.com
Wed Jul 30 22:51:27 UTC 2014


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 <peter.penzov at gmail.com> 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 <tomas.mikula at gmail.com>
> 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 <peter.penzov at gmail.com>
>> 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
>
>


More information about the openjfx-dev mailing list