/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * @author: fabioz * Created: January 2004 */ package org.python.pydev.editor.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextSelection; import org.python.pydev.editor.PyEdit; import org.python.pydev.editor.actions.PyFormatStd.FormatStd; import org.python.pydev.shared_core.actions.LineCommentAction; import org.python.pydev.shared_core.string.TextSelectionUtils; import org.python.pydev.shared_core.structure.Tuple; /** * Creates a bulk comment. Comments all selected lines * * @author Fabio Zadrozny * @author Parhaum Toofanian */ public class PyComment extends PyAction { protected FormatStd std; public PyComment(FormatStd std) { super(); this.std = std; } public PyComment() { this(null); } /** * Grabs the selection information and performs the action. */ @Override public void run(IAction action) { try { if (!canModifyEditor()) { return; } PyEdit pyEdit = getPyEdit(); this.std = pyEdit.getFormatStd(); // Select from text editor IDocument document = pyEdit.getDocumentProvider().getDocument(pyEdit.getEditorInput()); ITextSelection selection = (ITextSelection) pyEdit.getSelectionProvider().getSelection(); TextSelectionUtils ps = new TextSelectionUtils(document, selection); // Perform the action Tuple<Integer, Integer> repRegion = perform(ps); // Put cursor at the first area of the selection pyEdit.selectAndReveal(repRegion.o1, repRegion.o2); } catch (Exception e) { beep(e); } } public Tuple<Integer, Integer> perform(TextSelectionUtils ps) throws BadLocationException { return performComment(ps); } /** * Performs the action with a given PySelection * * @param ps Given PySelection * @return the new selection * @throws BadLocationException */ protected Tuple<Integer, Integer> performComment(TextSelectionUtils ps) throws BadLocationException { LineCommentAction lineCommentAction = new LineCommentAction(ps, "#", this.std.spacesInStartComment); return lineCommentAction.execute(); } }