/**
* 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.django.debug.ui.actions;
import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.python.pydev.editor.IOfflineActionWithParameters;
import org.python.pydev.editor.PyEdit;
import org.python.pydev.shared_core.string.StringUtils;
/**
* This action will pass the execution to an actual django command depending on the parameters.
*
* If no parameters, it will use the custom command (which asks for parameters).
* For shell, our custom shell is used.
* For any others, they're passed directly to manage.py.
*/
public class PyDjangoOfflineAction extends Action implements IOfflineActionWithParameters {
private List<String> parameters;
private PyEdit edit;
public PyDjangoOfflineAction(PyEdit edit) {
this.edit = edit;
}
@Override
public void setParameters(List<String> parameters) {
this.parameters = parameters;
}
@Override
public void run() {
DjangoAction djangoAction = null;
if (parameters.size() == 0) {
//if no parameters were passed, use the custom to ask the user the action.
djangoAction = new DjangoCustomCommand();
} else {
if (parameters.size() == 1) {
String parameter = parameters.get(0);
if ("shell".equals(parameter)) {
djangoAction = new DjangoShell();
}
}
if (djangoAction == null) {
djangoAction = new DjangoAction() {
@Override
public void run(IAction action) {
launchDjangoCommand(StringUtils.join(" ", parameters), true);
}
};
}
}
if (djangoAction != null) {
djangoAction.setSelectedProject(edit.getProject());
djangoAction.run(this);
}
}
}