import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;


public class GTest extends JComponent {
    volatile int m = 0;
    volatile double k = 1;

    volatile int x1 = 0;
    volatile int x2 = 700;
    Dimension dim = null;
    public void paint(Graphics g) {
	Graphics2D g2 = (Graphics2D) g;
	dim = getSize();
	g.setColor(getBackground());
	g.fillRect(0, 0, dim.width, dim.height);
	

	g.setColor(Color.white);
	for (double x=x1; x <= x2;x++) {
	    int y = Math.round(Math.round(k*x)) + m;
	    //if (x == x1) System.out.println("first y: " + y);
	    //if (x == x2) System.out.println("last y:  " + y);
	    pset(g, (int) x, y);
	}
	

    }

    void pset(Graphics g, int x, int y) {
	g.drawLine(x, y, x, y);
    }

    void setM(int i) {
	m = i;
    }

    public static void main(String[] argv) {
	JFrame f = new JFrame("foo.");
	JComponent c = new GTest();
	c.setBackground(Color.black);
	RepaintManager rm = RepaintManager.currentManager(c);
	rm.setDoubleBufferingEnabled(false);
	f.setSize(700, 700);
	f.getContentPane().add(c);
	f.show();
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public GTest() {
	new Thread() {
		public void run() {
		    LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in));
		    while (true) {
			try {
			    System.out.println("m=" + m + "; k=" + k + "; x1=" + x1 + "; x2=" + x2);
			    System.out.println("dim=" + dim);
			    System.out.print("var? ");
			    String var = in.readLine();
			    System.out.print("val? ");
			    String val = in.readLine();
			    if ("m".equals(var)) {
				m = Integer.parseInt(val);
			    } else if ("k".equals(var)) {
				k = Double.parseDouble(val);
			    } else if ("x1".equals(var)) {
				x1 = Integer.parseInt(val);
			    } else if ("x2".equals(var)) {
				x2 = Integer.parseInt(val);
			    }
			    repaint();
			} catch (Exception ex1) {
			    System.out.println("* " + ex1.toString());
			}
		    }
		}
	    }.start();
    }

}
