Files
VisualSapfor/src/Common/Visual/Menus/TableMenu.java

56 lines
2.0 KiB
Java
Raw Normal View History

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.*;
import java.awt.*;
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;
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-13 00:32:20 +03:00
add(value_scroll = new JScrollPane(value_view = new JTextArea()));
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);
value_view.setVisible(true);
String res = target.toString();
2025-03-13 00:32:20 +03:00
if (target instanceof Vector) {
Vector<Object> v = (Vector<Object>) target;
Vector<String> res_ = new Vector<>();
2025-03-13 00:32:20 +03:00
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);
}
2023-09-17 22:13:42 +03:00
super.CheckElementsVisibility();
}
}