no message
This commit is contained in:
39
src/Common/Visual/Trees/DataTree.java
Normal file
39
src/Common/Visual/Trees/DataTree.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.CurrentAnchestor;
|
||||
import Common.Utils.CommonUtils;
|
||||
import Common.Visual.DataControl_OLD;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
public class DataTree extends StyledTree implements DataControl_OLD {
|
||||
public DataTree(DefaultMutableTreeNode root_in) {
|
||||
super(root_in);
|
||||
}
|
||||
public void ChangeCurrentObject(DefaultMutableTreeNode node) {
|
||||
if (getCurrent() != null)
|
||||
CurrentAnchestor.set(getCurrent(), node.getUserObject());
|
||||
}
|
||||
@Override
|
||||
public void ShowCurrentObject() throws Exception {
|
||||
}
|
||||
@Override
|
||||
public void ShowNoCurrentObject() throws Exception {
|
||||
}
|
||||
@Override
|
||||
public void SelectionAction(TreePath path) {
|
||||
ChangeCurrentObject((DefaultMutableTreeNode) path.getLastPathComponent());
|
||||
try {
|
||||
ShowCurrentObject();
|
||||
} catch (Exception ex) {
|
||||
CommonUtils.MainLog.PrintException(ex);
|
||||
}
|
||||
}
|
||||
public void SelectNodeByCriteria(Object criteria) {
|
||||
EventsOff();
|
||||
TreePath res = ShowNodeByCriteria(criteria);
|
||||
setSelectionPath(res);
|
||||
ChangeCurrentObject((DefaultMutableTreeNode) res.getLastPathComponent());
|
||||
EventsOn();
|
||||
}
|
||||
}
|
||||
|
||||
27
src/Common/Visual/Trees/GraphTreeCellRenderer.java
Normal file
27
src/Common/Visual/Trees/GraphTreeCellRenderer.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.Utils.CommonUtils;
|
||||
import Common.Visual.CommonUI;
|
||||
import Common.Visual.Fonts.VisualiserFonts;
|
||||
import ProjectData.SapforData.FileObjectWithMessages;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
public class GraphTreeCellRenderer extends StyledTreeCellRenderer {
|
||||
public java.awt.Component getTreeCellRendererComponent(
|
||||
JTree tree, Object value,
|
||||
boolean selected, boolean expanded,
|
||||
boolean leaf, int row, boolean hasFocus) {
|
||||
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
|
||||
Object o = ((DefaultMutableTreeNode) value).getUserObject();
|
||||
if (o instanceof FileObjectWithMessages) {
|
||||
FileObjectWithMessages target = (FileObjectWithMessages) o;
|
||||
setIcon(CommonUtils.getIcon(target.ImageKey()));
|
||||
setFont(CommonUI.getTheme().Fonts.get(target.getFont()));
|
||||
} else {
|
||||
setIcon(null);
|
||||
setFont(CommonUI.getTheme().Fonts.get(VisualiserFonts.TreeItalic));
|
||||
}
|
||||
setForeground(tree.getForeground());
|
||||
return this;
|
||||
}
|
||||
}
|
||||
18
src/Common/Visual/Trees/SelectableTree.java
Normal file
18
src/Common/Visual/Trees/SelectableTree.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.CurrentAnchestor;
|
||||
import Common.Visual.Selectable;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
public class SelectableTree extends DataTree {
|
||||
public SelectableTree(DefaultMutableTreeNode root_in) {
|
||||
super(root_in);
|
||||
}
|
||||
@Override
|
||||
public void LeftMouseAction1() {
|
||||
Object element = CurrentAnchestor.get(getCurrent());
|
||||
if ((element instanceof Selectable)) {
|
||||
((Selectable) element).SwitchSelection();
|
||||
updateUI();
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/Common/Visual/Trees/SelectionTreeCellRenderer.java
Normal file
26
src/Common/Visual/Trees/SelectionTreeCellRenderer.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.Visual.CommonUI;
|
||||
import Common.Visual.Selectable;
|
||||
import Common.Visual.Fonts.VisualiserFonts;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
public class SelectionTreeCellRenderer extends StyledTreeCellRenderer {
|
||||
public java.awt.Component getTreeCellRendererComponent(
|
||||
JTree tree, Object value,
|
||||
boolean selected, boolean expanded,
|
||||
boolean leaf, int row, boolean hasFocus) {
|
||||
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
|
||||
Object o = ((DefaultMutableTreeNode) value).getUserObject();
|
||||
if (o instanceof Selectable) {
|
||||
Selectable selectable = (Selectable) o;
|
||||
setText(selectable.getSelectionText());
|
||||
setIcon(selectable.GetSelectionIcon());
|
||||
} else {
|
||||
setFont(CommonUI.getTheme().Fonts.get(VisualiserFonts.TreeItalic));
|
||||
setIcon(null);
|
||||
}
|
||||
setForeground(tree.getForeground());
|
||||
return this;
|
||||
}
|
||||
}
|
||||
167
src/Common/Visual/Trees/StyledTree.java
Normal file
167
src/Common/Visual/Trees/StyledTree.java
Normal file
@@ -0,0 +1,167 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.Visual.CommonUI;
|
||||
import Common_old.UI.Menus.GraphMenu;
|
||||
import Common.Visual.Themes.ThemeElement;
|
||||
import Common.Visual.Fonts.VisualiserFonts;
|
||||
import Common_old.UI.UI;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.TreePath;
|
||||
import javax.swing.tree.TreeSelectionModel;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
public class StyledTree extends JTree implements ThemeElement {
|
||||
//---------------------------------
|
||||
private final GraphMenu menu;
|
||||
public DefaultMutableTreeNode root = null;
|
||||
//-включение /отключение событий --
|
||||
protected boolean events_on = true;
|
||||
public StyledTree(DefaultMutableTreeNode root_in) {
|
||||
super(root_in);
|
||||
root = root_in;
|
||||
setOpaque(true);
|
||||
setFont(CommonUI.getTheme().Fonts.get(VisualiserFonts.TreePlain));
|
||||
setToggleClickCount(0); //отключение сворачивание разворачивания по двойному клику
|
||||
//--
|
||||
if (!getRenderer().equals(TreeRenderers.RendererUndefined))
|
||||
setCellRenderer(UI.TreeRenderers.get(getRenderer()));
|
||||
//--
|
||||
getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
||||
addTreeSelectionListener(e -> {
|
||||
if (events_on && e.isAddedPath())
|
||||
SelectionAction(e.getPath());
|
||||
});
|
||||
addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (e.getClickCount() == 1) {
|
||||
switch ((e.getButton())) {
|
||||
//левая клавиша.
|
||||
case MouseEvent.BUTTON1:
|
||||
if (getSelectionCount() > 0) LeftMouseAction1();
|
||||
break;
|
||||
//колесо
|
||||
case MouseEvent.BUTTON2:
|
||||
break;
|
||||
//правая клавиша
|
||||
case MouseEvent.BUTTON3:
|
||||
if (menu != null)
|
||||
menu.Show(e);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (e.getClickCount() == 2) {
|
||||
switch ((e.getButton())) {
|
||||
case MouseEvent.BUTTON1:
|
||||
if (getSelectionCount() > 0) LeftMouseAction2();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
menu = createMenu();
|
||||
applyTheme();
|
||||
ExpandAll();
|
||||
}
|
||||
public TreeRenderers getRenderer() {
|
||||
return TreeRenderers.RendererUndefined;
|
||||
}
|
||||
public void EventsOn() {
|
||||
events_on = true;
|
||||
}
|
||||
public void EventsOff() {
|
||||
events_on = false;
|
||||
}
|
||||
public String getBranchesName() {
|
||||
return "";
|
||||
}
|
||||
public void LeftMouseAction1() {
|
||||
}
|
||||
public void LeftMouseAction2() {
|
||||
}
|
||||
public void SelectionAction(TreePath e) {
|
||||
}
|
||||
@Override
|
||||
public void applyTheme() {
|
||||
setBackground(CommonUI.getTheme().trees_background);
|
||||
setForeground(CommonUI.getTheme().foreground);
|
||||
menu.applyTheme();
|
||||
}
|
||||
protected GraphMenu createMenu() {
|
||||
return new GraphMenu(this);
|
||||
}
|
||||
public DefaultMutableTreeNode getNodeByRow(int row) {
|
||||
DefaultMutableTreeNode res = null;
|
||||
if (row >= 0) {
|
||||
TreePath p = getPathForRow(row);
|
||||
res = (DefaultMutableTreeNode) p.getLastPathComponent();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
protected int getStartLine() {
|
||||
return 0;
|
||||
}
|
||||
public void ExpandAll() {
|
||||
for (int i = getStartLine(); i < getRowCount(); ++i)
|
||||
expandRow(i);
|
||||
}
|
||||
public void CollapseAll() {
|
||||
for (int i = getRowCount() - 1; i >= getStartLine(); --i) {
|
||||
collapseRow(i);
|
||||
}
|
||||
}
|
||||
protected boolean findNode(Object userObject, Object criteria) {
|
||||
return true;
|
||||
}
|
||||
public DefaultMutableTreeNode FindByCriteria(Object criteria) {
|
||||
DefaultMutableTreeNode res = root;
|
||||
for (int i = 0; i < getRowCount(); ++i) {
|
||||
DefaultMutableTreeNode node = getNodeByRow(i);
|
||||
if (findNode(node.getUserObject(), criteria)) {
|
||||
res = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
public TreePath ShowNode(DefaultMutableTreeNode node) {
|
||||
TreePath res = new TreePath(((DefaultTreeModel) getModel()).getPathToRoot(node));
|
||||
scrollPathToVisible(res);
|
||||
return res;
|
||||
}
|
||||
public TreePath ShowNodeByCriteria(Object criteria) {
|
||||
return ShowNode(FindByCriteria(criteria));
|
||||
}
|
||||
public void SelectNodeByCriteria(Object criteria) {
|
||||
EventsOff();
|
||||
TreePath res = ShowNodeByCriteria(criteria);
|
||||
setSelectionPath(res);
|
||||
EventsOn();
|
||||
}
|
||||
public void SelectNode(DefaultMutableTreeNode node) {
|
||||
setSelectionPath(new TreePath(((DefaultTreeModel) getModel()).getPathToRoot(node)));
|
||||
}
|
||||
//https://stackoverflow.com/questions/7928839/adding-and-removing-nodes-from-a-jtree !!!
|
||||
public void AddNode(DefaultMutableTreeNode parent, DefaultMutableTreeNode node){
|
||||
parent.add(node);
|
||||
DefaultTreeModel model = (DefaultTreeModel) getModel();
|
||||
model.reload(parent);
|
||||
//--->>
|
||||
TreePath path = new TreePath(model.getPathToRoot(node)); //брать путь к узлу так и только так.иначе не работает.!!
|
||||
setSelectionPath(path);
|
||||
//scrollPathToVisible(path);
|
||||
}
|
||||
public void RemoveNode(DefaultMutableTreeNode node){
|
||||
if (node.getParent()!=null) {
|
||||
DefaultTreeModel model = (DefaultTreeModel) getModel();
|
||||
model.removeNodeFromParent(node);
|
||||
}
|
||||
}
|
||||
public void RefreshNode(DefaultMutableTreeNode node){
|
||||
DefaultTreeModel model = (DefaultTreeModel) getModel();
|
||||
model.reload(node);
|
||||
}
|
||||
}
|
||||
15
src/Common/Visual/Trees/StyledTreeCellRenderer.java
Normal file
15
src/Common/Visual/Trees/StyledTreeCellRenderer.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.Visual.CommonUI;
|
||||
import Common.Visual.Themes.ThemeElement;
|
||||
|
||||
import javax.swing.tree.DefaultTreeCellRenderer;
|
||||
public class StyledTreeCellRenderer extends DefaultTreeCellRenderer implements ThemeElement {
|
||||
public StyledTreeCellRenderer() {
|
||||
applyTheme();
|
||||
}
|
||||
@Override
|
||||
public void applyTheme() {
|
||||
setBackgroundNonSelectionColor(CommonUI.getTheme().trees_background);
|
||||
setBackgroundSelectionColor(CommonUI.getTheme().selection_background);
|
||||
}
|
||||
}
|
||||
30
src/Common/Visual/Trees/TreeForm.java
Normal file
30
src/Common/Visual/Trees/TreeForm.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package Common.Visual.Trees;
|
||||
import Common.Visual.CommonUI;
|
||||
import Common.Visual.ControlForm;
|
||||
|
||||
import java.awt.*;
|
||||
public class TreeForm<C extends StyledTree> extends ControlForm<C> {
|
||||
public TreeForm(Class<C> class_in) {
|
||||
super(class_in);
|
||||
}
|
||||
//временно, чтобы не затрагивать коды раньше времени.
|
||||
public StyledTree getTree() {
|
||||
return control;
|
||||
}
|
||||
@Override
|
||||
protected void refresh() {
|
||||
getTree().revalidate();
|
||||
getTree().repaint();
|
||||
}
|
||||
@Override
|
||||
public void Show() {
|
||||
super.Show();
|
||||
content.add(scroll, BorderLayout.CENTER);
|
||||
content.updateUI();
|
||||
}
|
||||
@Override
|
||||
public void Clear() {
|
||||
super.Clear();
|
||||
CommonUI.Clear(content);
|
||||
}
|
||||
}
|
||||
13
src/Common/Visual/Trees/TreeRenderers.java
Normal file
13
src/Common/Visual/Trees/TreeRenderers.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package Common.Visual.Trees;
|
||||
public enum TreeRenderers {
|
||||
RendererUndefined,
|
||||
//-
|
||||
RendererGraph,
|
||||
RendererFile,
|
||||
RendererRemoteFile,
|
||||
RendererVersion,
|
||||
RendererRule,
|
||||
RendererAttachment,
|
||||
RendererSapforVersion,
|
||||
RendererSelection,
|
||||
}
|
||||
Reference in New Issue
Block a user