1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.ahat; 18 19 import java.util.List; 20 21 /** 22 * An interface for rendering a page of content to the user. 23 */ 24 interface Doc extends AutoCloseable { 25 /** 26 * Output the title of the page. 27 */ title(String format, Object... args)28 void title(String format, Object... args); 29 30 /** 31 * Print a line of text for a page menu. 32 */ menu(DocString string)33 void menu(DocString string); 34 35 /** 36 * Start a new section with the given title. 37 */ section(String title)38 void section(String title); 39 40 /** 41 * Print a line of text in a normal font. 42 */ println(DocString string)43 void println(DocString string); 44 45 /** 46 * Print a line of text in a large font that is easy to see and click on. 47 */ big(DocString string)48 void big(DocString string); 49 50 /** 51 * Start a table with the given columns. 52 * 53 * An IllegalArgumentException is thrown if no columns are provided. 54 * 55 * This should be followed by calls to the 'row' method to fill in the table 56 * contents and the 'end' method to end the table. 57 */ table(Column... columns)58 void table(Column... columns); 59 60 /** 61 * Start a table with the following heading structure: 62 * | description | c2 | c3 | ... | 63 * | h1 | h2 | ... | | | | 64 * 65 * Where subcols describes h1, h2, ... 66 * and cols describes c2, c3, ... 67 * 68 * This should be followed by calls to the 'row' method to fill in the table 69 * contents and the 'end' method to end the table. 70 */ table(DocString description, List<Column> subcols, List<Column> cols)71 void table(DocString description, List<Column> subcols, List<Column> cols); 72 73 /** 74 * Add a row to the currently active table. 75 * The number of values must match the number of columns provided for the 76 * currently active table. 77 */ row(DocString... values)78 void row(DocString... values); 79 80 /** 81 * Start a new description list. 82 * 83 * This should be followed by calls to description() and finally a call to 84 * end(). 85 */ descriptions()86 void descriptions(); 87 88 /** 89 * Add a description to the currently active description list. 90 */ description(DocString key, DocString value)91 void description(DocString key, DocString value); 92 93 /** 94 * End the currently active table or description list. 95 */ end()96 void end(); 97 } 98