001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * 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, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.binding.form; 017 018 /** 019 * Sub-interface implemented by form models that can be part of a form model 020 * hierarchy. 021 * <p> 022 * In a HierarchicalFormModel: 023 * <ul> 024 * <li>the enabled state of the parent is inherited by the children. So if the 025 * parent is disabled then the child is also disabled; however if the child is 026 * disabled the parent might not be disabled. 027 * <li>the dirty state of the chidren is inherited by the parent. So if one or 028 * more of the children are dirty then the parent is also dirty. However if the 029 * parent is dirty the children my not be. 030 * <li>the readOnly state of the parent is inherited by the children. If the 031 * parent is readOnly, all children are readOnly as well. However a child may be 032 * readOnly while the parent is not. 033 * </ul> 034 * 035 * @author Oliver Hutchison 036 */ 037 public interface HierarchicalFormModel extends FormModel { 038 039 /** 040 * Returns the parent form model or null of there is none. 041 */ 042 HierarchicalFormModel getParent(); 043 044 /** 045 * Returns an array of child form models. 046 */ 047 FormModel[] getChildren(); 048 049 /** 050 * Sets the parent form model. 051 */ 052 void setParent(HierarchicalFormModel parent); 053 054 /** 055 * Remove the parent form model 056 */ 057 void removeParent(); 058 059 /** 060 * Adds a new child to the form model. The child form model will have it's 061 * parent set to this. 062 */ 063 void addChild(HierarchicalFormModel child); 064 065 /** 066 * Removes a child from this form model. 067 */ 068 void removeChild(HierarchicalFormModel child); 069 }