@Override
public void run(final ITextSelection selection) {
try {
final IEditorPart activeEditor = getSite().getPage().getActiveEditor();
final int offset = selection.getOffset();
ITextEditor textEditor = null;
OpenResult openResult = null;
IErlElement element = null;
IErlProject project = null;
IErlModule module = null;
final IErlModel model = ErlangEngine.getInstance().getModel();
if (activeEditor instanceof AbstractErlangEditor) {
final AbstractErlangEditor editor = (AbstractErlangEditor) activeEditor;
textEditor = editor;
editor.reconcileNow();
final String scannerName = editor.getScannerName();
module = editor.getModule();
project = editor.getProject();
openResult = ErlangEngine
.getInstance()
.getService(OpenService.class)
.open(scannerName,
offset,
ErlangEngine.getInstance().getModelUtilService()
.getImportsAsList(module),
project.getProperties().getExternalModules(),
model.getPathVars(module.getCorrespondingResource()));
ErlLogger.debug("open " + openResult);
element = editor.getElementAt(offset, true);
} else if (activeEditor instanceof ITextEditor) {
textEditor = (ITextEditor) activeEditor;
final String text = textEditor.getDocumentProvider()
.getDocument(textEditor.getEditorInput()).get();
openResult = ErlangEngine.getInstance().getService(OpenService.class)
.openText(text, offset);
final IFile file = (IFile) textEditor.getEditorInput().getAdapter(
IFile.class);
if (file != null) {
final IProject p = file.getProject();
if (p != null) {
project = model.findProject(p);