001    /*
002      Copyright (C) 2001-2003 Renaud Pawlak, Laurent Martelli
003      
004      This program is free software; you can redistribute it and/or modify
005      it under the terms of the GNU Lesser General Public License as
006      published by the Free Software Foundation; either version 2 of the
007      License, or (at your option) any later version.
008    
009      This program is distributed in the hope that it will be useful,
010      but WITHOUT ANY WARRANTY; without even the implied warranty of
011      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012      GNU Lesser General Public License for more details.
013    
014      You should have received a copy of the GNU Lesser General Public License
015      along with this program; if not, write to the Free Software
016      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
017    
018    package org.objectweb.jac.aspects.gui;
019    
020    import org.objectweb.jac.core.rtti.ClassItem;
021    
022    
023    
024    /**
025     * This interface is implemented to define different value editors
026     * depending on the type of the value to edit. */
027    
028    public interface FieldEditor extends FieldView {
029    
030        /**
031         * Gets the value of the edited object.
032         *
033         * @return an object of the edited type */
034    
035        Object getValue();
036    
037        /**
038         * Sets wether the editor is embedded in a view.
039         */
040        void setEmbedded(boolean isEmbedded);
041       
042        /**
043         * Called when the focus is given to the editor
044         *
045         * @param extraOption an optional parameter
046         */
047        void onSetFocus(Object extraOption);
048    
049        /**
050         * Commits the changes in this editor. 
051         */
052        void commit();
053    
054        boolean isEnabled();
055        void setEnabled(boolean enabled);
056    
057        /**
058         * Sets the type of the edited value
059         * @param type the type of the edited value
060         */
061        void setEditedType(ClassItem type);
062    }
063