import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

import no.geosoft.cc.geometry.Geometry;
import no.geosoft.cc.graphics.*;

public class Gwiazda extends JApplet implements ChangeListener{
	private GWindow window;
	private GScene scene;
	private GwiazdaObj gwiazda;
	
	public void init() {
		try
		{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		}
		catch (Exception ex)
		{
			System.out.println("Failed loading L&F: ");
			System.out.println(ex);
		}
		initComponents();
	}

	private void initComponents() {
		gWindow = new JPanel();
		slider1 = new JSlider(JSlider.HORIZONTAL, 0, 400, 200);
		slider2 = new JSlider(JSlider.HORIZONTAL, 0, 400, 200);
		slider3 = new JSlider(JSlider.HORIZONTAL, 0, 400, 100);
		slider4 = new JSlider(JSlider.HORIZONTAL, 0, 400, 200);
		slider5 = new JSlider(JSlider.HORIZONTAL, 1, 20, 10);
		label1 = new JLabel();
		label2 = new JLabel();
		label3 = new JLabel();
		label4 = new JLabel();
		label5 = new JLabel();
		slider6 = new JSlider(JSlider.HORIZONTAL, 0, 255, 255);
		slider7 = new JSlider(JSlider.HORIZONTAL, 0, 255, 150);
		slider8 = new JSlider(JSlider.HORIZONTAL, 0, 255, 150);
		slider9 = new JSlider(JSlider.HORIZONTAL, 0, 6, 1);
		label6 = new JLabel();
		label7 = new JLabel();
		label8 = new JLabel();
		label9 = new JLabel();

		//======== this ========
		//setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		//setTitle("Gwiazdka");
		//setResizable(false);
		Container contentPane = getContentPane();
		contentPane.setLayout(null);

		//======== gWindow ========
		{
			gWindow.setBackground(new Color(153, 153, 153));
			gWindow.setLayout(new BorderLayout());
		}
		contentPane.add(gWindow);
		gWindow.setBounds(5, 140, 395, 260);
		
		//======== window ========
		window = new GWindow(new Color (210, 235, 255));
		gWindow.add("Center", window.getCanvas());
		scene = new GScene (window);
		gwiazda = new GwiazdaObj();
    scene.add (gwiazda); 
		
		//======== SLIDERS ========
		contentPane.add(slider1);
		slider1.setBounds(70, 5, 110, slider1.getPreferredSize().height);
		slider1.addChangeListener(this);
		slider1.setName("S1");
		contentPane.add(slider2);
		slider2.setBounds(70, 30, 110, slider2.getPreferredSize().height);
		slider2.addChangeListener(this);
		slider2.setName("S2");
		contentPane.add(slider3);
		slider3.setBounds(70, 55, 110, slider3.getPreferredSize().height);
		slider3.addChangeListener(this);
		slider3.setName("S3");
		contentPane.add(slider4);
		slider4.setBounds(70, 80, 110, slider4.getPreferredSize().height);
		slider4.addChangeListener(this);
		slider4.setName("S4");
		contentPane.add(slider5);
		slider5.setBounds(70, 105, 110, slider5.getPreferredSize().height);
		slider5.addChangeListener(this);
		slider5.setName("S5");
		contentPane.add(slider6);
		slider6.setBounds(240, 5, 110, slider6.getPreferredSize().height);
		slider6.addChangeListener(this);
		slider6.setName("S6");
		contentPane.add(slider7);
		slider7.setBounds(240, 30, 110, slider7.getPreferredSize().height);
		slider7.addChangeListener(this);
		slider7.setName("S7");
		contentPane.add(slider8);
		slider8.setBounds(240, 55, 110, slider8.getPreferredSize().height);
		slider8.addChangeListener(this);
		slider8.setName("S8");
		contentPane.add(slider9);
		slider9.setBounds(240, 105, 110, slider9.getPreferredSize().height);
		slider9.addChangeListener(this);
		slider9.setName("S9");
		
		
		//---- label1 ----
		label1.setText("X");
		label1.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label1);
		label1.setBounds(20, 10, 40, 15);

		//---- label2 ----
		label2.setText("Y");
		label2.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label2);
		label2.setBounds(20, 35, 40, 15);

		//---- label3 ----
		label3.setText("In");
		label3.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label3);
		label3.setBounds(20, 60, 40, 15);

		//---- label4 ----
		label4.setText("Out");
		label4.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label4);
		label4.setBounds(20, 85, 40, 15);

		//---- label5 ----
		label5.setText("Num");
		label5.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label5);
		label5.setBounds(20, 110, 40, 15);

		//---- label6 ----
		label6.setText("R");
		label6.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label6);
		label6.setBounds(190, 10, 40, 15);

		//---- label7 ----
		label7.setText("G");
		label7.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label7);
		label7.setBounds(190, 35, 40, 15);

		//---- label8 ----
		label8.setText("B");
		label8.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label8);
		label8.setBounds(190, 60, 40, 15);

		//---- label9 ----
		label9.setText("Line");
		label9.setHorizontalAlignment(SwingConstants.RIGHT);
		contentPane.add(label9);
		label9.setBounds(190, 110, 40, 15);

		contentPane.setPreferredSize(new Dimension(405, 410));
		//pack();
		//setLocationRelativeTo(null);
		setVisible(true);
	}
	
	public class GwiazdaObj extends GObject{
    private GSegment star_;
		public int sX,sY,sIn,sOut,sNum;
		public int r,g,b,linew;
		
    public GwiazdaObj(){
      star_ = new GSegment();
			sX = 200;
			sY = 200;
			sIn = 100;
			sOut = 200;
			sNum = 10;
			r = 255;
			g = 150;
			b = 150;
			linew = 3;
			changeStyle();
      addSegment (star_);
    }
		
		public void changeStyle(){
			GStyle style = new GStyle();
      style.setForegroundColor (new Color (255, 0, 0));
      style.setBackgroundColor (new Color (r, g, b));
		  style.setLineWidth (linew);
      setStyle (style);
		}
		
    public void draw(){
      star_.setGeometry (Geometry.createStar (sX,sY,sIn,sOut,sNum));
    }
  }
	
	public void stateChanged(ChangeEvent e) {
		JSlider s = (JSlider)e.getSource();
		int val = s.getValue();
		String name = s.getName();
							if (name.equals("S1") == true) {
								Gwiazda.this.gwiazda.sX = val;
			}else if (name.equals("S2") == true) {
								Gwiazda.this.gwiazda.sY = val;
			}else if (name.equals("S3") == true) {
								Gwiazda.this.gwiazda.sIn = val;
			}else if (name.equals("S4") == true) {
								Gwiazda.this.gwiazda.sOut = val;
			}else if (name.equals("S5") == true) {
								Gwiazda.this.gwiazda.sNum = val;
			}else if (name.equals("S6") == true) {
								Gwiazda.this.gwiazda.r = val;
			}else if (name.equals("S7") == true) {
								Gwiazda.this.gwiazda.g = val;
			}else if (name.equals("S8") == true) {
								Gwiazda.this.gwiazda.b = val;
			}else if (name.equals("S9") == true) {
								Gwiazda.this.gwiazda.linew = val;
			}
			Gwiazda.this.gwiazda.changeStyle();
			Gwiazda.this.gwiazda.redraw();
			Gwiazda.this.scene.refresh();
		}
	
	private JPanel gWindow;
	private JSlider slider1;
	private JSlider slider2;
	private JSlider slider3;
	private JSlider slider4;
	private JSlider slider5;
	private JLabel label1;
	private JLabel label2;
	private JLabel label3;
	private JLabel label4;
	private JLabel label5;
	private JSlider slider6;
	private JSlider slider7;
	private JSlider slider8;
	private JSlider slider9;
	private JLabel label6;
	private JLabel label7;
	private JLabel label8;
	private JLabel label9;
}

