Example usage for com.vaadin.ui Link Link

List of usage examples for com.vaadin.ui Link Link

Introduction

In this page you can find the example usage for com.vaadin.ui Link Link.

Prototype

public Link(String caption, Resource resource) 

Source Link

Document

Creates a new instance of Link.

Usage

From source file:edu.cornell.qatarmed.planrnaseq.BrowseAndAnnotate.java

private void initDataAndSubcomponent() {
    //<editor-fold defaultstate="collapsed" desc="populating project/study summary table">      

    rnaseqContainer = createMySQLContainer("study_summary", "dummy");
    bioprojectSummaryTable.setContainerDataSource(rnaseqContainer);
    //   bioprojectSummaryTable.setVisibleColumns(new String[] { studyName });
    bioprojectSummaryTable.setCurrentPageFirstItemIndex(300);
    bioprojectSummaryTable.setSelectable(true);
    bioprojectSummaryTable.setImmediate(true);
    bioprojectSummaryTable.setColumnReorderingAllowed(true);
    bioprojectSummaryTable.setSortEnabled(true);
    bioprojectSummaryTable.setVisibleColumns(
            new Object[] { "Study", "title", "Numsample", "Numexp", "Numrun", "Avgspots", "avgbases", "name" });
    //bioprojectSummaryTable.setVisibleColumns(new Object[] { "firstName", "lastName", "department", "phoneNumber", "street", "city", "zipCode" });
    studyName.setValue(rnaseqContainer.firstItemId().toString());

    bioprojectSummaryTable.setCellStyleGenerator(new Table.CellStyleGenerator() {
        @Override/* w  w w  .j  a va  2s .  co  m*/
        public String getStyle(Table table, Object itemId, Object propertyId) {
            String mynullreturn = "";
            if (propertyId == null) {
                // Styling for row
                //  Item item = bioprojectSummaryTable.getItem(itemId);
                Item item = table.getItem(itemId);

                String annotatus_status = "";

                if (item == null) { // checking this is important in lazy loading table. Otherwise it produces null pointer exception while scrolling down the table.
                    // System.out.println("It's null");
                    return mynullreturn;
                } else {
                    if (item.getItemProperty("annotation_status").getValue() != null) {
                        annotatus_status = (String) item.getItemProperty("annotation_status").getValue();
                    }
                }

                //               String   annotatus_status =  (String) item.getItemProperty("annotation_status").getValue();
                if (annotatus_status.toLowerCase().startsWith("ongoing")) {
                    // System.out.println(annotatus_status);
                    return "highlight-orange";
                } else if (annotatus_status.toLowerCase().startsWith("completed")) {
                    return "highlight-green";
                } else {
                    return mynullreturn;
                }

            } else {
                // styling for column propertyId
                return mynullreturn;
            }

        }
    });
    //</editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Upon clicking any project from the project/study summary table">

    bioprojectSummaryTable.addItemClickListener(new ItemClickEvent.ItemClickListener() {

        int custom_annotation_counter = 0;

        public void itemClick(ItemClickEvent event) {
            rightTopTabsheet.setSelectedTab(rightTopForm);
            //<editor-fold defaultstate="collapsed" desc="filling study details on right panel">

            Object selectedStudyObject = event.getItemId();
            bioprojectSummaryTable.select(selectedStudyObject);
            tree.removeAllItems();
            rightTopForm.removeAllComponents();
            rightTopAnnotationForm.removeAllComponents();
            myform.removeAllComponents();

            String selectedStudy = selectedStudyObject.toString();
            String studyTitle = (String) bioprojectSummaryTable
                    .getContainerProperty(selectedStudyObject, "title").getValue();
            String studyName = (String) bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "name")
                    .getValue();
            String studyNumsample = String.valueOf(
                    bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "Numsample").getValue());
            String studyNumexp = String.valueOf(
                    bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "Numexp").getValue());
            String studyNumrun = String.valueOf(
                    bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "Numrun").getValue());
            String studyAvgspots = String.valueOf(
                    bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "Avgspots").getValue());
            String studyAvgbases = String.valueOf(
                    bioprojectSummaryTable.getContainerProperty(selectedStudyObject, "avgbases").getValue());
            tree.addItem(selectedStudy);
            tree.setItemCaption(selectedStudy, "Study: " + selectedStudy);
            SQLContainer tempContainer = createMySQLContainer("study_extdb", selectedStudy); // In this table I will chaeck for the manual annotation status
            String extdbid = tempContainer.getItem(tempContainer.getIdByIndex(0)).getItemProperty("extdb")
                    .getValue().toString();

            HorizontalLayout studyAccLinkLayout = new HorizontalLayout();
            Label labelStudyAcc = new Label(
                    "<b>SRA Study Accession : </b>" + selectedStudy + "&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            String ncbi_sra_study_link = "http://www.ncbi.nlm.nih.gov/Traces/sra/?study=" + selectedStudy;
            Link link = new Link("NCBI SRA Link", new ExternalResource(ncbi_sra_study_link));
            // Open the URL in a new window/tab
            link.setTargetName("_blank");
            // Indicate visually that it opens in a new window/tab
            link.setIcon(new ThemeResource("icons/external-link.png"));
            link.addStyleName("icon-after-caption");
            studyAccLinkLayout.addComponent(labelStudyAcc);
            studyAccLinkLayout.addComponent(link);
            rightTopForm.addComponent(studyAccLinkLayout);
            Label labelStudyTitle = new Label("<b>Study Title: </b>" + studyTitle, ContentMode.HTML);

            rightTopForm.addComponent(labelStudyTitle);
            Label labelStudyName = new Label("<b>Study Name: </b>" + studyName, ContentMode.HTML);
            rightTopForm.addComponent(labelStudyName);
            tempContainer = null;
            tempContainer = createMySQLContainer("study_abstracts", selectedStudy); // In this table I will chaeck for the manual annotation status
            if (tempContainer.size() > 0) {
                Item tempItem = tempContainer.getItem(tempContainer.getIdByIndex(0));
                if (!(tempItem.getItemProperty("abstract").getValue() == null)) {
                    String abstr = tempItem.getItemProperty("abstract").getValue().toString();
                    String xref = tempItem.getItemProperty("xref").getValue().toString();
                    if (abstr.length() > 3) {
                        Label labelStudyAbstract = new Label("<b>Abstract: </b>" + abstr, ContentMode.HTML);
                        rightTopForm.addComponent(labelStudyAbstract);
                    }
                    if ((xref.length() > 3) & (xref.contains("pubmed"))) {
                        HorizontalLayout pubLinkLayout = new HorizontalLayout();
                        Label labelPubmed = new Label("<b>Pubmed Id : </b>" + "&nbsp;&nbsp;", ContentMode.HTML);
                        pubLinkLayout.addComponent(labelPubmed);
                        String[] pub = xref.split("\\|");
                        if (pub.length > 0) {
                            for (String p : pub) {
                                String[] pid = p.split("\\:-");
                                if (pid[0].startsWith("pubmed")) {
                                    Label tempPubLabel = new Label("&nbsp;&nbsp;&nbsp;&nbsp;",
                                            ContentMode.HTML);

                                    String pubmed_link = "http://www.ncbi.nlm.nih.gov/pubmed/" + pid[1];
                                    Link linkpub = new Link(pid[1], new ExternalResource(pubmed_link));
                                    linkpub.setTargetName("_blank");
                                    linkpub.setIcon(new ThemeResource("icons/external-link.png"));
                                    linkpub.addStyleName("icon-after-caption");
                                    pubLinkLayout.addComponent(tempPubLabel);
                                    pubLinkLayout.addComponent(linkpub);
                                }
                            }
                        }

                        rightTopForm.addComponent(pubLinkLayout);
                    }
                }
            }

            Label labelStudyNumsample = new Label("<b>Total number of samples: </b>" + studyNumsample,
                    ContentMode.HTML);
            rightTopForm.addComponent(labelStudyNumsample);
            Label labelStudyNumexp = new Label(
                    "<b>Total number of experiments (each experiment uses any one of the samples): </b>"
                            + studyNumexp,
                    ContentMode.HTML);
            rightTopForm.addComponent(labelStudyNumexp);
            Label labelStudyNumrun = new Label(
                    "<b>Total number of runs ( an experiment can have multiple runs) : </b>" + studyNumrun,
                    ContentMode.HTML);
            rightTopForm.addComponent(labelStudyNumrun);
            Label labelStudyAvgspots = new Label(
                    "<b>Avg number of spots or reads (per run): </b>" + studyAvgspots, ContentMode.HTML);
            rightTopForm.addComponent(labelStudyAvgspots);
            Label labelStudyAvgbases = new Label("<b>Avg number of bases (per run): </b>" + studyAvgbases,
                    ContentMode.HTML);
            rightTopForm.addComponent(labelStudyAvgbases);

            if (extdbid.startsWith("PRJ")) {
                //<editor-fold defaultstate="collapsed" desc="if PRJ">
                tempContainer = createMySQLContainer("bioproject_details", extdbid);
                String bioproject_accession = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("BioprojectAccession").getValue().toString();
                String bioproject_id = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("BioprojectId").getValue().toString();
                String bioproject_name = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("Name").getValue().toString();
                String bioproject_title = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("Title").getValue().toString();
                String bioproject_description = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("Description").getValue().toString();
                String bioproject_capture = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("Capture").getValue().toString();
                String bioproject_material = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("Material").getValue().toString();
                String bioproject_method = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("MethodType").getValue().toString();
                String bioproject_datatype = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("DataType").getValue().toString();
                String bioproject_sampleScope = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("SampleScope").getValue().toString();
                System.out.println(bioproject_description);
                Label labelBioprojectAccession = new Label(
                        "<b>Bioproject Accession : </b>" + bioproject_accession, ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectAccession);
                Label labelBioprojectId = new Label("<b>Bioproject Id : </b>" + bioproject_id,
                        ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectId);
                Label labelBioprojectTitle = new Label("<b>Bioproject Title : </b>" + bioproject_title,
                        ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectTitle);
                Label labelBioprojectName = new Label("<b>Bioproject Name : </b>" + bioproject_name,
                        ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectName);
                Label labelBioprojectDescription = new Label(
                        "<b>Bioproject Description : </b>" + bioproject_description, ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectDescription);
                Label labelBioprojectCapture = new Label("<b>Bioproject Capture : </b>" + bioproject_capture,
                        ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectCapture);
                Label labelBioprojectMaterial = new Label(
                        "<b>Bioproject  Material : </b>" + bioproject_material, ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectMaterial);
                Label labelBioprojectMethod = new Label("<b>Bioproject Method : </b>" + bioproject_method,
                        ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectMethod);
                Label labelBioprojectDatatype = new Label(
                        "<b>Bioproject Data Type : </b>" + bioproject_datatype, ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectDatatype);
                Label labelBioprojectSampleScope = new Label(
                        "<b>Bioproject Sample Scope : </b>" + bioproject_sampleScope, ContentMode.HTML);
                rightTopForm.addComponent(labelBioprojectSampleScope);

                //</editor-fold>
            }
            if (extdbid.startsWith("GSE")) {
                //<editor-fold defaultstate="collapsed" desc="if GSE">
                tempContainer = createMySQLContainer("study_gse_details", extdbid);
                String gse_accesion = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("gse").getValue().toString();
                String gse_summary = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("summary").getValue().toString();
                String gse_design = tempContainer.getItem(tempContainer.getIdByIndex(0))
                        .getItemProperty("overall_design").getValue().toString();
                // System.out.println(gse_summary);
                Label labelGSE = new Label("<b>GEO Series Accession : </b>" + gse_accesion, ContentMode.HTML);
                rightTopForm.addComponent(labelGSE);
                Label labelGseSummary = new Label("<b>GSE Summary : </b>" + gse_summary, ContentMode.HTML);
                rightTopForm.addComponent(labelGseSummary);
                Label labelGseDesign = new Label("<b>GSE Design : </b>" + gse_design, ContentMode.HTML);
                rightTopForm.addComponent(labelGseDesign);
                //</editor-fold>

            }

            try {
                String search_query = " SELECT * FROM manual_annotation "
                        + "where annotation_status = 'completed' " + " AND studyid =  '" + selectedStudy + "'";

                rnaseqContainer = createMySQLContainer("suggestion_by_manual_annotation", search_query);
                if (rnaseqContainer.getItemIds().size() > 0) {
                    Label ManualAnnotationLabelStart = new Label("<b>Manual Annotaion </b>", ContentMode.HTML);
                    rightTopForm.addComponent(ManualAnnotationLabelStart);

                    for (int i = 0; i < rnaseqContainer.getItemIds().size(); i++) {
                        Item tempItem = rnaseqContainer.getItem(rnaseqContainer.getIdByIndex(i));
                        int annotation_count = i + 1;
                        String stringManualAnnotationDetails = "------------ Manual Annotaion "
                                + annotation_count + "  ------------";
                        System.out.println("Item is " + tempItem);

                        if (!(tempItem.getItemProperty("isDisease").getValue() == null)) {
                            if (tempItem.getItemProperty("isDisease").getValue().toString().equals("1")) {
                                stringManualAnnotationDetails = stringManualAnnotationDetails
                                        + "<br></br> Disease = Yes ";
                            }
                        }
                        String stringStudyTypes = "";
                        if (!(tempItem.getItemProperty("isCaseControl").getValue() == null)) {
                            if (tempItem.getItemProperty("isCaseControl").getValue().toString().equals("1")) {
                                stringStudyTypes = stringStudyTypes + "<br> Case-Control = Yes ";

                            }
                        }

                        if (!(tempItem.getItemProperty("isTimeSeries").getValue() == null)) {
                            if (tempItem.getItemProperty("isTimeSeries").getValue().toString().equals("1")) {
                                stringStudyTypes = stringStudyTypes + "<br> Time Series = Yes ";

                            }
                        }

                        if (!(tempItem.getItemProperty("isTreatment").getValue() == null)) {
                            if (tempItem.getItemProperty("isTreatment").getValue().toString().equals("1")) {
                                stringStudyTypes = stringStudyTypes + "<br> Treatment = Yes ";

                            }
                        }
                        if (stringStudyTypes.length() > 2) {
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> <i> **** Study Types ****</i> " + stringStudyTypes;

                        }
                        String stringSampleTypes = "";
                        if (!(tempItem.getItemProperty("isCellLine").getValue() == null)) {
                            if (tempItem.getItemProperty("isCellLine").getValue().toString().equals("1")) {
                                stringSampleTypes = stringSampleTypes + "<br> Cell Line = Yes ";

                            }
                        }
                        if (!(tempItem.getItemProperty("isPrimaryCells").getValue() == null)) {
                            if (tempItem.getItemProperty("isPrimaryCells").getValue().toString().equals("1")) {
                                stringSampleTypes = stringSampleTypes + "<br> Primary Cells = Yes ";

                            }
                        }

                        if (!(tempItem.getItemProperty("isTissue").getValue() == null)) {
                            if (tempItem.getItemProperty("isTissue").getValue().toString().equals("1")) {
                                stringSampleTypes = stringSampleTypes + "<br> Tissue = Yes ";

                            }
                        }
                        if (!(tempItem.getItemProperty("isWholeBlood").getValue() == null)) {
                            if (tempItem.getItemProperty("isWholeBlood").getValue().toString().equals("1")) {
                                stringSampleTypes = stringSampleTypes + "<br> Blood = Yes ";
                            }
                        }

                        if (!(tempItem.getItemProperty("isPlasma").getValue() == null)) {
                            if (tempItem.getItemProperty("isPlasma").getValue().toString().equals("1")) {
                                stringSampleTypes = stringSampleTypes + "<br> Plasma = Yes ";
                            }
                        }
                        if (stringSampleTypes.length() > 2) {
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> <i>**** Sample Types ****</i> " + stringSampleTypes;

                        }
                        if (!(tempItem.getItemProperty("sequencing_platform").getValue() == null)) {
                            String sequencing_platform = tempItem.getItemProperty("sequencing_platform")
                                    .getValue().toString();
                            String[] annotated_platforms = sequencing_platform.split("\\;");
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> Sequencing Platform = " + sequencing_platform;
                        }

                        if (!(tempItem.getItemProperty("replicate_type").getValue() == null)) {
                            String replicate_type = tempItem.getItemProperty("replicate_type").getValue()
                                    .toString();
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> Replicate Type = " + replicate_type;
                        }

                        if (!(tempItem.getItemProperty("disease_category").getValue() == null)) {
                            String annotated_disease_category = tempItem.getItemProperty("disease_category")
                                    .getValue().toString();
                            String[] annotated_disease_categories = annotated_disease_category.split("\\;");
                            String string_disease_cat = "";
                            for (String cat : annotated_disease_categories) {
                                if (cat.startsWith("complex_disease")) {
                                    String[] cat_parts = cat.split("\\|");
                                    if (string_disease_cat.contains("complex_disease")) {
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    } else {
                                        string_disease_cat = string_disease_cat
                                                + "&nbsp;&nbsp;Complex Disease ";
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    }
                                }
                                if (cat.startsWith("rare_disease")) {
                                    String[] cat_parts = cat.split("\\|");
                                    if (string_disease_cat.contains("rare_disease")) {
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    } else {
                                        if (string_disease_cat.contains("complex_disease")) {
                                            string_disease_cat = string_disease_cat + "<br> ";
                                        } else {
                                            string_disease_cat = string_disease_cat
                                                    + "&nbsp;&nbsp;Rare Disease ";
                                        }
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    }
                                }
                                if (cat.startsWith("other_disease")) {
                                    String[] cat_parts = cat.split("\\|");
                                    if (string_disease_cat.contains("other_disease")) {
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    } else {
                                        if (string_disease_cat.contains("complex_disease")
                                                || string_disease_cat.contains("rare_disease")) {
                                            string_disease_cat = string_disease_cat + "<br> ";
                                        } else {
                                            string_disease_cat = string_disease_cat
                                                    + "&nbsp;&nbsp;Other Disease ";
                                        }

                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(50)
                                                + " ---- " + cat_parts[1];
                                        string_disease_cat = string_disease_cat + "<br> " + createHTMLspaces(57)
                                                + " ---- " + cat_parts[2];
                                    }
                                }
                            }
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> Disease Category = " + string_disease_cat;
                        }

                        if (!(tempItem.getItemProperty("annotator").getValue() == null)) {
                            String annotator = tempItem.getItemProperty("annotator").getValue().toString();
                            stringManualAnnotationDetails = stringManualAnnotationDetails
                                    + "<br></br> Annotator = " + annotator;
                        }

                        stringManualAnnotationDetails = stringManualAnnotationDetails
                                + "<br></br>-----------------------------------";
                        Label tempManualAnnotationDetails = new Label(stringManualAnnotationDetails,
                                ContentMode.HTML);

                        rightTopForm.addComponent(tempManualAnnotationDetails);

                    }
                    //  Label ManualAnnotationLabelEnd = new Label("<b>Manual Annotaion </b>", ContentMode.HTML);
                    //    rightTopForm.addComponent(ManualAnnotationLabelEnd);

                }
            } catch (Exception e) {
            }
            //</editor-fold>
            //SQLContainer tempContainer = createMySQLContainer("sra_rnaseq", selectedStudy);
            tempContainer = createMySQLContainer("sra_rnaseq", selectedStudy);
            //  List<String> list = new ArrayList<String>();
            Map expMap = new HashMap();
            Map<String, String[]> expDetailMap = new HashMap<>();
            Map<String, String[]> platformMap = new HashMap<>();
            Map runMap = new HashMap();
            HashSet<String> biosampleSet = new HashSet<>();
            for (int i = 0; i < tempContainer.getItemIds().size(); i++) {
                //<editor-fold defaultstate="collapsed" desc="for loop">

                String docid = tempContainer.getIdByIndex(i).toString();
                String biosample = tempContainer.getItem(tempContainer.getIdByIndex(i))
                        .getItemProperty("Biosample_Acc_Id_SampleId").getValue().toString();
                biosampleSet.add(biosample);
                String[] b_parts = biosample.split("\\|");

                String exp = tempContainer.getItem(tempContainer.getIdByIndex(i))
                        .getItemProperty("Experiment_Acc_Ver_Status_Name").getValue().toString();
                String[] exp_parts = exp.split("\\|");
                String exp_acc = exp_parts[0];
                expMap.put(exp_acc, b_parts[0]);
                expDetailMap.put(exp_acc, exp_parts);

                String sra_plaforms = tempContainer.getItem(tempContainer.getIdByIndex(i))
                        .getItemProperty("Platform_InstrumentModel").getValue().toString();
                String[] sra_plaforms_parts = sra_plaforms.split("\\|");
                platformMap.put(exp_acc, sra_plaforms_parts);

                String run = tempContainer.getItem(tempContainer.getIdByIndex(i)).getItemProperty("Runs")
                        .getValue().toString();
                String[] run_parts = run.split("\\|");
                if (run_parts.length > 0) {
                    for (int j = 0; j < run_parts.length; j++) {
                        String temprun = run_parts[j];
                        String[] temprun_parts = temprun.split("\\,");
                        runMap.put(temprun_parts[0], exp_acc);
                    }
                }
                //</editor-fold>
            }

            //<editor-fold defaultstate="collapsed" desc="Manual Annotaion">
            tempContainer = createMySQLContainer("biosample_with_studyacc", selectedStudy);
            int count_cell_line = 0;
            int count_organism_part = 0;
            int count_tissue = 0;
            int count_disease = 0;
            Set<String> cell_lines_set = new HashSet();
            Set<String> organism_part_set = new HashSet();
            Set<String> tissue_set = new HashSet();
            Set<String> disease_set = new HashSet();
            Map<String, Integer> cell_line_stat_map = new HashMap<>();
            Map<String, Integer> organism_part_stat_map = new HashMap<>();
            Map<String, Integer> tissue_stat_map = new HashMap<>();
            Map<String, Integer> disease_stat_map = new HashMap<>();
            for (int i = 0; i < tempContainer.getItemIds().size(); i++) {
                //<editor-fold defaultstate="collapsed" desc="for biosample attributes">
                String biosample_attr = tempContainer.getItem(tempContainer.getIdByIndex(i))
                        .getItemProperty("Attributes").getValue().toString();
                String[] biosample_attr_parts = biosample_attr.split("\\:-");
                if (biosample_attr_parts.length > 0) {
                    String[] attr_names = biosample_attr_parts[0].split("\\|");
                    String[] attr_values = new String[] {};
                    if (biosample_attr_parts.length > 1) {
                        attr_values = biosample_attr_parts[1].split("\\|");
                    }
                    int atn_index = 0;
                    for (String atn : attr_names) {
                        if (atn.equalsIgnoreCase("cell line")) {
                            count_cell_line = count_cell_line + 1;
                            if (attr_values.length >= atn_index) {
                                String cell_line_value = attr_values[atn_index];
                                cell_lines_set.add(cell_line_value);
                                if (cell_line_stat_map.containsKey(cell_line_value)) {
                                    cell_line_stat_map.put(cell_line_value,
                                            cell_line_stat_map.get(cell_line_value) + 1);
                                } else {
                                    cell_line_stat_map.put(cell_line_value, 1);
                                }
                            }

                        }
                        if (atn.equalsIgnoreCase("organism part")) {
                            count_organism_part = count_organism_part + 1;
                            if (attr_values.length >= atn_index) {
                                String organism_part_value = attr_values[atn_index];
                                organism_part_set.add(organism_part_value);
                                if (organism_part_stat_map.containsKey(organism_part_value)) {
                                    organism_part_stat_map.put(organism_part_value,
                                            organism_part_stat_map.get(organism_part_value) + 1);
                                } else {
                                    organism_part_stat_map.put(organism_part_value, 1);
                                }
                            }

                        }

                        if (atn.contains("disease")) {
                            count_disease = count_disease + 1;
                            if (attr_values.length >= atn_index) {
                                String disease_value = attr_values[atn_index];
                                disease_set.add(disease_value);
                                if (disease_stat_map.containsKey(disease_value)) {
                                    disease_stat_map.put(disease_value,
                                            disease_stat_map.get(disease_value) + 1);
                                } else {
                                    disease_stat_map.put(disease_value, 1);
                                }
                            }

                        }
                        if (atn.equalsIgnoreCase("tissue")) {
                            count_tissue = count_tissue + 1;
                            if (attr_values.length >= atn_index) {
                                String tissue_value = attr_values[atn_index];
                                tissue_set.add(tissue_value);
                                if (tissue_stat_map.containsKey(tissue_value)) {
                                    tissue_stat_map.put(tissue_value, tissue_stat_map.get(tissue_value) + 1);
                                } else {
                                    tissue_stat_map.put(tissue_value, 1);
                                }
                            }

                        }
                        atn_index = atn_index + 1;
                    }
                }
                //</editor-fold>

            }

            String suggestion_cell_line = "";
            String suggestion_organism_part = "";
            String suggestion_tissue = "";
            String suggestion_disease = "";
            String samplesType_from_sra = "";
            String cell_line_confidence = "";
            String organism_part_confidence = "";
            String disease_confidence = "";
            String tissue_confidence = "";
            //<editor-fold defaultstate="collapsed" desc="if else biosmaple attr has cell line">
            if (count_cell_line > 0) {
                if (Integer.parseInt(studyNumsample) == count_cell_line) {
                    //good. all samples are from cell lines
                    suggestion_cell_line = "Yes:";
                    String cell_line_value = cell_lines_set.iterator().next();
                    suggestion_cell_line = suggestion_cell_line + cell_line_value;
                    cell_line_confidence = "100%. All " + cell_line_stat_map.get(cell_line_value).toString()
                            + " Samples";
                } else {
                    suggestion_cell_line = "Yes:";
                    Map.Entry<String, Integer> maxEntry = null;
                    for (Map.Entry<String, Integer> entry : cell_line_stat_map.entrySet()) {
                        if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
                            maxEntry = entry;
                        }
                    }
                    suggestion_cell_line = suggestion_cell_line + maxEntry.getKey() + "("
                            + maxEntry.getValue().toString() + " samples)";
                    int confidence_percent = (int) (maxEntry.getValue() * 100.0f)
                            / (Integer.parseInt(studyNumsample));
                    cell_line_confidence = confidence_percent + "%";
                    for (Iterator<String> it = cell_lines_set.iterator(); it.hasNext();) {
                        String cellLine = it.next();
                        if (cellLine.equals(maxEntry.getKey())) {
                            //do nothing
                        } else {
                            suggestion_cell_line = suggestion_cell_line + ", " + cellLine + "("
                                    + cell_line_stat_map.get(cellLine).toString() + ")";
                        }
                    }

                }
            } else {
                suggestion_cell_line = " No";
            }
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="if else biosmaple attr has organism part">
            if (count_organism_part > 0) {
                if (Integer.parseInt(studyNumsample) == count_organism_part) {
                    //good. all samples are from cell lines
                    suggestion_organism_part = "Yes:";
                    String organism_part_value = organism_part_set.iterator().next();
                    suggestion_organism_part = suggestion_organism_part + organism_part_value;
                    organism_part_confidence = "100%. All "
                            + organism_part_stat_map.get(organism_part_value).toString() + " Samples";
                } else {
                    suggestion_organism_part = "Yes:";
                    Map.Entry<String, Integer> maxEntry = null;
                    for (Map.Entry<String, Integer> entry : organism_part_stat_map.entrySet()) {
                        if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
                            maxEntry = entry;
                        }
                    }
                    suggestion_organism_part = suggestion_organism_part + maxEntry.getKey() + "("
                            + maxEntry.getValue().toString() + " samples)";
                    int confidence_percent = (int) (maxEntry.getValue() * 100.0f)
                            / (Integer.parseInt(studyNumsample));
                    organism_part_confidence = confidence_percent + "%";
                    for (Iterator<String> it = organism_part_set.iterator(); it.hasNext();) {
                        String organismPart = it.next();
                        if (organismPart.equals(maxEntry.getKey())) {
                            //do nothing
                        } else {
                            suggestion_organism_part = suggestion_organism_part + ", " + organismPart + "("
                                    + organism_part_stat_map.get(organismPart).toString() + ")";
                        }
                    }

                }
            } else {
                suggestion_organism_part = " No";
            }
            //</editor-fold>
            //<editor-fold defaultstate="collapsed" desc="if else biosmaple attr has disease">
            if (count_disease > 0) {
                if (Integer.parseInt(studyNumsample) == count_disease) {
                    //good. all samples are from cell lines
                    suggestion_disease = "Yes:";
                    String disease_value = disease_set.iterator().next();
                    suggestion_disease = suggestion_disease + disease_value;
                    disease_confidence = "100%. All " + disease_stat_map.get(disease_value).toString()
                            + " Samples";
                } else {
                    suggestion_disease = "Yes:";
                    Map.Entry<String, Integer> maxEntry = null;
                    for (Map.Entry<String, Integer> entry : disease_stat_map.entrySet()) {
                        if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
                            maxEntry = entry;
                        }
                    }
                    suggestion_disease = suggestion_disease + maxEntry.getKey() + "("
                            + maxEntry.getValue().toString() + " samples)";
                    int confidence_percent = (int) (maxEntry.getValue() * 100.0f)
                            / (Integer.parseInt(studyNumsample));
                    disease_confidence = confidence_percent + "%";
                    for (Iterator<String> it = disease_set.iterator(); it.hasNext();) {
                        String diseasePart = it.next();
                        if (diseasePart.equals(maxEntry.getKey())) {
                            //do nothing
                        } else {
                            suggestion_disease = suggestion_disease + ", " + diseasePart + "("
                                    + disease_stat_map.get(diseasePart).toString() + ")";
                        }
                    }

                }
            } else {
                suggestion_disease = " No";
            }
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="if else biosmaple attr has tissue">
            if (count_tissue > 0) {
                if (Integer.parseInt(studyNumsample) == count_tissue) {
                    //good. all samples are from cell lines
                    suggestion_tissue = "Yes:";
                    String tissue_value = tissue_set.iterator().next();
                    suggestion_tissue = suggestion_tissue + tissue_value;
                    tissue_confidence = "100%. All " + tissue_stat_map.get(tissue_value).toString()
                            + " Samples";
                } else {
                    suggestion_tissue = "Yes:";
                    Map.Entry<String, Integer> maxEntry = null;
                    for (Map.Entry<String, Integer> entry : tissue_stat_map.entrySet()) {
                        if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
                            maxEntry = entry;
                        }
                    }
                    suggestion_tissue = suggestion_tissue + maxEntry.getKey() + "("
                            + maxEntry.getValue().toString() + " samples)";
                    int confidence_percent = (int) (maxEntry.getValue() * 100.0f)
                            / (Integer.parseInt(studyNumsample));
                    tissue_confidence = confidence_percent + "%";
                    for (Iterator<String> it = tissue_set.iterator(); it.hasNext();) {
                        String tissuePart = it.next();
                        if (tissuePart.equals(maxEntry.getKey())) {
                            //do nothing
                        } else {
                            suggestion_tissue = suggestion_tissue + ", " + tissuePart + "("
                                    + tissue_stat_map.get(tissuePart).toString() + ")";
                        }
                    }

                }
            } else {
                suggestion_tissue = " No";
            }

            //</editor-fold>
            //<editor-fold defaultstate="collapsed" desc="filling right top manual annotation">
            //<editor-fold defaultstate="collapsed" desc="disease layout (Manual Annotation">
            HorizontalLayout diseaseLayout = new HorizontalLayout();
            CheckBox checkboxDiseaseYes = new CheckBox("Yes");
            CheckBox checkboxDiseaseNo = new CheckBox("No");

            String disease_from_biosample_attribute = "";
            if (suggestion_disease.startsWith("Yes")) {
                disease_from_biosample_attribute = "From Biosample: " + suggestion_disease;
            }
            String disease_found = "";
            String disease_text_parsed_confidence = "";
            for (String disease : list_of_diseases) {
                if (StringUtils.containsIgnoreCase(studyName, disease)
                        || StringUtils.containsIgnoreCase(studyTitle, disease)) {
                    checkboxDiseaseYes.setValue(true);
                    disease_found = disease_found + disease + " ";
                    disease_text_parsed_confidence = "keyword found in Study or Title";
                }
            }
            String diseaseLabelString = "";
            if (disease_text_parsed_confidence.length() > 1) {
                diseaseLabelString = "<b><i>Suggestion: </i></b>" + disease_found
                        + " <b> <i> Confidence: <i></b>  " + disease_text_parsed_confidence;
            }
            if (disease_from_biosample_attribute.length() > 1) {
                diseaseLabelString = diseaseLabelString + "<b><i>Suggestion: </i></b>"
                        + disease_from_biosample_attribute + " <b> <i> Confidence: <i></b>  "
                        + disease_confidence;
            }

            Label diseaseLabel = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + diseaseLabelString,
                    ContentMode.HTML);
            Label diseaseTitle = new Label("<b>Disease: </b>", ContentMode.HTML);
            diseaseLayout.addComponent(diseaseTitle);
            diseaseLayout.addComponent(checkboxDiseaseNo);
            diseaseLayout.addComponent(checkboxDiseaseYes);
            diseaseLayout.addComponent(diseaseLabel);
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="study types layout (Manual Annotation)">
            Panel studyTypesPanel = new Panel("Sample Types");
            HorizontalLayout studyTypesLayout = new HorizontalLayout();

            HorizontalLayout caseControlLayout = new HorizontalLayout();
            CheckBox checkboxCaseControlYes = new CheckBox("Yes");
            CheckBox checkboxCaseControlNo = new CheckBox("No");
            // checkboxCaseControlYes.setValue(true);
            Label caseControlTitle = new Label("<b>Case-Control: </b>", ContentMode.HTML);
            caseControlLayout.addComponent(caseControlTitle);
            caseControlLayout.addComponent(checkboxCaseControlYes);
            caseControlLayout.addComponent(checkboxCaseControlNo);

            HorizontalLayout timeSeriesLayout = new HorizontalLayout();
            CheckBox checkboxTimeSeriesYes = new CheckBox("Yes");
            CheckBox checkboxTimeSeriesNo = new CheckBox("No");
            //checkboxTimeSeriesYes.setValue(true);
            Label timeSeriesTitle = new Label("<b>Time Series: </b>", ContentMode.HTML);
            timeSeriesLayout.addComponent(timeSeriesTitle);
            timeSeriesLayout.addComponent(checkboxTimeSeriesYes);
            timeSeriesLayout.addComponent(checkboxTimeSeriesNo);

            HorizontalLayout treatementLayout = new HorizontalLayout();
            CheckBox checkboxTreatmentYes = new CheckBox("Yes");
            CheckBox checkboxTreatmentNo = new CheckBox("No");
            //  checkboxTreatmentYes.setValue(true);
            Label treatmentTitle = new Label("<b>Treatment: </b>", ContentMode.HTML);
            treatementLayout.addComponent(treatmentTitle);
            treatementLayout.addComponent(checkboxTreatmentYes);
            treatementLayout.addComponent(checkboxTreatmentNo);

            studyTypesLayout.addComponent(caseControlLayout);
            Label emptyLabel = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            studyTypesLayout.addComponent(emptyLabel);
            studyTypesLayout.addComponent(timeSeriesLayout);
            Label emptyLabel0 = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            studyTypesLayout.addComponent(emptyLabel0);
            studyTypesLayout.addComponent(treatementLayout);
            studyTypesLayout.setSizeFull();
            studyTypesPanel.setContent(studyTypesLayout);
            studyTypesPanel.setWidth(Sizeable.SIZE_UNDEFINED, Unit.PERCENTAGE);
            studyTypesPanel.addStyleName("panelborder");
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="Disease Category Layout">
            Panel diseaseCategoryPanel = new Panel("Disease Category");
            HorizontalLayout diseaseCategoriesLayout = new HorizontalLayout();
            //Complex Disease
            ListSelect complexDisease = new ListSelect("Complex Disease");
            complexDisease.setMultiSelect(true);

            for (String disease : complexDiseaseArray) {
                complexDisease.addItem(disease);

            }
            diseaseCategoriesLayout.addComponent(complexDisease);
            Label emptyLabel2 = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            diseaseCategoriesLayout.addComponent(emptyLabel2);
            // Rare disease
            ListSelect rareDisease = new ListSelect("Rare Diseases");
            rareDisease.setMultiSelect(true);
            for (String disease : rareDiseaseArray) {
                rareDisease.addItem(disease);
            }
            diseaseCategoriesLayout.addComponent(rareDisease);
            Label emptyLabel3 = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            diseaseCategoriesLayout.addComponent(emptyLabel3);
            // Other diseases
            ListSelect otherDisease = new ListSelect("Other Diseases");
            otherDisease.setMultiSelect(true);
            for (String disease : otherDiseaseArray) {
                otherDisease.addItem(disease);
            }
            diseaseCategoriesLayout.addComponent(otherDisease);
            //   Label emptyLabel4 = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", ContentMode.HTML);
            //  diseaseCategoriesLayout.addComponent(emptyLabel4);

            diseaseCategoryPanel.setContent(diseaseCategoriesLayout);
            diseaseCategoryPanel.setWidth(Sizeable.SIZE_UNDEFINED, Unit.PERCENTAGE);
            diseaseCategoryPanel.addStyleName("panelborder");

            /*
             HorizontalLayout diseaseCategoriesLayout = new HorizontalLayout();
             Label diseaseCategoryLabel = new Label("<b><i>Suggestion: </i></b>" + disease_found + " <b> <i> Confidence: <i></b>  " + disease_confidence, ContentMode.HTML);
             String[] diseaseCategories = new String[]{"Complex Disease", "Rare Disease", "Other", "Not Sure"};
             List<String> diseaseCategoriesList = Arrays.asList(diseaseCategories);
             ComboBox diseaseCategoryComboBox = new ComboBox("Disease Category", diseaseCategoriesList);
             diseaseCategoriesLayout.addComponent(diseaseCategoryComboBox);
             diseaseCategoriesLayout.addComponent(diseaseCategoryLabel);
             */
            //</editor-fold>
            //<editor-fold defaultstate="collapsed" desc="platform layout (manual annotation)">
            //  List<String> platformsList = Arrays.asList(platforms);
            //  ComboBox platformsListSelect = new ComboBox("Sequencing Platform", platformsList);
            ListSelect platformsListSelect = new ListSelect("Sequencing Platform");
            platformsListSelect.setMultiSelect(true);
            for (String platform : platforms) {
                platformsListSelect.addItem(platform);
            }
            Set<String> matchedPlatformSet = new HashSet();
            String platform_from_sra = "";
            String platorm_confidence = "";
            int matchPlatformCount = 0;
            for (String[] val : platformMap.values()) {
                if (val.length > 1) {
                    for (String pf : platforms) {
                        if (val[0].equalsIgnoreCase(pf)) {
                            matchedPlatformSet.add(pf);
                            matchPlatformCount = matchPlatformCount + 1;
                        }
                    }
                } else {

                }
            }
            if (matchedPlatformSet.isEmpty()) {
                platform_from_sra = "Match Not Found";
            } else {
                if (matchedPlatformSet.size() == matchPlatformCount) {
                    if (matchedPlatformSet.size() == 1) {
                        platform_from_sra = matchedPlatformSet.iterator().next().toString();
                        for (Iterator i = platformsListSelect.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (platform_from_sra.equalsIgnoreCase(temp)) {
                                platformsListSelect.select(iid);
                            }
                        }

                    } else {
                        platform_from_sra = "Can't predict. All experiment on different Platforms";
                    }
                } else {
                    if (matchedPlatformSet.size() == 1) {
                        // Perfect 
                        platform_from_sra = matchedPlatformSet.iterator().next().toString();
                        for (Iterator i = platformsListSelect.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (platform_from_sra.equalsIgnoreCase(temp)) {
                                platformsListSelect.select(iid);
                            }
                        }
                        platorm_confidence = "100%";
                    } else {

                    }
                }
            }

            HorizontalLayout platformLayout = new HorizontalLayout();
            Label suggestedPlatformLabel = new Label("<b><i>Suggestion: </i></b>" + platform_from_sra
                    + "<b> <i> Confidence: <i></b>  " + platorm_confidence, ContentMode.HTML);
            platformsListSelect.setHeight(platformsListSelect.size() + 2, Unit.EM);
            platformLayout.addComponent(platformsListSelect);
            platformLayout.addComponent(suggestedPlatformLabel);
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="Sample types Panel (Manual Annotation)">
            Panel sampleTypesPanel = new Panel("Sample Types");
            VerticalLayout sampleTypesLayout = new VerticalLayout();
            CheckBox checkboxSampleTypeCellLine = new CheckBox("Cell Line");
            CheckBox checkboxSampleTypeTissue = new CheckBox("Tissue");
            CheckBox checkboxSampleTypePrimaryCells = new CheckBox("Primary Cells");
            CheckBox checkboxSampleTypeWholeBlood = new CheckBox("Blood");
            CheckBox checkboxSampleTypePlasma = new CheckBox("Plasma");
            String suggestedCellTypeLabelString = "";
            if (suggestion_cell_line.startsWith("Yes")) {
                //sampleTypesListComboBox.select("Cell Lines");
                checkboxSampleTypeCellLine.setValue(true);
                suggestedCellTypeLabelString = "<b><i>&nbsp;&nbsp;&nbsp;&nbsp;Suggestion: </i></b>"
                        + "Cell Lines --> " + suggestion_cell_line + " <b> <i> Confidence: <i></b>   "
                        + cell_line_confidence;
            }
            Label suggestedCellLineLabel = new Label(suggestedCellTypeLabelString, ContentMode.HTML);
            String suggestedTissueLabelString = "";
            if (suggestion_organism_part.startsWith("Yes")) {
                checkboxSampleTypeTissue.setValue(true);
                suggestedTissueLabelString = suggestedTissueLabelString
                        + "<b><i>&nbsp;&nbsp;&nbsp;&nbsp;Suggestion: </i></b>" + "Organism part --> "
                        + suggestion_organism_part + " <b> <i> Confidence: <i></b>   "
                        + organism_part_confidence;
            }

            if (suggestion_tissue.startsWith("Yes")) {
                checkboxSampleTypeTissue.setValue(true);
                suggestedTissueLabelString = suggestedTissueLabelString
                        + "<b><i>&nbsp;&nbsp;&nbsp;&nbsp;Suggestion: </i></b>" + "Tissue --> "
                        + suggestion_tissue + " <b> <i> Confidence: <i></b>   " + tissue_confidence;
            }
            Label suggestedTissueLabel = new Label(suggestedTissueLabelString, ContentMode.HTML);

            String suggestedStemCellString = "";
            /*
             if (suggestion_stem_cell.startsWith("Yes")) {                   
             checkboxSampleTypeStemCells.setValue(true);
             suggestedCellTypeLabelString = "<b><i>Suggestion: </i></b>" + "Cell Lines --> " + suggestion_stem_cell + " <b> <i> Confidence: <i></b>   " + stem_cell_confidence;
             }
             */
            Label suggestedStemCellLabel = new Label(suggestedStemCellString, ContentMode.HTML);

            String suggestedWholeBloodLabelString = "";
            /*
             if (suggestion_whole_blood.startsWith("Yes")) {                   
             checkboxSampleTypeWholeBlood.setValue(true);
             suggestedWholeBloodLabelString = "<b><i>Suggestion: </i></b>" + "Whole Blood --> " + suggestion_whole_blood + " <b> <i> Confidence: <i></b>   " + whole_blood_confidence;
             }
             */
            Label suggestedWholeBloodLabel = new Label(suggestedWholeBloodLabelString, ContentMode.HTML);

            String suggestedPlasmaLabelString = "";
            /*
             if (suggestion_plasma.startsWith("Yes")) {                   
             checkboxSampleTypePlasma.setValue(true);
             suggestedPlasmaLabelString = "<b><i>Suggestion: </i></b>" + "Cell Lines --> " + suggestion_plasma + " <b> <i> Confidence: <i></b>   " + plasma_confidence;
             }
             */
            Label suggestedPlasmaLabel = new Label(suggestedPlasmaLabelString, ContentMode.HTML);

            HorizontalLayout CellLineLayout = new HorizontalLayout();
            CellLineLayout.addComponent(checkboxSampleTypeCellLine);
            CellLineLayout.addComponent(suggestedCellLineLabel);

            HorizontalLayout PrimaryCellsLayout = new HorizontalLayout();
            PrimaryCellsLayout.addComponent(checkboxSampleTypePrimaryCells);
            //  PrimaryCellsLayout.addComponent(suggestedPrimaryCellsLabel);

            HorizontalLayout TissueLayout = new HorizontalLayout();
            TissueLayout.addComponent(checkboxSampleTypeTissue);
            TissueLayout.addComponent(suggestedTissueLabel);

            HorizontalLayout WholeBloodLayout = new HorizontalLayout();
            WholeBloodLayout.addComponent(checkboxSampleTypeWholeBlood);
            WholeBloodLayout.addComponent(suggestedWholeBloodLabel);

            HorizontalLayout PlasmaLayout = new HorizontalLayout();
            PlasmaLayout.addComponent(checkboxSampleTypePlasma);
            PlasmaLayout.addComponent(suggestedPlasmaLabel);

            sampleTypesLayout.addComponent(CellLineLayout);
            sampleTypesLayout.addComponent(PrimaryCellsLayout);
            sampleTypesLayout.addComponent(TissueLayout);
            sampleTypesLayout.addComponent(WholeBloodLayout);
            sampleTypesLayout.addComponent(PlasmaLayout);

            sampleTypesPanel.setContent(sampleTypesLayout);
            sampleTypesPanel.setWidth(Sizeable.SIZE_UNDEFINED, Unit.PERCENTAGE);
            sampleTypesPanel.addStyleName("panelborder");

            //</editor-fold>
            Button addCustomAnnoButton = new Button("++ Custom Annotation");
            addCustomAnnoButton.addClickListener(new Button.ClickListener() {
                public void buttonClick(ClickEvent event) {
                    custom_annotation_counter = custom_annotation_counter + 1;
                    HorizontalLayout customLayout = new HorizontalLayout();
                    TextField customAnnoName = new TextField("Custom Name");
                    customAnnoName.setId("customAnnoName" + custom_annotation_counter);
                    TextField customAnnoValue = new TextField("Custom Value");
                    customLayout.addComponent(customAnnoName);
                    customLayout.addComponent(customAnnoValue);
                    customAnnoValue.setId("customAnnoValue" + custom_annotation_counter);
                    int addCustomAnnoButtonIndex = rightTopAnnotationForm
                            .getComponentIndex(addCustomAnnoButton);
                    rightTopAnnotationForm.addComponent(customLayout, addCustomAnnoButtonIndex);

                }
            });

            //<editor-fold defaultstate="collapsed" desc="Replicate Type">
            HorizontalLayout replicatTypesLayout = new HorizontalLayout();
            String replicateType_from_sra = "";
            String replicateType_confidence = "";
            Label suggestedreplicatTypeLabel = new Label("<b><i>Suggestion: </i></b>" + replicateType_from_sra
                    + " <b> <i> Confidence: <i></b>  " + replicateType_confidence, ContentMode.HTML);
            String[] replicatTypes = new String[] { "Biological -- different individuals",
                    "Biological -- same individual but severe treatment to RNA",
                    "Semi Biological/Technical -- mild treatment",
                    "Technical -- machine parameter or buffer (very mild)" };
            List<String> replicatTypesList = Arrays.asList(replicatTypes);
            ComboBox replicatTypesListComboBox = new ComboBox("Replicates Type ", replicatTypesList);
            replicatTypesLayout.addComponent(replicatTypesListComboBox);
            replicatTypesLayout.addComponent(suggestedreplicatTypeLabel);

            //</editor-fold>
            checkboxCaseControlYes.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxCaseControlYes.getValue()) {
                        checkboxCaseControlNo.setValue(!checkboxCaseControlYes.getValue());
                    }

                }
            });
            checkboxCaseControlNo.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxCaseControlNo.getValue()) {
                        checkboxCaseControlYes.setValue(!checkboxCaseControlNo.getValue());
                    }
                }
            });

            checkboxTimeSeriesYes.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxTimeSeriesYes.getValue()) {
                        checkboxTimeSeriesNo.setValue(!checkboxTimeSeriesYes.getValue());
                    }

                }
            });
            checkboxTimeSeriesNo.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxTimeSeriesNo.getValue()) {
                        checkboxTimeSeriesYes.setValue(!checkboxTimeSeriesNo.getValue());
                    }
                }
            });

            checkboxTreatmentYes.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxTreatmentYes.getValue()) {
                        checkboxTreatmentNo.setValue(!checkboxTreatmentYes.getValue());
                    }

                }
            });
            checkboxTreatmentNo.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    if (checkboxTreatmentNo.getValue()) {
                        checkboxTreatmentYes.setValue(!checkboxTreatmentNo.getValue());
                    }
                }
            });

            checkboxDiseaseYes.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    checkboxDiseaseNo.setValue(!checkboxDiseaseYes.getValue());
                    diseaseCategoryPanel.setVisible(true);
                }
            });
            checkboxDiseaseNo.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    checkboxDiseaseYes.setValue(!checkboxDiseaseNo.getValue());
                    diseaseCategoryPanel.setVisible(false);
                }
            });

            //<editor-fold defaultstate="collapsed" desc="Annotation Status Ongoing or Completed ">
            Panel annotationStatusPanel = new Panel("Annotation Status");
            CheckBox checkboxAnnotaionCompleted = new CheckBox("Annotaion Completed");
            CheckBox checkboxAnnotaionOngoing = new CheckBox("Annotaion Ongoing");
            checkboxAnnotaionOngoing.setValue(true);
            checkboxAnnotaionCompleted.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    checkboxAnnotaionOngoing.setValue(!checkboxAnnotaionCompleted.getValue());
                }
            });
            checkboxAnnotaionOngoing.addValueChangeListener(new Property.ValueChangeListener() {
                @Override
                public void valueChange(ValueChangeEvent event) {
                    checkboxAnnotaionCompleted.setValue(!checkboxAnnotaionOngoing.getValue());
                }
            });

            HorizontalLayout annotationStatusLayout = new HorizontalLayout();
            annotationStatusLayout.addComponent(checkboxAnnotaionOngoing);
            Label emptyLabel_1 = new Label("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
                    ContentMode.HTML);
            annotationStatusLayout.addComponent(emptyLabel_1);
            annotationStatusLayout.addComponent(checkboxAnnotaionCompleted);
            annotationStatusPanel.setContent(annotationStatusLayout);
            annotationStatusPanel.setWidth(Sizeable.SIZE_UNDEFINED, Unit.PERCENTAGE);
            annotationStatusPanel.addStyleName("panelborder");
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="login, sign in, register, and suggestion by manual annotation if logged ">
            Button loginButton = new Button("Sign In");
            Button registerButton = new Button("Register");

            HorizontalLayout requestLoginLayout = new HorizontalLayout();
            requestLoginLayout.addComponent(userWelcome);
            requestLoginLayout.addComponent(loginButton);
            requestLoginLayout.addComponent(registerButton);
            rightTopAnnotationForm.addComponent(requestLoginLayout);
            VerticalLayout userPasswordLayout = new VerticalLayout();
            VerticalLayout registerLayout = new VerticalLayout();

            loginButton.addClickListener(new Button.ClickListener() {

                @Override
                public void buttonClick(ClickEvent event) {
                    if (event.getButton() == loginButton) {
                        if (loginButton.getCaption() == "Sign In") {

                            // Create the user input field
                            user = new TextField("User:");
                            user.setWidth("300px");
                            user.setRequired(true);
                            user.setInputPrompt("Your username (eg. joe@email.com)");
                            user.addValidator(new EmailValidator("Username must be an email address"));
                            user.setInvalidAllowed(false);

                            // Create the password input field
                            password = new PasswordField("Password:");
                            password.setWidth("300px");
                            password.addValidator(new PasswordValidator());
                            password.setRequired(true);
                            password.setValue("");
                            password.setNullRepresentation("");

                            // Create login button
                            loginSubmitButton = new Button("Login", this);
                            loginSubmitButton.addClickListener(new Button.ClickListener() {

                                @Override
                                public void buttonClick(ClickEvent event) {
                                    if (event.getButton() == loginSubmitButton) {
                                        if (!user.isValid() || !password.isValid()) {
                                            return;
                                        }
                                        String username = user.getValue();
                                        String entered_password = password.getValue();

                                        boolean isChecked = false;
                                        try {
                                            // check user details in the database
                                            SQLContainer checkContainer = createMySQLContainer(
                                                    "annotation_users", "dummy");
                                            Item id = checkContainer
                                                    .getItem(new RowId(new Object[] { username }));
                                            if (id != null) {
                                                user.setCaption("User");
                                                if (entered_password.equals(
                                                        id.getItemProperty("password").getValue().toString())) {
                                                    isChecked = true;
                                                } else {
                                                    password.setCaption("Password (wrong password entered)");
                                                    System.out.println(
                                                            "Password can not be validated. Please re-enter or Register");
                                                    System.out.println(
                                                            "Fetched password for user : " + id.toString()
                                                                    + " is " + id.getItemProperty("password")
                                                                            .getValue().toString());
                                                }
                                            } else {
                                                user.setCaption(
                                                        "User (wrong username entered. Enter your email again or register)");
                                                password.setCaption("Password");
                                                System.out.println(
                                                        "User name can not be validated. Please re-enter or Register");
                                            }

                                        } catch (Exception e) {
                                            isChecked = false;
                                            System.out.println(
                                                    "Problem in validating login details using database. Either user or password is wrong");
                                        }
                                        boolean isValid = username.equals("test@test.com")
                                                && entered_password.equals("passw0rd");

                                        if (isChecked) {
                                            // System.out.println("User name and passoword : Both are correct");
                                            // Store the current user in the service session
                                            getSession().setAttribute("user", username);
                                            userWelcome.setValue("Hello " + username);
                                            int userPasswordLayoutIndex = rightTopAnnotationForm
                                                    .getComponentIndex(userPasswordLayout);
                                            requestLoginLayout.removeComponent(registerButton);
                                            rightTopAnnotationForm.addComponent(requestLoginLayout,
                                                    userPasswordLayoutIndex);
                                            rightTopAnnotationForm.removeComponent(userPasswordLayout);
                                            userPasswordLayout.removeAllComponents();
                                            loginButton.setCaption("Logout");
                                        } else {
                                            // Wrong password clear the password field and refocuses it
                                            password.setValue(null);
                                            password.focus();

                                        }
                                        // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                    }
                                }
                            });

                            // Add both to a panel
                            VerticalLayout fields = new VerticalLayout(user, password, loginSubmitButton);
                            fields.setCaption(
                                    "Please login to access the application. (test@test.com/passw0rd)");
                            fields.setSpacing(true);
                            fields.setMargin(new MarginInfo(true, true, true, false));
                            fields.setSizeUndefined();

                            // The view root layout
                            userPasswordLayout.addComponent(fields);
                            int addUserLayoutIndex = rightTopAnnotationForm
                                    .getComponentIndex(requestLoginLayout);
                            rightTopAnnotationForm.addComponent(userPasswordLayout, addUserLayoutIndex);
                            rightTopAnnotationForm.removeComponent(requestLoginLayout);

                        } else if (loginButton.getCaption() == "Logout") {
                            getSession().setAttribute("user", null);
                            userWelcome.setValue("Anonymous ");
                            loginButton.setCaption("Sign In");
                            requestLoginLayout.addComponent(registerButton);

                        }
                    }

                }
            });

            registerButton.addClickListener(new Button.ClickListener() {
                @Override
                public void buttonClick(ClickEvent event) {
                    if (event.getButton() == registerButton) {

                        // Create the user input field
                        TextField newUser = new TextField("User:");
                        newUser.setWidth("300px");
                        newUser.setRequired(true);
                        newUser.setInputPrompt("Your username (eg. joe@email.com)");
                        newUser.addValidator(new EmailValidator("Username must be an email address"));
                        newUser.setInvalidAllowed(false);

                        // Create the password input field
                        PasswordField setPassword = new PasswordField("Set Password:");
                        setPassword.setWidth("300px");
                        setPassword.addValidator(new PasswordValidator());
                        setPassword.setRequired(true);
                        setPassword.setValue("");
                        setPassword.setNullRepresentation("");

                        // Create login button
                        Button registerSubmitButton = new Button("Register me", this);
                        registerSubmitButton.addClickListener(new Button.ClickListener() {

                            @Override
                            public void buttonClick(ClickEvent event) {
                                if (event.getButton() == registerSubmitButton) {
                                    if (!newUser.isValid() || !setPassword.isValid()) {
                                        return;
                                    }
                                    String username = newUser.getValue();
                                    String entered_password = setPassword.getValue();
                                    String insert_user = "'" + username + "' , '" + entered_password + "'";

                                    boolean isInserted = true;
                                    try {
                                        // Insert new user details in the database
                                        SQLContainer insertContainer = createMySQLContainer("annotation_users",
                                                insert_user);
                                        Object id = insertContainer.addItem();
                                        insertContainer.getContainerProperty(id, "user").setValue(username);
                                        insertContainer.getContainerProperty(id, "password")
                                                .setValue(entered_password);
                                        insertContainer.commit();
                                    } catch (Exception e) {
                                        isInserted = false;
                                        System.out.println(
                                                "Problem in registering new user while inserting into the database");
                                    }

                                    if (isInserted) {
                                        userWelcome.setValue(
                                                "Registered Successfulle. Please Sign in to annotate. ");
                                        int registerLayoutIndex = rightTopAnnotationForm
                                                .getComponentIndex(registerLayout);
                                        rightTopAnnotationForm.addComponent(requestLoginLayout,
                                                registerLayoutIndex);
                                        rightTopAnnotationForm.removeComponent(registerLayout);
                                        registerLayout.removeAllComponents();
                                        requestLoginLayout.removeComponent(registerButton);
                                    } else {
                                        // Wrong password clear the password field and refocuses it
                                        password.setValue(null);
                                        password.focus();

                                    }
                                    // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                }
                            }
                        });

                        // Add both to a panel
                        VerticalLayout registerFields = new VerticalLayout(newUser, setPassword,
                                registerSubmitButton);
                        registerFields
                                .setCaption("Please login to access the application. (test@test.com/passw0rd)");
                        registerFields.setSpacing(true);
                        registerFields.setMargin(new MarginInfo(true, true, true, false));
                        registerFields.setSizeUndefined();

                        registerLayout.addComponent(registerFields);
                        int requestLoginLayoutIndex = rightTopAnnotationForm
                                .getComponentIndex(requestLoginLayout);
                        rightTopAnnotationForm.addComponent(registerLayout, requestLoginLayoutIndex);
                        rightTopAnnotationForm.removeComponent(requestLoginLayout);

                    }
                }
            });
            boolean isLoggedIn = getSession().getAttribute("user") != null;
            if (isLoggedIn) {
                // System.out.println("user attribute" + String.valueOf(getSession().getAttribute("user")));
                String logged_user = String.valueOf(getSession().getAttribute("user"));
                userWelcome.setValue("Hello " + logged_user);
                loginButton.setCaption("Logout");
                requestLoginLayout.removeComponent(registerButton);
                try {

                    String search_query = " SELECT * FROM manual_annotation " + "where annotator = '"
                            + logged_user + "'" + " AND studyid =  '" + selectedStudy + "'";

                    rnaseqContainer = createMySQLContainer("suggestion_by_manual_annotation", search_query);
                    //rnaseqContainer.removeAllContainerFilters();
                    Item lastItem = rnaseqContainer.getItem(rnaseqContainer.lastItemId());
                    System.out.println("Item is " + lastItem);
                    //   String annotated_disease_category = lastItem.getItemProperty("disease_category").getValue().toString();
                    String isDisease = "1";
                    if (!(lastItem.getItemProperty("isDisease").getValue() == null)) {
                        isDisease = lastItem.getItemProperty("isDisease").getValue().toString();
                        // System.out.println("disease is not null" +  isDisease);
                        if (isDisease.equals("1")) {
                            checkboxDiseaseYes.setValue(true);
                        } else if (isDisease.equals("0")) {
                            checkboxDiseaseNo.setValue(true);
                        }
                    } else {
                        checkboxDiseaseYes.setValue(true);
                        //  System.out.println("disease is null");
                    }

                    if (!(lastItem.getItemProperty("isCaseControl").getValue() == null)) {
                        if (lastItem.getItemProperty("isCaseControl").getValue().toString().equals("1")) {
                            checkboxCaseControlYes.setValue(true);
                        } else if (lastItem.getItemProperty("isCaseControl").getValue().toString()
                                .equals("0")) {
                            checkboxCaseControlNo.setValue(true);
                        }
                    }

                    if (!(lastItem.getItemProperty("isTimeSeries").getValue() == null)) {
                        if (lastItem.getItemProperty("isTimeSeries").getValue().toString().equals("1")) {
                            checkboxTimeSeriesYes.setValue(true);
                        } else if (lastItem.getItemProperty("isTimeSeries").getValue().toString().equals("0")) {
                            checkboxTimeSeriesNo.setValue(true);
                        }
                    }

                    if (!(lastItem.getItemProperty("isTreatment").getValue() == null)) {
                        if (lastItem.getItemProperty("isTreatment").getValue().toString().equals("1")) {
                            checkboxTreatmentYes.setValue(true);
                        } else if (lastItem.getItemProperty("isTreatment").getValue().toString().equals("0")) {
                            checkboxTreatmentNo.setValue(true);
                        }
                    }

                    if (!(lastItem.getItemProperty("isCellLine").getValue() == null)) {
                        if (lastItem.getItemProperty("isCellLine").getValue().toString().equals("1")) {
                            checkboxSampleTypeCellLine.setValue(true);
                        } else if (lastItem.getItemProperty("isCellLine").getValue().toString().equals("0")) {
                            checkboxSampleTypeCellLine.setValue(false);
                        }
                    }
                    if (!(lastItem.getItemProperty("isPrimaryCells").getValue() == null)) {
                        if (lastItem.getItemProperty("isPrimaryCells").getValue().toString().equals("1")) {
                            checkboxSampleTypePrimaryCells.setValue(true);
                        } else if (lastItem.getItemProperty("isPrimaryCells").getValue().toString()
                                .equals("0")) {
                            checkboxSampleTypePrimaryCells.setValue(false);
                        }
                    }

                    if (!(lastItem.getItemProperty("isTissue").getValue() == null)) {
                        if (lastItem.getItemProperty("isTissue").getValue().toString().equals("1")) {
                            checkboxSampleTypeTissue.setValue(true);
                        } else if (lastItem.getItemProperty("isTissue").getValue().toString().equals("0")) {
                            checkboxSampleTypeTissue.setValue(false);
                        }
                    }
                    if (!(lastItem.getItemProperty("isWholeBlood").getValue() == null)) {
                        if (lastItem.getItemProperty("isWholeBlood").getValue().toString().equals("1")) {
                            checkboxSampleTypeWholeBlood.setValue(true);
                        } else if (lastItem.getItemProperty("isWholeBlood").getValue().toString().equals("0")) {
                            checkboxSampleTypeWholeBlood.setValue(false);
                        }
                    }

                    if (!(lastItem.getItemProperty("isPlasma").getValue() == null)) {
                        if (lastItem.getItemProperty("isPlasma").getValue().toString().equals("1")) {
                            checkboxSampleTypePlasma.setValue(true);
                        } else if (lastItem.getItemProperty("isPlasma").getValue().toString().equals("0")) {
                            checkboxSampleTypePlasma.setValue(false);
                        }
                    }

                    if (!(lastItem.getItemProperty("sequencing_platform").getValue() == null)) {
                        String sequencing_platform = lastItem.getItemProperty("sequencing_platform").getValue()
                                .toString();
                        String[] annotated_platforms = sequencing_platform.split("\\;");
                        for (Iterator i = platformsListSelect.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (annotated_platforms.length > 0) {
                                for (String pf : annotated_platforms) {
                                    if (pf.equalsIgnoreCase(temp)) {
                                        platformsListSelect.select(iid);
                                    }
                                }
                            }

                        }
                    }

                    if (!(lastItem.getItemProperty("replicate_type").getValue() == null)) {
                        String replicate_type = lastItem.getItemProperty("replicate_type").getValue()
                                .toString();
                        for (Iterator i = replicatTypesListComboBox.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (replicate_type.equalsIgnoreCase(temp)) {
                                replicatTypesListComboBox.select(iid);
                            }
                        }

                    }

                    if (!(lastItem.getItemProperty("annotation_status").getValue() == null)) {
                        if (lastItem.getItemProperty("annotation_status").getValue().toString()
                                .equals("ongoing")) {
                            checkboxAnnotaionOngoing.setValue(true);
                        } else if (lastItem.getItemProperty("annotation_status").getValue().toString()
                                .equals("completed")) {
                            checkboxAnnotaionCompleted.setValue(true);
                        }
                    }

                    String annotated_disease_category = lastItem.getItemProperty("disease_category").getValue()
                            .toString();
                    String[] annotated_disease_categories = annotated_disease_category.split("\\;");

                    String main_disease = "";
                    for (Iterator i = complexDisease.getItemIds().iterator(); i.hasNext();) {
                        Object iid = (Object) i.next();
                        String selected_disease_category = "";
                        String temp = iid.toString();
                        if (!temp.startsWith("--")) {
                            main_disease = temp;
                        }

                        if (iid.toString().startsWith("--")) { // sub disease is selected
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "complex_disease|" + main_disease + "|" + temp;
                            } else {
                                selected_disease_category = selected_disease_category + "," + "complex_disease|"
                                        + main_disease + "|" + temp;
                            }

                        } else {
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "complex_disease|" + main_disease + "|" + "-- Any";
                            } else {
                                selected_disease_category = selected_disease_category + "," + "complex_disease|"
                                        + main_disease + "|" + "-- Any";
                            }

                        }

                        if (annotated_disease_categories.length > 0) {
                            for (String cat : annotated_disease_categories) {
                                //  System.out.println(cat + selected_disease_category);
                                if (cat.equals(selected_disease_category)) {
                                    complexDisease.select(iid);
                                }
                            }
                        }
                    }

                    main_disease = "";
                    for (Iterator i = rareDisease.getItemIds().iterator(); i.hasNext();) {
                        Object iid = (Object) i.next();
                        String selected_disease_category = "";
                        String temp = iid.toString();
                        if (!temp.startsWith("--")) {
                            main_disease = temp;
                        }

                        if (iid.toString().startsWith("--")) { // sub disease is selected
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "rare_disease|" + main_disease + "|" + temp;
                            } else {
                                selected_disease_category = selected_disease_category + "," + "rare_disease|"
                                        + main_disease + "|" + temp;
                            }

                        } else {
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "rare_disease|" + main_disease + "|" + "-- Any";
                            } else {
                                selected_disease_category = selected_disease_category + "," + "rare_disease|"
                                        + main_disease + "|" + "-- Any";
                            }

                        }

                        if (annotated_disease_categories.length > 0) {
                            for (String cat : annotated_disease_categories) {
                                //  System.out.println(cat + selected_disease_category);
                                if (cat.equals(selected_disease_category)) {
                                    rareDisease.select(iid);
                                }
                            }
                        }
                    }

                    main_disease = "";
                    for (Iterator i = otherDisease.getItemIds().iterator(); i.hasNext();) {
                        Object iid = (Object) i.next();
                        String selected_disease_category = "";
                        String temp = iid.toString();
                        if (!temp.startsWith("--")) {
                            main_disease = temp;
                        }

                        if (iid.toString().startsWith("--")) { // sub disease is selected
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "other_disease|" + main_disease + "|" + temp;
                            } else {
                                selected_disease_category = selected_disease_category + "," + "other_disease|"
                                        + main_disease + "|" + temp;
                            }

                        } else {
                            if (selected_disease_category.isEmpty()) {
                                selected_disease_category = "other_disease|" + main_disease + "|" + "-- Any";
                            } else {
                                selected_disease_category = selected_disease_category + "," + "other_disease|"
                                        + main_disease + "|" + "-- Any";
                            }

                        }

                        if (annotated_disease_categories.length > 0) {
                            for (String cat : annotated_disease_categories) {
                                // System.out.println(cat + selected_disease_category);
                                if (cat.equals(selected_disease_category)) {
                                    otherDisease.select(iid);
                                }
                            }
                        }
                    }

                } catch (Exception e) {
                }

            }
            //</editor-fold>

            Button submitButton = new Button("Submit");
            submit_manual_count = 0;
            Label manualSubmitStatus = new Label("");
            submitButton.addClickListener(new Button.ClickListener() {
                public void buttonClick(ClickEvent event) {
                    if (event.getButton() == submitButton) {
                        submit_manual_count = submit_manual_count + 1;
                        int isDisease = 0;
                        if (checkboxDiseaseYes.getValue() && !checkboxDiseaseNo.getValue()) {
                            isDisease = 1;
                        }
                        String selected_disease_category = "";
                        String main_disease = "";
                        for (Iterator i = complexDisease.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (!temp.startsWith("--")) {
                                main_disease = temp;
                            }
                            if (complexDisease.isSelected(iid)) {
                                //  System.out.println("Selected" + temp);

                                if (iid.toString().startsWith("--")) { // sub disease is selected
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "complex_disease|" + main_disease + "|"
                                                + temp;
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "complex_disease|" + main_disease + "|" + temp;
                                    }

                                } else { //main disease is selected
                                    //     selected_disease_main = main_disease;
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "complex_disease|" + main_disease + "|"
                                                + "Any";
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "complex_disease|" + main_disease + "|" + "Any";
                                    }

                                }
                            }
                        }
                        main_disease = "";
                        for (Iterator i = rareDisease.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (!temp.startsWith("--")) {
                                main_disease = temp;
                            }
                            if (rareDisease.isSelected(iid)) {
                                //  System.out.println("Selected" + temp);

                                if (iid.toString().startsWith("--")) { // sub disease is selected
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "rare_disease|" + main_disease + "|" + temp;
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "rare_disease|" + main_disease + "|" + temp;
                                    }

                                } else { //main disease is selected
                                    //     selected_disease_main = main_disease;
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "rare_disease|" + main_disease + "|"
                                                + "Any";
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "rare_disease|" + main_disease + "|" + "Any";
                                    }

                                }
                            }
                        }
                        main_disease = "";
                        for (Iterator i = otherDisease.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();
                            if (!temp.startsWith("--")) {
                                main_disease = temp;
                            }
                            if (otherDisease.isSelected(iid)) {
                                //  System.out.println("Selected" + temp);

                                if (iid.toString().startsWith("--")) { // sub disease is selected
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "other_disease|" + main_disease + "|"
                                                + temp;
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "other_disease|" + main_disease + "|" + temp;
                                    }

                                } else {
                                    if (selected_disease_category.isEmpty()) {
                                        selected_disease_category = "other_disease|" + main_disease + "|"
                                                + "Any";
                                    } else {
                                        selected_disease_category = selected_disease_category + ";"
                                                + "other_disease|" + main_disease + "|" + "Any";
                                    }

                                }
                            }
                        }

                        int isCaseControl = 0;
                        if (checkboxCaseControlYes.getValue() && !checkboxCaseControlNo.getValue()) {
                            isCaseControl = 1;
                        }
                        int isTimeSeries = 0;
                        if (checkboxTimeSeriesYes.getValue() && !checkboxTimeSeriesNo.getValue()) {
                            isTimeSeries = 1;
                        }
                        int isTreatment = 0;
                        if (checkboxTreatmentYes.getValue() && !checkboxTreatmentNo.getValue()) {
                            isTreatment = 1;
                        }
                        int isTissue = 0;
                        if (checkboxSampleTypeTissue.getValue()) {
                            isTissue = 1;
                        }
                        int isCellLine = 0;
                        if (checkboxSampleTypeCellLine.getValue()) {
                            isCellLine = 1;
                        }
                        int isPrimaryCells = 0;
                        if (checkboxSampleTypePrimaryCells.getValue()) {
                            isPrimaryCells = 1;
                        }
                        int isWholeBlood = 0;
                        if (checkboxSampleTypeWholeBlood.getValue()) {
                            isWholeBlood = 1;
                        }
                        int isPlasma = 0;
                        if (checkboxSampleTypePlasma.getValue()) {
                            isPlasma = 1;
                        }

                        String selected_sequencing_platforms = "";
                        for (Iterator i = platformsListSelect.getItemIds().iterator(); i.hasNext();) {
                            Object iid = (Object) i.next();
                            String temp = iid.toString();

                            if (platformsListSelect.isSelected(iid)) {
                                if (selected_sequencing_platforms.isEmpty()) {
                                    selected_sequencing_platforms = temp;
                                } else {
                                    selected_sequencing_platforms = selected_sequencing_platforms + ";" + temp;
                                }

                            }
                        }

                        String annotation_status = "ongoing";
                        if (checkboxAnnotaionCompleted.getValue() && !checkboxAnnotaionOngoing.getValue()) {
                            annotation_status = "completed";
                        }

                        String custom_annotation_value = "";
                        for (int j = 1; j <= custom_annotation_counter; j++) {
                            if (findById(rightTopAnnotationForm, "customAnnoName" + j) instanceof TextField) {
                                TextField tempTFname = (TextField) findById(rightTopAnnotationForm,
                                        "customAnnoName" + j);
                                custom_annotation_value = custom_annotation_value + tempTFname.getValue()
                                        + ":::";
                                //  System.out.println(j + "custom name: " + tempTFname.getValue());
                            }
                            if (findById(rightTopAnnotationForm, "customAnnoValue" + j) instanceof TextField) {
                                TextField tempTFvalue = (TextField) findById(rightTopAnnotationForm,
                                        "customAnnoValue" + j);
                                custom_annotation_value = custom_annotation_value + tempTFvalue.getValue()
                                        + "###";
                                //  System.out.println(j + "custom value: " + tempTFvalue.getValue());
                            }
                        }
                        String annotator = "Anonymous";
                        boolean isLoggedIn = getSession().getAttribute("user") != null;
                        if (isLoggedIn) {
                            annotator = String.valueOf(getSession().getAttribute("user"));
                            //  System.out.println("annotator is " + annotator);
                        }
                        Boolean isInserted = true;
                        try {
                            // Insert new user details in the database
                            SQLContainer insertContainer = createMySQLContainer("manual_annotation", "dummy");
                            Object id = insertContainer.addItem();
                            insertContainer.getContainerProperty(id, "studyId").setValue(selectedStudy);
                            insertContainer.getContainerProperty(id, "isDisease").setValue(isDisease);
                            insertContainer.getContainerProperty(id, "isTimeSeries").setValue(isTimeSeries);
                            insertContainer.getContainerProperty(id, "isTreatment").setValue(isTreatment);
                            insertContainer.getContainerProperty(id, "isCellLine").setValue(isCellLine);
                            insertContainer.getContainerProperty(id, "isPrimaryCells").setValue(isPrimaryCells);
                            insertContainer.getContainerProperty(id, "isCaseControl").setValue(isCaseControl);
                            insertContainer.getContainerProperty(id, "isTissue").setValue(isTissue);
                            insertContainer.getContainerProperty(id, "disease_category")
                                    .setValue(selected_disease_category);
                            insertContainer.getContainerProperty(id, "sequencing_platform")
                                    .setValue(selected_sequencing_platforms);
                            insertContainer.getContainerProperty(id, "replicate_type")
                                    .setValue(replicatTypesListComboBox.getValue());
                            insertContainer.getContainerProperty(id, "isWholeBlood").setValue(isWholeBlood);
                            insertContainer.getContainerProperty(id, "isPlasma").setValue(isPlasma);
                            insertContainer.getContainerProperty(id, "custom_annotation")
                                    .setValue(custom_annotation_value);
                            insertContainer.getContainerProperty(id, "annotation_status")
                                    .setValue(annotation_status);
                            insertContainer.getContainerProperty(id, "annotator").setValue(annotator);
                            insertContainer.commit();
                            manualSubmitStatus.setCaption("Submitted Manual Annotation Successfully");
                            SQLContainer dummyStudyContainer = null;
                            if (annotation_status.equalsIgnoreCase("ongoing")) {
                                dummyStudyContainer = createMySQLContainer("study_summary_ongoing",
                                        selectedStudy);
                            } else if (annotation_status.equalsIgnoreCase("completed")) {
                                dummyStudyContainer = createMySQLContainer("study_summary_completed",
                                        selectedStudy);
                            }

                            //  Object studyid = insertStudyContainer.getItem(new RowId(new Object[]{selectedStudy}));
                            //  System.out.println("selected study is " + selectedStudy);
                            //   System.out.println("selected study id is  " + studyid.toString());
                            //  insertStudyContainer.getContainerProperty(studyid, "annotation_status").setValue(annotation_status);
                            //   insertStudyContainer.commit();
                            if (submit_manual_count > 1) {
                                manualSubmitStatus.setCaption("Submitted Manual Annotation Successfully "
                                        + submit_manual_count + " times");
                            }
                        } catch (Exception e) {
                            isInserted = false;
                            manualSubmitStatus.setCaption(
                                    "Problem occured during submission of Manual Annotation to the database");
                            System.out.println("Problem in inserting manual annotation into the database");
                            //  e.printStackTrace();
                        }
                    }
                }
            });

            rightTopAnnotationForm.addComponent(diseaseLayout);
            rightTopAnnotationForm.addComponent(studyTypesPanel);
            rightTopAnnotationForm.addComponent(diseaseCategoryPanel);
            rightTopAnnotationForm.addComponent(platformLayout);
            rightTopAnnotationForm.addComponent(sampleTypesPanel);
            rightTopAnnotationForm.addComponent(replicatTypesLayout);
            rightTopAnnotationForm.addComponent(addCustomAnnoButton);
            rightTopAnnotationForm.addComponent(annotationStatusPanel);
            rightTopAnnotationForm.addComponent(submitButton);
            rightTopAnnotationForm.addComponent(manualSubmitStatus);
            //</editor-fold>
            //</editor-fold>

            //<editor-fold defaultstate="collapsed" desc="fill tree in right bottom">
            Iterator iterator = biosampleSet.iterator();

            // check values
            int treeBiosampleCount = 0;
            while (iterator.hasNext()) {
                treeBiosampleCount = treeBiosampleCount + 1;
                //  System.out.println("Value: "+ iterator.next() + " ");
                //    if(treeBiosampleCount < 500){
                String bsample = iterator.next().toString();
                String[] biosample_parts = bsample.split("\\|");
                String biosample_acc = biosample_parts[0];
                tree.addItem(biosample_acc);
                tree.setParent(biosample_acc, selectedStudy);
                tree.setItemCaption(biosample_acc, "BioSample: " + biosample_acc);
                //    }
            }
            Set expMap_entrset = expMap.entrySet();
            Iterator it = expMap_entrset.iterator();
            while (it.hasNext()) {

                Map.Entry me = (Map.Entry) it.next();
                String[] expParts = expDetailMap.get(me.getKey());
                String expTitle = "";
                if (expParts.length > 3) {
                    expTitle = expParts[3];
                }
                tree.addItem(me.getKey());
                tree.setParent(me.getKey(), me.getValue());
                tree.setItemCaption(me.getKey(), "Experiment: " + me.getKey() + ": " + expTitle);
            }

            Set runMap_entrset = runMap.entrySet();
            Iterator runit = runMap_entrset.iterator();
            while (runit.hasNext()) {
                Map.Entry runEntry = (Map.Entry) runit.next();
                tree.addItem(runEntry.getKey());
                tree.setParent(runEntry.getKey(), runEntry.getValue());
                tree.setItemCaption(runEntry.getKey(), "Run: " + runEntry.getKey());
            }

            tree.expandItemsRecursively(selectedStudy);
            //</editor-fold>
        }
    });
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Events associated with the Tree (study/Biosample/Experiment/Runs">
    tree.setSelectable(true);
    tree.setImmediate(true);
    tree.addValueChangeListener(new Property.ValueChangeListener() {

        @Override
        public void valueChange(ValueChangeEvent event) {
            Object id = event.getProperty().getValue();
            if (id != null) {
                String selectedTreeId = id.toString();
                String selectedTreeItem = tree.getItemCaption(id).toString();
                // System.out.println("Tree event is fired: " + selectedTreeItem);
                if (selectedTreeItem.startsWith("BioSample")) {

                    myform.removeAllComponents();
                    SQLContainer tempContainer = createMySQLContainer("biosample", selectedTreeId);
                    for (int i = 0; i < tempContainer.getItemIds().size(); i++) {
                        String accessType = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("AccessType").getValue().toString();
                        String publicationDate = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("PublicationDate").getValue().toString();
                        String lastUpdate = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("LastUpdate").getValue().toString();
                        String accession = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Accession").getValue().toString();
                        String title = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Title").getValue().toString();
                        String taxonomy_id = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("TaxonomyId").getValue().toString();
                        String taxonomy_name = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("TaxonomyName").getValue().toString();
                        String samplePackage = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Package").getValue().toString();
                        String status = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Status").getValue().toString();
                        String statusTime = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("StatusTime").getValue().toString();
                        String sampleIds = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Ids").getValue().toString();
                        String attributes = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Attributes").getValue().toString();
                        String models = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Models").getValue().toString();
                        String submissionDate = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("SubmissionDate").getValue().toString();
                        String owner = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Owner").getValue().toString();

                        String[] myfields = new String[] { accessType, publicationDate, lastUpdate, accession,
                                title, taxonomy_id, taxonomy_name, samplePackage, status, statusTime, sampleIds,
                                attributes, models, submissionDate, owner };
                        /*
                         for (String fieldName : myfields) {
                         Label tempLabl = new Label("");
                         }
                         */
                        Label labelAccessType = new Label("Access Type: " + accessType);
                        myform.addComponent(labelAccessType);
                        Label labelPublicationDate = new Label("Publication Date: " + publicationDate);
                        myform.addComponent(labelPublicationDate);
                        Label labelLastUpdate = new Label("Last Update: " + lastUpdate);
                        myform.addComponent(labelLastUpdate);
                        Label labelAccession = new Label("Accession: " + accession);
                        myform.addComponent(labelAccession);
                        Label labelTitle = new Label("<b>Title: </b>" + title, ContentMode.HTML);
                        myform.addComponent(labelTitle);
                        Label labelTaxonomyId = new Label("Taxonomy Id: " + taxonomy_id);
                        myform.addComponent(labelTaxonomyId);
                        Label labelTaxonomyName = new Label("Taxonomy Name: " + taxonomy_name);
                        myform.addComponent(labelTaxonomyName);
                        Label labelPackage = new Label("Package: " + samplePackage);
                        myform.addComponent(labelPackage);
                        Label labelStatus = new Label("Status: " + status);
                        myform.addComponent(labelStatus);
                        Label labelStatusTime = new Label("Status Time: " + statusTime);
                        myform.addComponent(labelStatusTime);
                        Label labelOwner = new Label("Owner: " + owner);
                        myform.addComponent(labelOwner);

                        String[] id_parts = sampleIds.split("\\:\\-");
                        if (id_parts.length > 1) {
                            String[] id_dbs = id_parts[0].split("\\|");
                            String[] id_values = id_parts[1].split("\\|");
                            for (int j = 0; j < id_dbs.length; j++) {
                                Label tempLabel = new Label(id_dbs[j] + ": " + id_values[j]);
                                myform.addComponent(tempLabel);

                            }
                        }

                        String[] attribute_parts = attributes.split("\\:\\-");
                        if (attribute_parts.length > 1) {
                            String[] attribute_names = attribute_parts[0].split("\\|");
                            String[] attribute_values = attribute_parts[1].split("\\|");
                            for (int j = 0; j < attribute_names.length; j++) {
                                Label tempLabel = new Label(
                                        "<b>" + attribute_names[j] + ": </b>" + attribute_values[j],
                                        ContentMode.HTML);
                                myform.addComponent(tempLabel);
                                //  System.out.println("inside attributes ");

                            }
                        }

                        //   TextField field = new TextField(lastDpdate);
                        // myform.addComponent(field);
                        //field.setWidth("100%");
                    }
                }
                if (selectedTreeItem.startsWith("Experiment")) {
                    SQLContainer tempContainer = createMySQLContainer("sra_rnaseq_exp", selectedTreeId);
                    myform.removeAllComponents();
                    Map expMap = new HashMap();
                    Map<String, String[]> expDetailMap = new HashMap<>();
                    Map<String, String[]> libraryDetailMap = new HashMap<>();
                    Map<String, String[]> platformMap = new HashMap<>();
                    Map runMap = new HashMap();
                    HashSet<String> biosampleSet = new HashSet<>();
                    for (int i = 0; i < tempContainer.getItemIds().size(); i++) {
                        String docid = tempContainer.getIdByIndex(i).toString();
                        String biosample = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Biosample_Acc_Id_SampleId").getValue().toString();
                        biosampleSet.add(biosample);
                        String[] b_parts = biosample.split("\\|");

                        String exp = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Experiment_Acc_Ver_Status_Name").getValue().toString();
                        String[] exp_parts = exp.split("\\|");
                        String exp_acc = exp_parts[0];
                        expMap.put(exp_acc, b_parts[0]);
                        expDetailMap.put(exp_acc, exp_parts);

                        String library_string = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Library_Name_Strategy_Source_Selection_Layout").getValue()
                                .toString();
                        String[] library_parts = library_string.split("\\|");
                        String library_name = "";
                        String library_strategy = "";
                        String library_source = "";
                        String library_selection = "";
                        String library_layout = "";
                        if (library_parts.length > 0) {
                            library_name = library_parts[0];
                        }
                        if (library_parts.length > 1) {
                            library_strategy = "<b> <i> Strategy </i> </b>" + library_parts[1];
                        }
                        if (library_parts.length > 2) {
                            library_source = "<b> <i> Source </i> </b>" + library_parts[2];
                        }
                        if (library_parts.length > 3) {
                            library_selection = "<b> <i> Selection </i> </b>" + library_parts[3];
                        }
                        if (library_parts.length > 4) {
                            String tempLayout = library_parts[4];
                            tempLayout = tempLayout.replaceAll("<", "");
                            tempLayout = tempLayout.replaceAll("/>", "");
                            library_layout = "<b> <i> Layout </i> </b>" + tempLayout;
                        }
                        String[] tempStringArray = new String[] { library_strategy, library_source,
                                library_selection, library_layout };
                        if (library_name.length() > 1) {
                            libraryDetailMap.put(library_name, tempStringArray);
                        }

                        String sra_plaforms = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Platform_InstrumentModel").getValue().toString();
                        String[] sra_plaforms_parts = sra_plaforms.split("\\|");
                        platformMap.put(exp_acc, sra_plaforms_parts);

                        String run = tempContainer.getItem(tempContainer.getIdByIndex(i))
                                .getItemProperty("Runs").getValue().toString();
                        String[] run_parts = run.split("\\|");
                        if (run_parts.length > 0) {
                            for (int j = 0; j < run_parts.length; j++) {
                                String temprun = run_parts[j];
                                String[] temprun_parts = temprun.split("\\,");
                                runMap.put(temprun_parts[0], exp_acc);
                            }
                        }
                    }
                    //   Label labelExperimentAcc = new Label("<b>Experiment Accession: </b>" + selectedTreeId, ContentMode.HTML);
                    // myform.addComponent(labelExperimentAcc);
                    String libraryDetails = "<b>Experiment Accession: </b>" + selectedTreeId + "<br><br>";
                    for (Map.Entry<String, String[]> entry : libraryDetailMap.entrySet()) {
                        libraryDetails = libraryDetails + "<b>Library Details: </b>" + entry.getKey()
                                + "<br><br>";
                        String[] temp_library_details = entry.getValue();
                        for (String dt : temp_library_details) {
                            libraryDetails = libraryDetails + dt + "<br><br>";
                        }
                    }
                    Label labelLibraryDetails = new Label(libraryDetails, ContentMode.HTML);
                    myform.addComponent(labelLibraryDetails);
                    //   myform.setComponentAlignment(labelExperimentAcc, Alignment.TOP_LEFT);
                    myform.setComponentAlignment(labelLibraryDetails, Alignment.TOP_LEFT);

                }
                if (selectedTreeItem.startsWith("Run")) {
                    myform.removeAllComponents();
                    SQLContainer tempContainer = createMySQLContainer("sra_rnaseq_run", selectedTreeId);
                    if (tempContainer.size() > 0) {
                        Item tempItem = tempContainer.getItem(tempContainer.firstItemId());
                        String runs = tempItem.getItemProperty("Runs").getValue().toString();
                        String[] runs_parts = runs.split("\\|");
                        for (String run : runs_parts) {
                            if (run.contains(selectedTreeId)) {
                                String[] run_details = run.split("\\,");
                                String stringRun = "";
                                if (run_details.length > 0) {
                                    stringRun = stringRun + "<b>Run Accession: </b>" + run_details[0]
                                            + "<br><br>";
                                }
                                if (run_details.length > 1) {
                                    stringRun = stringRun + "<b>Number of spots or reads: </b>" + run_details[1]
                                            + "<br><br>";
                                }
                                if (run_details.length > 1) {
                                    stringRun = stringRun + "<b>Number of bases: </b>" + run_details[2]
                                            + "<br><br>";
                                }
                                Label labelRunDetails = new Label(stringRun, ContentMode.HTML);
                                myform.addComponent(labelRunDetails);
                            }

                        }
                    }
                }
            } else {
                System.out.println("id is null");
            }
        }

    });
    //</editor-fold>

}

From source file:edu.kit.dama.ui.commons.util.PaginationLayout.java

License:Apache License

/**
 * Update the layout. This method is either called internally when scrolling
 * or/*w  ww  . j a  va 2s .c  o m*/
 */
public final void update() {
    //remove all components (old result page and navigation)
    removeAllComponents();

    //add current results
    renderPage();

    //build pagination
    int pages = overallEntries / entriesPerPage;
    if (overallEntries % entriesPerPage > 0) {
        pages++;
    }

    final int overallPages = pages;
    HorizontalLayout navigation = new HorizontalLayout();
    //add "JumpToFirstPage" button
    final NativeButton first = new NativeButton();
    first.setIcon(firstIcon);
    if (firstIcon == null) {
        first.setCaption("<<");
    }
    first.setDescription("First Page");
    first.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            currentPage = 0;
            update();
        }
    });
    //add "PreviousPage" button
    final NativeButton prev = new NativeButton();
    prev.setIcon(prevIcon);
    if (prevIcon == null) {
        prev.setCaption("<");
    }
    prev.setDescription("Previous Page");
    prev.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (currentPage > 0) {
                currentPage--;
                update();
            }
        }
    });
    //add "NextPage" button
    final NativeButton next = new NativeButton();
    next.setIcon(nextIcon);
    if (nextIcon == null) {
        next.setCaption(">");
    }
    next.setDescription("Next Page");
    next.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (currentPage + 1 < overallPages) {
                currentPage++;
                update();
            }
        }
    });
    //add "JumpToLastPage" button
    final NativeButton last = new NativeButton();
    last.setIcon(endIcon);
    if (endIcon == null) {
        next.setCaption(">>");
    }
    last.setDescription("Last Page");
    last.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            currentPage = overallPages - 1;
            update();
        }
    });

    //enable/disable buttons depending on the current page
    if (overallPages == 0) {
        first.setEnabled(false);
        prev.setEnabled(false);
        next.setEnabled(false);
        last.setEnabled(false);
    } else {
        first.setEnabled(!(currentPage == 0) || !(overallPages < 2));
        prev.setEnabled(!(currentPage == 0) || !(overallPages < 2));
        next.setEnabled(!(currentPage == overallPages - 1) || !(overallPages < 2));
        last.setEnabled(!(currentPage == overallPages - 1) || !(overallPages < 2));
    }

    //at first, put the page size selection box into the navigation
    final ComboBox entriesPerPageBox = new ComboBox();
    entriesPerPageBox.setItemCaptionPropertyId("name");
    entriesPerPageBox.addContainerProperty("name", String.class, null);
    entriesPerPageBox.addItem(5);
    entriesPerPageBox.getContainerProperty(5, "name").setValue("5 Entries / Page");
    entriesPerPageBox.addItem(10);
    entriesPerPageBox.getContainerProperty(10, "name").setValue("10 Entries / Page");
    entriesPerPageBox.addItem(15);
    entriesPerPageBox.getContainerProperty(15, "name").setValue("15 Entries / Page");
    entriesPerPageBox.addItem(20);
    entriesPerPageBox.getContainerProperty(20, "name").setValue("20 Entries / Page");

    entriesPerPageBox.setValue(entriesPerPage);
    entriesPerPageBox.setNullSelectionAllowed(false);
    entriesPerPageBox.setImmediate(true);

    entriesPerPageBox.addListener(new Property.ValueChangeListener() {
        public void valueChange(ValueChangeEvent event) {
            entriesPerPage = (Integer) entriesPerPageBox.getValue();
            update();
        }
    });

    navigation.addComponent(entriesPerPageBox);

    //filler labels are added to the beginning and to the end to keep the navigation in the middle
    Label leftFiller = new Label();
    leftFiller.setWidth("25px");
    navigation.addComponent(leftFiller);
    navigation.addComponent(first);
    navigation.addComponent(prev);

    //Show max. 10 pages at once for performance and layout reasons.
    //If there are more than 10 pages, "move" the to show 10 pages based on the current page.
    int start = currentPage - 5;
    start = (start < 0) ? 0 : start;
    int end = start + 10;
    end = (end > pages) ? pages : end;

    if (end - start < 10 && pages > 10) {
        start = end - 10;
    }

    if (overallPages == 0) {
        Label noEntryLabel = new Label("<i>No entries</i>", Label.CONTENT_XHTML);
        //noEntryLabel.setWidth("80px");
        noEntryLabel.setSizeUndefined();
        navigation.addComponent(noEntryLabel);
        navigation.setComponentAlignment(noEntryLabel, Alignment.MIDDLE_CENTER);
    }
    //build the actual page entries
    for (int i = start; i < end; i++) {
        if (i == currentPage) {
            //the current page is marked with a special style
            Label pageLink = new Label("<b>" + Integer.toString(i + 1) + "</b>", Label.CONTENT_XHTML);
            pageLink.setStyleName("currentpage");
            pageLink.setWidth("15px");
            navigation.addComponent(pageLink);
            navigation.setComponentAlignment(pageLink, Alignment.MIDDLE_CENTER);
        } else {
            //otherwise normal links are added, click-events are handled via LayoutClickListener 
            Link pageLink = new Link(Integer.toString(i + 1), null);
            navigation.addComponent(pageLink);
            navigation.setComponentAlignment(pageLink, Alignment.MIDDLE_CENTER);
        }
    }
    //add right navigation buttons
    navigation.addComponent(next);
    navigation.addComponent(last);
    //...and fill the remaining space 
    Label rightFiller = new Label();
    navigation.addComponent(rightFiller);
    //  navigation.setExpandRatio(leftFiller, 1.0f);
    navigation.setExpandRatio(rightFiller, 1.0f);
    navigation.setSpacing(true);

    //put everything ot the middle
    navigation.setComponentAlignment(first, Alignment.MIDDLE_CENTER);
    navigation.setComponentAlignment(prev, Alignment.MIDDLE_CENTER);
    navigation.setComponentAlignment(next, Alignment.MIDDLE_CENTER);
    navigation.setComponentAlignment(last, Alignment.MIDDLE_CENTER);

    //add layout click listener to be able to navigate by clicking the single pages
    navigation.addListener(new LayoutEvents.LayoutClickListener() {
        @Override
        public void layoutClick(LayoutEvents.LayoutClickEvent event) {

            // Get the child component which was clicked
            Component child = event.getChildComponent();

            if (child == null) {
                // Not over any child component
            } else {
                // Over a child component
                if (child instanceof Link) {
                    // Over a valid child element
                    currentPage = Integer.parseInt(((Link) child).getCaption()) - 1;
                    update();
                }
            }
        }
    });

    //finalize
    navigation.setWidth("100%");
    navigation.setHeight("25px");

    //add navigation and align it right below the result page
    addComponent(page);
    setExpandRatio(page, 1f);
    if (overallEntries > 0) {
        addComponent(navigation);
        setComponentAlignment(navigation, Alignment.BOTTOM_CENTER);
        setExpandRatio(navigation, .05f);
    }
    requestRepaint();
}

From source file:edu.kit.dama.ui.commons.util.UIUtils7.java

License:Apache License

public static void openResourceSubWindow(File sourceFile) {
    boolean fileAccessible = sourceFile != null && sourceFile.exists() && sourceFile.canRead();

    // Set subwindow for displaying file resource
    final Window window = new Window(fileAccessible ? sourceFile.getName() : "Information");
    window.center();//from   w w w . j a  v  a  2 s . c om
    // Set window layout
    VerticalLayout windowLayout = new VerticalLayout();
    windowLayout.setSizeFull();

    if (fileAccessible) {
        // Set resource that has to be embedded
        final Embedded resource = new Embedded(null, new FileResource(sourceFile));
        if ("application/octet-stream".equals(resource.getMimeType())) {
            window.setWidth("570px");
            window.setHeight("150px");
            windowLayout.setMargin(true);

            Label attentionNote = new Label(
                    "A file preview is not possible as the file type is not supported by your browser.");
            attentionNote.setContentMode(ContentMode.HTML);
            Link fileURL = new Link("Click here for downloading the file.", new FileResource(sourceFile));

            windowLayout.addComponent(attentionNote);
            windowLayout.addComponent(fileURL);
            windowLayout.setComponentAlignment(attentionNote, Alignment.MIDDLE_CENTER);
            windowLayout.setComponentAlignment(fileURL, Alignment.MIDDLE_CENTER);
        } else {
            window.setResizable(true);
            window.setWidth("800px");
            window.setHeight("500px");
            final Image image = new Image(null, new FileResource(sourceFile));
            image.setSizeFull();
            windowLayout.addComponent(image);
        }
    } else {
        //file is not accessible
        window.setWidth("570px");
        window.setHeight("150px");
        windowLayout.setMargin(true);
        Label attentionNote = new Label("Provided file cannot be accessed.");
        attentionNote.setContentMode(ContentMode.HTML);
        windowLayout.addComponent(attentionNote);
        windowLayout.setComponentAlignment(attentionNote, Alignment.MIDDLE_CENTER);
    }

    window.setContent(windowLayout);
    UI.getCurrent().addWindow(window);
}

From source file:edu.kit.dama.ui.repo.components.PaginationPanel.java

License:Apache License

/**
 * Build the navigation layout including the appropriate buttons to navigate
 * through the pagination pages.//from ww  w. jav  a  2  s  .c o  m
 *
 * @return The navigation layout component.
 */
private HorizontalLayout buildNavigationComponent() {
    HorizontalLayout result = new HorizontalLayout();
    //add "JumpToFirstPage" button
    final NativeButton first = new NativeButton();
    first.setIcon(new ThemeResource("img/16x16/beginning.png"));
    first.setDescription("First Page");
    first.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            currentPage = 0;
            updatePage();
        }
    });
    //add "PreviousPage" button
    final NativeButton prev = new NativeButton();
    prev.setIcon(new ThemeResource("img/16x16/prev.png"));
    prev.setDescription("Previous Page");
    prev.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (currentPage > 0) {
                currentPage--;
                updatePage();
            }
        }
    });
    //add "NextPage" button
    final NativeButton next = new NativeButton();
    next.setDescription("Next Page");
    next.setIcon(new ThemeResource("img/16x16/next.png"));
    next.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (currentPage + 1 < overallPages) {
                currentPage++;
                updatePage();
            }
        }
    });
    //add "JumpToLastPage" button
    final NativeButton last = new NativeButton();
    last.setDescription("Last Page");
    last.setIcon(new ThemeResource("img/16x16/end.png"));
    last.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            currentPage = overallPages - 1;
            updatePage();
        }
    });

    //enable/disable buttons depending on the current page
    if (overallPages == 0) {
        first.setEnabled(false);
        prev.setEnabled(false);
        next.setEnabled(false);
        last.setEnabled(false);
    } else {
        first.setEnabled(!(currentPage == 0) || !(overallPages < 2));
        prev.setEnabled(!(currentPage == 0) || !(overallPages < 2));
        next.setEnabled(!(currentPage == overallPages - 1) || !(overallPages < 2));
        last.setEnabled(!(currentPage == overallPages - 1) || !(overallPages < 2));
    }

    Label leftFiller = new Label();
    result.addComponent(leftFiller);
    result.setExpandRatio(leftFiller, 1.0f);
    result.addComponent(first);
    result.addComponent(prev);
    int start = currentPage - 5;
    start = (start < 0) ? 0 : start;
    int end = start + 10;
    end = (end > overallPages) ? overallPages : end;

    if (end - start < 10 && overallPages > 10) {
        start = end - 10;
    }

    if (overallPages == 0) {
        Label noEntryLabel = new Label("<i>No entries</i>", ContentMode.HTML);
        //noEntryLabel.setWidth("80px");
        noEntryLabel.setSizeUndefined();
        result.addComponent(noEntryLabel);
        result.setComponentAlignment(noEntryLabel, Alignment.MIDDLE_CENTER);
    }
    //build the actual page entries
    for (int i = start; i < end; i++) {
        if (i == currentPage) {
            //the current page is marked with a special style
            Label pageLink = new Label("<b>" + Integer.toString(i + 1) + "</b>", ContentMode.HTML);
            pageLink.setStyleName("currentpage");
            pageLink.setWidth("15px");
            result.addComponent(pageLink);
            result.setComponentAlignment(pageLink, Alignment.MIDDLE_CENTER);
        } else {
            //otherwise normal links are added, click-events are handled via LayoutClickListener 
            Link pageLink = new Link(Integer.toString(i + 1), null);
            result.addComponent(pageLink);
            result.setComponentAlignment(pageLink, Alignment.MIDDLE_CENTER);
        }
    }
    //add right navigation buttons
    result.addComponent(next);
    result.addComponent(last);
    //...and fill the remaining space 
    Label rightFiller = new Label();
    result.addComponent(rightFiller);
    result.setExpandRatio(rightFiller, 1.0f);
    result.setSpacing(true);

    //put everything ot the middle
    result.setComponentAlignment(first, Alignment.MIDDLE_CENTER);
    result.setComponentAlignment(prev, Alignment.MIDDLE_CENTER);
    result.setComponentAlignment(next, Alignment.MIDDLE_CENTER);
    result.setComponentAlignment(last, Alignment.MIDDLE_CENTER);

    //add layout click listener to be able to navigate by clicking the single pages
    result.addLayoutClickListener(new LayoutEvents.LayoutClickListener() {
        @Override
        public void layoutClick(LayoutEvents.LayoutClickEvent event) {

            // Get the child component which was clicked
            Component child = event.getChildComponent();

            if (child == null) {
                // Not over any child component
            } else // Over a child component
            {
                if (child instanceof Link) {
                }
            }
        }
    });

    //finalize
    result.setWidth("100%");
    result.setHeight("25px");
    return result;
}

From source file:edu.nps.moves.mmowgli.components.Footer.java

License:Open Source License

private Link makeLink(String text, String url, String tooltip) {
    Link l = new Link(text, new ExternalResource(url));
    l.setTargetName(PORTALTARGETWINDOWNAME);
    l.setTargetBorder(BorderStyle.DEFAULT);
    l.setDescription(tooltip + " (opens in new window or tab)");
    return l;// ww w. j  ava  2  s  .  co m
}

From source file:edu.nps.moves.mmowgli.components.Footer.java

License:Open Source License

public static Link buildFouoNoticeTL() {
    GameLinks gl = GameLinks.getTL();//from w  ww. j  a  v  a 2s.  c o m
    MediaLocator mediaLoc = Mmowgli2UI.getGlobals().getMediaLocator();
    Link fouoLink = new Link(null, new ExternalResource(gl.getFouoLink()));
    Resource icon = mediaLoc.locate(new Media("fouo250w36h.png", // todo, database-ize
            "", "", MediaType.IMAGE, Source.GAME_IMAGES_REPOSITORY));
    fouoLink.setIcon(icon);
    fouoLink.setDescription(Game.getTL().getFouoDescription());
    fouoLink.setTargetName(PORTALTARGETWINDOWNAME);
    fouoLink.setTargetBorder(BorderStyle.DEFAULT);
    return fouoLink;
}

From source file:edu.nps.moves.mmowgli.components.Header.java

License:Open Source License

private Link makeBlogHeadlineLink() {
    Link link = new Link("", null);
    link.addStyleName("m-header-blogheadline-link");
    link.setTargetName(PORTALTARGETWINDOWNAME);

    return link;//from www .  ja  v  a  2 s  .c  o  m
}

From source file:edu.nps.moves.mmowgli.components.Header.java

License:Open Source License

private Link makeSmallLink(String caption, String tooltip, String url) {
    Link link = new Link(caption, new ExternalResource(url));
    link.setDescription(tooltip);/*from w w w . j  a va2  s.  c om*/
    link.addStyleName("m-header-link");
    link.setTargetName(PORTALTARGETWINDOWNAME);

    return link;
}

From source file:edu.nps.moves.mmowgli.components.VideoWithRightTextPanel.java

License:Open Source License

private Link getAlternateVideoLink(Media vidMedia) {
    try {/*from  ww w. ja v a2 s .com*/
        Link link;
        String alternateUrl = vidMedia.getAlternateUrl();
        if (alternateUrl != null)
            link = new Link("Can't see the video?", new ExternalResource(alternateUrl));
        else {
            String url = Mmowgli2UI.getGlobals().getAlternateVideoUrlTL();
            if (url == null)
                return null;
            link = new Link("Can't see the video?", new ExternalResource(url));
        }
        link.setTargetName(PORTALTARGETWINDOWNAME);
        link.setTargetBorder(BorderStyle.DEFAULT);
        return link;
    } catch (Exception ex) {
        return null;
    }
}

From source file:edu.nps.moves.mmowgli.modules.actionplans.HowToWinActionPopup.java

License:Open Source License

@HibernateSessionThreadLocalConstructor
public HowToWinActionPopup(String title) {
    super();//from w  w  w.jav a2s .c  o m
    setTitleString(title);

    VerticalLayout vl = new VerticalLayout();
    vl.setMargin(true);

    Link l = new Link("Learn more", new ExternalResource("http://portal.mmowgli.nps.edu/instructions"));
    l.setTargetName(PORTALTARGETWINDOWNAME);
    l.setTargetBorder(BorderStyle.DEFAULT);
    l.addStyleName("m-learn-more-link");
    vl.addComponent(l);
    vl.setComponentAlignment(l, Alignment.MIDDLE_CENTER);
    addLowerComponent(vl);
}