/*
 * Copyright (c) 2024. Elex. All Rights Reesrved.
 * https://www.elex-project.com/
 */

package com.elex_project.examples.layouts;

import javax.swing.*;

public class SpringLayoutExample extends JPanel {

	SpringLayoutExample() {
		super(new SpringLayout());


		final JButton button1 = new JButton("Button 1");
		final JButton button2 = new JButton("Button 2");
		final JButton button3 = new JButton("Button 3");
		final JButton button4 = new JButton("Button 4");
		final JButton button5 = new JButton("Button 5");

		add(button1);
		add(button2);
		add(button3);
		add(button4);
		add(button5);

		final SpringLayout layout = (SpringLayout) getLayout();
		layout.putConstraint(SpringLayout.BASELINE, button2, 0,
				SpringLayout.BASELINE, button1); // 버튼 2의 베이스라인은 버튼 1의 베이스라인과 같다.
		layout.putConstraint(SpringLayout.BASELINE, button3, 0,
				SpringLayout.BASELINE, button2); // 버튼 3의 베이스라인은 버튼 2의 베이스라인과 같다.
		layout.putConstraint(SpringLayout.WEST, button2, 10,
				SpringLayout.EAST, button1); // 버튼 2의 왼쪽은 버튼 1의 오른쪽과 10만큼 떨어져 있다.
		layout.putConstraint(SpringLayout.WEST, button3, 10,
				SpringLayout.EAST, button2);
		layout.putConstraint(SpringLayout.NORTH, button4, 10,
				SpringLayout.SOUTH, button3);
		layout.putConstraint(SpringLayout.NORTH, button5, 10,
				SpringLayout.SOUTH, button4);
		layout.putConstraint(SpringLayout.EAST, button4, 0,
				SpringLayout.EAST, button3);
		layout.putConstraint(SpringLayout.EAST, button5, 0,
				SpringLayout.EAST, button4);
	}

	public static void main(String... args) {

		// 프레임을 생성한다.
		final JFrame jFrame = new JFrame();
		jFrame.setTitle("Example");
		jFrame.setSize(800, 600);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jFrame.setContentPane(new SpringLayoutExample());

		// 이벤트 디스패치 스레드에서 프레임을 표시한다.
		SwingUtilities.invokeLater(() -> {
			jFrame.setVisible(true);
		});

	}
}
