package eu.dnetlib.client.updaters;

import eu.dnetlib.efg1914.authoring.components.Configuration;
import eu.dnetlib.efg1914.authoring.components.Frame;
import eu.dnetlib.efg1914.authoring.components.Item;
import eu.dnetlib.efg1914.authoring.components.Theme;
import eu.dnetlib.efg1914.authoring.components.Topic;
import eu.dnetlib.efg1914.authoring.users.User;

/**
 * @author Eri
 * 
 */
public interface LayoutUpdater {

	/**
	 * Updated GUI layout with a new @item created by @userId. @IsLocal
	 * specifies if the item has been created locally by the current user , or
	 * has been received by the notification service.
	 * 
	 * @param userId
	 * @param item
	 * @param isLocal
	 */
	public void addNewItem(String userId, Item item, boolean isLocal);

	public void removeDeletedItem(String userId, Item item, boolean isLocal);

	public void updateItem(String userId, Item item, boolean isLocal, boolean inUse);

	public void addNewFrame(String userId, Frame frame, boolean isLocal);

	public void removeDeletedFrame(String userId, Frame frame, boolean isLocal);

	public void updateFrame(String userId, Frame updatedFrame, boolean isLocal, boolean inUse);

	public void addNewTopic(String userId, Topic topic, boolean isLocal);

	public void updateTopic(String userId, Topic updatedTopic, boolean isLocal, boolean inUse);

	public void removeDeletedTopic(String userId, Topic topic, boolean isLocal);

	public void addNewTheme(String userId, Theme theme, boolean isLocal);

	public void updateTheme(String userId, Theme updatedTheme, boolean isLocal, boolean inUse);

	public void deleteTheme(String userId, Theme deletedTheme, boolean isLocal);

	public void addNewUser(String userId, User user, boolean isLocal);

	public void removeDeletedUser(String userId, String userToRemoveId, boolean isLocal);

	public void updateUser(String userId, User user, boolean isLocal, boolean inUse);

	public void setLocked(String componentId, boolean isLocked, String UserId);

	public void setPublished(String userId, String componentId, boolean isPublished);
		
	public void updateConfiguration(String userId, Configuration configuration, boolean isLocal);

	public void itemFails(boolean isLocal);
	public void frameFails(boolean isLocal) ;

	public void topicFails(boolean isLocal) ;

	public void themeFails(boolean isLocal) ;
	public void usersFails(boolean isLocal) ;

	public void configurationFails(boolean isLocal);



}