Files
VisualSapfor/src/_VisualDVM/ProjectData/Files/UI/FilesTree.java

108 lines
4.8 KiB
Java
Raw Normal View History

2024-10-09 22:21:57 +03:00
package _VisualDVM.ProjectData.Files.UI;
2024-10-09 23:37:58 +03:00
import Common.Current_;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Current;
import _VisualDVM.Global;
2024-10-08 16:20:45 +03:00
import Common.Visual.DragDrop.FileDrop;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Visual.Menus.GraphMenu;
import _VisualDVM.Visual.Menus.ProjectFilesMenu;
import _VisualDVM.Visual.UI;
2024-10-09 20:35:18 +03:00
import Common.Visual.Trees.StyledTree;
import Common.Visual.Trees.TreeRenderers;
2024-10-09 22:21:57 +03:00
import _VisualDVM.ProjectData.Files.DBProjectFile;
2024-10-09 23:37:58 +03:00
import Visual_DVM_2021.Passes.PassCode;
2024-10-10 23:57:36 +03:00
import Common.Passes.Pass;
2023-09-17 22:13:42 +03:00
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
public class FilesTree extends StyledTree {
public FilesTree() {
super(Global.mainModule.getProject().filesTreeRoot);
2023-09-17 22:13:42 +03:00
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_DELETE:
2024-10-09 23:37:58 +03:00
forkFD(PassCode.DeleteFile, PassCode.DeleteDirectory);
2023-09-17 22:13:42 +03:00
break;
case KeyEvent.VK_ADD: //num lock +
case KeyEvent.VK_EQUALS: //+
Global.mainModule.getPass(PassCode.IncludeFile).Do();
2023-09-17 22:13:42 +03:00
break;
case KeyEvent.VK_SUBTRACT: //num lock -
case KeyEvent.VK_MINUS: //-
Global.mainModule.getPass(PassCode.ExcludeFile).Do();
2023-09-17 22:13:42 +03:00
break;
case KeyEvent.VK_F2:
2024-10-09 23:37:58 +03:00
forkFD(PassCode.RenameFile, PassCode.RenameDirectory);
2023-09-17 22:13:42 +03:00
break;
case KeyEvent.VK_ENTER:
LeftMouseAction2();
break;
}
}
}
);
new FileDrop(System.out, this, files -> {
Global.mainModule.getPass(PassCode.ImportFiles).Do(files);
2023-09-17 22:13:42 +03:00
});
Global.mainModule.set(Current.File, null);
2023-09-17 22:13:42 +03:00
}
2024-10-09 23:37:58 +03:00
private static void forkFD(PassCode file_pass, PassCode folder_pass) {
DefaultMutableTreeNode node = Global.mainModule.getProjectNode();
2023-09-17 22:13:42 +03:00
if (node != null)
Global.mainModule.getPass((node.getUserObject() instanceof DBProjectFile) ?
2023-09-17 22:13:42 +03:00
file_pass : folder_pass).Do();
}
@Override
public TreeRenderers getRenderer() {
return TreeRenderers.RendererFile;
}
@Override
protected GraphMenu createMenu() {
return new ProjectFilesMenu(this);
}
@Override
public void SelectionAction(TreePath e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.getLastPathComponent();
Global.mainModule.set(Current.ProjectNode, node);
2023-09-17 22:13:42 +03:00
Object o = node.getUserObject();
if (o instanceof File) {
Global.mainModule.set(Current.SelectedDirectory, o);
Global.mainModule.set(Current.SelectedFile, null);
2023-09-17 22:13:42 +03:00
UI.getMainWindow().getProjectWindow().ShowNoSelectedFile();
} else if (o instanceof DBProjectFile) {
Global.mainModule.set(Current.SelectedFile, o);
2023-09-17 22:13:42 +03:00
File file = ((DBProjectFile) o).file;
Global.mainModule.set(Current.SelectedDirectory, file.getParentFile());
2023-09-17 22:13:42 +03:00
UI.getMainWindow().getProjectWindow().ShowSelectedFile();
}
UI.getMainWindow().getProjectWindow().ShowSelectedDirectory();
}
@Override
public void LeftMouseAction2() {
if (Global.mainModule.getProjectNode() != null) {
Object o = Global.mainModule.getProjectNode().getUserObject();
2023-09-17 22:13:42 +03:00
if (o instanceof DBProjectFile) {
//очень важно. иначе по открытии файла дерево остается в фокусе.
//и не происходит прокрутки скролла к строке!!
UI.getMainWindow().getProjectWindow().FocusFileTabs();
Global.mainModule.getPass(PassCode.OpenCurrentFile).Do(o);
2023-09-17 22:13:42 +03:00
}
}
}
@Override
public void LeftMouseAction1() {
if (Global.files_multiselection && Global.mainModule.getSelectedFile() != null) {
Global.mainModule.getSelectedFile().SwitchSelection();
2023-09-17 22:13:42 +03:00
updateUI();
}
}
@Override
protected int getStartLine() {
return 1;
}
}