public void updateViewerCoord() {
   for (Atom atm : modelList.get(viewer.getDisplayModelIndex()).getAtomHash().values()) {
     viewer.ms.setAtomCoord(
         (atm.getAtomSeqNum() - 1),
         atm.getCoordinates()[0],
         atm.getCoordinates()[1],
         atm.getCoordinates()[2]);
   }
   jmolPanel.getViewer().refresh(3, "minimization step ");
 }
  // paste copied/cut atoms, not applicable when copied atoms are paste to same model.
  public void pasteSavedAtoms(int modelIndex) {
    if (savedAtoms == null)
      JOptionPane.showMessageDialog(
          jmolPanel,
          "You have not copied or cut any atoms to paste!",
          "Warning",
          JOptionPane.WARNING_MESSAGE);
    else {
      boolean error = false;
      for (int i = 0; i < savedAtoms.size(); i++) {
        for (Atom atm : modelList.get(modelIndex).getAtomHash().values()) {
          if (savedAtoms.get(i).getCoordinates()[0] == atm.getCoordinates()[0]
              && savedAtoms.get(i).getCoordinates()[1] == atm.getCoordinates()[1]
              && savedAtoms.get(i).getCoordinates()[2] == atm.getCoordinates()[2]) {
            error = true;
            break;
          }
        }
        if (error) {
          JOptionPane.showMessageDialog(
              jmolPanel,
              "You are trying to paste atoms in location occupied!",
              "Warning",
              JOptionPane.WARNING_MESSAGE);
          break;
        } else {
          addAtom(modelIndex, savedAtoms.get(i));
        }
      }
      String pdb = DataManager.modelToPDB(modelList);
      System.out.println(pdb);

      viewer.openStringInline(pdb);
      viewer.setCurrentModelIndex(modelIndex);
    }
    toolPanel.setModelText(modelList);
  }