package nl.andrewlalis.blockbookbinder.view;

import nl.andrewlalis.blockbookbinder.control.CleanSourceActionListener;
import nl.andrewlalis.blockbookbinder.control.ConvertToBookActionListener;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;

/**
 * A panel dedicated to displaying an interacting with a raw source of text for
 * a book.
 */
public class SourceTextPanel extends JPanel {
	private final JTextArea textArea;

	public SourceTextPanel(BookPreviewPanel bookPreviewPanel) {
		super(new BorderLayout());

		this.add(new JLabel("Source Text"), BorderLayout.NORTH);
		this.setBorder(new EmptyBorder(5, 5, 5, 5));

		this.textArea = new JTextArea();
		this.textArea.setWrapStyleWord(true);
		this.textArea.setLineWrap(true);
		JScrollPane scrollWrappedMainTextArea = new JScrollPane(this.textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		this.add(scrollWrappedMainTextArea, BorderLayout.CENTER);

		JPanel rightPanelButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		this.add(rightPanelButtonPanel, BorderLayout.SOUTH);

		JButton convertButton = new JButton("Convert to Book");
		convertButton.addActionListener(new ConvertToBookActionListener(this, bookPreviewPanel));
		rightPanelButtonPanel.add(convertButton);

		JButton cleanButton = new JButton("Clean");
		cleanButton.addActionListener(new CleanSourceActionListener(this));
		rightPanelButtonPanel.add(cleanButton);
	}

	public String getSourceText() {
		return this.textArea.getText();
	}

	public void setSourceText(String text) {
		this.textArea.setText(text);
	}
}