View Javadoc
1   /*
2    * Copyright 2008 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.sys.document.web;
17  
18  import java.util.List;
19  import java.util.Map;
20  
21  import org.kuali.ole.sys.businessobject.AccountingLine;
22  import org.kuali.ole.sys.document.AccountingDocument;
23  import org.kuali.ole.sys.web.struts.KualiAccountingDocumentFormBase;
24  
25  /**
26   * A contract for classes which wish to provide information about an accounting line which is being rendered
27   */
28  public interface AccountingLineRenderingContext extends RenderableElement {
29      
30      /**
31       * @return the accounting line that would be rendered by the rendering of the given accounting line context
32       */
33      public abstract AccountingLine getAccountingLine();
34      
35      /**
36       * @return the property path from the form to the accounting line returned by the getAccountingLine() method
37       */
38      public abstract String getAccountingLinePropertyPath();
39      
40      /**
41       * @return a List of actions which can be performed on the given line
42       */
43      public abstract List<AccountingLineViewAction> getActionsForLine();
44      
45      /**
46       * Tells callers if fields should render help or not
47       * @return true if fields should render help, false otherwise
48       */
49      public abstract boolean fieldsShouldRenderHelp();
50      
51      /**
52       * Tells callers if dynamic field labels should even be rendered
53       * @return true if dynamic field labels can be labeled, false if they should not be labeled.
54       */
55      public abstract boolean fieldsCanRenderDynamicLabels();
56      
57      /**
58       * Reports whether the tag to be rendered by this rendering context is "new" - ie, not added yet to the accounting group, but living on the form somewhere - or not
59       * @return true if the line is new, false otherwise
60       */
61      public abstract boolean isNewLine();
62      
63      /**
64       * If this is a new line, returns null; if it is a line in a collection, returns the line number within that collection
65       * @return the current line count
66       */
67      public abstract Integer getCurrentLineCount();
68      
69      /**
70       * Returns all the field names for the given accounting line, prefixed by the accounting line property path
71       * @return a list of properly prefixed field names
72       */
73      public abstract List<String> getFieldNamesForAccountingLine();
74      
75      /**
76       * Returns a Map of all values from the request which were unconverted to actuall business objects
77       * @return the Map of unconverted values
78       */
79      public abstract Map getUnconvertedValues();
80      
81      /**
82       * Forces the population of values for all fields used to render the accounting line
83       */
84      public abstract void populateValuesForFields();
85      
86      /**
87       * @return the accounting document that this line to render is part of (or will be, once it is successfully added)
88       */
89      public abstract AccountingDocument getAccountingDocument();
90      
91      /**
92       * Returns the tab state for the given tab key on the current form
93       * @param tabKey the tab key to get the state of
94       * @return the state (either "OPEN" or "CLOSED")
95       */
96      public abstract String getTabState(String tabKey);
97      
98      /**
99       * Increments the tab index on the form this rendering is associated with
100      */
101     public abstract void incrementTabIndex();
102     
103     /**
104      * @return the label of the group this accounting line is part of
105      */
106     public abstract String getGroupLabel();
107     
108     /**
109      * @return the list of errors on the form
110      */
111     public abstract List getErrors();
112     
113     /**
114      * @return the form that the rendered accounting line will be associated with
115      */
116     public abstract KualiAccountingDocumentFormBase getForm();
117     
118     /**
119      * @return the property name of the object that contains the accounting lines
120      */
121     public abstract String getAccountingLineContainingObjectPropertyName();
122     
123     /**
124      * Determines whether a field is modifyable or not
125      * @param fieldName the simple name (that is, the name does not include the collection property) of the field
126      * @return true if the field can be modified, false if the field can only be read
127      */
128     public abstract boolean isFieldModifyable(String fieldName);
129     
130     /**
131      * Determines whether the accounting line is - as a whole line - editable or not
132      * @return true if the line - as a whole line - is editable, false if nothing on the line can be edited
133      */
134     public abstract boolean isEditableLine();
135     
136     /**
137      * Determines whether this line should be allowed to be deleted
138      * @return true if it should be allowed to be deleted, false otherwise
139      */
140     public abstract boolean allowDelete();
141     
142     /**
143      * Makes the line within this accounting line context deletable
144      */
145     public void makeDeletable();
146     
147     /**
148      * @return the number of cells that will actually be rendered (ie, colspans are taken into account)
149      */
150     public int getRenderableCellCount();
151     
152     /**
153      * Gets the rows attribute. 
154      * @return Returns the rows.
155      */
156     public List<AccountingLineTableRow> getRows();
157 }