blob: c1ab2cf7d06030cac113ec2b4d4a04f1f7fb277e [file] [log] [blame]
package org.eclipse.graphiti.ui.internal.editor;
import java.util.HashSet;
import org.eclipse.gef.EditPart;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
public class RefreshPerformanceCache {
/* keep refreshed EP/GA/PE to avoid multiple refresh of same figure */
private HashSet<EditPart> refreshedFigure4EP = new HashSet<EditPart>();
private HashSet<GraphicsAlgorithm> refreshedFigure4GA = new HashSet<GraphicsAlgorithm>();
private HashSet<PictogramElement> refreshedFigure4PE = new HashSet<PictogramElement>();
/**
* Inits the refresh.
*/
public void initRefresh() {
refreshedFigure4EP.clear();
refreshedFigure4GA.clear();
refreshedFigure4PE.clear();
}
/**
* Answers if a refresh should be triggered for an object of type
* <ul>
* <li> {@link GraphicsAlgorithm}
* <li> {@link PictogramElement}
* <li> {@link EditPart}
* </ul>
* If the supplied argument is of another type an
* {@link IllegalArgumentException} is thrown.
*
* @param obj
* @return true if the supplied object should be refreshed, false otherwise.
*/
public boolean shouldRefresh(Object obj) {
if (obj instanceof GraphicsAlgorithm) {
return refreshedFigure4GA.add((GraphicsAlgorithm) obj);
} else if (obj instanceof EditPart) {
return refreshedFigure4EP.add((EditPart) obj);
} else if (obj instanceof PictogramElement) {
return refreshedFigure4PE.add((PictogramElement) obj);
} else {
throw new IllegalArgumentException("Can not refresh type: " + obj.getClass()); //$NON-NLS-1$
}
}
}