/**
* 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.
*/
package org.python.pydev.editor.actions;
import org.eclipse.jface.text.BadLocationException;
import org.python.pydev.editor.actions.PyFormatStd.FormatStd;
import org.python.pydev.shared_core.string.TextSelectionUtils;
import org.python.pydev.shared_core.structure.Tuple;
/**
* Same toggle comment action as we are used to it in the java perspective
*
* @author e0525580 at student.tuwien.ac.at
* Created from patch: https://sourceforge.net/tracker/?func=detail&atid=577329&aid=1999389&group_id=85796
*/
public class PyToggleComment extends PyUncomment {
public PyToggleComment(FormatStd std) {
super(std);
}
public PyToggleComment() {
this(null);
}
@Override
public Tuple<Integer, Integer> perform(final TextSelectionUtils ps) throws BadLocationException {
ps.selectCompleteLine();
final boolean shouldAddCommentSign = PyToggleComment.allLinesStartWithCommentSign(ps, "#") == false;
if (shouldAddCommentSign) {
return performComment(ps);
} else {
return performUncomment(ps);
}
}
/**
* Checks if all lines start with '#'
*/
private static boolean allLinesStartWithCommentSign(final TextSelectionUtils ps, String commentStart) {
int endLineIndex = ps.getEndLineIndex();
for (int i = ps.getStartLineIndex(), n = endLineIndex; i <= n; i++) {
final String line = ps.getLine(i);
if (line.trim().startsWith(commentStart) == false) {
return false;
}
}
return true;
}
}