public void goToDeclaration(final Jumpable ref) {
goToHistoryRememberCurrentPosition();
if(ref instanceof ElementImport) {
// getContainer().selectEditor(ref.getName());
} else if(ref != null) {
GrammarEngine engine = getGrammarEngine();
int index = engine.getFirstDeclarationPosition(ref.getName());
if(index == -1) {
// This grammar does not contain the declaration. Search in the other children
// starting from the root grammarEngine
engine = engine.getRootEngine();
List<String> grammars = engine.getGrammarsOverriddenByRule(ref.getName());
if(!grammars.isEmpty()) {
//getContainer().selectEditor(grammars.get(0));
// set the caret position
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GrammarEngine engine = getGrammarEngine();
int index = engine.getFirstDeclarationPosition(ref.getName());
if(index != -1) {
setCaretPosition(index);
}
}
});