001: /*
002: * Copyright 2005 Paul Hinds
003: *
004: * Licensed under the Apache 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.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,
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.tp23.antinstaller.renderer.text;
017:
018: import java.io.BufferedReader;
019: import java.io.IOException;
020: import java.io.PrintStream;
021:
022: import org.tp23.antinstaller.InstallException;
023: import org.tp23.antinstaller.InstallerContext;
024: import org.tp23.antinstaller.page.Page;
025: import org.tp23.antinstaller.renderer.AIResourceBundle;
026: import org.tp23.antinstaller.renderer.PageRenderer;
027:
028: /**
029: * renamed from TextPageRenderer in version 0.8 to enable
030: * the use of the page type TextPage, TextPageRenderer is now
031: * the renderer for these page types
032: * @author teknopaul
033: *
034: */
035: public abstract class AbstractTextPageRenderer implements PageRenderer {
036:
037: public static final int PAGE_BLANK_LINES = 20;
038: public static final int PAGE_DECO_WIDTH = 80;
039:
040: protected BufferedReader reader;
041: protected PrintStream out;
042: private InstallerContext ctx;
043:
044: public AbstractTextPageRenderer() {
045: }
046:
047: public void setContext(InstallerContext ctx) {
048: this .ctx = ctx;
049: }
050:
051: public InstallerContext getContext() {
052: return ctx;
053: }
054:
055: public void init(BufferedReader reader, PrintStream out) {
056: this .out = out;
057: this .reader = reader;
058: }
059:
060: /**
061: *
062: * @param page Page
063: * @throws InstallException
064: * @return boolean false implys user aborted
065: */
066: public abstract boolean renderPage(Page page)
067: throws InstallException;
068:
069: protected void printHeader(Page page) throws IOException {
070: for (int i = 0; i < PAGE_BLANK_LINES; i++) {
071: out.println();
072: }
073:
074: for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
075: out.print('~');
076: }
077: out.println();
078: out.println(" " + page.getDisplayText());
079: for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
080: out.print('~');
081: }
082: out.println();
083: out.println();
084: out.println();
085: }
086:
087: private static final AIResourceBundle res = new AIResourceBundle();
088: private static final char[] affimativeChars = parseChars(res
089: .getString("affirmative.chars"));
090:
091: private static char[] parseChars(String commaSeparated) {
092: char[] input = commaSeparated.toCharArray();
093: char[] theChars = new char[input.length];
094: int j = 0;
095: for (int i = 0; i < input.length; i++) {
096: if (Character.isWhitespace(input[i]))
097: continue;
098: if (',' == input[i]) {
099: continue;
100: } else
101: theChars[j++] = input[i];
102: }
103: char[] toReturn = new char[j];
104: System.arraycopy(theChars, 0, toReturn, 0, j);
105: return toReturn;
106: }
107:
108: /**
109: * does the string represent true default = true
110: * @param entered String
111: * @return boolean
112: */
113: protected boolean isTrue(String entered) {
114: if (entered.length() == 0) {
115: return true;
116: }
117: char first = entered.charAt(0);
118: boolean isTrue = false;
119: for (int i = 0; i < affimativeChars.length; i++) {
120: isTrue |= Character.toUpperCase(first) == affimativeChars[i];
121: }
122: return isTrue;
123: }
124: }
|