package _VisualDVM.Visual.Menus; import Common.Utils.CommonUtils; import Common.Visual.Menus.VisualiserMenuItem; import _VisualDVM.Current; import _VisualDVM.Global; import Common.Visual.Trees.StyledTree; import _VisualDVM.Visual.UI; import _VisualDVM.ProjectData.Files.FileType; import _VisualDVM.ProjectData.Files.LanguageStyle; import _VisualDVM.ProjectData.LanguageName; import Visual_DVM_2021.Passes.PassCode; import Common.Passes.Pass; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; public class ProjectFilesMenu extends GraphMenu { VisualiserMenuItem m_select_all; VisualiserMenuItem m_unselect_all; VisualiserMenuItem m_multiselection; JMenu mLanguage; JMenu mStyle; JMenu mType; public ProjectFilesMenu(StyledTree tree) { super(tree, "подпапки"); addSeparator(); JMenuItem m = new VisualiserMenuItem("Открыть в проводнике...", "/icons/Explorer.png"); m.addActionListener( new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { try { Desktop.getDesktop().open(Current.getProject().Home); } catch (Exception ex) { CommonUtils.MainLog.PrintException(ex); } } }); add(m); addSeparator(); add(new PassesSubMenu("Добавить", "/icons/RedAdd.png", PassCode.AddFile, PassCode.CreateEmptyDirectory, PassCode.ImportFiles)); addSeparator(); add(new PassesSubMenu("Переименовать", "/icons/Menu/Rename.png", PassCode.RenameFile, PassCode.RenameDirectory)); add(new VisualiserMenuItem("Удалить текущий проект", "/icons/Delete.png") { { addActionListener(e -> { if (Current.HasProject()) { UI.getVersionsWindow().getVersionsForm().getTree().SelectNode(Current.getProject().node); Pass.passes.get(PassCode.DeleteVersion).Do(); } }); } }); addSeparator(); m_multiselection = new VisualiserMenuItem("Массовый режим работы с файлами"); m_multiselection.setIcon(CommonUtils.getIcon(Global.files_multiselection ? "/icons/Pick.png" : "/icons/NotPick.png")); m_multiselection.addActionListener(e -> { Global.files_multiselection = !Global.files_multiselection; m_multiselection.setIcon(CommonUtils.getIcon(Global.files_multiselection ? "/icons/Pick.png" : "/icons/NotPick.png")); Current.getProject().SelectAllFiles(false); UI.getMainWindow().getProjectWindow().RefreshProjectFiles(); //- }); add(m_multiselection); addSeparator(); //- m_select_all = new StableMenuItem("Выбрать всё", "/icons/SelectAll.png"); m_select_all.addActionListener(e -> { Current.getProject().SelectAllFiles(true); tree.updateUI(); }); add(m_select_all); m_unselect_all = new StableMenuItem("Отменить всё", "/icons/UnselectAll.png"); m_unselect_all.addActionListener(e -> { Current.getProject().SelectAllFiles(false); tree.updateUI(); }); add(m_unselect_all); //-------------------------------------------------- add(mLanguage = new LanguagesSubmenu(PassCode.SetSelectedFilesLanguage.getDescription()) { @Override public void action(LanguageName languageName) { Pass.passes.get(PassCode.SetSelectedFilesLanguage).Do(languageName); } }); add(mStyle = new StylesSubmenu(PassCode.SetSelectedFilesStyle.getDescription()) { @Override public void action(LanguageStyle languageStyle) { Pass.passes.get(PassCode.SetSelectedFilesStyle).Do(languageStyle); } }); add(mType = new TypesSubmenu(PassCode.SetSelectedFilesType.getDescription()) { @Override public void action(FileType fileType) { Pass.passes.get(PassCode.SetSelectedFilesType).Do(fileType); } }); //-------------------------------------------------- add(Pass.passes.get(PassCode.ExcludeSelectedFiles).createMenuItem()); add(Pass.passes.get(PassCode.IncludeSelectedFiles).createMenuItem()); add(Pass.passes.get(PassCode.ExcludeFile).createMenuItem()); add(Pass.passes.get(PassCode.IncludeFile).createMenuItem()); add(Pass.passes.get(PassCode.DeleteFile).createMenuItem()); add(Pass.passes.get(PassCode.DeleteDirectory).createMenuItem()); add(Pass.passes.get(PassCode.DeleteSelectedFiles).createMenuItem()); } @Override public void CheckElementsVisibility() { m_select_all.setVisible(Global.files_multiselection); m_unselect_all.setVisible(Global.files_multiselection); mLanguage.setVisible(Global.files_multiselection); mStyle.setVisible(Global.files_multiselection); mType.setVisible(Global.files_multiselection); //- Pass.passes.get(PassCode.ExcludeFile).setControlsVisible(!Global.files_multiselection); Pass.passes.get(PassCode.IncludeFile).setControlsVisible(!Global.files_multiselection); //- Pass.passes.get(PassCode.DeleteFile).setControlsVisible(!Global.files_multiselection); Pass.passes.get(PassCode.DeleteDirectory).setControlsVisible(!Global.files_multiselection); //-- Pass.passes.get(PassCode.ExcludeSelectedFiles).setControlsVisible(Global.files_multiselection); Pass.passes.get(PassCode.IncludeSelectedFiles).setControlsVisible(Global.files_multiselection); Pass.passes.get(PassCode.DeleteSelectedFiles).setControlsVisible(Global.files_multiselection); } }