package com.laboki.eclipse.plugin.smartsave.preferences.ui;
import java.util.ArrayList;
import org.eclipse.core.runtime.jobs.Job;
import com.google.common.base.Joiner;
import com.google.common.eventbus.Subscribe;
import com.laboki.eclipse.plugin.smartsave.contexts.EditorContext;
import com.laboki.eclipse.plugin.smartsave.events.AddContentTypeToBlacklistEvent;
import com.laboki.eclipse.plugin.smartsave.events.RemoveContentTypeFromBlacklistEvent;
import com.laboki.eclipse.plugin.smartsave.instance.EventBusInstance;
import com.laboki.eclipse.plugin.smartsave.task.Task;
import com.laboki.eclipse.plugin.smartsave.task.TaskMutexRule;
public final class ContentTypeBlacklistUpdater extends EventBusInstance {
private static final TaskMutexRule RULE = new TaskMutexRule();
public ContentTypeBlacklistUpdater() {
super();
}
@Subscribe
public static void
eventHandler(final AddContentTypeToBlacklistEvent event) {
new Task() {
@Override
public void
execute() {
ContentTypeBlacklistUpdater.update(event.getContentTypeId(), true);
}
}.setRule(ContentTypeBlacklistUpdater.RULE)
.setPriority(Job.INTERACTIVE)
.start();
}
@Subscribe
public static void
eventHandler(final RemoveContentTypeFromBlacklistEvent event) {
new Task() {
@Override
public void
execute() {
ContentTypeBlacklistUpdater.update(event.getContentTypeId(), false);
}
}.setRule(ContentTypeBlacklistUpdater.RULE)
.setPriority(Job.INTERACTIVE)
.start();
}
protected static void
update(final String contentId, final boolean canAdd) {
final ArrayList<String> blacklist = EditorContext.getBlacklist();
ContentTypeBlacklistUpdater.updateList(canAdd, contentId, blacklist);
EditorContext.setBlacklist(Joiner.on(";").join(blacklist));
}
private static void
updateList( final boolean canAdd,
final String contentId,
final ArrayList<String> blacklist) {
if (canAdd) blacklist.add(contentId);
else blacklist.remove(contentId);
}
}