// called by JMolSelectionListener.java to set the selected Atoms list public void setSelectedAtoms(BS values) { // System.out.println("Selected: " + values); if (selectedAtoms == null) selectedAtoms = new ArrayList<Atom>(); else selectedAtoms.clear(); String[] valueGet = values.toString().split("[{ }]"); if (modelList != null) { Model currentModel = modelList.get(viewer.getDisplayModelIndex()); for (int i = 0; i < valueGet.length; i++) { if (valueGet[i].compareTo("") != 0) { // if its list of continuous atoms if (valueGet[i].contains(":")) { int start = Integer.parseInt(valueGet[i].split(":")[0]) + 1; int end = Integer.parseInt(valueGet[i].split(":")[1]) + 1; for (int j = start; j <= end; j++) { selectedAtoms.add(currentModel.getAtomHash().get(currentModel.getModelName() + j)); } } else { selectedAtoms.add( currentModel .getAtomHash() .get(currentModel.getModelName() + (Integer.parseInt(valueGet[i]) + 1))); } } } } }
// set the model's bonds using Jmol display. public void setModelBonds() { int currModel = 0, prevModel = 0; Atom atom1, atom2; Bond bond; String index1, index2; ArrayList<Bond> ownbonds = new ArrayList<Bond>(); org.jmol.modelset.Bond[] bonds = viewer.ms.bo; for (int i = 0; i < bonds.length; i++) { prevModel = currModel; currModel = bonds[i].getAtom1().getModelNumber(); Model model = modelList.get(currModel - 1); if (currModel != prevModel && i != 0) { modelList.get(prevModel - 1).setBonds(ownbonds); ownbonds.clear(); } index1 = model.getModelName() + bonds[i].getAtom1().atomSite; index2 = model.getModelName() + bonds[i].getAtom2().atomSite; atom1 = model.getAtomHash().get(index1); atom2 = model.getAtomHash().get(index2); if (atom1 == null || atom2 == null) continue; bond = new Bond(atom1, atom2); ownbonds.add(bond); atom1.setBond(bond); atom2.setBond(bond); if (i == bonds.length - 1) { modelList.get(currModel - 1).setBonds(ownbonds); } } }
// from biojava structure, convert to own user model public void createUserModel(Structure struc) { // read default MMFFtypes for atoms if (modelList == null) modelList = new ArrayList<Model>(); Model model = null; for (int i = 0; i < struc.nrModels(); i++) { // for each model, create and add to model list model = new Model(); model.setModelName("Model" + (i + 1)); model.setMolecule(struc.getModel(i)); // set the model modelList.add(model); } }