Example usage for org.apache.poi.ss.usermodel IndexedColors ROSE

List of usage examples for org.apache.poi.ss.usermodel IndexedColors ROSE

Introduction

In this page you can find the example usage for org.apache.poi.ss.usermodel IndexedColors ROSE.

Prototype

IndexedColors ROSE

To view the source code for org.apache.poi.ss.usermodel IndexedColors ROSE.

Click Source Link

Usage

From source file:com.globalsight.everest.webapp.pagehandler.administration.reports.generator.ImplementedCommentsCheckReportGenerator.java

License:Apache License

private CellStyle getRedRightStyle(Workbook p_workbook) throws Exception {
    CellStyle style = p_workbook.createCellStyle();
    Font font = p_workbook.createFont();
    if (hightLightRightStyle == null) {
        font.setBoldweight(Font.BOLDWEIGHT_BOLD);
        font.setColor(IndexedColors.BLACK.getIndex());
        font.setUnderline(Font.U_NONE);
        font.setFontName("Arial");
        font.setFontHeightInPoints((short) 10);

        style.setWrapText(true);/*from www  .j  ava  2 s.  c  o m*/
        style.setAlignment(CellStyle.ALIGN_RIGHT);
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        style.setFillForegroundColor(IndexedColors.ROSE.getIndex());
        hightLightRightStyle = style;
    }

    return hightLightRightStyle;
}

From source file:com.globalsight.everest.webapp.pagehandler.administration.reports.generator.ImplementedCommentsCheckReportGenerator.java

License:Apache License

private CellStyle getRedStyle(Workbook p_workbook) throws Exception {
    CellStyle style = p_workbook.createCellStyle();
    Font font = p_workbook.createFont();
    if (hightLightStyle == null) {
        font.setBoldweight(Font.BOLDWEIGHT_BOLD);
        font.setColor(IndexedColors.BLACK.getIndex());
        font.setUnderline(Font.U_NONE);
        font.setFontName("Arial");
        font.setFontHeightInPoints((short) 10);

        style.setWrapText(true);/*from   w  ww .j a v a  2 s  .c  o m*/
        style.setAlignment(CellStyle.ALIGN_LEFT);
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        style.setFillForegroundColor(IndexedColors.ROSE.getIndex());
        hightLightStyle = style;
    }

    return hightLightStyle;
}

From source file:com.globalsight.everest.webapp.pagehandler.administration.reports.generator.ScorecardReportGenerator.java

License:Apache License

private CellStyle getUnder3Style(Workbook p_workbook) {
    if (under3Style == null) {
        Font font = p_workbook.createFont();
        font.setColor(IndexedColors.BLACK.getIndex());
        font.setUnderline(Font.U_NONE);
        font.setFontName("Arial");
        font.setFontHeightInPoints((short) 9);

        CellStyle cs = p_workbook.createCellStyle();
        cs.setFont(font);//from   ww w.  jav a 2 s.com
        cs.setWrapText(true);
        cs.setFillPattern(CellStyle.SOLID_FOREGROUND);
        cs.setFillForegroundColor(IndexedColors.ROSE.getIndex());
        cs.setBorderTop(CellStyle.BORDER_THIN);
        cs.setBorderRight(CellStyle.BORDER_THIN);
        cs.setBorderBottom(CellStyle.BORDER_THIN);
        cs.setBorderLeft(CellStyle.BORDER_THIN);
        cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

        under3Style = cs;
    }

    return under3Style;
}

From source file:guru.qas.martini.report.DefaultState.java

License:Apache License

public void colorRowsByStatus() {
    Map<String, Collection<Cell>> statusMap = statii.asMap();
    for (Map.Entry<String, Collection<Cell>> mapEntry : statusMap.entrySet()) {
        String status = mapEntry.getKey();

        Short color = null;//from   w ww .  j a va2s. com
        switch (status) {
        case "SKIPPED":
            color = IndexedColors.TAN.getIndex();
            break;
        case "PASSED":
            color = IndexedColors.LIME.getIndex();
            break;
        case "FAILED":
            color = IndexedColors.ROSE.getIndex();
            break;
        }

        if (null != color) {
            Collection<Cell> statusCells = mapEntry.getValue();
            colorRows(color, statusCells);
        }
    }
}

From source file:org.alanwilliamson.openbd.plugin.spreadsheet.SpreadSheetFormatOptions.java

License:Open Source License

public static void initialize() {
    lookup_colors = new HashMap<String, Short>();
    lookup_alignment = new HashMap<String, Short>();
    lookup_border = new HashMap<String, Short>();
    lookup_fillpatten = new HashMap<String, Short>();
    lookup_underline = new HashMap<String, Byte>();
    lookup_color = new HashMap<String, Color>();

    lookup_underline.put("double", Font.U_DOUBLE);
    lookup_underline.put("double_accounting", Font.U_DOUBLE_ACCOUNTING);
    lookup_underline.put("single", Font.U_SINGLE);
    lookup_underline.put("single_accounting", Font.U_SINGLE_ACCOUNTING);
    lookup_underline.put("none", Font.U_NONE);

    lookup_colors.put("black", IndexedColors.BLACK.getIndex());
    lookup_colors.put("brown", IndexedColors.BROWN.getIndex());
    lookup_colors.put("olive_green", IndexedColors.OLIVE_GREEN.getIndex());
    lookup_colors.put("dark_green", IndexedColors.DARK_GREEN.getIndex());
    lookup_colors.put("dark_teal", IndexedColors.DARK_TEAL.getIndex());
    lookup_colors.put("dark_blue", IndexedColors.DARK_BLUE.getIndex());
    lookup_colors.put("indigo", IndexedColors.INDIGO.getIndex());
    lookup_colors.put("grey_80_percent", IndexedColors.GREY_80_PERCENT.getIndex());
    lookup_colors.put("grey_50_percent", IndexedColors.GREY_50_PERCENT.getIndex());
    lookup_colors.put("grey_40_percent", IndexedColors.GREY_40_PERCENT.getIndex());
    lookup_colors.put("grey_25_percent", IndexedColors.GREY_25_PERCENT.getIndex());
    lookup_colors.put("orange", IndexedColors.ORANGE.getIndex());
    lookup_colors.put("dark_yellow", IndexedColors.DARK_YELLOW.getIndex());
    lookup_colors.put("green", IndexedColors.GREEN.getIndex());
    lookup_colors.put("teal", IndexedColors.TEAL.getIndex());
    lookup_colors.put("blue", IndexedColors.BLUE.getIndex());
    lookup_colors.put("blue_grey", IndexedColors.BLUE_GREY.getIndex());
    lookup_colors.put("red", IndexedColors.RED.getIndex());
    lookup_colors.put("light_orange", IndexedColors.LIGHT_ORANGE.getIndex());
    lookup_colors.put("lime", IndexedColors.LIME.getIndex());
    lookup_colors.put("sea_green", IndexedColors.SEA_GREEN.getIndex());
    lookup_colors.put("aqua", IndexedColors.AQUA.getIndex());
    lookup_colors.put("light_blue", IndexedColors.LIGHT_BLUE.getIndex());
    lookup_colors.put("violet", IndexedColors.VIOLET.getIndex());
    lookup_colors.put("pink", IndexedColors.PINK.getIndex());
    lookup_colors.put("gold", IndexedColors.GOLD.getIndex());
    lookup_colors.put("yellow", IndexedColors.YELLOW.getIndex());
    lookup_colors.put("bright_green", IndexedColors.BRIGHT_GREEN.getIndex());
    lookup_colors.put("turquoise", IndexedColors.TURQUOISE.getIndex());
    lookup_colors.put("dark_red", IndexedColors.DARK_RED.getIndex());
    lookup_colors.put("sky_blue", IndexedColors.SKY_BLUE.getIndex());
    lookup_colors.put("plum", IndexedColors.PLUM.getIndex());
    lookup_colors.put("rose", IndexedColors.ROSE.getIndex());
    lookup_colors.put("light_yellow", IndexedColors.LIGHT_YELLOW.getIndex());
    lookup_colors.put("light_green", IndexedColors.LIGHT_GREEN.getIndex());
    lookup_colors.put("light_turquoise", IndexedColors.LIGHT_TURQUOISE.getIndex());
    lookup_colors.put("pale_blue", IndexedColors.PALE_BLUE.getIndex());
    lookup_colors.put("lavender", IndexedColors.LAVENDER.getIndex());
    lookup_colors.put("white", IndexedColors.WHITE.getIndex());
    lookup_colors.put("cornflower_blue", IndexedColors.CORNFLOWER_BLUE.getIndex());
    lookup_colors.put("lemon_chiffon", IndexedColors.LEMON_CHIFFON.getIndex());
    lookup_colors.put("maroon", IndexedColors.MAROON.getIndex());
    lookup_colors.put("orchid", IndexedColors.ORCHID.getIndex());
    lookup_colors.put("coral", IndexedColors.CORAL.getIndex());
    lookup_colors.put("royal_blue", IndexedColors.ROYAL_BLUE.getIndex());
    lookup_colors.put("light_cornflower_blue", IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());

    lookup_alignment.put("left", CellStyle.ALIGN_LEFT);
    lookup_alignment.put("right", CellStyle.ALIGN_RIGHT);
    lookup_alignment.put("center", CellStyle.ALIGN_CENTER);
    lookup_alignment.put("justify", CellStyle.ALIGN_JUSTIFY);
    lookup_alignment.put("general", CellStyle.ALIGN_GENERAL);
    lookup_alignment.put("fill", CellStyle.ALIGN_FILL);
    lookup_alignment.put("center_selection", CellStyle.ALIGN_CENTER_SELECTION);
    lookup_alignment.put("vertical_top", CellStyle.VERTICAL_TOP);
    lookup_alignment.put("vertical_bottom", CellStyle.VERTICAL_BOTTOM);
    lookup_alignment.put("vertical_center", CellStyle.VERTICAL_CENTER);
    lookup_alignment.put("vertical_justify", CellStyle.VERTICAL_JUSTIFY);

    lookup_border.put("none", CellStyle.BORDER_NONE);
    lookup_border.put("thin", CellStyle.BORDER_THIN);
    lookup_border.put("medium", CellStyle.BORDER_MEDIUM);
    lookup_border.put("dashed", CellStyle.BORDER_DASHED);
    lookup_border.put("hair", CellStyle.BORDER_HAIR);
    lookup_border.put("thick", CellStyle.BORDER_THICK);
    lookup_border.put("double", CellStyle.BORDER_DOUBLE);
    lookup_border.put("dotted", CellStyle.BORDER_DOTTED);
    lookup_border.put("medium_dashed", CellStyle.BORDER_MEDIUM_DASHED);
    lookup_border.put("dash_dot", CellStyle.BORDER_DASH_DOT);
    lookup_border.put("medium_dash_dot", CellStyle.BORDER_MEDIUM_DASH_DOT);
    lookup_border.put("dash_dot_dot", CellStyle.BORDER_DASH_DOT_DOT);
    lookup_border.put("medium_dash_dot_dot", CellStyle.BORDER_MEDIUM_DASH_DOT_DOT);
    lookup_border.put("slanted_dash_dot", CellStyle.BORDER_SLANTED_DASH_DOT);

    lookup_fillpatten.put("big_spots", CellStyle.BIG_SPOTS);
    lookup_fillpatten.put("squares", CellStyle.SQUARES);
    lookup_fillpatten.put("nofill", CellStyle.NO_FILL);
    lookup_fillpatten.put("solid_foreground", CellStyle.SOLID_FOREGROUND);
    lookup_fillpatten.put("fine_dots", CellStyle.FINE_DOTS);
    lookup_fillpatten.put("alt_bars", CellStyle.ALT_BARS);
    lookup_fillpatten.put("sparse_dots", CellStyle.SPARSE_DOTS);
    lookup_fillpatten.put("thick_horz_bands", CellStyle.THICK_HORZ_BANDS);
    lookup_fillpatten.put("thick_vert_bands", CellStyle.THICK_VERT_BANDS);
    lookup_fillpatten.put("thick_backward_diag", CellStyle.THICK_BACKWARD_DIAG);
    lookup_fillpatten.put("thick_forward_diag", CellStyle.THICK_FORWARD_DIAG);
    lookup_fillpatten.put("thin_horz_bands", CellStyle.THIN_HORZ_BANDS);
    lookup_fillpatten.put("thin_vert_bands", CellStyle.THIN_VERT_BANDS);
    lookup_fillpatten.put("thin_backward_diag", CellStyle.THIN_BACKWARD_DIAG);
    lookup_fillpatten.put("thin_forward_diag", CellStyle.THIN_FORWARD_DIAG);
    lookup_fillpatten.put("diamonds", CellStyle.DIAMONDS);
    lookup_fillpatten.put("less_dots", CellStyle.LESS_DOTS);
    lookup_fillpatten.put("least_dots", CellStyle.LEAST_DOTS);

    lookup_color.put("black", Color.BLACK);
    lookup_color.put("blue", Color.BLUE);
    lookup_color.put("cyan", Color.CYAN);
    lookup_color.put("dark_gray", Color.DARK_GRAY);
    lookup_color.put("darkGray", Color.DARK_GRAY);
    lookup_color.put("gray", Color.GRAY);
    lookup_color.put("green", Color.GREEN);
    lookup_color.put("light_gray", Color.LIGHT_GRAY);
    lookup_color.put("lightGray", Color.LIGHT_GRAY);
    lookup_color.put("magenta", Color.MAGENTA);
    lookup_color.put("orange", Color.ORANGE);
    lookup_color.put("pink", Color.PINK);
    lookup_color.put("red", Color.RED);
    lookup_color.put("white", Color.WHITE);
    lookup_color.put("yellow", Color.YELLOW);
}

From source file:snpviewer.SnpViewer.java

License:Open Source License

public void writeSavedRegionsToFile() {
    if (savedRegions.size() < 1) {
        Dialogs.showErrorDialog(null, "No Saved Regions exist to write!", "No Saved Regions", "SnpViewer");
        return;/*from ww w. ja va  2  s . com*/
    }
    final int flanks = 10;
    FileChooser fileChooser = new FileChooser();
    FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Excel (*.xlsx)", "*.xlsx");
    fileChooser.getExtensionFilters().add(extFilter);
    fileChooser.setTitle("Write regions to Excel file (.xlsx)...");
    File rFile = fileChooser.showSaveDialog(mainWindow);
    if (rFile == null) {
        return;
    } else if (!rFile.getName().endsWith(".xlsx")) {
        rFile = new File(rFile.getAbsolutePath() + ".xlsx");
    }
    final File regionFile = rFile;
    final Task<Boolean> writeTask = new Task() {
        @Override
        protected Boolean call() throws Exception {
            try {
                updateProgress(-1, -1);
                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(regionFile));
                Workbook wb = new XSSFWorkbook();
                //first create a summary sheet of all regions
                Sheet sheet = wb.createSheet();
                Row row = null;
                int rowNo = 0;
                int sheetNo = 0;
                wb.setSheetName(sheetNo++, "Summary");
                row = sheet.createRow(rowNo++);
                String header[] = { "Coordinates", "rsIDs", "Size (Mb)" };
                for (int col = 0; col < header.length; col++) {
                    Cell cell = row.createCell(col);
                    cell.setCellValue(header[col]);
                }
                for (int i = 0; i < savedRegions.size(); i++) {
                    row = sheet.createRow(rowNo++);
                    int col = 0;
                    Cell cell = row.createCell(col++);
                    cell.setCellValue("chr" + savedRegions.get(i).getCoordinateString());
                    cell = row.createCell(col++);
                    cell.setCellValue(savedRegions.get(i).getIdLine());
                    cell = row.createCell(col++);
                    double mB = (double) savedRegions.get(i).getLength() / 1000000;
                    cell.setCellValue(mB);
                }

                ArrayList<SnpFile> bothFiles = new ArrayList<>();
                bothFiles.addAll(affFiles);
                bothFiles.addAll(unFiles);
                String prevChrom = new String();
                double prog = 0;
                double total = savedRegions.size() * bothFiles.size() * 2;
                updateProgress(prog, total);
                int regCounter = 0;
                for (RegionSummary reg : savedRegions) {
                    updateMessage("Writing region " + ++regCounter + " of " + savedRegions.size());
                    //create a sheet for each chromosome
                    if (!reg.getChromosome().equalsIgnoreCase(prevChrom)) {
                        if (!prevChrom.isEmpty()) {

                            CellRangeAddress[] regions = {
                                    new CellRangeAddress(0, rowNo, 2, 2 + bothFiles.size()) };
                            SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

                            ConditionalFormattingRule rule1 = sheetCF
                                    .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AA\"");
                            PatternFormatting fill1 = rule1.createPatternFormatting();
                            fill1.setFillBackgroundColor(IndexedColors.LIGHT_GREEN.index);
                            fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                            ConditionalFormattingRule rule2 = sheetCF
                                    .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"BB\"");
                            PatternFormatting fill2 = rule2.createPatternFormatting();
                            fill2.setFillBackgroundColor(IndexedColors.PALE_BLUE.index);
                            fill2.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                            ConditionalFormattingRule rule3 = sheetCF
                                    .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AB\"");
                            PatternFormatting fill3 = rule3.createPatternFormatting();
                            fill3.setFillBackgroundColor(IndexedColors.ROSE.index);
                            fill3.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                            sheetCF.addConditionalFormatting(regions, rule3, rule2);
                            sheetCF.addConditionalFormatting(regions, rule1);
                        }
                        rowNo = 0;
                        sheet = wb.createSheet();
                        wb.setSheetName(sheetNo++, reg.getChromosome());
                        prevChrom = reg.getChromosome();

                    } else {//pad regions with an empty line
                        rowNo++;
                    }
                    TreeMap<Integer, HashMap<String, String>> coordMap = new TreeMap();
                    /*coordmap - key is position, key of hashmap 
                     * is input filename and value call
                     */
                    HashMap<Integer, String> coordToId = new HashMap<>();
                    //coordinate to rs ID

                    try {
                        for (SnpFile f : bothFiles) {
                            updateProgress(prog++, total);
                            if (isCancelled()) {
                                return false;
                            }
                            List<SnpFile.SnpLine> lines = f.getSnpsInRegion(reg.getChromosome(),
                                    reg.getStartPos(), reg.getEndPos(), flanks);
                            for (SnpFile.SnpLine snpLine : lines) {
                                if (isCancelled()) {
                                    return false;
                                }
                                Integer coord = snpLine.getPosition();
                                if (!coordMap.containsKey(coord)) {
                                    coordMap.put(coord, new HashMap<String, String>());
                                }
                                String filename = f.inputFile.getName();
                                String rsId = snpLine.getId();
                                String call = snpLine.getCall();
                                coordMap.get(coord).put(filename, call);
                                coordToId.put(coord, rsId);
                            }
                        }
                        row = sheet.createRow(rowNo++);
                        Cell cell = row.createCell(0);
                        cell.setCellValue(reg.getCoordinateString());
                        row = sheet.createRow(rowNo++);
                        cell = row.createCell(0);
                        cell.setCellValue(reg.getIdLine());

                        int col = 0;
                        row = sheet.createRow(rowNo++);
                        cell = row.createCell(col++);
                        cell.setCellValue("Position");
                        cell = row.createCell(col++);
                        cell.setCellValue("rsID");
                        for (SnpFile f : bothFiles) {
                            updateProgress(prog++, total);
                            cell = row.createCell(col++);
                            if (f.getSampleName() != null && !f.getSampleName().isEmpty()) {
                                cell.setCellValue(f.getSampleName());
                            } else {
                                cell.setCellValue(f.inputFile.getName());
                            }
                        }
                        for (Entry current : coordMap.entrySet()) {
                            if (isCancelled()) {
                                return false;
                            }
                            col = 0;
                            Integer coord = (Integer) current.getKey();
                            row = sheet.createRow(rowNo++);
                            cell = row.createCell(col++);
                            cell.setCellValue(coord);
                            cell = row.createCell(col++);
                            cell.setCellValue(coordToId.get(coord));
                            HashMap<String, String> fileToCall = (HashMap<String, String>) current.getValue();
                            for (SnpFile f : bothFiles) {
                                cell = row.createCell(col++);
                                if (fileToCall.containsKey(f.inputFile.getName())) {
                                    cell.setCellValue(fileToCall.get(f.inputFile.getName()));
                                } else {
                                    cell.setCellValue("-");
                                }
                            }
                        }
                    } catch (Exception ex) {
                        return false;
                    }

                }
                CellRangeAddress[] regions = { new CellRangeAddress(0, rowNo, 2, 2 + bothFiles.size()) };
                SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

                ConditionalFormattingRule rule1 = sheetCF
                        .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AA\"");
                PatternFormatting fill1 = rule1.createPatternFormatting();
                fill1.setFillBackgroundColor(IndexedColors.LIGHT_GREEN.index);
                fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                ConditionalFormattingRule rule2 = sheetCF
                        .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"BB\"");
                PatternFormatting fill2 = rule2.createPatternFormatting();
                fill2.setFillBackgroundColor(IndexedColors.PALE_BLUE.index);
                fill2.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                ConditionalFormattingRule rule3 = sheetCF
                        .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AB\"");
                PatternFormatting fill3 = rule3.createPatternFormatting();
                fill3.setFillBackgroundColor(IndexedColors.ROSE.index);
                fill3.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                sheetCF.addConditionalFormatting(regions, rule3, rule2);
                sheetCF.addConditionalFormatting(regions, rule1);
                wb.write(out);
                updateProgress(total, total);
                out.close();
            } catch (IOException | NumberFormatException ex) {
                ex.printStackTrace();
                return false;
            }
            return true;
        }
    };//end of task

    setProgressMode(true);
    progressBar.progressProperty().bind(writeTask.progressProperty());
    progressMessage.textProperty().bind(writeTask.messageProperty());
    writeTask.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            if (e.getSource().getValue() == true) {
                Dialogs.showInformationDialog(null,
                        "Saved regions written " + "to file " + "(" + regionFile.getName() + ")successfully",
                        "Regions Written", "SNP Viewer");
            } else {
                Dialogs.showErrorDialog(null, "Region write failed.", "Write Failed", "SNP Viewer");
            }
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            progressMessage.textProperty().unbind();
            progressMessage.setText("");
            progressTitle.setText("");

        }

    });
    writeTask.setOnFailed(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            progressMessage.textProperty().unbind();
            progressMessage.setText("");
            progressTitle.setText("Region write failed!");
            Dialogs.showErrorDialog(null, "Error writing region to file\n", "Region write error", "SNP Viewer",
                    e.getSource().getException());

        }

    });
    writeTask.setOnCancelled(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            progressMessage.setText("Region write cancelled");
            progressTitle.setText("Cancelled");
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            Dialogs.showErrorDialog(null, "Error writing region to file\n", "Region write error", "SNP Viewer");
        }

    });
    cancelButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent actionEvent) {
            writeTask.cancel();

        }
    });
    progressTitle.setText("Writing regions to .xlsx file");
    new Thread(writeTask).start();
}

From source file:snpviewer.SnpViewer.java

License:Open Source License

public void writeRegionToFile(final String chromosome, final double start, final double end) {
    /* get coordinates of selection and report back
     * write SNPs in region to file//from ww  w .j a va  2 s  .com
     */
    FileChooser fileChooser = new FileChooser();
    FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Excel  (*.xlsx)", "*.xlsx");
    fileChooser.getExtensionFilters().add(extFilter);
    fileChooser.setTitle("Write region to Excel file (.xlsx)...");
    File rFile = fileChooser.showSaveDialog(mainWindow);
    if (rFile == null) {
        return;
    } else if (!rFile.getName().endsWith(".xlsx")) {
        rFile = new File(rFile.getAbsolutePath() + ".xlsx");
    }
    final File regionFile = rFile;
    final Task<Boolean> writeTask = new Task() {
        @Override
        protected Boolean call() throws Exception {
            try {

                updateProgress(-1, -1);
                ArrayList<SnpFile> bothFiles = new ArrayList<>();
                bothFiles.addAll(affFiles);
                bothFiles.addAll(unFiles);
                TreeMap<Integer, HashMap<String, String>> coordMap = new TreeMap();
                /*coordmap - key is position, key of hashmap 
                 * is input filename and value call
                 */
                HashMap<Integer, String> coordToId = new HashMap<>();
                double progress = 0;
                double total = bothFiles.size() * 5;
                try {
                    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(regionFile));
                    Workbook wb = new XSSFWorkbook();
                    Sheet sheet = wb.createSheet();
                    int rowNo = 0;
                    Row row = sheet.createRow(rowNo++);
                    for (SnpFile f : bothFiles) {
                        if (isCancelled()) {
                            return false;
                        }
                        updateProgress(++progress, total);
                        updateMessage("Reading region in " + f.inputFile.getName());
                        List<SnpFile.SnpLine> lines = f.getSnpsInRegion(chromosome, (int) start, (int) end);
                        for (SnpFile.SnpLine snpLine : lines) {
                            if (isCancelled()) {
                                return false;
                            }
                            Integer coord = snpLine.getPosition();
                            if (!coordMap.containsKey(coord)) {
                                coordMap.put(coord, new HashMap<String, String>());
                            }
                            String filename = f.inputFile.getName();
                            String rsId = snpLine.getId();
                            String call = snpLine.getCall();
                            coordMap.get(coord).put(filename, call);
                            coordToId.put(coord, rsId);
                        }
                    }
                    Cell cell = row.createCell(0);
                    cell.setCellValue(
                            "chr" + chromosome + ":" + coordMap.firstKey() + "-" + coordMap.lastKey());
                    row = sheet.createRow(rowNo++);
                    cell = row.createCell(0);
                    cell.setCellValue(
                            coordToId.get(coordMap.firstKey()) + ";" + coordToId.get(coordMap.lastKey()));
                    row = sheet.createRow(rowNo++);
                    int colNo = 0;
                    cell = row.createCell(colNo++);
                    cell.setCellValue("Position");
                    cell = row.createCell(colNo++);
                    cell.setCellValue("rsID");
                    for (SnpFile f : bothFiles) {
                        cell = row.createCell(colNo++);
                        if (f.getSampleName() != null && f.getSampleName().length() > 0) {
                            cell.setCellValue(f.getSampleName());
                        } else {
                            cell.setCellValue(f.getInputFileName());
                        }
                    }
                    progress = coordMap.size();
                    total = 5 * coordMap.size();
                    updateMessage("Writing region to file...");
                    for (Entry current : coordMap.entrySet()) {
                        if (isCancelled()) {
                            return false;
                        }
                        progress += 4;
                        updateProgress(progress, total);
                        row = sheet.createRow(rowNo++);
                        colNo = 0;
                        Integer coord = (Integer) current.getKey();
                        cell = row.createCell(colNo++);
                        cell.setCellValue(coord);
                        String rsId = coordToId.get(coord);
                        cell = row.createCell(colNo++);
                        cell.setCellValue(rsId);
                        HashMap<String, String> fileToCall = (HashMap<String, String>) current.getValue();
                        for (SnpFile f : bothFiles) {
                            cell = row.createCell(colNo++);
                            if (fileToCall.containsKey(f.inputFile.getName())) {
                                cell.setCellValue(fileToCall.get(f.inputFile.getName()));
                            } else {
                                cell.setCellValue("-");
                            }
                        }
                    }
                    CellRangeAddress[] regions = { new CellRangeAddress(0, rowNo, 2, 2 + bothFiles.size()) };
                    SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

                    ConditionalFormattingRule rule1 = sheetCF
                            .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AA\"");
                    PatternFormatting fill1 = rule1.createPatternFormatting();
                    fill1.setFillBackgroundColor(IndexedColors.LIGHT_GREEN.index);
                    fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                    ConditionalFormattingRule rule2 = sheetCF
                            .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"BB\"");
                    PatternFormatting fill2 = rule2.createPatternFormatting();
                    fill2.setFillBackgroundColor(IndexedColors.PALE_BLUE.index);
                    fill2.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                    ConditionalFormattingRule rule3 = sheetCF
                            .createConditionalFormattingRule(ComparisonOperator.EQUAL, "\"AB\"");
                    PatternFormatting fill3 = rule3.createPatternFormatting();
                    fill3.setFillBackgroundColor(IndexedColors.ROSE.index);
                    fill3.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
                    sheetCF.addConditionalFormatting(regions, rule3, rule2);
                    sheetCF.addConditionalFormatting(regions, rule1);
                    wb.write(out);
                    out.close();
                    return true;
                } catch (IOException ex) {
                    return false;
                }
            } catch (Exception ex) {
                return false;
            }
        }
    };//end of task

    setProgressMode(true);
    progressBar.progressProperty().bind(writeTask.progressProperty());
    progressMessage.textProperty().bind(writeTask.messageProperty());
    writeTask.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            if (e.getSource().getValue() == true) {
                Dialogs.showInformationDialog(null,
                        "Region written to file " + "(" + regionFile.getName() + ") successfully",
                        "Region Written", "SNP Viewer");
            } else {
                Dialogs.showErrorDialog(null, "Region write failed.", "Write Failed", "SNP Viewer");
            }
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            progressMessage.textProperty().unbind();
            progressMessage.setText("");
            progressTitle.setText("");

        }

    });
    writeTask.setOnFailed(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            progressMessage.textProperty().unbind();
            progressMessage.setText("");
            progressTitle.setText("Region write failed!");
            Dialogs.showErrorDialog(null, "Error writing region to file\n", "Region write error", "SNP Viewer",
                    e.getSource().getException());

        }

    });
    writeTask.setOnCancelled(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent e) {
            progressMessage.setText("Region write cancelled");
            progressTitle.setText("Cancelled");
            setProgressMode(false);
            progressBar.progressProperty().unbind();
            progressBar.progressProperty().set(0);
            Dialogs.showErrorDialog(null, "Error writing region to file\n", "Region write error", "SNP Viewer");
        }

    });
    cancelButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent actionEvent) {
            writeTask.cancel();

        }
    });
    progressTitle.setText("Writing region to .xlsx file");
    new Thread(writeTask).start();
}