package editor.core; import java.util.Map; import java.util.TreeMap; import java.util.List; import java.util.Iterator; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; /** * Form editor: allows the creation and manipulation of graphical forms such as * squares, circles, and lines. Forms can be created, moved, and deleted. * * @author Programação com Objectos * @version 3.1 */ public class Editor { /** * The forms held by the editor indexed by unique identifier. */ private Map<Integer, Form> _formsMap = new TreeMap<Integer, Form>(); /** * The forms held by the editor ordered by insertion time. */ private List<Form> _forms = new ArrayList<Form>(); /** * Give each form an unique identifier. */ private int _nextId; /** * Add a form. * * @param the form to add. * * @return the added form's id. */ public final int addForm(Form f) { int id = ++_nextId; _formsMap.put(id, f); _forms.add(f); return id; } /** * Get a form given its identifier. * * @param id the form's identifier. * * @return the form with the given identifier, or null if the form does not * exist. */ public final Form getForm(int id) { return _formsMap.get(id); // eficcient way } /** * Check whether a form exists (given an identifier). * * @param id the identifier to check. * * @return true, if the form exists; false, otherwise. */ public final boolean formExists(int id) { return _formsMap.containsKey(id); } /** * Collection of all the forms held by the editor. * * @return the collection of forms of this editor ordered by insertion order. */ public Collection<Form> getForms() { return Collections.unmodifiableCollection(_forms); } /** * Remove a given form (by id). * * @param id the identifier of the form to be removed. * @return true if the editor contains a from with the specified identifier, false otherwise */ public boolean remove(int id) { Form form = _formsMap.remove(id); if (form == null) return false; _forms.remove(form); return true; } }