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