public void paintColorsMode(Graphics g, int x, int y) {
		Point p = new Point(x, y);
		String rbs =request.buttonGroup.getSelection().getActionCommand(); //radio button selected
		colorBiddableLand(g);
		Grid grid = request.operator.getGrid();
		grid.goToSurface();

		if (rbs.equals("B")){   			 //If the bid radio box is selected

			selectCell(g, new Color(210,210,210), p);
			doBid(p);
		}
		else if(rbs.equals("D")){   		 //if the drill radio box is selected
			colorDrillableLand(g);
			selectCell(g, Color.CYAN, p);
			doDrill(p);	
		}
		else if(rbs.equals("S")){   		 //if the seismic line radio box is selected
			colorSeismicKnowledge(g);

			Point startP = new Point(0,0);
			Point endP = new Point(0,0);
			try {
				startP = new Point(request.getStartX(),request.getStartY());
				endP = new Point(request.getEndX(),request.getEndY());
			} catch (Exception e) { }

			//sMode is toggled with every mouse click in onMouseClick()
			//if sMode indicates setting the start value
			if (sMode==0){
				startP = p;
				//display the starting x,y values in their textbox
				request.setStartX(startP.x);
				request.setStartY(startP.y);
				//clear the ending x,y values
				request.setendX("");
				request.setendY("");
				//instruct to select ending cell
				request.setseismicCostField("Click Second Cell.");
				//color the starting selection
				seismicColor(g, startP, startP);
				//if sMode indicates setting the end value
			}else{
				endP = p;
				//display the x,y values in their textbox
				request.setendX(endP.x+"");
				request.setendY(endP.y+"");

				//get the cost and display it
				String cost = request.operator.
						getCostSeismic(startP.x, startP.y, endP.x, endP.y);
				request.setseismicCostField(cost);
				//color the selection
				seismicColor(g, startP, endP);

				/*if the selection is not valid,
				display a helpful message. */
				if(cost.equals("Invalid Coordinates.")) {
					request.setseismicCostField("Problem with Request.");
				}
			}
		}
	}