Crossfire JXClient, Trunk  R20561
AgainCommand.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff.
19  * Copyright (C) 2006-2011 Andreas Kirschbaum.
20  */
21 
22 package com.realtime.crossfire.jxclient.commands;
23 
27 import org.jetbrains.annotations.NotNull;
28 
33 public class AgainCommand extends AbstractCommand {
34 
38  @NotNull
40 
44  @NotNull
46 
54  public AgainCommand(@NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final CommandExecutor commandExecutor, @NotNull final CommandHistory commandHistory) {
55  super("again", crossfireServerConnection);
56  this.commandExecutor = commandExecutor;
57  this.commandHistory = commandHistory;
58  }
59 
63  @Override
64  public boolean allArguments() {
65  return false;
66  }
67 
71  @Override
72  public void execute(@NotNull final String args) {
73  if (!args.isEmpty()) {
74  drawInfoError("The 'again' command does not take any arguments.");
75  return;
76  }
77 
78  int index = 0;
79  while (true) {
80  final CharSequence command = commandHistory.last(index);
81  if (command == null) {
82  drawInfoError("There is no command to repeat.");
83  return;
84  }
85 
86  if (!command.equals("again")) {
87  commandExecutor.executeCommand(command);
88  return;
89  }
90 
91  index++;
92  }
93  }
94 
95 }
Abstract base class for Command implementations.
void executeCommand(@NotNull final CharSequence commandLine)
Executes a command or a list of commands.
void drawInfoError(@NotNull final String message)
Displays an error message.
final CrossfireServerConnection crossfireServerConnection
The connection instance.
CharSequence last(final int index)
Returns the last executed command.
final CommandHistory commandHistory
The CommandHistory for determining the command to execute.
AgainCommand(@NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final CommandExecutor commandExecutor, @NotNull final CommandHistory commandHistory)
Creates a new instance.
boolean allArguments()
Returns whether all remaining commands should be included as arguments.whether all remaining commands...
final CommandExecutor commandExecutor
The CommandExecutor for executing the commands.
void execute(@NotNull final String args)
Executes the command with the given arguments.the command arguments
Manages a list of previously entered commands.
Adds encoding/decoding of crossfire protocol packets to a ServerConnection.