Package reportgen.gui.genepanel.formatpanel.dlg.main

Source Code of reportgen.gui.genepanel.formatpanel.dlg.main.SheetModel$RangeParserSheet

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package reportgen.gui.genepanel.formatpanel.dlg.main;

import java.awt.Window;
import java.util.ArrayList;
import java.util.List;
import reportgen.gui.genepanel.formatpanel.RangeParser;
import reportgen.gui.genepanel.formatpanel.dlg.TableListener;
import reportgen.ren.report.extendedformat.cell.CellValue;
import reportgen.ren.report.extendedformat.range.ColRowRange;
import reportgen.ren.report.extendedformat.range.ColRowRangeList;
import reportgen.ren.report.extendedformat.table.TableFormat;
import reportgen.utils.ReportException;
import simplesheet.model.defaults.SheetModelDefault;
import simplesheet.model.selection.CellPosition;

/**
*
* @author axe
*/
public class SheetModel extends SheetModelDefault {

    private final TableFormat format;
    private final Window parent;
    private final TableListener tableListener;

    public SheetModel(TableFormat format, TableListener tableListener, Window parent) throws ReportException {
        super(format.getRows().getFlat(new ArrayList<ColRowRange>()).size()
                + RangeParserSheet.getDimensions(format.getCols().getList()).height,
                format.getCols().getFlat(new ArrayList<ColRowRange>()).size()
                + RangeParserSheet.getDimensions(format.getRows().getList()).height);

        this.parent = parent;
        this.format = format;
        this.tableListener = tableListener;

        ColRowRangeList colsList = format.getCols();
        ColRowRangeList rowsList = format.getRows();
        RangeParserSheet parser = new RangeParserSheet(colsList.getList(), rowsList.getList(),
                colsList.getFlat(new ArrayList<ColRowRange>()),
                rowsList.getFlat(new ArrayList<ColRowRange>()));
        parser.parse();
    }


    private class RangeParserSheet extends RangeParser<ColRowRange> {

        private RangeParserSheet(List<ColRowRange> cols, List<ColRowRange> rows,
                List<ColRowRange> colsFlat, List<ColRowRange> rowsFlat) {
            super(cols, rows, colsFlat, rowsFlat);
        }

        @Override
        protected void makeCornerCell() {
            CellPosition corner = new CellPosition(0, 0);
            initCell(corner, new CornerCell(parent, format, tableListener));
            if(headHeight > 1 || leftHeadHeight > 1) {
                combine(corner, headHeight, leftHeadHeight);
            }
        }

        @Override
        protected void makeHeadCell(ColRowRange range, int col, int row,
                int colspan, int rowspan) throws ReportException {
            CellPosition corner = new CellPosition(row, col);
            initCell(corner, new RangeCell(parent, range, tableListener));
            if(rowspan > 1 || colspan > 1) {
                combine(corner, rowspan, colspan);
            }
        }

        @Override
        protected void buildRowBody(ColRowRange rowRange, int row, int col)
                throws ReportException {
            //шапка закончена - дорисовываем ячейки
            for(ColRowRange colRange: colsFlat) {
                CellValue cell = format.getCell(colRange, rowRange);
                CellPosition corner = new CellPosition(row, col++);
                initCell(corner, new SheetCell(parent, cell, tableListener));
            }
        }
    }
}
TOP

Related Classes of reportgen.gui.genepanel.formatpanel.dlg.main.SheetModel$RangeParserSheet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.