package jetbrains.mps.plugin;
/*Generated by MPS */
import jetbrains.mps.ide.navigation.NavigationProvider;
import java.rmi.RemoteException;
import jetbrains.mps.ide.ThreadUtils;
import com.intellij.openapi.application.ApplicationManager;
public class IdeaNavigationProvider implements NavigationProvider {
public IdeaNavigationProvider() {
}
@Override
public boolean openClass(final String projectPath, final String fqName) {
final boolean[] result = new boolean[]{false};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
IProjectHandler handler = MPSPlugin.getInstance().getProjectHandler(projectPath);
if (handler != null) {
handler.openClass(fqName);
result[0] = true;
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
if (ThreadUtils.isInEDT()) {
ApplicationManager.getApplication().executeOnPooledThread(runnable);
} else {
runnable.run();
}
return result[0];
}
@Override
public boolean openMethod(final String projectPath, final String className, final String name, final int parameterCount) {
final boolean[] result = new boolean[]{false};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
IProjectHandler handler = MPSPlugin.getInstance().getProjectHandler(projectPath);
if (handler != null) {
handler.openMethod(className, name, parameterCount);
result[0] = true;
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
if (ThreadUtils.isInEDT()) {
ApplicationManager.getApplication().executeOnPooledThread(runnable);
} else {
runnable.run();
}
return result[0];
}
@Override
public boolean openField(final String projectPath, final String className, final String name) {
final boolean[] result = new boolean[]{false};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
IProjectHandler handler = MPSPlugin.getInstance().getProjectHandler(projectPath);
if (handler != null) {
handler.openField(className, name);
result[0] = true;
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
if (ThreadUtils.isInEDT()) {
ApplicationManager.getApplication().executeOnPooledThread(runnable);
} else {
runnable.run();
}
return result[0];
}
@Override
public boolean openConstructor(final String projectPath, final String className, final int parameterCount) {
final boolean[] result = new boolean[]{false};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
IProjectHandler handler = MPSPlugin.getInstance().getProjectHandler(projectPath);
if (handler != null) {
handler.openConstructor(className, parameterCount);
result[0] = true;
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
if (ThreadUtils.isInEDT()) {
ApplicationManager.getApplication().executeOnPooledThread(runnable);
} else {
runnable.run();
}
return result[0];
}
}