00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.commands;
00023
00024 import com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection;
00025 import com.realtime.crossfire.jxclient.settings.options.CheckBoxOption;
00026 import com.realtime.crossfire.jxclient.settings.options.OptionException;
00027 import com.realtime.crossfire.jxclient.settings.options.OptionManager;
00028 import com.realtime.crossfire.jxclient.util.Patterns;
00029 import org.jetbrains.annotations.NotNull;
00030
00035 public class SetCommand extends AbstractCommand {
00036
00040 @NotNull
00041 private final OptionManager optionManager;
00042
00048 public SetCommand(@NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final OptionManager optionManager) {
00049 super("set", crossfireServerConnection);
00050 this.optionManager = optionManager;
00051 }
00052
00056 @Override
00057 public boolean allArguments() {
00058 return false;
00059 }
00060
00064 @Override
00065 public void execute(@NotNull final String args) {
00066 final String[] tmp = Patterns.PATTERN_WHITESPACE.split(args, 2);
00067 if (tmp.length != 2) {
00068 drawInfoError("The set command needs two arguments: set <option> <value>");
00069 return;
00070 }
00071
00072 final String optionName = tmp[0];
00073 final String optionArgs = tmp[1];
00074 final CheckBoxOption option;
00075 try {
00076 option = optionManager.getCheckBoxOption(optionName);
00077 } catch (final OptionException ex) {
00078 drawInfoError(ex.getMessage());
00079 return;
00080 }
00081
00082 final boolean checked;
00083 if (optionArgs.equals("on")) {
00084 checked = true;
00085 } else if (optionArgs.equals("off")) {
00086 checked = false;
00087 } else {
00088 drawInfoError("The '"+optionArgs+"' for option '"+optionName+"' is invalid. Valid arguments are 'on' or 'off'.");
00089 return;
00090 }
00091
00092 option.setChecked(checked);
00093 }
00094
00095 }