108 lines
4.8 KiB
Java
108 lines
4.8 KiB
Java
package _VisualDVM.ProjectData.Files.UI;
|
|
import Common.Current_;
|
|
import _VisualDVM.Current;
|
|
import _VisualDVM.Global;
|
|
import Common.Visual.DragDrop.FileDrop;
|
|
import _VisualDVM.Visual.Menus.GraphMenu;
|
|
import _VisualDVM.Visual.Menus.ProjectFilesMenu;
|
|
import _VisualDVM.Visual.UI;
|
|
import Common.Visual.Trees.StyledTree;
|
|
import Common.Visual.Trees.TreeRenderers;
|
|
import _VisualDVM.ProjectData.Files.DBProjectFile;
|
|
import Visual_DVM_2021.Passes.PassCode;
|
|
import Common.Passes.Pass;
|
|
|
|
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);
|
|
this.addKeyListener(new KeyAdapter() {
|
|
@Override
|
|
public void keyPressed(KeyEvent e) {
|
|
switch (e.getKeyCode()) {
|
|
case KeyEvent.VK_DELETE:
|
|
forkFD(PassCode.DeleteFile, PassCode.DeleteDirectory);
|
|
break;
|
|
case KeyEvent.VK_ADD: //num lock +
|
|
case KeyEvent.VK_EQUALS: //+
|
|
Global.mainModule.getPass(PassCode.IncludeFile).Do();
|
|
break;
|
|
case KeyEvent.VK_SUBTRACT: //num lock -
|
|
case KeyEvent.VK_MINUS: //-
|
|
Global.mainModule.getPass(PassCode.ExcludeFile).Do();
|
|
break;
|
|
case KeyEvent.VK_F2:
|
|
forkFD(PassCode.RenameFile, PassCode.RenameDirectory);
|
|
break;
|
|
case KeyEvent.VK_ENTER:
|
|
LeftMouseAction2();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
new FileDrop(System.out, this, files -> {
|
|
Global.mainModule.getPass(PassCode.ImportFiles).Do(files);
|
|
});
|
|
Global.mainModule.set(Current.File, null);
|
|
}
|
|
private static void forkFD(PassCode file_pass, PassCode folder_pass) {
|
|
DefaultMutableTreeNode node = Global.mainModule.getProjectNode();
|
|
if (node != null)
|
|
Global.mainModule.getPass((node.getUserObject() instanceof DBProjectFile) ?
|
|
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);
|
|
Object o = node.getUserObject();
|
|
if (o instanceof File) {
|
|
Global.mainModule.set(Current.SelectedDirectory, o);
|
|
Global.mainModule.set(Current.SelectedFile, null);
|
|
UI.getMainWindow().getProjectWindow().ShowNoSelectedFile();
|
|
} else if (o instanceof DBProjectFile) {
|
|
Global.mainModule.set(Current.SelectedFile, o);
|
|
File file = ((DBProjectFile) o).file;
|
|
Global.mainModule.set(Current.SelectedDirectory, file.getParentFile());
|
|
UI.getMainWindow().getProjectWindow().ShowSelectedFile();
|
|
}
|
|
UI.getMainWindow().getProjectWindow().ShowSelectedDirectory();
|
|
}
|
|
@Override
|
|
public void LeftMouseAction2() {
|
|
if (Global.mainModule.getProjectNode() != null) {
|
|
Object o = Global.mainModule.getProjectNode().getUserObject();
|
|
if (o instanceof DBProjectFile) {
|
|
//очень важно. иначе по открытии файла дерево остается в фокусе.
|
|
//и не происходит прокрутки скролла к строке!!
|
|
UI.getMainWindow().getProjectWindow().FocusFileTabs();
|
|
Global.mainModule.getPass(PassCode.OpenCurrentFile).Do(o);
|
|
}
|
|
}
|
|
}
|
|
@Override
|
|
public void LeftMouseAction1() {
|
|
if (Global.files_multiselection && Global.mainModule.getSelectedFile() != null) {
|
|
Global.mainModule.getSelectedFile().SwitchSelection();
|
|
updateUI();
|
|
}
|
|
}
|
|
@Override
|
|
protected int getStartLine() {
|
|
return 1;
|
|
}
|
|
}
|