2024-10-09 20:35:18 +03:00
|
|
|
package Common.Visual.Menus;
|
2024-10-07 14:22:52 +03:00
|
|
|
import Common.CommonConstants;
|
2024-10-11 00:00:30 +03:00
|
|
|
import Common.Utils.Utils_;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
import javax.swing.*;
|
2025-03-02 14:26:16 +03:00
|
|
|
import java.awt.*;
|
2025-03-02 15:19:37 +03:00
|
|
|
import java.util.Vector;
|
2023-09-17 22:13:42 +03:00
|
|
|
public class TableMenu extends StyledPopupMenu {
|
2024-10-07 14:22:52 +03:00
|
|
|
int row = CommonConstants.Nan;
|
|
|
|
|
int column = CommonConstants.Nan;
|
2023-09-17 22:13:42 +03:00
|
|
|
Object target = null;
|
|
|
|
|
//-
|
|
|
|
|
JTable owner = null;
|
|
|
|
|
VisualiserMenuItem mcopy;
|
2025-03-02 14:26:16 +03:00
|
|
|
JTextArea value_view;
|
|
|
|
|
JScrollPane value_scroll;
|
2023-09-17 22:13:42 +03:00
|
|
|
public TableMenu(JTable owner_in) {
|
|
|
|
|
owner = owner_in;
|
|
|
|
|
mcopy = new VisualiserMenuItem("Копировать текст текущей ячейки", "/icons/Editor/Copy.png");
|
|
|
|
|
//если удалось нажать значит все условия выполнены
|
2024-10-11 00:00:30 +03:00
|
|
|
mcopy.addActionListener(e -> Utils_.CopyToClipboard(target.toString()));
|
2023-09-17 22:13:42 +03:00
|
|
|
add(mcopy);
|
2025-03-02 14:26:16 +03:00
|
|
|
//
|
2025-03-13 00:32:20 +03:00
|
|
|
add(value_scroll = new JScrollPane(value_view = new JTextArea()));
|
2025-03-02 14:26:16 +03:00
|
|
|
value_view.setEditable(false);
|
2025-03-04 14:19:04 +03:00
|
|
|
//value_view.setLineWrap(true);
|
|
|
|
|
//value_view.setWrapStyleWord(true);
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void CheckElementsVisibility() {
|
|
|
|
|
row = owner.getSelectedRow();
|
|
|
|
|
column = owner.getSelectedColumn();
|
|
|
|
|
if ((row >= 0) && (column >= 0)) {
|
|
|
|
|
target = owner.getValueAt(row, column);
|
|
|
|
|
mcopy.setVisible(true);
|
2025-03-13 00:32:20 +03:00
|
|
|
Dimension d = new Dimension(Math.max(mcopy.getWidth(), 300), 100);
|
2025-03-02 14:26:16 +03:00
|
|
|
value_view.setVisible(true);
|
2025-03-02 15:19:37 +03:00
|
|
|
String res = target.toString();
|
2025-03-13 00:32:20 +03:00
|
|
|
if (target instanceof Vector) {
|
2025-03-02 15:19:37 +03:00
|
|
|
Vector<Object> v = (Vector<Object>) target;
|
|
|
|
|
Vector<String> res_ = new Vector<>();
|
2025-03-13 00:32:20 +03:00
|
|
|
for (Object o : v) {
|
2025-03-02 15:19:37 +03:00
|
|
|
res_.add(o.toString());
|
|
|
|
|
}
|
|
|
|
|
res = String.join("\n", res_);
|
|
|
|
|
}
|
|
|
|
|
value_view.setText(res);
|
2025-03-02 14:26:16 +03:00
|
|
|
value_scroll.setPreferredSize(d);
|
|
|
|
|
} else {
|
|
|
|
|
mcopy.setVisible(false);
|
|
|
|
|
value_view.setVisible(false);
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
super.CheckElementsVisibility();
|
|
|
|
|
}
|
|
|
|
|
}
|