package org.eclipse.uml2.diagram.common.async;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.uml2.diagram.common.genapi.IVisualIDRegistry;
public class ByVisualIDViewerFilter extends ViewerFilter {
private final int[] myFilteredVisualId;
private final IVisualIDRegistry myRegistry;
public ByVisualIDViewerFilter(IVisualIDRegistry registry, int... filteredVisualId) {
myRegistry = registry;
myFilteredVisualId = filteredVisualId.clone();
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
return element instanceof SyncModelNode && !isFilteredVisualId((SyncModelNode) element);
}
public boolean isFilteredVisualId(SyncModelNode node) {
View view = node.getSyncModelView();
int actualId = myRegistry.getVisualID(view);
for (int nextVisualId : myFilteredVisualId) {
if (nextVisualId == actualId) {
return true;
}
}
return false;
}
}