package krasa.mavenhelper.analyzer.action; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenArtifactNode; import org.jetbrains.idea.maven.project.MavenProject; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.KeyboardShortcut; import com.intellij.openapi.actionSystem.Shortcut; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.project.Project; import com.intellij.pom.Navigatable; import com.intellij.ui.KeyStrokeAdapter; /** * @author Vojtech Krasa */ public class JumpToSourceAction extends BaseAction { public JumpToSourceAction(Project project, MavenProject mavenProject, MavenArtifactNode myTreeNode) { super(project, mavenProject, myTreeNode, getLabel()); } @NotNull private static String getLabel() { Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts("EditSource"); if (shortcuts.length > 0) { Shortcut shortcut = shortcuts[0]; if (shortcut.isKeyboard()) { KeyboardShortcut key = (KeyboardShortcut) shortcut; String s = KeyStrokeAdapter.toString(key.getFirstKeyStroke()); if (s != null) { return "Jump To Source [" + s.toUpperCase() + "]"; } } } return "Jump To Source"; } @Override public void actionPerformed(AnActionEvent e) { final Navigatable navigatable = getNavigatable(myArtifact, myProject, myMavenProject); if (navigatable != null && navigatable.canNavigate()) { navigatable.navigate(true); } else { final Notification notification = new Notification(MAVEN_HELPER_DEPENDENCY_ANALYZER_NOTIFICATION, "", "Parent dependency not found, strange...", NotificationType.WARNING); ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { Notifications.Bus.notify(notification, myProject); } }); } } }