home *** CD-ROM | disk | FTP | other *** search
- package printplugin;
-
- import java.awt.Font;
- import java.awt.print.PageFormat;
-
- public class ChannelPageRenderer implements PageRenderer {
- static int COLUMN_WIDTH = 180;
- private PageFormat mPageFormat;
- private int mColumnsPerPage;
- private int mStartHour;
- private int mEndHour;
- private ProgramIconSettings mProgramIconSettings;
- public static final Font HEADER_FONT = new Font("Dialog", 1, 32);
- public static final Font FOOTER_FONT = new Font("Dialog", 2, 6);
- public static final Font COL_HEADER_FONT = new Font("Dialog", 1, 18);
-
- public ChannelPageRenderer(PageFormat pageFormat, int columnsPerPage, int startHour, int endHour, ProgramIconSettings programIconSettings) {
- this.mPageFormat = pageFormat;
- this.mColumnsPerPage = columnsPerPage;
- this.mProgramIconSettings = programIconSettings;
- this.mStartHour = startHour;
- this.mEndHour = endHour;
- }
-
- private ColumnModel[] getColumns(PageModel model, int fromInx, int cnt) {
- ColumnModel[] result = new ColumnModel[cnt];
-
- for(int i = fromInx; i < fromInx + cnt; ++i) {
- result[i - fromInx] = model.getColumnAt(i);
- }
-
- return result;
- }
-
- public Page[] createPages(PageModel model) {
- int colCnt = model.getColumnCount();
- int numberOfPages;
- if (colCnt == 0) {
- numberOfPages = 0;
- } else {
- numberOfPages = (colCnt - 1) / this.mColumnsPerPage + 1;
- }
-
- Page[] result = new Page[numberOfPages];
-
- for(int i = 0; i < result.length; ++i) {
- int fromInx = i * this.mColumnsPerPage;
- int inxCnt = this.mColumnsPerPage;
- if (fromInx + inxCnt > colCnt) {
- inxCnt = colCnt - fromInx;
- }
-
- ColumnModel[] cols = this.getColumns(model, fromInx, inxCnt);
- result[i] = new ChannelPage(this, cols, this.mPageFormat, this.mColumnsPerPage, model.getHeader(), model.getFooter(), this.mStartHour, this.mEndHour, this.mProgramIconSettings);
- }
-
- return result;
- }
- }
-