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 v = (Vector) target; Vector 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(); } }