001    /*
002     * Copyright 2005 Stephen McConnell
003     *
004     * Licensed  under the  Apache License,  Version 2.0  (the "License");
005     * you may not use  this file  except in  compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *   http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed  under the  License is distributed on an "AS IS" BASIS,
012     * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
013     * implied.
014     *
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    
019    package net.dpml.transit.model;
020    
021    import java.rmi.RemoteException;
022    
023    /**
024     * A LayoutModel maintains information about the configuration
025     * of a host or cache layout.
026     *
027     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
028     * @version 1.1.0
029     */
030    public interface LayoutModel extends CodeBaseModel
031    {
032       /**
033        * Return the immutable model identifier.
034        * @return the resolver identifier
035        * @exception RemoteException if a remote exception occurs
036        */
037        String getID() throws RemoteException;
038    
039       /**
040        * Return a possibly null classname.  If the classname is not null the 
041        * manager represents a bootstrap layout model.
042        *
043        * @return the layout classname
044        * @exception RemoteException if a remote exception occurs
045        */
046        String getClassname() throws RemoteException;
047    
048       /**
049        * Returns the title of the layout model.
050        * @return the layout human readable title
051        * @exception RemoteException if a remote exception occurs
052        */
053        public String getTitle() throws RemoteException;
054    
055       /**
056        * Add a layout model listener.
057        * @param listener the listener to add
058        * @exception RemoteException if a remote exception occurs
059        */
060        void addLayoutListener( LayoutListener listener ) throws RemoteException;
061    
062       /**
063        * Remove a layout model listener from the model.
064        * @param listener the listener to remove
065        * @exception RemoteException if a remote exception occurs
066        */
067        void removeLayoutListener( LayoutListener listener ) throws RemoteException;
068    
069    }