public void showContourPlot(boolean state, Atom a, Dimension dim) {
		contourPlot = state;
		if (contourPlot) {
			if (a == null)
				return;
			EventQueue.invokeLater(new Runnable() {
				public void run() {
					setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
				}
			});
			// model.stopImmediately();
			synchronized (contourLock) {
				probe = a;
				contour.setProbe(probe, dim.width, dim.height);
				contour.setConstant(model.getUniverse().getCoulombConstant(), model.getUniverse().getDielectricConstant());
				contourMap = new ContourMap(dim.width / contour.getCellSize(), dim.height / contour.getCellSize(), contour.getContour(nAtom, atom, boundary.getType()));
				// contourMap.setNLevels(model.checkCharges()? 20 : 10);
				contourMap.setNLevels(20);
				contourMap.setRange(0, dim.width, 0, dim.height);
				contourMap.setLogLevels(false);
				contourMap.setExpLevels(false);
				setIsoCurves(contourMap.getCurves());
			}
			repaint();
			EventQueue.invokeLater(new Runnable() {
				public void run() {
					setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
				}
			});
		}
	}