package org.radrails.rails.internal.ui.console.commands; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.radrails.rails.internal.ui.console.IRailsShellConstants; import org.radrails.rails.ui.console.RailsShellCommandProvider; import org.rubypeople.rdt.launching.ITerminal; public class ScriptConsoleCommandProvider extends RailsShellCommandProvider { private static final String COMMAND = IRailsShellConstants.SCRIPT_CONSOLE; @Override public Set<String> commandsHandled() { Set<String> commands = new HashSet<String>(); commands.add(COMMAND); return commands; } @Override public List<ICompletionProposal> getCompletionProposals(String prefix, List<String> tokens, int offset) { List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(); String token = getLastToken(prefix, tokens); if (tokens.size() <= 1) { if (!tokens.contains(IRailsShellConstants.SCRIPT_CONSOLE)) { proposals.add(createProposal(IRailsShellConstants.SCRIPT_CONSOLE, "Executes IRB with the context of your Rails application", offset, token)); } } if (tokens.isEmpty()) return proposals; if (!tokens.contains("development") && !tokens.contains("production") && !tokens.contains("test")) { proposals.add(createProposal("development", "Specifies to run under the development environment [Optional]", offset, token)); proposals.add(createProposal("production", "Specifies to run under the production environment", offset, token)); proposals.add(createProposal("test", "Specifies to run under the test environment", offset, token)); } if (!tokens.contains("-s")) proposals.add(createProposal("-s", "Rollback database modifications on exit", offset, token)); return proposals; } @Override public void run(ITerminal shell, String command) { runInNewConsole(shell, command); } @Override public boolean projectNeedsToBeSelected() { return true; } }