/**
*
*/
package org.erlide.ui.editors.erl.actions;
import java.io.File;
import java.util.ResourceBundle;
import org.eclipse.ui.texteditor.TextEditorAction;
import org.erlide.engine.ErlangEngine;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.ui.editors.erl.ErlangEditor;
/**
* @author jakob
*
*/
// FIXME the Java side should not be aware of the cache details!
public class ClearCacheAction extends TextEditorAction {
private final ErlangEditor erlangEditor;
private static final String NOPARSE_CACHE_SUFFIX = ".noparse";
private static final String SCANNER_CACHE_SUFFIX = ".scan";
private static final String REFS_CACHE_SUFFIX = ".refs";
private static final String[] suffixes = { NOPARSE_CACHE_SUFFIX, SCANNER_CACHE_SUFFIX,
REFS_CACHE_SUFFIX };
public ClearCacheAction(final ResourceBundle bundle, final String prefix,
final ErlangEditor erlangEditor) {
super(bundle, prefix, erlangEditor);
this.erlangEditor = erlangEditor;
}
@Override
public void run() {
resetCacheForEditor(erlangEditor);
}
public static void resetCacheForEditor(final ErlangEditor erlangEditor) {
final IErlModule module = erlangEditor.getModule();
if (module == null) {
return;
}
for (final String suffix : suffixes) {
final String cacheFileOSPath = ErlangEngine.getInstance().getStateDir()
+ module.getScannerName() + suffix;
final File cacheFile = new File(cacheFileOSPath);
cacheFile.delete();
}
erlangEditor.resetAndCacheScannerAndParser();
}
}