package de.ovgu.cide.astview;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import cide.gast.IASTNode;
public class TestPersistenceAction extends Action {
private static Set<String> set = new HashSet<String>();
private TreeViewer viewer;
public TestPersistenceAction(TreeViewer viewer) {
this.viewer = viewer;
}
private IASTNode getSelection() {
IStructuredSelection selection = (IStructuredSelection) viewer
.getSelection();
for (Iterator iter = selection.iterator(); iter.hasNext();) {
Object element = iter.next();
if (element instanceof IASTNode) {
return (IASTNode) element;
}
}
return null;
}
public void update() {
IASTNode node = getSelection();
String id = "";
if (node != null)
id = node.getId();
setText("set (" + id + ")");
setEnabled(node != null);
setChecked(isChecked(this, node));
}
public void run() {
performAction(this, getSelection());
}
/**
* @see com.ibm.lab.soln.jdt.excerpt.ChangeIMemberFlagAction#performAction(IAction,
* IMember)
*/
protected boolean performAction(IAction action, IASTNode member) {
if (member == null)
return false;
String i = member.getId();
if (set.contains(i)) {
set.remove(i);
} else {
set.add(i);
}
return true;
}
/**
* @see com.ibm.lab.soln.jdt.excerpt.ChangeIMemberFlagAction#isChecked(IAction,
* IMember)
*/
protected boolean isChecked(IAction action, IASTNode member) {
if (member == null)
return false;
return set.contains(member.getId());
}
}