/**
* 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.action.IAction;
import org.eclipse.jface.text.BadLocationException;
import org.python.pydev.core.IIndentPrefs;
import org.python.pydev.core.docutils.PySelection;
import org.python.pydev.editor.PyEdit;
import org.python.pydev.shared_ui.actions.ShiftLeftAction;
/**
* This action was created so that we can make the shift left even if there are less characters in the line than
* the expected indent (the default shift left won't do the dedent in that case).
*/
public class PyShiftLeft extends PyAction {
/**
* Grabs the selection information and performs the action.
*
* Note that setting the rewrite session and undo/redo must be done from the caller.
*/
@Override
public void run(IAction action) {
try {
if (!canModifyEditor()) {
return;
}
PyEdit pyEdit = (PyEdit) getTextEditor();
IIndentPrefs indentPrefs = pyEdit.getIndentPrefs();
PySelection ps = new PySelection(pyEdit);
perform(ps, indentPrefs);
} catch (Exception e) {
beep(e);
}
}
/**
* Performs the action with a given PySelection
*
* @param ps Given PySelection
* @param indentPrefs
* @return the new selection
* @throws BadLocationException
*/
public void perform(PySelection ps, IIndentPrefs indentPrefs) throws BadLocationException {
ShiftLeftAction.perform(ps, indentPrefs.getTabWidth());
}
}