/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * BasicEditor.java * * Created on 11. August 2004, 14:00 */ package Sirius.navigator.ui.attributes.editor; /** * Basisklasse aller simplen und komplexen Editoren. * * <p>Die Methoden stopEditing() und cancelEditing sollten<br> * a) rekursiv auf allen untergeordneten Editoren aufgerufen werden<br> * und<br> * b) jeweils ein stopEditing bzw. cancelEditing Ereigniss ausl\u00F6sen.<br> * Ein geeignter Listener sollte auf diese Ereginisse reagieren und dementsprechend die Werte der untergeordneten * Objekte setzten.</p> * * @author Pascal * @version $Revision$, $Date$ */ public interface BasicEditor extends BasicContainer { //~ Methods ---------------------------------------------------------------- /** * Eigenschaft f\u00FCr die Spracheinstellung (Locale Objekt). * * @return DOCUMENT ME! */ // public final static String PROPERTY_LOCALE = "locale"; /** * Returns the value contained in the editor. Returns null if no value has been set. * * @return the value contained in the editor */ Object getValue(); /** * Returns the id of the edited object or null if no value has been set. * * @return the id of the edited object */ Object getId(); /** * Asks the editor if it can start editing using <code>anEvent</code>. <code>anEvent</code> is in the invoking * component coordinate system. The editor can not assume the Component returned by <code> * getCellEditorComponent</code> is installed. This method is intended for the use of client to avoid the cost of * setting up and installing the editor component if editing is not possible. If editing can be started this method * returns true. * * @param anEvent the event the editor should use to consider whether to begin editing or not * * @return true if editing can be started * * @see #shouldSelectCell */ boolean isEditable(java.util.EventObject anEvent); /** * Tells the editor to stop editing and accept any partially edited value as the value of the editor. The editor * returns false if editing was not stopped; this is useful for editors that validate and can not accept invalid * entries. * * @return true if editing was stopped; false otherwise */ boolean stopEditing(); /** * Tells the editor to cancel editing and not accept any partially edited value. */ void cancelEditing(); /** * Adds a listener to the list that's notified when the editor stops, or cancels editing. * * @param l the CellEditorListener */ void addEditorListener(EditorListener l); /** * Removes a listener from the list that's notified. * * @param l the CellEditorListener */ void removeEditorListener(EditorListener l); /** * Setzt eine Eigenschaft des Editors, z.B. die Sprache. * * <p>Implementierende Klassen sollten zuerst super.setProperty() aufrufen, der return Wert gibt dann an, ob die * Eigenschaft bereits der Superklasse bekannt war und schon gesetzt wurde.</p> * * @param key Name der Eigenschaft * @param value Wert der Eigenschaft * * @return true, wenn es sich um eine bekannte Eigenschaft gehandelt hat. */ boolean setProperty(String key, Object value); /** * Fragt eine Eigenschaft des Editors ab. * * <p>z.B. die Sprache</p> * * @param key DOCUMENT ME! * * @return Wert der Eigenschaft, oder null * * @key Name der Eigenschaft */ Object getProperty(String key); /** * Gibt an, ob der Wert durch den Editor ver\u00E4ndert wurde. * * <p>Nach dem Aufruf dieser Methode, solle das changed flag automatisch auf false zur\u00FCckgesetzt werden.<br> * . Das changed flag sollte in der Methode stopEditing() auf true gesetzt werden, wenn getComponentValue() einen * neuen Wert liefert.</p> * * @return true, wenn sich der Wert ge\u00E4ndert hat */ boolean isValueChanged(); /** * Gibt an, ob der Wert durch den Editor ver\u00E4ndert wurde. * * <p>Das changed flag sollte in der Methode stopEditing() auf true gesetzt werden, wenn getComponentValue() einen * neuen Wert liefert. Das changed flag sollte durch den parent editor automatisch auf false gesetzt werden (im * editor Listener).<br> * .</p> * * @param valueChanged DOCUMENT ME! */ void setValueChanged(boolean valueChanged); /** * Gibt an, da\u00DF ein neuer Wert durch den Editor hinzugef\u00FCgt wurde. * * <p>Wird nur abgefragt, wenn isChanged() true liefert. Der parent Editor sollte das alte Objekt zur id des child * Editors entfernen, das neue Objekt unter einer neuen negativen is hinzuf\u00FCgen und dem Editor diese neue id * zuweisen.<br> * Auch hier sollte das new flag zur\u00FCckgesetzt werden.</p> * * <p>return true, wenn sich der Wert neu ist</p> * * @return DOCUMENT ME! */ boolean isValueNew(); }