2024-10-09 22:01:19 +03:00
|
|
|
|
package _VisualDVM.Visual.Menus;
|
2024-10-11 00:00:30 +03:00
|
|
|
|
import Common.Utils.Utils_;
|
2024-10-09 20:35:18 +03:00
|
|
|
|
import Common.Visual.Menus.VisualiserMenuItem;
|
2024-10-09 22:01:19 +03:00
|
|
|
|
import _VisualDVM.Current;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
import _VisualDVM.Global;
|
2024-10-09 20:35:18 +03:00
|
|
|
|
import Common.Visual.Trees.StyledTree;
|
2024-10-09 22:01:19 +03:00
|
|
|
|
import _VisualDVM.Visual.UI;
|
2024-10-09 22:21:57 +03:00
|
|
|
|
import _VisualDVM.ProjectData.Files.FileType;
|
|
|
|
|
|
import _VisualDVM.ProjectData.Files.LanguageStyle;
|
|
|
|
|
|
import _VisualDVM.ProjectData.LanguageName;
|
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.*;
|
|
|
|
|
|
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) {
|
2024-10-11 00:00:30 +03:00
|
|
|
|
Utils_.MainLog.PrintException(ex);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
add(m);
|
|
|
|
|
|
addSeparator();
|
|
|
|
|
|
add(new PassesSubMenu("Добавить", "/icons/RedAdd.png",
|
2024-10-09 23:37:58 +03:00
|
|
|
|
PassCode.AddFile,
|
|
|
|
|
|
PassCode.CreateEmptyDirectory,
|
|
|
|
|
|
PassCode.ImportFiles));
|
2023-09-17 22:13:42 +03:00
|
|
|
|
addSeparator();
|
|
|
|
|
|
add(new PassesSubMenu("Переименовать", "/icons/Menu/Rename.png",
|
2024-10-09 23:37:58 +03:00
|
|
|
|
PassCode.RenameFile,
|
|
|
|
|
|
PassCode.RenameDirectory));
|
2023-09-17 22:13:42 +03:00
|
|
|
|
add(new VisualiserMenuItem("Удалить текущий проект", "/icons/Delete.png") {
|
|
|
|
|
|
{
|
|
|
|
|
|
addActionListener(e -> {
|
|
|
|
|
|
if (Current.HasProject()) {
|
|
|
|
|
|
UI.getVersionsWindow().getVersionsForm().getTree().SelectNode(Current.getProject().node);
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.DeleteVersion).Do();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
addSeparator();
|
|
|
|
|
|
m_multiselection = new VisualiserMenuItem("Массовый режим работы с файлами");
|
2024-10-11 00:00:30 +03:00
|
|
|
|
m_multiselection.setIcon(Utils_.getIcon(Global.files_multiselection ? "/icons/Pick.png" : "/icons/NotPick.png"));
|
2023-09-17 22:13:42 +03:00
|
|
|
|
m_multiselection.addActionListener(e -> {
|
|
|
|
|
|
Global.files_multiselection = !Global.files_multiselection;
|
2024-10-11 00:00:30 +03:00
|
|
|
|
m_multiselection.setIcon(Utils_.getIcon(Global.files_multiselection ? "/icons/Pick.png" : "/icons/NotPick.png"));
|
2023-09-17 22:13:42 +03:00
|
|
|
|
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);
|
|
|
|
|
|
//--------------------------------------------------
|
2024-10-09 23:37:58 +03:00
|
|
|
|
add(mLanguage = new LanguagesSubmenu(PassCode.SetSelectedFilesLanguage.getDescription()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
@Override
|
|
|
|
|
|
public void action(LanguageName languageName) {
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.SetSelectedFilesLanguage).Do(languageName);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-10-09 23:37:58 +03:00
|
|
|
|
add(mStyle = new StylesSubmenu(PassCode.SetSelectedFilesStyle.getDescription()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
@Override
|
|
|
|
|
|
public void action(LanguageStyle languageStyle) {
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.SetSelectedFilesStyle).Do(languageStyle);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-10-09 23:37:58 +03:00
|
|
|
|
add(mType = new TypesSubmenu(PassCode.SetSelectedFilesType.getDescription()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
@Override
|
|
|
|
|
|
public void action(FileType fileType) {
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.SetSelectedFilesType).Do(fileType);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
//--------------------------------------------------
|
2024-10-09 23:37:58 +03:00
|
|
|
|
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());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@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);
|
|
|
|
|
|
//-
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.ExcludeFile).setControlsVisible(!Global.files_multiselection);
|
|
|
|
|
|
Pass.passes.get(PassCode.IncludeFile).setControlsVisible(!Global.files_multiselection);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//-
|
2024-10-09 23:37:58 +03:00
|
|
|
|
Pass.passes.get(PassCode.DeleteFile).setControlsVisible(!Global.files_multiselection);
|
|
|
|
|
|
Pass.passes.get(PassCode.DeleteDirectory).setControlsVisible(!Global.files_multiselection);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//--
|
2024-10-09 23:37:58 +03:00
|
|
|
|
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);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|