package ru.rsdn.patterns.mvc.view;

import java.util.Collection;

import ru.rsdn.patterns.mvc.controller.AddCommand;
import ru.rsdn.patterns.mvc.controller.RemoveCommand;
import ru.rsdn.patterns.mvc.model.ListModel;
import ru.rsdn.patterns.mvc.model.Model;

/**
 * Представление списка
 * @param
 * <P>
 * свойство модели
 */
public abstract class ListView<P> extends
		AbstractView<ListModel<P>, Collection<Model<P>>> {
	/**
	 * Добавить модель
	 * @param model модель
	 */
	protected void add(Model<P> model) {
		getController().query(new AddCommand<P>(model));
	}

	/**
	 * Добавить модели
	 * @param models модели
	 */
	protected void add(Collection<Model<P>> models) {
		getController().query(new AddCommand<P>(models));
	}

	/**
	 * Удалить модель
	 * @param model модель
	 */
	protected void delete(Model<P> model) {
		getController().query(new RemoveCommand<P>(model));
	}

	/**
	 * Удалить модели
	 * @param models модели
	 */
	protected void delete(Collection<Model<P>> models) {
		getController().query(new RemoveCommand<P>(models));
	}
}