View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.sys.document.web;
20  
21  import java.util.List;
22  import java.util.Map;
23  import java.util.Set;
24  
25  import org.kuali.kfs.sys.businessobject.AccountingLine;
26  import org.kuali.kfs.sys.document.service.AccountingLineFieldRenderingTransformation;
27  
28  /**
29   * Abstract class which contains functionality of table joining layout elements that will eventually render fields
30   */
31  public abstract class FieldTableJoining implements TableJoining, RenderableElement {
32  
33      /**
34       * Always returns 1 - any field can live within 1 row.
35       * @see org.kuali.kfs.sys.document.web.AccountingLineViewRenderableElement#getRequestedRowCount()
36       */
37      public int getRequestedRowCount() {
38          return 1;
39      }
40  
41      /**
42       * Creates a table cell that encapsulates this field
43       * @return the created table cell
44       */
45      protected AccountingLineTableCell createTableCell() {
46          AccountingLineTableCell cell = new AccountingLineTableCell();
47          cell.addRenderableElement(this);
48          return cell;
49      }
50  
51      /**
52       * @see org.kuali.kfs.sys.document.web.AccountingLineViewRenderableElement#joinTable(java.util.List)
53       */
54      public void joinTable(List<AccountingLineTableRow> rows) {
55          AccountingLineTableCell cell = createTableCell();
56          cell.setRowSpan(rows.size());
57          rows.get(0).addCell(cell);
58      }
59  
60      /**
61       * @see org.kuali.kfs.sys.document.web.TableJoining#removeAllActionBlocks()
62       */
63      public void removeAllActionBlocks() {
64          // do nothing - fields don't really have child action blocks (and action blocks which 
65          // extend this method can't really do much of anything)
66      }
67  
68      /**
69       * Default: assumes the field is not hidden
70       * @see org.kuali.kfs.sys.document.web.RenderableElement#isHidden()
71       */
72      public boolean isHidden() {
73          return false;
74      }
75  
76      /**
77       * We're going to go out on a limb and bet that this isn't an action block
78       * @see org.kuali.kfs.sys.document.web.RenderableElement#isActionBlock()
79       */
80      public boolean isActionBlock() {
81          return false;
82      }
83  
84      /**
85       * Joins ths field to the header row, spans the regular row
86       * @see org.kuali.kfs.sys.document.web.TableJoining#joinRow(org.kuali.kfs.sys.document.web.AccountingLineTableRow, org.kuali.kfs.sys.document.web.AccountingLineTableRow)
87       */
88      public void joinRow(AccountingLineTableRow headerLabelRow, AccountingLineTableRow row) {
89          AccountingLineTableCell cell = createTableCell();
90          cell.setRowSpan(2);
91          headerLabelRow.addCell(cell);
92      }
93  
94      /**
95       * This is a field.  It's never empty.
96       * @see org.kuali.kfs.sys.document.web.RenderableElement#isEmpty()
97       */
98      public boolean isEmpty() {
99          return false;
100     }
101 
102     /**
103      * This method really doesn't do much - it assumes there are no child fields to remove
104      * @see org.kuali.kfs.sys.document.web.TableJoining#removeUnviewableBlocks()
105      */
106     public void removeUnviewableBlocks(Set<String> unviewableBlocks) {
107         // take a nap
108     }
109     
110     /**
111      * Sets this to read only if possible
112      * @see org.kuali.kfs.sys.document.web.TableJoining#readOnlyizeReadOnlyBlocks(java.util.Set)
113      */
114     public void readOnlyizeReadOnlyBlocks(Set<String> readOnlyBlocks) {
115         if (this instanceof ReadOnlyable && readOnlyBlocks.contains(getName())) {
116             ((ReadOnlyable)this).readOnlyize();
117         }
118     }
119     
120     /**
121      * @see org.kuali.kfs.sys.document.web.TableJoining#setEditableBlocks(java.util.Set)
122      */
123     public void setEditableBlocks(Set<String> editableBlocks) {
124         if (this instanceof ReadOnlyable && editableBlocks.contains(getName())) {
125             ((ReadOnlyable)this).setEditable();
126         }
127     }
128 
129     /**
130      * @see org.kuali.kfs.sys.document.web.TableJoining#performFieldTransformation(org.kuali.kfs.sys.document.service.AccountingLineFieldRenderingTransformation, org.kuali.kfs.sys.businessobject.AccountingLine, java.util.Map, java.util.Map)
131      */
132     public void performFieldTransformations(List<AccountingLineFieldRenderingTransformation> fieldTransformations, AccountingLine accountingLine, Map unconvertedValues) {
133         // don't do nothing - we don't have no child fields        
134     }
135     
136 }