Package com.dci.intellij.dbn.common.thread

Source Code of com.dci.intellij.dbn.common.thread.ConditionalLaterInvocator

package com.dci.intellij.dbn.common.thread;

import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;

public abstract class ConditionalLaterInvocator implements Runnable{
    private Object syncObject;

    public ConditionalLaterInvocator() {}
    public ConditionalLaterInvocator(Object syncObject) {
        this.syncObject = syncObject;
    }

    public void start() {
        Application application = ApplicationManager.getApplication();
        if (application.isDispatchThread()) {
            run();
        } else {
            application.invokeLater(this/*, ModalityState.NON_MODAL*/);
        }
    }

    @Override
    public final void run() {
        if (syncObject == null) {
            execute();
        } else {
            synchronized (syncObject) {
                execute();
            }
        }
    }


    public abstract void execute();
}
TOP

Related Classes of com.dci.intellij.dbn.common.thread.ConditionalLaterInvocator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.