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]; } }