| 
001 /*002  * Copyright 2008-2015 the original author or authors.
 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 implied.
 013  * See the License for the specific language governing permissions and
 014  * limitations under the License.
 015  */
 016 package griffon.core.mvc;
 017
 018 import griffon.core.Context;
 019 import griffon.core.artifact.GriffonController;
 020 import griffon.core.artifact.GriffonModel;
 021 import griffon.core.artifact.GriffonView;
 022
 023 import javax.annotation.Nonnull;
 024 import javax.annotation.Nullable;
 025 import java.util.Map;
 026
 027 /**
 028  * Defines an MVC group and its contents
 029  *
 030  * @author Andres Almiray
 031  * @since 2.0.0
 032  */
 033 public interface MVCGroup extends MVCHandler {
 034     /**
 035      * Returns the configuration of this group.
 036      *
 037      * @return the configuration used to instantiate this group.
 038      */
 039     @Nonnull
 040     MVCGroupConfiguration getConfiguration();
 041
 042     /**
 043      * Returns the type of this group as set in the application's configuration.
 044      *
 045      * @return the type of the group
 046      */
 047     @Nonnull
 048     String getMvcType();
 049
 050     /**
 051      * Returns the id of the group.
 052      * Ids are used to uniquely identify a group instance.
 053      *
 054      * @return the id of this group.
 055      */
 056     @Nonnull
 057     String getMvcId();
 058
 059     /**
 060      * Returns the Model portion of this group.
 061      *
 062      * @return a GriffonModel instance if the group has a model member, null otherwise
 063      * @throws IllegalStateException if the group has been destroyed already
 064      */
 065     @Nullable
 066     GriffonModel getModel();
 067
 068     /**
 069      * Returns the View portion of this group.
 070      *
 071      * @return a GriffonView instance if the group has a view member, null otherwise
 072      * @throws IllegalStateException if the group has been destroyed already
 073      */
 074     @Nullable
 075     GriffonView getView();
 076
 077     /**
 078      * Returns the Controller portion of this group.
 079      *
 080      * @return a GriffonController instance if the group has a controller member, null otherwise
 081      * @throws IllegalStateException if the group has been destroyed already
 082      */
 083     @Nullable
 084     GriffonController getController();
 085
 086     /**
 087      * Returns the specified member type.
 088      *
 089      * @param name the type of member to retrieve
 090      * @return the selected MVC member if a match is found, null otherwise
 091      * @throws IllegalStateException if the group has been destroyed already
 092      */
 093     @Nullable
 094     Object getMember(@Nonnull String name);
 095
 096     /**
 097      * Returns a read-only view of all instance members.
 098      *
 099      * @return an unmodifiable Map view of all members.
 100      * @throws IllegalStateException if the group has been destroyed already
 101      */
 102     @Nonnull
 103     Map<String, Object> getMembers();
 104
 105     /**
 106      * Destroys the current group.
 107      * <strong>Should only be called once.</strong>
 108      *
 109      * @throws IllegalStateException if the group has been destroyed already
 110      */
 111     void destroy();
 112
 113     /**
 114      * Returns whether this group has been destroyed or not.
 115      *
 116      * @return true if the group has not been destroyed yet, false otherwise
 117      */
 118     boolean isAlive();
 119
 120     @Nonnull
 121     Context getContext();
 122
 123     @Nullable
 124     MVCGroup getParentGroup();
 125 }
 |