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; } }