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));
        }
      }
    }
  }