From: Egon W. <eg...@us...> - 2002-05-16 15:08:05
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol In directory usw-pr-cvs1:/tmp/cvs-serv24380/src/org/openscience/jmol Modified Files: ChemFrame.java DisplayPanel.java Log Message: Implemented feature request 556730. Image of eraser is still missing. Index: ChemFrame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/ChemFrame.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -r1.35 -r1.36 *** ChemFrame.java 14 May 2002 15:28:36 -0000 1.35 --- ChemFrame.java 16 May 2002 15:01:02 -0000 1.36 *************** *** 317,320 **** --- 317,335 ---- /** + * Deletes an Atom from the frame + */ + public void deleteAtom(int atomID) { + for (int i=atomID; i<numberAtoms; i++) { + atoms[i] = atoms[i+1]; + } + numberAtoms--; + try { + rebond(); + } catch (Exception e) { + // could not rebond atoms + } + } + + /** * returns the number of atoms in the ChemFrame */ *************** *** 488,491 **** --- 503,523 ---- } } + } + + /** + * Clear out the list of picked atoms, find the nearest atom to a + * set of screen coordinates and add this new atom to the picked + * list. + * + * @param x the screen x coordinate of the selection point + * @param y the screen y coordinate of the selection point + */ + public void deleteSelectedAtom(int x, int y) { + + int smallest = getNearestAtom(x, y); + if (smallest < 0) { + return; + } + deleteAtom(smallest); } Index: DisplayPanel.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/DisplayPanel.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** DisplayPanel.java 14 May 2002 15:28:36 -0000 1.14 --- DisplayPanel.java 16 May 2002 15:01:03 -0000 1.15 *************** *** 79,82 **** --- 79,83 ---- public static final int DEFORM = 4; public static final int MEASURE = 5; + public static final int DELETE = 6; private int mode = ROTATE; private static Color backgroundColor = null; *************** *** 284,290 **** public void mouseClicked(MouseEvent e) { ! ! if (mode == PICK) { ! if (haveFile) { if (e.isShiftDown()) { md.shiftSelectAtom(e.getX(), e.getY()); --- 285,291 ---- public void mouseClicked(MouseEvent e) { ! ! if (haveFile) { ! if (mode == PICK) { if (e.isShiftDown()) { md.shiftSelectAtom(e.getX(), e.getY()); *************** *** 295,301 **** int n = md.getNpicked(); status.setStatus(2, n + " Atoms Selected"); ! } ! } else if (mode == MEASURE) { ! if (haveFile) { m.firePicked(md.pickMeasuredAtom(e.getX(), e.getY())); } --- 296,304 ---- int n = md.getNpicked(); status.setStatus(2, n + " Atoms Selected"); ! } else if (mode == DELETE) { ! md.deleteSelectedAtom(e.getX(), e.getY()); ! repaint(); // this seems to have no effect... ! status.setStatus(2, "Atom Deleted"); ! } else if (mode == MEASURE) { m.firePicked(md.pickMeasuredAtom(e.getX(), e.getY())); } *************** *** 533,536 **** --- 536,540 ---- // The actions: + private DeleteAction deleteAction = new DeleteAction(); private PickAction pickAction = new PickAction(); private RotateAction rotateAction = new RotateAction(); *************** *** 758,761 **** --- 762,780 ---- } + class DeleteAction extends AbstractAction { + + public DeleteAction() { + super("delete"); + this.setEnabled(true); + } + + public void actionPerformed(ActionEvent e) { + + // switch mode; + mode = DELETE; + status.setStatus(1, "Delete Atoms"); + } + } + class RotateAction extends AbstractAction { *************** *** 979,983 **** Action[] defaultActions = { ! pickAction, rotateAction, zoomAction, xlateAction, frontAction, topAction, bottomAction, rightAction, leftAction, aquickdrawAction, ashadingAction, awireframeAction, bquickdrawAction, bshadingAction, --- 998,1002 ---- Action[] defaultActions = { ! deleteAction, pickAction, rotateAction, zoomAction, xlateAction, frontAction, topAction, bottomAction, rightAction, leftAction, aquickdrawAction, ashadingAction, awireframeAction, bquickdrawAction, bshadingAction, |