public void paintComponent(Graphics g) { clearScreen(g); drawGrid(g); drawElements(g); if (drawBondLine == true) { Bond.drawDrag(g, Color.MAGENTA, elist.getSelected(), currentX, currentY); } if (drawArrowLine == true) { Arrow.drawDrag(g, Color.BLUE, elist.getSelected(), currentX, currentY); } drawConnections(g); }
// ***************** KeyListener **************** @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub if (e.getKeyCode() == 8) // if delete key is pressed { MoleculeComponent currentElement = elist.getSelected(); if (currentElement != null) { // Clear any lines being drawn (cancel connections) drawBondLine = false; drawArrowLine = false; elist.removeSelected(); mmc.view.displayAttributes(null); repaint(); } } else if (e.getKeyCode() == e.VK_ESCAPE) // if user hits ESC { if (drawBondLine == true) // and there is a bond being drawn { drawBondLine = false; // cancel that bond repaint(); } } }
// ***************** MouseListener ***************** public void mouseReleased(MouseEvent e) { currentX = getGraphCoordinateX(e.getX()); currentY = getGraphCoordinateY(e.getY()); MoleculeComponent clickedOn = elist.getClickedComponent(e.getX(), e.getY()); if (drawArrowLine || drawBondLine) // if connection is being made { if (clickedOn != null && elist.getSelected() != null) // if released on valid component { if (clickedOn.getClass() == Element.class && (rightPressed && !leftPressed)) { // if it's a bond elist.add(new Bond(elist.getSelected(), clickedOn)); } else if (clickedOn.getClass() == Element.class && (leftPressed && !rightPressed)) { elist.add(new Arrow(elist.getSelected(), clickedOn)); } } drawArrowLine = false; drawBondLine = false; repaint(); } else // connection is not being made { if (clickedOn != null) // if released on valid component { } else // Didn't click on valid component { if (leftPressed && !rightPressed) // If mouse button clicked was left { elist.add(new Element(currentX, currentY)); } } } }