/** condition passed to this module must be subclass of CharacterState */ public boolean startJob(String arguments, Object condition, boolean hiredByName) { hiringCondition = condition; String exp, mexp; if (getExplanationByWhichHired() != null) { exp = getExplanationByWhichHired(); mexp = exp; } else { exp = "Source of Characters (for " + getEmployer().getName() + ")"; mexp = exp; } MesquiteModuleInfo mmi = MesquiteTrunk.mesquiteModulesInfoVector.findModule( mesquite.charMatrices.StoredCharacters.StoredCharacters.class); if (mmi != null && !mmi.isCompatible(condition, getProject(), this)) { if (!MesquiteDialog.useWizards) { exp += "\n\nNOTE: The choice Stored Characters does not appear because there are no appropriate matrices currently defined and stored in the data file or project. "; } } else if (CharacterSource.useStoredAsDefault()) { characterSourceTask = (CharacterObedSource) hireNamedEmployee( CharacterObedSource.class, "#mesquite.charMatrices.StoredCharacters.StoredCharacters", condition); } if (characterSourceTask == null) { if (arguments == null) arguments = MesquiteThread.retrieveAndDeleteHint(this); if (arguments != null) characterSourceTask = (CharacterObedSource) hireNamedEmployee(CharacterObedSource.class, arguments, condition); if (characterSourceTask == null) { if (condition != null) characterSourceTask = (CharacterObedSource) hireCompatibleEmployee(CharacterObedSource.class, condition, exp); else characterSourceTask = (CharacterObedSource) hireEmployee(CharacterObedSource.class, exp); } } if (characterSourceTask == null) return sorry(getName() + " couldn't start because no source of characters was obtained."); charSourceName = new MesquiteString(characterSourceTask.getName()); cstC = makeCommand("setCharacterSource", this); characterSourceTask.setHiringCommand(cstC); if (numModulesAvailable(CharacterObedSource.class) > 1) { mss = addSubmenu(null, mexp, cstC, CharacterObedSource.class); mss.setNameHolder(this); if (condition != null) mss.setCompatibilityCheck(hiringCondition); mss.setSelected(charSourceName); } return true; }
/*.................................................................................................................*/ public Object doCommand(String commandName, String arguments, CommandChecker checker) { if (checker.compare( this.getClass(), "Sets module supplying characters", "[name of module]", commandName, "setCharacterSource")) { CharacterObedSource newCharacterSourceTask; if (hiringCondition != null) newCharacterSourceTask = (CharacterObedSource) replaceCompatibleEmployee( CharacterObedSource.class, arguments, characterSourceTask, hiringCondition); // , "Source of characters" else newCharacterSourceTask = (CharacterObedSource) replaceEmployee( CharacterObedSource.class, arguments, "Source of characters", characterSourceTask); if (newCharacterSourceTask != null) { characterSourceTask = newCharacterSourceTask; characterSourceTask.setHiringCommand(cstC); charSourceName.setValue(characterSourceTask.getName()); resetContainingMenuBar(); parametersChanged(); return characterSourceTask; } else { discreetAlert( "Unable to activate character source \"" + arguments + "\" for use by " + employer.getName()); } } else if (characterSourceTask != null) { // todo: temporary, for snapshot conversions return characterSourceTask.doCommand(commandName, arguments, checker); } else return super.doCommand(commandName, arguments, checker); return null; }
public String getParameters() { if (characterSourceTask == null) return null; return characterSourceTask.getName() + " (" + characterSourceTask.getParameters() + ")"; }