/**
   * Updates the bottom part of the {@link RegIntTab} with information about the Xref selected in
   * the top part of RIPTab and its interaction
   *
   * @param xref one of the interaction partners (displayed in the top part of the RIPTAB) of the
   *     Xref selected in the main pathway
   * @param results the results object from updating the top part of the RIPTab by selecting an Xref
   *     in the main pathway
   */
  public void updateBackpagePanel(Xref xref, ResultsObj results) {
    backpagePanel.removeAll();
    backpagePanel.setLayout(new BoxLayout(backpagePanel, BoxLayout.PAGE_AXIS));

    PathwayElement e = PathwayElement.createPathwayElement(ObjectType.DATANODE);
    e.setDataSource(xref.getDataSource());
    e.setElementID(xref.getId());
    BackpageTextProvider bpt = new BackpageTextProvider();

    bpt.addBackpageHook(new BackpageInfo(swingEngine.getGdbManager().getCurrentGdb(), results));
    // TODO: fix file table, doesn't always show files
    bpt.addBackpageHook(new BackpageFileTable(results, plugin));
    bpt.addBackpageHook(new BackpagePMID(results));
    // TODO: change this to use multiple BridgeDb databases?
    bpt.addBackpageHook(
        new BackpageTextProvider.BackpageXrefs(swingEngine.getGdbManager().getCurrentGdb()));
    bpt.addBackpageHook(new BackpageExpression(plugin.getDesktop().getGexManager()));
    bpt.addBackpageHook(new BackpageMiscInfo(results));
    BackpagePane bpp = new BackpagePane(bpt, swingEngine.getEngine());
    bpp.setInput(e);

    bpp.addHyperlinkListener(
        new HyperlinkListener() {

          @Override
          public void hyperlinkUpdate(HyperlinkEvent e) {
            if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
              try {
                Desktop.getDesktop().browse(e.getURL().toURI());
              } catch (IOException e1) {
                e1.printStackTrace();
              } catch (URISyntaxException e1) {
                e1.printStackTrace();
              }
            }
          }
        });
    backpagePanel.add(bpp);

    backpagePanel.revalidate();
    backpagePanel.repaint();
  }