001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: * $Header:$
018: */
019: package org.apache.beehive.netui.tags.databinding.repeater.pad;
020:
021: import org.apache.beehive.netui.util.internal.InternalStringBuilder;
022:
023: /**
024: * A JavaBean that encapsulates the data needed to pad a Repeater with
025: * text. The PadContext is needed if the given consttraints, the
026: * minRepeat and maxRepeat attributes, require that the data rendered
027: * in the repeater be padded.
028: */
029: public class PadContext {
030:
031: private static final String EMPTY_STRING = "";
032:
033: /**
034: * @exclude
035: */
036: static final int DEFAULT_VALUE = -1;
037:
038: private int _maxRepeat = DEFAULT_VALUE;
039: private int _minRepeat = DEFAULT_VALUE;
040: private String _padText = EMPTY_STRING;
041:
042: /**
043: * @param padText the text that will be used to pad the Repeater content, if necessary
044: * @param minRepeat the minimum number of items that must be rendered in the repeater's body
045: * @param maxRepeat the maximum number of items to render in the repeater's body
046: */
047: public PadContext(String padText, int minRepeat, int maxRepeat) {
048: _padText = (padText != null ? padText : EMPTY_STRING);
049: _minRepeat = minRepeat;
050: _maxRepeat = maxRepeat;
051: }
052:
053: /**
054: * Get the text to use when padding the {@link org.apache.beehive.netui.tags.databinding.repeater.Repeater}
055: *
056: * @return the pad text
057: */
058: public String getPadText() {
059: return _padText;
060: }
061:
062: /**
063: * Get the minimum number of times to render an item in the repeater's body.
064: *
065: * @return the minimum number of items that must be rendered in the repeater's body
066: */
067: public int getMinRepeat() {
068: return _minRepeat;
069: }
070:
071: /**
072: * Get the maximum number of times to render items in the repeater's body.
073: *
074: * @return the maximum number of items to render items in the repeater's body
075: */
076: public int getMaxRepeat() {
077: return _maxRepeat;
078: }
079:
080: /**
081: * @param currCount the count of the number of items rendered.
082: * @return <code>true</code> if the minimum number of items have been rendered; <code>false</code> otherwise
083: */
084: public boolean checkMinRepeat(int currCount) {
085: if (_minRepeat == DEFAULT_VALUE)
086: return true;
087: else if (currCount >= _minRepeat)
088: return true;
089: else
090: return false;
091: }
092:
093: /**
094: * @param currCount the count of the number of items rendered so far
095: * @return <code>true</code> if the maximum number of items have been rendered; <code>false</code> otherwise
096: */
097: public boolean checkMaxRepeat(int currCount) {
098: if (_maxRepeat == DEFAULT_VALUE)
099: return false;
100: else if (currCount < _maxRepeat)
101: return false;
102: else
103: return true;
104: }
105:
106: /**
107: * Get a debugging String that represents a PadContext.
108: *
109: * @return a String representation of the PadContext
110: */
111: public String toString() {
112: InternalStringBuilder buf = new InternalStringBuilder(32);
113: buf.append("\nPadContext: ");
114: buf.append("padText: " + _padText + "\n");
115: buf.append("minRepeat: " + _minRepeat + "\n");
116: buf.append("maxRepeat: " + _maxRepeat + "\n");
117: return buf.toString();
118: }
119: }
|