package Common.Visual.Menus;
import Common.CommonConstants;
import Common.Utils.Utils_;

import javax.swing.*;
import java.awt.*;
import java.util.Vector;
public class TableMenu extends StyledPopupMenu {
    int row = CommonConstants.Nan;
    int column = CommonConstants.Nan;
    Object target = null;
    //-
    JTable owner = null;
    VisualiserMenuItem mcopy;
    JTextArea value_view;
    JScrollPane value_scroll;
    public TableMenu(JTable owner_in) {
        owner = owner_in;
        mcopy = new VisualiserMenuItem("Копировать текст текущей ячейки", "/icons/Editor/Copy.png");
        //если удалось нажать значит все условия выполнены
        mcopy.addActionListener(e -> Utils_.CopyToClipboard(target.toString()));
        add(mcopy);
        //
        add(value_scroll = new JScrollPane(value_view = new JTextArea()));
        value_view.setEditable(false);
        //value_view.setLineWrap(true);
        //value_view.setWrapStyleWord(true);
    }
    @Override
    public void CheckElementsVisibility() {
        row = owner.getSelectedRow();
        column = owner.getSelectedColumn();
        if ((row >= 0) && (column >= 0)) {
            target = owner.getValueAt(row, column);
            mcopy.setVisible(true);
            Dimension d = new Dimension(Math.max(mcopy.getWidth(), 300), 100);
            value_view.setVisible(true);
            String res = target.toString();
            if (target instanceof Vector) {
                Vector<Object> v = (Vector<Object>) target;
                Vector<String> res_ = new Vector<>();
                for (Object o : v) {
                    res_.add(o.toString());
                }
                res = String.join("\n", res_);
            }
            value_view.setText(res);
            value_scroll.setPreferredSize(d);
        } else {
            mcopy.setVisible(false);
            value_view.setVisible(false);
        }
        super.CheckElementsVisibility();
    }
}
