package games.strategy.engine.pbem;
import java.io.File;
import games.strategy.engine.framework.startup.ui.editors.IBean;
/**
* An interface for classes that can post a turn summary, the summary may also include a save game if the
* implementing class supports this.
*/
public interface IForumPoster extends IBean {
/**
* Called when the turn summary should be posted.
*
* @param summary
* the forum summary
* @param subject
* the forum subject
* @return true if the post was successful
*/
boolean postTurnSummary(String summary, final String subject);
/**
* Get the reference to the posted turn summary.
*
* @return the reference string, often a URL
*/
String getTurnSummaryRef();
/**
* Should the summary include the save game. When this is true the client must call addSaveGame prior to calling
* postSummary
*
* @return true if the save game should be included in the summary
*/
boolean getIncludeSaveGame();
/**
* Configure if the save game should be included in the summary post.
*
* @param include
* true if the save game should be included
*/
void setIncludeSaveGame(boolean include);
/**
* Should we also post at the end of combat move.
*
* @return true if the save game should be included in the summary
*/
boolean getAlsoPostAfterCombatMove();
/**
* Configure if we should also post at the end of combat move.
*
* @param postAlso
* true if the save game should be included
*/
void setAlsoPostAfterCombatMove(boolean postAlso);
/**
* Called to add the save game to the summary, this should only be called if getIncludeSaveGame returns true.
*
* @param saveGame
* the save game file
*/
void addSaveGame(File saveGame, String fileName);
/**
* Create a clone of this object.
*
* @return the clone
*/
IForumPoster doClone();
/**
* Returns true if this forum poster supports attaching save games.
*
* @return true if save games are supported
*/
boolean supportsSaveGame();
/**
* Can you view the forum post with this poster.
*/
boolean getCanViewPosted();
/**
* Get the user name to login with.
*/
@Override
String getDisplayName();
/**
* Get the forum id.
*
* @return the forum id
*/
String getTopicId();
/**
* get the user name to login.
*
* @return the user name
*/
String getUsername();
/**
* Get the password to login.
*
* @return the password
*/
String getPassword();
/**
* Set the forum id.
*
* @param forumId
* the new forum id
*/
void setTopicId(String forumId);
/**
* Set the user name.
*
* @param username
* the new user name
*/
void setUsername(String username);
/**
* Set the password.
*
* @param password
* the new password
*/
void setPassword(String password);
/**
* Opens a browser and go to the forum post, identified by the forumId.
*/
void viewPosted();
/**
* Remove any sensitive information, like passwords before this object is saved in as a game properties.
*/
void clearSensitiveInfo();
/**
* Each poster provides a message that is displayed on the progress bar when testing the poster.
*
* @return the progress bar message
*/
String getTestMessage();
}