Files
VisualSapfor/src/Common_old/UI/Menus/SelectionTreeMenu.java

88 lines
3.4 KiB
Java
Raw Normal View History

package Common_old.UI.Menus;
import Common.CurrentAnchestor;
2024-10-07 14:22:52 +03:00
import Common.Utils.CommonUtils;
2024-10-09 20:35:18 +03:00
import Common.Visual.Menus.VisualiserMenuItem;
import Common_old.UI.Menus_2023.StableMenuItem;
2024-10-07 17:46:38 +03:00
import Common.Visual.Selectable;
2024-10-09 20:35:18 +03:00
import Common.Visual.Trees.DataTree;
import Common.Visual.Trees.SelectableTree;
2023-09-17 22:13:42 +03:00
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public abstract class SelectionTreeMenu extends GraphMenu<DataTree> {
VisualiserMenuItem m_select_for_current;
VisualiserMenuItem m_unselect_for_current;
VisualiserMenuItem m_select_all;
VisualiserMenuItem m_unselect_all;
public SelectionTreeMenu(SelectableTree tree_in) {
super(tree_in, "");
addSeparator();
//-
m_select_all = new StableMenuItem("Выбрать всё", "/icons/SelectAll.png");
m_select_all.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SelectAll(true);
tree.updateUI();
}
});
add(m_select_all);
m_unselect_all = new StableMenuItem("Отменить всё", "/icons/UnselectAll.png");
m_unselect_all.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SelectAll(false);
tree.updateUI();
}
});
add(m_unselect_all);
addSeparator();
m_select_for_current = new VisualiserMenuItem("");
m_select_for_current.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
Object o = CurrentAnchestor.get(tree.getCurrent());
2023-09-17 22:13:42 +03:00
if (o instanceof Selectable) {
((Selectable) o).SelectAllChildren(true);
}
tree.updateUI();
}
});
add(m_select_for_current);
//--------
m_unselect_for_current = new VisualiserMenuItem("");
m_unselect_for_current.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
Object o = CurrentAnchestor.get(tree.getCurrent());
2023-09-17 22:13:42 +03:00
if (o instanceof Selectable) {
((Selectable) o).SelectAllChildren(false);
}
tree.updateUI();
}
});
//-------
add(m_unselect_for_current);
}
public abstract Class getTargetClass(); //для кого позволяется выбирать всех потомков.
public abstract void SelectAll(boolean select);
@Override
public void CheckElementsVisibility() {
Object current = CurrentAnchestor.get(tree.getCurrent());
2023-09-17 22:13:42 +03:00
if ((current != null) && (current.getClass().equals(getTargetClass()))) {
String name = ((Selectable) current).getSelectionText();
m_select_for_current.setText("Выбрать всё для " +
2024-10-07 14:22:52 +03:00
CommonUtils.Brackets(name));
2023-09-17 22:13:42 +03:00
m_unselect_for_current.setText("Отменить выбор всех для " +
2024-10-07 14:22:52 +03:00
CommonUtils.Brackets(name));
2023-09-17 22:13:42 +03:00
//-
m_select_for_current.setVisible(true);
m_unselect_for_current.setVisible(true);
} else {
m_select_for_current.setVisible(false);
m_unselect_for_current.setVisible(false);
}
}
}