package com.laboki.eclipse.plugin.smartsave.task; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; public abstract class TaskJob extends Job { private static final String NAME = "SmartSavePluginJob"; private Object family; public TaskJob() { super(TaskJob.NAME); } @Override public boolean belongsTo(final Object family) { if (this.familyIsNull(family)) return false; return this.family.equals(family); } private boolean familyIsNull(final Object family) { return (this.family == null) || (family == null); } @Override protected IStatus run(final IProgressMonitor monitor) { if (monitor.isCanceled()) return Status.CANCEL_STATUS; this.runTask(); return Status.OK_STATUS; } abstract void runTask(); public void setFamily(final Object family) { this.family = family; } }