1 /**
2 * Copyright (c) 2012, University of Konstanz, Distributed Systems Group
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the University of Konstanz nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 package org.perfidix.ouput.asciitable;
28
29 /**
30 * @author Sebastian Graf, University of Konstanz
31 */
32 public final class Header extends AbstractTabularComponent {
33
34 /**
35 * Title of the header.
36 */
37 private transient final String title;
38
39 /**
40 * Enclosed char of the header.
41 */
42 private transient final char enclosing;
43
44 /**
45 * Orientation of the title.
46 */
47 private transient final Alignment orientation;
48
49 /**
50 * Constructor.
51 *
52 * @param contentToDisplay
53 * the string to be present in the header row.
54 * @param theEnclosing
55 * a char filling up the rest of the row.
56 * @param theOrientation
57 * the orientation of the text
58 * @param theTable
59 * the parent table.
60 */
61 public Header(final String contentToDisplay, final char theEnclosing, final Alignment theOrientation,
62 final NiceTable theTable) {
63 super(theTable);
64 this.orientation = theOrientation;
65 this.enclosing = theEnclosing;
66
67 this.title = Util.combine(new String(new char[] {
68 enclosing
69 }).toString(), SPACE, contentToDisplay, SPACE, new String(new char[] {
70 enclosing
71 }).toString());
72
73 }
74
75 /**
76 * {@inheritDoc}
77 */
78 @Override
79 public String draw() {
80 return Util.combine(new String(new char[] {
81 AbstractTabularComponent.BORDER
82 }), Util.pad(title, enclosing, getTable().getTotalWidth() - 2, orientation), new String(new char[] {
83 AbstractTabularComponent.BORDER
84 }), NEWLINE);
85
86 }
87
88 }