001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php 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 org.kuali.kfs.sys.document.web; 017 018 import java.util.List; 019 import java.util.Map; 020 import java.util.Set; 021 022 import org.kuali.kfs.sys.businessobject.AccountingLine; 023 import org.kuali.kfs.sys.document.service.AccountingLineFieldRenderingTransformation; 024 025 /** 026 * An interface which specifies the behaviors needed from layout elements to join tables 027 */ 028 public interface TableJoining extends ElementNamable{ 029 030 /** 031 * Requests that this layout element property join a number of rows which will make up a table 032 * @param rows the rows to join 033 * @param headerRowCount the number of header rows 034 */ 035 public abstract void joinTable(List<AccountingLineTableRow> rows); 036 037 /** 038 * Requests that this element join a table row 039 * @param headerLabelRow the header row which can be joined 040 * @param row the row which can be joined 041 */ 042 public abstract void joinRow(AccountingLineTableRow headerLabelRow, AccountingLineTableRow row); 043 044 /** 045 * The minimum number of rows this element needs if it is going to join a table 046 * @return the minimum number of rows 047 */ 048 public abstract int getRequestedRowCount(); 049 050 /** 051 * Removes any action blocks from the given element 052 */ 053 public abstract void removeAllActionBlocks(); 054 055 /** 056 * Removes any unviewable blocks within this this table joining element 057 * @param unviewableBlocks a Set of the names of blocks that should not be rendered 058 */ 059 public abstract void removeUnviewableBlocks(Set<String> unviewableBlocks); 060 061 /** 062 * Instructs the element to make any child readOnlyizable blocks named within the given Set to read only 063 * @param readOnlyBlocks the names of blocks to make read only 064 */ 065 public abstract void readOnlyizeReadOnlyBlocks(Set<String> readOnlyBlocks); 066 067 /** 068 * Instructs the element to make any child readOnlyizable blocks named within the given Set to read only 069 * @param readOnlyBlocks the names of blocks to make read only 070 */ 071 public abstract void setEditableBlocks(Set<String> editableBlocks); 072 073 /** 074 * Performs a transformations on any fields this TableJoining layout element knows about 075 * @param accountingDocument the document the field of the accounting line is associated with 076 * @param fieldTransformation a List of field transformations to perform on this element 077 * @param accountingLine the accounting line which is being rendering during the transformation 078 * @param unconvertedValues any unconverted values from the form 079 */ 080 public abstract void performFieldTransformations(List<AccountingLineFieldRenderingTransformation> fieldTransformations, AccountingLine accountingLine, Map unconvertedValues); 081 }