package com.bitbakery.plugin.arc.actions; /* * Copyright (c) Kurt Christensen, 2009 * * Licensed under the Artistic License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * * http://www.opensource.org/licenses/artistic-license-2.0.php * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License.. */ import com.bitbakery.plugin.arc.repl.ReplToolWindow; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.VisualPosition; import javax.swing.*; import java.awt.*; /** * Abstract base clas for Arc actions. Provides common functionality. */ public abstract class ArcAction extends AnAction { protected ReplToolWindow getReplToolWindow(AnActionEvent e) { Project project = e.getData(DataKeys.PROJECT); return (ReplToolWindow) project.getComponent("repl.toolWindow"); } protected String getFilePath(AnActionEvent e) { return e.getData(DataKeys.VIRTUAL_FILE).getPath(); } protected Point getCaretPosition(Editor ed) { VisualPosition caret = ed.getCaretModel().getVisualPosition(); Point pt = ed.visualPositionToXY(caret); SwingUtilities.convertPointToScreen(pt, ed.getContentComponent()); return pt; } }