import org.kde.qt.*;

public class Tut12 extends QWidget {
	public Tut12() {
		QPushButton quit = new QPushButton("&Quit", this, "quit");
		quit.setFont(new QFont("Times", 18, QFont.Bold, false));

		connect(quit, SIGNAL("clicked()"), qApp(), SLOT("quit()"));

		LCDRange angle = new LCDRange("ANGLE", this, "angle");
		angle.setRange(5, 70);

		LCDRange force = new LCDRange("FORCE", this, "force");
		force.setRange(10, 50);

		CannonField cannonField = new CannonField(this, "cannonField");

		connect(angle, SIGNAL("valueChanged(int)"),
						cannonField, SLOT("setAngle(int)"));
		connect(cannonField, SIGNAL("angleChanged(int)"),
						angle, SLOT("setValue(int)"));

		connect(force, SIGNAL("valueChanged(int)"),
						cannonField, SLOT("setForce(int)"));
		connect(cannonField, SIGNAL("forceChanged(int)"),
						force, SLOT("setValue(int)"));


		QPushButton shoot = new QPushButton("&Shoot", this, "shoot");
		shoot.setFont(new QFont("Times", 18, QFont.Bold, false));

		connect(shoot, SIGNAL("clicked()"), cannonField, SLOT("shoot()"));

		QGridLayout grid = new QGridLayout(this, 2, 2, 10, -1, null);
		grid.addWidget(quit, 0, 0);
		grid.addWidget(cannonField, 1, 1);
		grid.setColStretch(1, 10);

		QVBoxLayout leftBox = new QVBoxLayout();
		grid.addLayout(leftBox, 1, 0);
		leftBox.addWidget(angle);
		leftBox.addWidget(force);

		QHBoxLayout topBox = new QHBoxLayout();
		grid.addLayout(topBox, 0, 1);
		topBox.addWidget(shoot);
		topBox.addStretch(1);

		angle.setValue(60);
		force.setValue(25);
		angle.setFocus();
	}
	
	public static void main(String[] args) {
		QApplication.setColorSpec(QApplication.CustomColor);
		QApplication a = new QApplication(args);
		Tut12 w = new Tut12();
		w.setGeometry( 100, 100, 500, 355 );
		
		a.setMainWidget(w);
		w.show();
		a.exec();
		return;
	}
	
	static {
		try {
			Class c = Class.forName("org.kde.qt.qtjava");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Can't load qtjava class");
		}
	}
}
