package com.laboki.eclipse.plugin.smartsave.main; import java.util.concurrent.Executors; import org.eclipse.core.runtime.jobs.Job; import com.google.common.eventbus.AsyncEventBus; import com.laboki.eclipse.plugin.smartsave.task.Task; public enum EventBus { INSTANCE; public static final String FAMILY = "+SmartSaveEventBusTaskFamily+"; protected static final AsyncEventBus BUS = new AsyncEventBus(Executors.newCachedThreadPool()); public static void register(final Object object) { EventBus.BUS.register(object); } public static void unregister(final Object object) { EventBus.BUS.unregister(object); } public static void post(final Object object) { new Task() { @Override public void execute() { EventBus.BUS.post(object); } }.setFamily(EventBus.FAMILY).setPriority(Job.INTERACTIVE).start(); } }