package Common.Visual;
import Common.MainModule_;

import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultFormatter;
import java.awt.*;
public class UI {
    public static boolean isActive() {
        return (MainModule_.instance != null) && MainModule_.instance.hasUI();
    }
    //---
    public static void Clear(Container container) {
        container.removeAll();
        container.repaint();
        container.revalidate();
    }
    // http://java-online.ru/swing-joptionpane.xhtml
    public static <T> void TrySelect(JComboBox box, T value_in) {
        if (value_in != null) {
            for (int i = 0; i < box.getItemCount(); ++i) {
                T value = (T) box.getItemAt(i);
                if (value.equals(value_in)) {
                    box.setSelectedIndex(i);
                    return;
                }
            }
            box.addItem(value_in);
            box.setSelectedIndex(box.getItemCount() - 1);
        }
    }
    public static void TrySelect_s(JComboBox box, String value_string_in) {
        for (int i = 0; i < box.getItemCount(); ++i) {
            Object value = box.getItemAt(i);
            if (value.toString().equals(value_string_in)) {
                box.setSelectedIndex(i);
                return;
            }
        }
    }
    public static void MakeSpinnerRapid(JSpinner spinner, ChangeListener listener) {
        JComponent comp = spinner.getEditor();
        JFormattedTextField field = (JFormattedTextField) comp.getComponent(0);
        DefaultFormatter formatter = (DefaultFormatter) field.getFormatter();
        formatter.setCommitsOnValidEdit(true);
        formatter.setAllowsInvalid(true);
        spinner.addChangeListener(listener);
    }
    //Примитивные диалоговые элементы
    public static boolean Question(Component parent, String text) {
        return !UI.isActive() || (JOptionPane.showConfirmDialog(parent,
                text + "?",
                "Подтверждение",
                JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE) == 0);
    }
    public static boolean Question(String text) {
        return Question(MainModule_.instance.getUI().getFrontWindow(), text);
    }
    public static void Info(String message) {
        if (UI.isActive())
            JOptionPane.showMessageDialog(MainModule_.instance.getUI().getFrontWindow(), message, "", 1);
    }
    public static void Error(String message) {
        if (UI.isActive())
            JOptionPane.showMessageDialog(MainModule_.instance.getUI().getFrontWindow(), message, "", 0);
    }
    public static boolean Warning(String text) {
        return !UI.isActive() ||
                JOptionPane.showConfirmDialog(MainModule_.instance.getUI().getFrontWindow(),
                        text + "\nВы уверены?",
                        "Подтверждение",
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.WARNING_MESSAGE) == 0;
    }
    //-----
    public static void ShowTabsNames(JTabbedPane tabs, boolean flag) {
        ShowTabsNames(tabs, 0, flag);
    }
    public static void ShowTabsNames(JTabbedPane tabs, int startIndex, boolean flag) {
        for (int i = startIndex; i < tabs.getTabCount(); ++i)
            tabs.setTitleAt(i, flag ? tabs.getToolTipTextAt(i) : "");
    }
    //--
}
