package jsettlers.mapcreator.control; import java.util.Date; import jsettlers.algorithms.previewimage.PreviewImageCreator; import jsettlers.logic.map.loading.newmap.MapFileHeader; import jsettlers.mapcreator.data.MapData; import jsettlers.mapcreator.mapvalidator.MapValidator; /** * Base class for editor control, handle property access / notification * * @author Andreas Butti * */ public abstract class EditorControlBase { /** * Validates the map for errors */ protected final MapValidator validator = new MapValidator(); /** * Map data */ protected MapData mapData; /** * Header of the current open map */ private MapFileHeader header; /** * Constructor */ public EditorControlBase() { } /** * Generate new map header * * @return New header */ protected MapFileHeader generateMapHeader() { short[] image = new PreviewImageCreator(header.getWidth(), header.getHeight(), MapFileHeader.PREVIEW_IMAGE_SIZE, mapData.getPreviewImageDataSupplier()).getPreviewImage(); MapFileHeader imagedHeader = new MapFileHeader(header.getType(), header.getName(), header.getBaseMapId(), header.getDescription(), header.getWidth(), header.getHeight(), header.getMinPlayers(), header.getMaxPlayers(), new Date(), image); return imagedHeader; } /** * Create a new header with a given name * * @param name * Name */ protected void createNewHeaderWithName(String name) { setHeader(new MapFileHeader(header.getType(), name, null, header.getDescription(), header.getWidth(), header.getHeight(), header.getMinPlayers(), header.getMaxPlayers(), new Date(), header.getPreviewImage().clone())); } /** * @param header * Header of the current open map */ public void setHeader(MapFileHeader header) { this.header = header; validator.setHeader(header); } /** * @return Header of the current open map */ public MapFileHeader getHeader() { return header; } }