/** Sets the visibility of the column with the specified name. */
  public void setColumnVisible(String name, boolean visible) {
    // Get column and set visibility.
    TableColumnExt column = getColumnExt(name);
    column.setVisible(visible);

    // Get column title.
    String columnTitle = column.getTitle();

    // Find checkbox menu item with matching title.
    JCheckBoxMenuItem matchingItem = null;
    int itemCount = headerPopup.getComponentCount();
    for (int i = 0; i < itemCount; i++) {
      Component menuComponent = headerPopup.getComponent(i);
      if (menuComponent instanceof JCheckBoxMenuItem) {
        JCheckBoxMenuItem item = (JCheckBoxMenuItem) menuComponent;
        String itemTitle = item.getText();
        if (itemTitle.equals(columnTitle)) {
          matchingItem = item;
          break;
        }
      }
    }

    // Select matching menu item.
    if (matchingItem != null) {
      matchingItem.setSelected(visible);
    }
  }
Example #2
0
 public StockTableColumnModel(List<String> columns) {
   for (int i = 0; i < columns.size(); i++) {
     TableColumnExt tableColumn = new TableColumnExt(i);
     tableColumn.setCellRenderer(stockTableColumnCellRenderer);
     tableColumn.setHeaderValue(TextToHtmlSplitter.instance.split(columns.get(i)));
     addColumn(tableColumn);
   }
 }
    @Override
    public void actionPerformed(ActionEvent e) {
      // Get table column.
      String name = e.getActionCommand();
      TableColumnExt selectedColumn = getColumnExt(name);

      // Toggle column visibility.
      boolean visible = selectedColumn.isVisible();
      selectedColumn.setVisible(!visible);

      // Update popup menu.
      updateHeaderPopup();

      // Resize table columns to fit.
      packAll();
    }
  /**
   * Create a table for showing a ParamTableModel
   *
   * @param paramTableModel given param table model
   * @return JTable param table
   */
  private static JTable createParamTable(ParamTableModel paramTableModel) {
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable paramTable = new DefaultPrideTable(paramTableModel, columnModel);

    // hyperlink ontology accessions
    String accColumnHeader = ParamTableModel.TableHeader.ACCESSION.getHeader();
    TableColumnExt accColumn = (TableColumnExt) paramTable.getColumn(accColumnHeader);
    accColumn.setCellRenderer(new HyperLinkCellRenderer());

    // add mouse motion listener
    paramTable.addMouseMotionListener(
        new TableCellMouseMotionListener(paramTable, accColumnHeader));
    paramTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            paramTable, accColumnHeader, new PrefixedHyperLinkGenerator(Constants.OLS_URL_PREFIX)));

    return paramTable;
  }
  /**
   * Create a table for showing contacts
   *
   * @param contacts given list of contacts
   * @return JTable contact table
   */
  public static JTable createContactTable(Collection<ParamGroup> contacts) {
    ContactTableModel tableModel = new ContactTableModel(contacts);
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable contactTable = new DefaultPrideTable(tableModel, columnModel);

    // hyperlink contact emails
    String infoColumnHeader = ContactTableModel.TableHeader.INFORMATION.getHeader();
    TableColumnExt infoColumn = (TableColumnExt) contactTable.getColumn(infoColumnHeader);
    infoColumn.setCellRenderer(new HyperLinkCellRenderer());

    // add mouse motion listener
    contactTable.addMouseMotionListener(
        new TableCellMouseMotionListener(contactTable, infoColumnHeader));
    contactTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            contactTable, infoColumnHeader, new EmailHyperLinkGenerator()));

    return contactTable;
  }
  /**
   * Build a table to display PTM related details.
   *
   * @return JTable ptm table
   */
  public static JTable createPTMTable() {
    PTMTableModel tableModel = new PTMTableModel();
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable table = new DefaultPrideTable(tableModel, columnModel);

    // add hyper link click listener
    String modAccColumnHeader = PTMTableModel.TableHeader.PTM_ACCESSION.getHeader();
    table.addMouseMotionListener(new TableCellMouseMotionListener(table, modAccColumnHeader));
    table.addMouseListener(
        new HyperLinkCellMouseClickListener(
            table, modAccColumnHeader, new PTMHyperLinkGenerator()));

    // ptm accession hyperlink
    TableColumnExt ptmColumn =
        (TableColumnExt) table.getColumn(PTMTableModel.TableHeader.PTM_ACCESSION.getHeader());
    ptmColumn.setCellRenderer(new HyperLinkCellRenderer());

    return table;
  }
  /**
   * Updates the header popup menu by enabling/disabling menu items based on the number of visible
   * columns.
   */
  private void updateHeaderPopup() {
    // Get number of visible columns.
    int visibleColumnCount = getColumnCount(false);

    // If only one visible column, then disable its menu item.
    if (visibleColumnCount == 1) {
      // Find the only visible column.
      int allColumnCount = getColumnCount(true);
      TableColumnExt column = null;
      for (int i = 0; i < allColumnCount; i++) {
        column = getColumnExt(i);
        if (column.isVisible()) {
          break;
        }
      }

      // Get menu item name from column title.
      assert column != null;
      String headerName = column.getTitle();

      // Find matching menu item, and disable so user cannot hide column.
      Component[] components = headerPopup.getComponents();
      for (Component component : components) {
        if (component instanceof JMenuItem) {
          JMenuItem item = (JMenuItem) component;
          // Disable matching menu item.
          if (item.getText().equals(headerName)) {
            item.setEnabled(false);
            disabledMenuItem = item;
            break;
          }
        }
      }

    } else if (disabledMenuItem != null) {
      // Re-enable previously disabled menu item because more than one
      // column is visible.
      disabledMenuItem.setEnabled(true);
    }
  }
  /**
   * Create a table to show a list of references
   *
   * @param references a list of input references
   * @return JTable reference table
   */
  public static JTable createReferenceTable(Collection<Reference> references) {
    ReferenceTableModel tableModel = new ReferenceTableModel(references);
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable referenceTable = new DefaultPrideTable(tableModel, columnModel);

    // pubmed
    String pubMedColumnHeader = ReferenceTableModel.TableHeader.PUBMED.getHeader();
    TableColumnExt pubMedColumn = (TableColumnExt) referenceTable.getColumn(pubMedColumnHeader);
    Pattern pubmedPattern = Pattern.compile("[\\d,]+");
    pubMedColumn.setCellRenderer(new HyperLinkCellRenderer(pubmedPattern));
    pubMedColumn.setMaxWidth(100);

    // doi
    String doiColumnHeader = ReferenceTableModel.TableHeader.DOI.getHeader();
    TableColumnExt doiColumn = (TableColumnExt) referenceTable.getColumn(doiColumnHeader);
    doiColumn.setCellRenderer(new HyperLinkCellRenderer());
    doiColumn.setMaxWidth(100);

    // add mouse motion listener
    referenceTable.addMouseMotionListener(
        new TableCellMouseMotionListener(referenceTable, pubMedColumnHeader, doiColumnHeader));
    referenceTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            referenceTable,
            pubMedColumnHeader,
            new PrefixedHyperLinkGenerator(Constants.PUBMED_URL_PERFIX),
            pubmedPattern));
    referenceTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            referenceTable, doiColumnHeader, new DOIHyperLinkGenerator(Constants.DOI_URL_PREFIX)));

    return referenceTable;
  }
  /**
   * Build a table to display database search summaries.
   *
   * @return JTable database search table
   */
  public static JTable createDatabaseSearchTable() {
    DatabaseSearchTableModel tableModel = new DatabaseSearchTableModel();
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable searchTable = new DefaultPrideTable(tableModel, columnModel);

    // hide row number column
    String rowNumHeader = DatabaseSearchTableModel.TableHeader.ROW_NUMBER_COLUMN.getHeader();
    TableColumnExt rowColumn = (TableColumnExt) searchTable.getColumn(rowNumHeader);
    rowColumn.setVisible(false);

    // add cell renderer to view column
    String viewColumnHeader = DatabaseSearchTableModel.TableHeader.VIEW.getHeader();
    TableColumnExt viewColumn = (TableColumnExt) searchTable.getColumn(viewColumnHeader);
    Icon icon =
        GUIUtilities.loadIcon(
            Desktop.getInstance().getDesktopContext().getProperty("add.experiment.small.icon"));
    viewColumn.setCellRenderer(new IconRenderer(icon));
    viewColumn.setMaxWidth(50);

    // pubmed column
    String pubmedHeader = DatabaseSearchTableModel.TableHeader.PUBMED_ID.getHeader();
    TableColumnExt pubmedColumn = (TableColumnExt) searchTable.getColumn(pubmedHeader);
    Pattern pubmedPattern = Pattern.compile("[\\d,]+");
    pubmedColumn.setCellRenderer(new HyperLinkCellRenderer(pubmedPattern));

    // add mouse motion listener
    searchTable.addMouseMotionListener(
        new TableCellMouseMotionListener(searchTable, viewColumnHeader, pubmedHeader));
    searchTable.addMouseListener(new OpenExperimentMouseListener(searchTable, viewColumnHeader));
    searchTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            searchTable,
            pubmedHeader,
            new PrefixedHyperLinkGenerator(Constants.PUBMED_URL_PERFIX),
            pubmedPattern));

    return searchTable;
  }
Example #10
0
  /** Creates new form PanelUsuarios */
  public PanelUsuarios() {
    initComponents();
    tabla.setDefaultEditor(GregorianCalendar.class, new DateCellEditor());
    tabla.setDefaultRenderer(
        GregorianCalendar.class,
        new DefaultTableCellRenderer() {

          @Override
          public void setValue(Object val) {
            if (val instanceof GregorianCalendar) {
              setText(Fechas.format((GregorianCalendar) val));
            } else {
              setText("");
            }
          }
        });
    TableColumnExt colRoles = tabla.getColumnExt("Roles");
    colRoles.setCellEditor(new EditorRoles());
    colRoles.setCellRenderer(
        new DefaultTableCellRenderer() {

          @Override
          public void setValue(Object val) {
            setText(Rol.getTextoRoles(Num.getInt(val)));
          }
        });
    TableColumnExt colTutor = tabla.getColumnExt("Profesor");
    TableColumnExt colClave = tabla.getColumnExt("Clave");
    colClave.setCellRenderer(
        new DefaultTableCellRenderer() {

          @Override
          public void setValue(Object val) {
            setText("*********");
          }
        });
    colClave.setCellEditor(new DefaultCellEditor(new JPasswordField()));
    JComboBox comboTutores = new JComboBox(Profesor.getProfesores().toArray());
    comboTutores.insertItemAt("Sin profesor asignado", 0);
    DefaultCellEditor dceTutor =
        new DefaultCellEditor(comboTutores) {

          @Override
          public Object getCellEditorValue() {
            Object obj = super.getCellEditorValue();
            if (obj instanceof Profesor) {
              return ((Profesor) obj);
            }
            return null;
          }

          @Override
          public Component getTableCellEditorComponent(
              JTable table, Object value, boolean isSelected, int row, int column) {
            Component c = super.getTableCellEditorComponent(tabla, value, isSelected, row, column);
            try {
              int id = Num.getInt(value);
              if (id > 0) {
                Profesor p = Profesor.getProfesor(id);
                ((JComboBox) c).setSelectedItem(p);
              } else {
                ((JComboBox) c).setSelectedIndex(0);
              }
            } catch (Exception ex) {
              Logger.getLogger(PanelGrupos.class.getName()).log(Level.SEVERE, null, ex);
            }
            return c;
          }
        };
    dceTutor.setClickCountToStart(2);
    colTutor.setCellEditor(dceTutor);
  }
  /**
   * Create a table for peptide quantitative data
   *
   * @param se search engine
   * @return JTable peptide table
   */
  public static JTable createQuantPeptideTable(DataAccessController controller, SearchEngine se) {
    QuantPeptideTableModel tableModel = new QuantPeptideTableModel(se);
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable quantPeptideTable = new DefaultPrideTable(tableModel, columnModel);
    quantPeptideTable.setAutoCreateColumnsFromModel(false);
    // add table model change listener
    tableModel.addTableModelListener(new BarChartColumnListener(quantPeptideTable));

    // hide protein accession
    TableColumnExt proteinAccColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PROTEIN_ACCESSION_COLUMN.getHeader());
    proteinAccColumn.setVisible(false);

    // hide mapped protein accession
    String mappedProtAccHeader =
        QuantPeptideTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader();
    TableColumnExt mappedProtAccColumn =
        (TableColumnExt) quantPeptideTable.getColumn(mappedProtAccHeader);
    mappedProtAccColumn.setCellRenderer(new HyperLinkCellRenderer());
    mappedProtAccColumn.setVisible(false);
    // add hyper link click listener
    quantPeptideTable.addMouseMotionListener(
        new TableCellMouseMotionListener(quantPeptideTable, mappedProtAccHeader));
    quantPeptideTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            quantPeptideTable, mappedProtAccHeader, new ProteinAccHyperLinkGenerator()));

    // peptide sequence column renderer
    TableColumnExt peptideColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PEPTIDE_PTM_COLUMN.getHeader());
    peptideColumn.setCellRenderer(new PeptideSequenceCellRenderer());
    // set peptide column width
    peptideColumn.setPreferredWidth(150);

    // hide protein name
    TableColumnExt proteinNameColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PROTEIN_NAME.getHeader());
    proteinNameColumn.setVisible(false);

    // hide protein status
    TableColumnExt proteinStatusColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PROTEIN_STATUS.getHeader());
    proteinStatusColumn.setVisible(false);

    // hide protein sequence coverage
    TableColumnExt proteinSeqCoverageColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PROTEIN_SEQUENCE_COVERAGE.getHeader());
    proteinSeqCoverageColumn.setVisible(false);

    // peptide sequence present in protein sequence
    TableColumnExt peptideFitColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(QuantPeptideTableModel.TableHeader.PEPTIDE_FIT.getHeader());
    peptideFitColumn.setCellRenderer(new PeptideFitCellRenderer());
    peptideFitColumn.setVisible(false);

    // precursor charge column
    TableColumnExt precursorChargeColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PRECURSOR_CHARGE_COLUMN.getHeader());
    precursorChargeColumn.setVisible(false);

    // delta mass column
    TableColumnExt deltaMassColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.DELTA_MASS_COLUMN.getHeader());
    deltaMassColumn.setVisible(false);
    double minLimit =
        Double.parseDouble(
            Desktop.getInstance().getDesktopContext().getProperty("delta.mz.min.limit"));
    double maxLimit =
        Double.parseDouble(
            Desktop.getInstance().getDesktopContext().getProperty("delta.mz.max.limit"));
    DeltaMZRenderer renderer = new DeltaMZRenderer(minLimit, maxLimit);
    deltaMassColumn.setCellRenderer(renderer);

    // precursor m/z column
    TableColumnExt precursorMzColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PRECURSOR_MZ_COLUMN.getHeader());
    precursorMzColumn.setVisible(false);

    // number of ptms column
    TableColumnExt ptmsColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PEPTIDE_PTM_NUMBER_COLUMN.getHeader());
    ptmsColumn.setVisible(false);
    ImageIcon icon =
        GUIUtilities.loadImageIcon(
            Desktop.getInstance().getDesktopContext().getProperty("open.ptm.small.icon"));
    ptmsColumn.setCellRenderer(new OpenPTMRenderer(icon));

    // hide modified peptide sequence
    TableColumnExt peptideSeqColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PEPTIDE_PTM_MASS_COLUMN.getHeader());
    peptideSeqColumn.setVisible(false);

    // hide ptm summary
    TableColumnExt ptmSummaryColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PEPTIDE_PTM_SUMMARY.getHeader());
    ptmSummaryColumn.setVisible(false);

    // hide number of fragment ions
    TableColumnExt fragIonsColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.NUMBER_OF_FRAGMENT_IONS_COLUMN.getHeader());
    fragIonsColumn.setVisible(false);

    // hide peptide sequence length
    TableColumnExt seqLengthColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.PEPTIDE_SEQUENCE_LENGTH_COLUMN.getHeader());
    seqLengthColumn.setVisible(false);

    // hide sequence start
    TableColumnExt sequenceStartColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.SEQUENCE_START_COLUMN.getHeader());
    sequenceStartColumn.setVisible(false);

    // hide sequence end
    TableColumnExt sequenceEndColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.SEQUENCE_END_COLUMN.getHeader());
    sequenceEndColumn.setVisible(false);

    // hide pi point column
    TableColumnExt piColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.THEORITICAL_ISOELECTRIC_POINT_COLUMN
                    .getHeader());
    piColumn.setVisible(false);

    // hide spectrum id
    TableColumnExt spectrumIdColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(QuantPeptideTableModel.TableHeader.SPECTRUM_ID.getHeader());
    spectrumIdColumn.setVisible(false);

    // hide protein id column
    TableColumnExt proteinIdColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(
                QuantPeptideTableModel.TableHeader.IDENTIFICATION_ID.getHeader());
    proteinIdColumn.setVisible(false);

    // hide peptide id column
    TableColumnExt peptideIdColumn =
        (TableColumnExt)
            quantPeptideTable.getColumn(QuantPeptideTableModel.TableHeader.PEPTIDE_ID.getHeader());
    peptideIdColumn.setVisible(false);

    // add hyper link click listener
    String protAccColumnHeader =
        QuantPeptideTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader();
    quantPeptideTable.addMouseMotionListener(
        new TableCellMouseMotionListener(quantPeptideTable, protAccColumnHeader));
    quantPeptideTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            quantPeptideTable, protAccColumnHeader, new ProteinAccHyperLinkGenerator()));

    // additional column
    String additionalColHeader = ProteinTableModel.TableHeader.ADDITIONAL.getHeader();
    TableColumnExt additionalCol =
        (TableColumnExt) quantPeptideTable.getColumn(additionalColHeader);
    Icon detailIcon =
        GUIUtilities.loadIcon(
            Desktop.getInstance().getDesktopContext().getProperty("view.detail.small.icon"));
    additionalCol.setCellRenderer(new IconRenderer(detailIcon));
    additionalCol.setMaxWidth(50);
    additionalCol.setVisible(false);

    // add mouse motion listener
    quantPeptideTable.addMouseMotionListener(
        new TableCellMouseMotionListener(quantPeptideTable, additionalColHeader));
    quantPeptideTable.addMouseListener(
        new ShowParamsMouseListener(controller, quantPeptideTable, additionalColHeader));

    return quantPeptideTable;
  }
  /**
   * Build a table to display identification related details.
   *
   * @param controller data access controller
   * @return JTable identification table
   */
  public static JTable createIdentificationTable(DataAccessController controller) {
    ProteinTableModel identTableModel = new ProteinTableModel();
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable table = new DefaultPrideTable(identTableModel, columnModel);

    TableColumnExt proteinIdColumn =
        (TableColumnExt)
            table.getColumn(ProteinTableModel.TableHeader.IDENTIFICATION_ID.getHeader());
    proteinIdColumn.setVisible(false);

    TableColumnExt proteinNameColumn =
        (TableColumnExt) table.getColumn(ProteinTableModel.TableHeader.PROTEIN_NAME.getHeader());
    // set protein name width
    proteinNameColumn.setPreferredWidth(200);

    // hide the protein name column
    proteinNameColumn.setVisible(false);

    // protein status column
    TableColumnExt proteinStatusColumn =
        (TableColumnExt) table.getColumn(ProteinTableModel.TableHeader.PROTEIN_STATUS.getHeader());
    proteinStatusColumn.setVisible(false);

    // sequence coverage column
    TableColumnExt seqCoverageColumn =
        (TableColumnExt)
            table.getColumn(ProteinTableModel.TableHeader.PROTEIN_SEQUENCE_COVERAGE.getHeader());
    seqCoverageColumn.setCellRenderer(new SequenceCoverageRenderer());
    seqCoverageColumn.setVisible(false);

    // isoelectric point column
    TableColumnExt isoelectricColumn =
        (TableColumnExt)
            table.getColumn(
                ProteinTableModel.TableHeader.THEORITICAL_ISOELECTRIC_POINT_COLUMN.getHeader());
    isoelectricColumn.setVisible(false);

    // add hyper link click listener
    String protAccColumnHeader =
        ProteinTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader();
    table.addMouseMotionListener(new TableCellMouseMotionListener(table, protAccColumnHeader));
    table.addMouseListener(
        new HyperLinkCellMouseClickListener(
            table, protAccColumnHeader, new ProteinAccHyperLinkGenerator()));

    // ptm accession hyperlink
    TableColumn protAcc =
        table.getColumn(ProteinTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader());
    protAcc.setCellRenderer(new HyperLinkCellRenderer());

    // additional column
    String additionalColHeader = ProteinTableModel.TableHeader.ADDITIONAL.getHeader();
    TableColumnExt additionalCol = (TableColumnExt) table.getColumn(additionalColHeader);
    Icon icon =
        GUIUtilities.loadIcon(
            Desktop.getInstance().getDesktopContext().getProperty("view.detail.small.icon"));
    additionalCol.setCellRenderer(new IconRenderer(icon));
    additionalCol.setMaxWidth(50);

    // add mouse motion listener
    table.addMouseMotionListener(new TableCellMouseMotionListener(table, additionalColHeader));
    table.addMouseListener(new ShowParamsMouseListener(controller, table, additionalColHeader));

    return table;
  }
  /**
   * Create a table for quantitative protein data with a given table model
   *
   * @param tableModel quant protein table model
   * @return JTable quant protein table
   */
  public static JTable createQuantProteinTable(
      DataAccessController controller, TableModel tableModel) {
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable quantProteinTable = new DefaultPrideTable(tableModel, columnModel);
    quantProteinTable.setAutoCreateColumnsFromModel(false);
    // add table model change listener
    tableModel.addTableModelListener(new BarChartColumnListener(quantProteinTable));

    // in case the compare doesn't exist
    List<TableColumn> columns = columnModel.getColumns(true);
    for (TableColumn column : columns) {
      if (column.getHeaderValue().equals(QuantProteinTableModel.TableHeader.COMPARE.getHeader())) {
        column.setMaxWidth(25);
      }
    }
    // hide mapped protein accession
    String mappedProtAccHeader =
        QuantProteinTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader();
    TableColumnExt mappedProtAccColumn =
        (TableColumnExt) quantProteinTable.getColumn(mappedProtAccHeader);
    mappedProtAccColumn.setCellRenderer(new HyperLinkCellRenderer());
    // add hyper link click listener
    quantProteinTable.addMouseMotionListener(
        new TableCellMouseMotionListener(quantProteinTable, mappedProtAccHeader));
    quantProteinTable.addMouseListener(
        new HyperLinkCellMouseClickListener(
            quantProteinTable, mappedProtAccHeader, new ProteinAccHyperLinkGenerator()));

    TableColumnExt proteinIdColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.IDENTIFICATION_ID.getHeader());
    proteinIdColumn.setVisible(false);

    // hide the protein name column
    TableColumnExt proteinNameColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.PROTEIN_NAME.getHeader());
    proteinNameColumn.setVisible(false);

    // protein status column
    TableColumnExt proteinStatusColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.PROTEIN_STATUS.getHeader());
    proteinStatusColumn.setVisible(false);

    // sequence coverage column
    TableColumnExt seqCoverageColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.PROTEIN_SEQUENCE_COVERAGE.getHeader());
    seqCoverageColumn.setCellRenderer(new SequenceCoverageRenderer());
    seqCoverageColumn.setVisible(false);

    // isoelectric point column
    TableColumnExt isoelectricColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.THEORITICAL_ISOELECTRIC_POINT_COLUMN
                    .getHeader());
    isoelectricColumn.setVisible(false);

    // score
    TableColumnExt proteinScoreColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.IDENTIFICATION_SCORE_COLUMN.getHeader());
    proteinScoreColumn.setVisible(false);

    // threshold
    TableColumnExt proteinThresholdColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.IDENTIFICATION_THRESHOLD_COLUMN.getHeader());
    proteinThresholdColumn.setVisible(false);

    // number of peptides
    TableColumnExt numOfPeptideColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.NUMBER_OF_PEPTIDES.getHeader());
    numOfPeptideColumn.setVisible(false);

    // number of unique peptides
    TableColumnExt numOfUniquePeptideColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.NUMBER_OF_UNIQUE_PEPTIDES.getHeader());
    numOfUniquePeptideColumn.setVisible(false);

    // number of ptms
    TableColumnExt numOfPtmColumn =
        (TableColumnExt)
            quantProteinTable.getColumn(
                QuantProteinTableModel.TableHeader.NUMBER_OF_PTMS.getHeader());
    numOfPtmColumn.setVisible(false);

    // additional column
    String additionalColHeader = ProteinTableModel.TableHeader.ADDITIONAL.getHeader();
    TableColumnExt additionalCol =
        (TableColumnExt) quantProteinTable.getColumn(additionalColHeader);
    Icon icon =
        GUIUtilities.loadIcon(
            Desktop.getInstance().getDesktopContext().getProperty("view.detail.small.icon"));
    additionalCol.setCellRenderer(new IconRenderer(icon));
    additionalCol.setMaxWidth(50);
    additionalCol.setVisible(false);

    // add mouse motion listener
    quantProteinTable.addMouseMotionListener(
        new TableCellMouseMotionListener(quantProteinTable, additionalColHeader));
    quantProteinTable.addMouseListener(
        new ShowParamsMouseListener(controller, quantProteinTable, additionalColHeader));

    return quantProteinTable;
  }
  /**
   * Build a table to display peptide related details.
   *
   * @param se search engine
   * @param controller data access controller
   * @return JTable peptide table
   */
  public static JTable createPeptideTable(SearchEngine se, DataAccessController controller) {

    PeptideTableModel peptideTableModel = new PeptideTableModel(se);
    DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt();
    DefaultPrideTable table = new DefaultPrideTable(peptideTableModel, columnModel);

    // peptide sequence column renderer
    TableColumnExt peptideColumn =
        (TableColumnExt)
            table.getColumn(PeptideTableModel.TableHeader.PEPTIDE_PTM_COLUMN.getHeader());
    peptideColumn.setCellRenderer(new PeptideSequenceCellRenderer());

    // delta mass column
    TableColumnExt deltaMassColumn =
        (TableColumnExt)
            table.getColumn(PeptideTableModel.TableHeader.DELTA_MASS_COLUMN.getHeader());
    double minLimit =
        Double.parseDouble(
            Desktop.getInstance().getDesktopContext().getProperty("delta.mz.min.limit"));
    double maxLimit =
        Double.parseDouble(
            Desktop.getInstance().getDesktopContext().getProperty("delta.mz.max.limit"));
    DeltaMZRenderer renderer = new DeltaMZRenderer(minLimit, maxLimit);
    deltaMassColumn.setCellRenderer(renderer);

    // peptide sequence present in protein sequence
    TableColumnExt peptideFitColumn =
        (TableColumnExt) table.getColumn(PeptideTableModel.TableHeader.PEPTIDE_FIT.getHeader());
    peptideFitColumn.setCellRenderer(new PeptideFitCellRenderer());
    peptideFitColumn.setVisible(false);

    // hide modified peptide sequence
    TableColumnExt peptideSeqColumn =
        (TableColumnExt)
            table.getColumn(PeptideTableModel.TableHeader.PEPTIDE_PTM_MASS_COLUMN.getHeader());
    peptideSeqColumn.setVisible(false);

    // hide protein id column
    TableColumnExt proteinIdColumn =
        (TableColumnExt)
            table.getColumn(PeptideTableModel.TableHeader.IDENTIFICATION_ID.getHeader());
    proteinIdColumn.setVisible(false);

    // hide peptide id column
    TableColumnExt peptideIdColumn =
        (TableColumnExt) table.getColumn(PeptideTableModel.TableHeader.PEPTIDE_ID.getHeader());
    peptideIdColumn.setVisible(false);

    // set protein name column width
    TableColumnExt proteinNameColumn =
        (TableColumnExt) table.getColumn(PeptideTableModel.TableHeader.PROTEIN_NAME.getHeader());
    proteinNameColumn.setPreferredWidth(200);

    // hide the protein name column
    proteinNameColumn.setVisible(false);

    // protein status column
    TableColumnExt proteinStatusColumn =
        (TableColumnExt) table.getColumn(PeptideTableModel.TableHeader.PROTEIN_STATUS.getHeader());
    proteinStatusColumn.setVisible(false);

    // sequence coverage column
    TableColumnExt coverageColumn =
        (TableColumnExt)
            table.getColumn(PeptideTableModel.TableHeader.PROTEIN_SEQUENCE_COVERAGE.getHeader());
    coverageColumn.setCellRenderer(new SequenceCoverageRenderer());
    coverageColumn.setVisible(false);

    // add hyper link click listener
    String protAccColumnHeader =
        PeptideTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader();
    table.addMouseMotionListener(new TableCellMouseMotionListener(table, protAccColumnHeader));
    table.addMouseListener(
        new HyperLinkCellMouseClickListener(
            table, protAccColumnHeader, new ProteinAccHyperLinkGenerator()));

    // ptm accession hyperlink
    TableColumnExt protAcc =
        (TableColumnExt)
            table.getColumn(
                PeptideTableModel.TableHeader.MAPPED_PROTEIN_ACCESSION_COLUMN.getHeader());
    protAcc.setCellRenderer(new HyperLinkCellRenderer());

    // set peptide column width
    peptideColumn.setPreferredWidth(200);

    // hide spectrum id column
    String spectrumIdHeader = PeptideTableModel.TableHeader.SPECTRUM_ID.getHeader();
    TableColumnExt spectrumIdColumn = (TableColumnExt) table.getColumn(spectrumIdHeader);
    spectrumIdColumn.setVisible(false);

    // additional column
    String additionalColHeader = PeptideTableModel.TableHeader.ADDITIONAL.getHeader();
    TableColumnExt additionalCol = (TableColumnExt) table.getColumn(additionalColHeader);
    Icon icon =
        GUIUtilities.loadIcon(
            Desktop.getInstance().getDesktopContext().getProperty("view.detail.small.icon"));
    additionalCol.setCellRenderer(new IconRenderer(icon));
    additionalCol.setMaxWidth(50);

    // hide pI column
    String pIHeader =
        PeptideTableModel.TableHeader.THEORITICAL_ISOELECTRIC_POINT_COLUMN.getHeader();
    TableColumnExt pICol = (TableColumnExt) table.getColumn(pIHeader);
    pICol.setVisible(false);

    // add mouse motion listener
    table.addMouseMotionListener(new TableCellMouseMotionListener(table, additionalColHeader));
    table.addMouseListener(new ShowParamsMouseListener(controller, table, additionalColHeader));

    return table;
  }