package me.nov.cafebabe.gui.translations;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

import com.alee.laf.rootpane.WebDialog;
import com.alee.laf.scroll.WebScrollPane;
import com.alee.laf.table.WebTable;

import me.nov.cafebabe.Cafebabe;
import me.nov.cafebabe.translations.Translations;

public class TranslationEditor extends WebDialog {
	private static final long serialVersionUID = 1L;

	public TranslationEditor() {
		super(Cafebabe.gui, true);
		this.setRound(5);
		this.setShadeWidth(20);
		this.setShowResizeCorner(false);
		this.initBounds();
		this.setTitle(Translations.get("Translation editor"));
		this.setIconImage(Cafebabe.gui.getIconImage());
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		WebTable table = new WebTable() {
			private static final long serialVersionUID = 1L;

			@Override
			public boolean isCellEditable(int row, int column) {
				return column > 0;
			}
		};
		DefaultTableModel model = new DefaultTableModel(new Object[] { "Hash code", "Translation" }, 0);
		for (int hashCode : Translations.translations.keySet()) {
			String translation = Translations.translations.get(hashCode);
			model.addRow(new Object[] { hashCode, translation });
		}
		table.setColumnSelectionAllowed(false);
		table.getTableHeader().setReorderingAllowed(false);
		table.setModel(model);
		model.addTableModelListener(l -> {
			for (int row = 0; row < model.getRowCount(); row++)
				Translations.translations.put((Integer) model.getValueAt(row, 0), (String) model.getValueAt(row, 1));
			Translations.saveTranslations();
		});
		JPanel pane = new JPanel();
		pane.setLayout(new BorderLayout());
		pane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		pane.add(new WebScrollPane(table), BorderLayout.CENTER);
		pane.add(
				new JLabel(
						"<html>Please open an issue on the official github-repo and send in your tranlations!<br>Translations are stored in <u>%userprofile%/.cafebabe/translations/</u><br>Make sure you don't miss out any translations.<br>Translations are added to the table when they were shown at least once!"),
				BorderLayout.NORTH);
		this.setContentPane(pane);
		setLocationRelativeTo(getParent());
		this.setVisible(true);
	}

	private void initBounds() {
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		int width = (int) (screenSize.width * 0.25);
		int height = (int) (screenSize.height * 0.5);
		setBounds(screenSize.width / 2 - width / 2, screenSize.height / 2 - height / 2, width, height);
	}
}