2023-09-17 22:13:42 +03:00
|
|
|
|
package Common.UI;
|
|
|
|
|
|
import Common.Current;
|
|
|
|
|
|
import Common.Database.DataSet;
|
|
|
|
|
|
import Common.Global;
|
2024-03-15 12:32:49 +03:00
|
|
|
|
import Common.UI.Menus_2023.CredentialsBar.CredentialsBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.UI.Menus_2023.DataMenuBar;
|
|
|
|
|
|
import Common.UI.Menus_2023.FastAccessMenuBar.FastAccessMenuBar;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import Common.UI.Menus_2023.FileMenuBar.FileMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.UI.Menus_2023.MainMenuBar.MainMenuBar;
|
|
|
|
|
|
import Common.UI.Menus_2023.MainMenuBar.MainWindow;
|
|
|
|
|
|
import Common.UI.Menus_2023.VariantsMenuBar.VariantsMenuBar;
|
|
|
|
|
|
import Common.UI.Menus_2023.VersionsMenuBar.VersionsMenuBar;
|
|
|
|
|
|
import Common.UI.Tables.*;
|
|
|
|
|
|
import Common.UI.Themes.*;
|
|
|
|
|
|
import Common.UI.Trees.GraphTreeCellRenderer;
|
|
|
|
|
|
import Common.UI.Trees.SelectionTreeCellRenderer;
|
|
|
|
|
|
import Common.UI.Windows.FormType;
|
|
|
|
|
|
import Common.UI.Windows.SearchReplaceForm;
|
2023-10-02 18:30:23 +03:00
|
|
|
|
import Common.Utils.Utils;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.Compiler.CompilersDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.Compiler.CompilersMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.CompilerEnvironment.UI.CompilerEnvironmentValueEditor;
|
|
|
|
|
|
import GlobalData.CompilerEnvironment.UI.CompilerEnvironmentValueRenderer;
|
|
|
|
|
|
import GlobalData.CompilerOption.UI.CompilerOptionParameterNameRenderer;
|
|
|
|
|
|
import GlobalData.CompilerOption.UI.CompilerOptionParameterValueEditor;
|
|
|
|
|
|
import GlobalData.CompilerOption.UI.CompilerOptionParameterValueRenderer;
|
|
|
|
|
|
import GlobalData.DVMParameter.DVMParameterDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.DVMParameter.DVMParametersMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.EnvironmentValue.EnvironmentValuesDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.EnvironmentValue.EnvironmentValuesMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.Machine.MachinesDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.Machine.MachinesMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.Makefile.MakefilesDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.Makefile.MakefilesMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.Module.ModulesDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.Module.ModulesMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.RemoteFile.UI.RemoteFileChooser;
|
|
|
|
|
|
import GlobalData.RemoteFile.UI.RemoteFileRenderer;
|
|
|
|
|
|
import GlobalData.RunConfiguration.RunConfigurationsDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.RunConfiguration.RunConfigurationsMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.SapforProfile.SapforProfilesDBTable;
|
|
|
|
|
|
import GlobalData.Settings.SettingName;
|
|
|
|
|
|
import GlobalData.Tasks.CompilationTask.CompilationTasksDBTable;
|
|
|
|
|
|
import GlobalData.Tasks.RunTask.RunTasksDBTable;
|
|
|
|
|
|
import GlobalData.User.UsersDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import GlobalData.User.UsersMenuBar;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import ProjectData.DBArray.ArraysDBTable;
|
|
|
|
|
|
import ProjectData.Files.UI.FilesTreeCellRenderer;
|
|
|
|
|
|
import ProjectData.Project.UI.VersionsTreeCellRenderer;
|
|
|
|
|
|
import ProjectData.SapforData.Arrays.ArraysSet;
|
|
|
|
|
|
import ProjectData.SapforData.Arrays.UI.DimensionRenderer;
|
|
|
|
|
|
import ProjectData.SapforData.Arrays.UI.DimensionStateChanger;
|
|
|
|
|
|
import ProjectData.SapforData.Arrays.UI.RulesTreeCellRenderer;
|
|
|
|
|
|
import ProjectData.SapforData.Regions.RegionsSet;
|
|
|
|
|
|
import ProjectData.SapforData.Variants.UI.VariantRankRenderer;
|
|
|
|
|
|
import ProjectData.SapforData.Variants.VariantsSet;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import Repository.BugReport.BugReportsDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import Repository.BugReport.BugReportsMenuBar;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import Repository.Component.UI.ComponentsForm;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import Repository.SubscriberWorkspace.SubscriberWorkspaceDBTable;
|
|
|
|
|
|
import Repository.SubscriberWorkspace.SubscriberWorkspacesMenuBar;
|
|
|
|
|
|
import Repository.Subscribes.SubscribersMenuBar;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import Repository.Subscribes.SubsribersDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import TestingSystem.Common.Group.GroupsDBTable;
|
|
|
|
|
|
import TestingSystem.Common.Group.GroupsMenuBar;
|
|
|
|
|
|
import TestingSystem.Common.Test.TestDBTable;
|
|
|
|
|
|
import TestingSystem.Common.Test.TestsMenuBar;
|
|
|
|
|
|
import TestingSystem.Common.TestingBar;
|
|
|
|
|
|
import TestingSystem.DVM.Configuration.ConfigurationDBTable;
|
|
|
|
|
|
import TestingSystem.DVM.Configuration.ConfigurationsMenuBar;
|
|
|
|
|
|
import TestingSystem.DVM.DVMPackage.DVMPackageDBTable;
|
|
|
|
|
|
import TestingSystem.DVM.DVMPackage.DVMPackagesBar;
|
|
|
|
|
|
import TestingSystem.DVM.DVMTasks.DVMRunTasksBar;
|
|
|
|
|
|
import TestingSystem.DVM.DVMTasks.DVMRunTasksSet;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfigurationDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfigurationsMenuBar;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommandsDBTable;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommandsMenuBar;
|
|
|
|
|
|
import TestingSystem.SAPFOR.SapforPackage.SapforPackageDBTable;
|
|
|
|
|
|
import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforPackagesBar;
|
|
|
|
|
|
import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforVersionsTreeCellRenderer;
|
|
|
|
|
|
import TestingSystem.SAPFOR.ServerSapfor.ServerSapforsBar;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.ServerSapfor.ServerSapforsDBTable;
|
|
|
|
|
|
import Visual_DVM_2021.Passes.PassCode_2021;
|
|
|
|
|
|
import Visual_DVM_2021.UI.Interface.DebugWindow;
|
|
|
|
|
|
import Visual_DVM_2021.UI.Interface.VersionsWindow;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
import Visual_DVM_2021.UI.Main.DebugForm;
|
|
|
|
|
|
import Visual_DVM_2021.UI.Main.MainForm;
|
|
|
|
|
|
import Visual_DVM_2021.UI.Main.ProfilesForm;
|
|
|
|
|
|
import Visual_DVM_2021.UI.Main.VersionsForm;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
|
|
import javax.accessibility.Accessible;
|
|
|
|
|
|
import javax.accessibility.AccessibleContext;
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
|
import javax.swing.event.ChangeListener;
|
|
|
|
|
|
import javax.swing.table.TableCellEditor;
|
|
|
|
|
|
import javax.swing.table.TableCellRenderer;
|
|
|
|
|
|
import javax.swing.text.DefaultFormatter;
|
|
|
|
|
|
import javax.swing.text.DefaultHighlighter;
|
|
|
|
|
|
import javax.swing.text.Highlighter;
|
|
|
|
|
|
import javax.swing.tree.TreeCellRenderer;
|
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
|
import java.util.LinkedHashMap;
|
2024-07-21 23:19:18 +03:00
|
|
|
|
import java.util.Locale;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import java.util.Stack;
|
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
|
|
|
|
|
|
|
import static Common.UI.Tables.TableEditors.*;
|
|
|
|
|
|
import static Common.UI.Tables.TableRenderers.*;
|
|
|
|
|
|
import static Common.UI.Trees.TreeRenderers.*;
|
|
|
|
|
|
public class UI {
|
|
|
|
|
|
public static MenuElement[] last_menu_path;
|
|
|
|
|
|
public static MainMenuBar mainMenuBar = null;
|
2023-10-12 00:31:58 +03:00
|
|
|
|
public static TestingBar testingBar = null;
|
2024-03-15 12:32:49 +03:00
|
|
|
|
public static CredentialsBar credentialsBar = null;
|
2024-03-17 01:55:10 +03:00
|
|
|
|
public static FileMenuBar fileMenuBar = null;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
public static VersionsMenuBar versionsMenuBar = null;
|
|
|
|
|
|
public static FastAccessMenuBar fastAccessMenuBar = null;
|
|
|
|
|
|
//------------
|
|
|
|
|
|
public static VersionsWindow versionsWindow = null;
|
2023-10-11 01:31:38 +03:00
|
|
|
|
public static DebugWindow debugWindow = null;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//------------
|
|
|
|
|
|
public static final Highlighter.HighlightPainter GoodLoopPainter = new DefaultHighlighter.DefaultHighlightPainter(new Color(152, 251, 152, 90));
|
|
|
|
|
|
public static final Highlighter.HighlightPainter BadLoopPainter = new DefaultHighlighter.DefaultHighlightPainter(new Color(240, 128, 128, 90));
|
|
|
|
|
|
public static LinkedHashMap<Common.UI.Tables.TableRenderers, TableCellRenderer> TableRenderers = new LinkedHashMap<>();
|
|
|
|
|
|
public static LinkedHashMap<Common.UI.Tables.TableEditors, TableCellEditor> TableEditors = new LinkedHashMap<>();
|
|
|
|
|
|
public static LinkedHashMap<Common.UI.Trees.TreeRenderers, TreeCellRenderer> TreeRenderers = new LinkedHashMap<>();
|
|
|
|
|
|
public static LinkedHashMap<VisualiserThemeName, VisualiserTheme> themes = new LinkedHashMap<>();
|
|
|
|
|
|
public static LinkedHashMap<FormType, ThemeElement> windows = new LinkedHashMap<>();
|
|
|
|
|
|
public static Stack<Component> windowsStack = new Stack<>();
|
|
|
|
|
|
//-----
|
|
|
|
|
|
public static LinkedHashMap<Class, DataMenuBar> menuBars = new LinkedHashMap<>();
|
|
|
|
|
|
//-----
|
|
|
|
|
|
public static void Clear(Container container) {
|
|
|
|
|
|
container.removeAll();
|
|
|
|
|
|
container.repaint();
|
|
|
|
|
|
container.revalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
// http://java-online.ru/swing-joptionpane.xhtml
|
|
|
|
|
|
public static <T> void TrySelect(JComboBox box, T value_in) {
|
|
|
|
|
|
if (value_in != null) {
|
|
|
|
|
|
for (int i = 0; i < box.getItemCount(); ++i) {
|
|
|
|
|
|
T value = (T) box.getItemAt(i);
|
|
|
|
|
|
if (value.equals(value_in)) {
|
|
|
|
|
|
box.setSelectedIndex(i);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
box.addItem(value_in);
|
|
|
|
|
|
box.setSelectedIndex(box.getItemCount() - 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void TrySelect_s(JComboBox box, String value_string_in) {
|
|
|
|
|
|
for (int i = 0; i < box.getItemCount(); ++i) {
|
|
|
|
|
|
Object value = box.getItemAt(i);
|
|
|
|
|
|
if (value.toString().equals(value_string_in)) {
|
|
|
|
|
|
box.setSelectedIndex(i);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public static RemoteFileChooser getRemoteFileChooser() {
|
|
|
|
|
|
return (RemoteFileChooser) windows.get(FormType.RemoteFileChooser);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static ComponentsForm getComponentsWindow() {
|
|
|
|
|
|
return (ComponentsForm) windows.get(FormType.Components);
|
|
|
|
|
|
}
|
2023-11-13 17:12:16 +03:00
|
|
|
|
public static boolean HasMainWindow() {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return getMainWindow() != null;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static SearchReplaceForm getSearchReplaceForm() {
|
|
|
|
|
|
return (SearchReplaceForm) windows.get(FormType.SearchReplace);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void refreshTheme() {
|
|
|
|
|
|
Current.set(Current.Theme, themes.get(Global.db.settings.get(SettingName.DarkThemeOn).toBoolean() ? VisualiserThemeName.Dark : VisualiserThemeName.Light));
|
|
|
|
|
|
// refreshTheme_r(Visualiser.getMainWindow().MainPanel);
|
2024-07-21 23:19:18 +03:00
|
|
|
|
/* Открыть
|
2023-09-17 22:13:42 +03:00
|
|
|
|
refreshTheme_r(Visualiser.searchReplaceForm.MainPanel);
|
|
|
|
|
|
refreshTheme_r(Visualiser.ComponentsWindow.fields.MainPanel);
|
|
|
|
|
|
refreshTheme_r(Visualiser.remoteFileChooser.fields.MainPanel);
|
|
|
|
|
|
refreshTheme_r(Visualiser.runStatisticForm.fields.MainPanel);
|
|
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("ToolTip.background", Current.getTheme().background);
|
|
|
|
|
|
UIManager.put("ToolTip.foreground", Current.getTheme().foreground);
|
|
|
|
|
|
UIManager.put("Panel.background", Current.getTheme().background);
|
|
|
|
|
|
UIManager.put("Panel.foreground", Current.getTheme().foreground);
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("TextPane.background", Current.getTheme().background);
|
|
|
|
|
|
UIManager.put("TextPane.foreground", Current.getTheme().foreground);
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("Label.background", Current.getTheme().background);
|
|
|
|
|
|
UIManager.put("Label.foreground", Current.getTheme().foreground);
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("ToolBar.background", Current.getTheme().background);
|
|
|
|
|
|
UIManager.put("ToolBar.foreground", Current.getTheme().foreground);
|
|
|
|
|
|
|
|
|
|
|
|
for (TableCellRenderer renderer : TableRenderers.values()) {
|
|
|
|
|
|
if (renderer instanceof WindowControl) {
|
|
|
|
|
|
((WindowControl) renderer).applyTheme();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (TreeCellRenderer renderer : TreeRenderers.values()) {
|
|
|
|
|
|
if (renderer instanceof WindowControl) {
|
|
|
|
|
|
((WindowControl) renderer).applyTheme();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//для текущего файла отдельно
|
|
|
|
|
|
/// if (Current.HasFile())
|
|
|
|
|
|
// Current.getFile().form.Body.applyTheme();
|
|
|
|
|
|
//------------
|
|
|
|
|
|
// UIManager.put("TabbedPane.unselectedForeground", Color.red);
|
|
|
|
|
|
// UIManager.put("TabbedPane.selectedBackground", Color.black);
|
|
|
|
|
|
//----------------------------
|
|
|
|
|
|
*/
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void CreateMenus() {
|
|
|
|
|
|
mainMenuBar = new MainMenuBar();
|
2023-10-12 00:31:58 +03:00
|
|
|
|
testingBar = new TestingBar();
|
2024-03-15 12:32:49 +03:00
|
|
|
|
credentialsBar = new CredentialsBar();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
versionsMenuBar = new VersionsMenuBar();
|
|
|
|
|
|
fastAccessMenuBar = new FastAccessMenuBar();
|
|
|
|
|
|
//---------------------------------------------------->>
|
|
|
|
|
|
menuBars.put(BugReportsDBTable.class, new BugReportsMenuBar());
|
2023-12-05 16:15:12 +03:00
|
|
|
|
menuBars.put(SubscriberWorkspaceDBTable.class, new SubscriberWorkspacesMenuBar());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//---------------------------------------------------->>
|
|
|
|
|
|
menuBars.put(GroupsDBTable.class, new GroupsMenuBar());
|
|
|
|
|
|
menuBars.put(TestDBTable.class, new TestsMenuBar());
|
|
|
|
|
|
menuBars.put(ConfigurationDBTable.class, new ConfigurationsMenuBar());
|
2023-12-11 18:29:15 +03:00
|
|
|
|
menuBars.put(DVMPackageDBTable.class, new DVMPackagesBar());
|
2023-12-15 18:57:00 +03:00
|
|
|
|
menuBars.put(SapforPackageDBTable.class, new SapforPackagesBar());
|
2023-12-16 16:52:17 +03:00
|
|
|
|
menuBars.put(DVMRunTasksSet.class, new DVMRunTasksBar());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//--->>>
|
|
|
|
|
|
menuBars.put(MachinesDBTable.class, new MachinesMenuBar());
|
|
|
|
|
|
menuBars.put(UsersDBTable.class, new UsersMenuBar());
|
|
|
|
|
|
menuBars.put(CompilersDBTable.class, new CompilersMenuBar());
|
|
|
|
|
|
menuBars.put(MakefilesDBTable.class, new MakefilesMenuBar());
|
|
|
|
|
|
menuBars.put(ModulesDBTable.class, new ModulesMenuBar());
|
|
|
|
|
|
menuBars.put(RunConfigurationsDBTable.class, new RunConfigurationsMenuBar());
|
|
|
|
|
|
menuBars.put(EnvironmentValuesDBTable.class, new EnvironmentValuesMenuBar());
|
|
|
|
|
|
menuBars.put(DVMParameterDBTable.class, new DVMParametersMenuBar());
|
|
|
|
|
|
menuBars.put(CompilationTasksDBTable.class, new DataMenuBar("задачи на компиляцию"));
|
|
|
|
|
|
menuBars.put(RunTasksDBTable.class, new DataMenuBar("задачи на запуск"));
|
|
|
|
|
|
//---->>
|
|
|
|
|
|
menuBars.put(SapforConfigurationDBTable.class, new SapforConfigurationsMenuBar());
|
|
|
|
|
|
menuBars.put(SapforConfigurationCommandsDBTable.class, new SapforConfigurationCommandsMenuBar());
|
|
|
|
|
|
//---->>
|
|
|
|
|
|
menuBars.put(RegionsSet.class, new DataMenuBar("области распараллеливания"));
|
|
|
|
|
|
menuBars.put(ArraysSet.class, new DataMenuBar("массивы"));
|
|
|
|
|
|
menuBars.put(ArraysDBTable.class, new DataMenuBar("сохранённые состояния") {
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void createSelectionButtons(DataSet dataSet) {
|
|
|
|
|
|
//не нужны.
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
menuBars.put(VariantsSet.class, new VariantsMenuBar());
|
|
|
|
|
|
menuBars.put(SubsribersDBTable.class, new SubscribersMenuBar());
|
2023-11-01 19:06:07 +03:00
|
|
|
|
menuBars.put(SapforProfilesDBTable.class, new DataMenuBar("профили", PassCode_2021.SaveProfile, PassCode_2021.EditProfile, PassCode_2021.ApplyProfile, PassCode_2021.DeleteProfile));
|
2023-10-03 15:07:17 +03:00
|
|
|
|
menuBars.put(ServerSapforsDBTable.class, new ServerSapforsBar());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//---->>
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void CreateWindows() {
|
|
|
|
|
|
windows.put(FormType.SearchReplace, new SearchReplaceForm());
|
|
|
|
|
|
windows.put(FormType.RemoteFileChooser, new RemoteFileChooser());
|
|
|
|
|
|
windows.put(FormType.Profiles, new ProfilesForm());
|
|
|
|
|
|
windows.put(FormType.Main, new MainForm());
|
|
|
|
|
|
//---------------------------------------
|
|
|
|
|
|
getMainWindow().Show();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static MainWindow getMainWindow() {
|
|
|
|
|
|
return (MainWindow) windows.get(FormType.Main);
|
|
|
|
|
|
}
|
|
|
|
|
|
//-
|
|
|
|
|
|
public static void CreateAll() {
|
|
|
|
|
|
//<editor-fold desc="Локализация компонентов окна JFileChooser">
|
2024-07-21 23:19:18 +03:00
|
|
|
|
UIManager.put("FileChooser.openButtonText", "Открыть");
|
|
|
|
|
|
UIManager.put("FileChooser.cancelButtonText", "Отмена");
|
|
|
|
|
|
UIManager.put("FileChooser.lookInLabelText", "Смотреть в");
|
|
|
|
|
|
UIManager.put("FileChooser.fileNameLabelText", "Имя файла");
|
|
|
|
|
|
UIManager.put("FileChooser.filesOfTypeLabelText", "Тип файла");
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("FileChooser.saveButtonText", "Сохранить");
|
|
|
|
|
|
UIManager.put("FileChooser.saveButtonToolTipText", "Сохранить");
|
|
|
|
|
|
UIManager.put("FileChooser.openButtonToolTipText", "Открыть");
|
|
|
|
|
|
UIManager.put("FileChooser.cancelButtonText", "Отмена");
|
|
|
|
|
|
UIManager.put("FileChooser.cancelButtonToolTipText", "Отмена");
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("FileChooser.lookInLabelText", "Папка");
|
|
|
|
|
|
UIManager.put("FileChooser.saveInLabelText", "Папка");
|
|
|
|
|
|
UIManager.put("FileChooser.fileNameLabelText", "Имя файла");
|
|
|
|
|
|
UIManager.put("FileChooser.filesOfTypeLabelText", "Тип файлов");
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("FileChooser.upFolderToolTipText", "На один уровень вверх");
|
|
|
|
|
|
UIManager.put("FileChooser.newFolderToolTipText", "Создание новой папки");
|
|
|
|
|
|
UIManager.put("FileChooser.listViewButtonToolTipText", "Список");
|
|
|
|
|
|
UIManager.put("FileChooser.detailsViewButtonToolTipText", "Таблица");
|
|
|
|
|
|
UIManager.put("FileChooser.fileNameHeaderText", "Имя");
|
|
|
|
|
|
UIManager.put("FileChooser.fileSizeHeaderText", "Размер");
|
|
|
|
|
|
UIManager.put("FileChooser.fileTypeHeaderText", "Тип");
|
|
|
|
|
|
UIManager.put("FileChooser.fileDateHeaderText", "Изменен");
|
|
|
|
|
|
UIManager.put("FileChooser.fileAttrHeaderText", "Атрибуты");
|
|
|
|
|
|
|
|
|
|
|
|
UIManager.put("FileChooser.acceptAllFileFilterText", "Все файлы");
|
|
|
|
|
|
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//</editor-fold>
|
|
|
|
|
|
//<editor-fold desc="Локализация компонентов окна подтверждения">
|
|
|
|
|
|
UIManager.put("OptionPane.yesButtonText", "Да");
|
|
|
|
|
|
UIManager.put("OptionPane.noButtonText", "Нет");
|
|
|
|
|
|
UIManager.put("OptionPane.cancelButtonText", "Отмена");
|
|
|
|
|
|
UIManager.put("OptionPane.okButtonText", "Готово");
|
|
|
|
|
|
//</editor-fold>
|
|
|
|
|
|
//<editor-fold desc="Темы(всегда создавать первыми)">
|
|
|
|
|
|
themes.put(VisualiserThemeName.Light, new LightVisualiserTheme());
|
|
|
|
|
|
themes.put(VisualiserThemeName.Dark, new DarkVisualiserTheme());
|
|
|
|
|
|
//по умолчанию поставить светлую тему. потому что до загрузки бд работаем с таблицей компонент.
|
|
|
|
|
|
Current.set(Current.Theme, themes.get(VisualiserThemeName.Light));
|
|
|
|
|
|
//</editor-fold>
|
|
|
|
|
|
//<editor-fold desc="Объекты отрисовки и редактирования деревьев и таблиц">
|
|
|
|
|
|
TableRenderers.put(RendererDate, new DateRenderer_());
|
|
|
|
|
|
TableRenderers.put(RendererProgress, new ProgressBarRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererSelect, new DBObjectSelectionRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererDimension, new DimensionRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererMultiline, new MultilineRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererHyperlinks, new HyperlinksRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererTopLeft, new TopLeftRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererMaskedInt, new MaskedIntegerValueRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererVariantRank, new VariantRankRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererHiddenList, new HiddenListRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererWrapText, new WrapTextRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererCompilerOptionParameterValue, new CompilerOptionParameterValueRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererCompilerOptionParameterName, new CompilerOptionParameterNameRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererCompilerEnvironmentValue, new CompilerEnvironmentValueRenderer());
|
|
|
|
|
|
TableRenderers.put(RendererStatusEnum, new StatusEnumRenderer());
|
|
|
|
|
|
//---------------------------------------------
|
|
|
|
|
|
TreeRenderers.put(RendererGraph, new GraphTreeCellRenderer());
|
|
|
|
|
|
TreeRenderers.put(RendererRemoteFile, new RemoteFileRenderer());
|
|
|
|
|
|
TreeRenderers.put(RendererFile, new FilesTreeCellRenderer());
|
|
|
|
|
|
TreeRenderers.put(RendererVersion, new VersionsTreeCellRenderer());
|
2023-11-03 02:00:17 +03:00
|
|
|
|
TreeRenderers.put(RendererSapforVersion, new SapforVersionsTreeCellRenderer());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
TreeRenderers.put(RendererRule, new RulesTreeCellRenderer());
|
|
|
|
|
|
TreeRenderers.put(RendererSelection, new SelectionTreeCellRenderer());
|
|
|
|
|
|
//----------------------------------------------
|
|
|
|
|
|
TableEditors.put(EditorSelect, new DBObjectSelector());
|
|
|
|
|
|
TableEditors.put(EditorHyperlinks, new VectorEditor());
|
|
|
|
|
|
TableEditors.put(EditorDimension, new DimensionStateChanger());
|
|
|
|
|
|
TableEditors.put(EditorCompilerOptionParameterValue, new CompilerOptionParameterValueEditor());
|
|
|
|
|
|
TableEditors.put(EditorCompilerEnvironmentValue, new CompilerEnvironmentValueEditor());
|
|
|
|
|
|
//</editor-fold>
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void printAccessible_r(Accessible accessible) {
|
|
|
|
|
|
System.out.print(accessible.getClass().getSimpleName() + ": children_count: ");
|
|
|
|
|
|
AccessibleContext context = accessible.getAccessibleContext();
|
|
|
|
|
|
System.out.println(context.getAccessibleChildrenCount());
|
|
|
|
|
|
for (int i = 0; i < context.getAccessibleChildrenCount(); ++i) {
|
|
|
|
|
|
printAccessible_r(context.getAccessibleChild(i));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void refreshTheme_r(Accessible accessible) {
|
|
|
|
|
|
AccessibleContext context = accessible.getAccessibleContext();
|
|
|
|
|
|
if (accessible instanceof ThemeElement) {
|
|
|
|
|
|
((ThemeElement) accessible).applyTheme();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if ((accessible instanceof JPanel) ||
|
|
|
|
|
|
(accessible instanceof JLabel) ||
|
|
|
|
|
|
(accessible instanceof JToolBar) ||
|
|
|
|
|
|
(accessible instanceof JTabbedPane) ||
|
|
|
|
|
|
(accessible instanceof JScrollPane) ||
|
|
|
|
|
|
(accessible instanceof JSplitPane) ||
|
|
|
|
|
|
(accessible instanceof JTextField) ||
|
|
|
|
|
|
(accessible instanceof JCheckBox)
|
|
|
|
|
|
) {
|
|
|
|
|
|
} else if (accessible instanceof JTextArea) {
|
|
|
|
|
|
accessible.getAccessibleContext().getAccessibleComponent().setBackground(Current.getTheme().background);
|
|
|
|
|
|
accessible.getAccessibleContext().getAccessibleComponent().setForeground(Current.getTheme().trees_background);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < context.getAccessibleChildrenCount(); ++i) {
|
|
|
|
|
|
refreshTheme_r(context.getAccessibleChild(i));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void CreateComponentsForm() {
|
|
|
|
|
|
windows.put(FormType.Components, new ComponentsForm());
|
|
|
|
|
|
}
|
|
|
|
|
|
public static ProfilesForm getProfilesWindow() {
|
|
|
|
|
|
return (ProfilesForm) windows.get(FormType.Profiles);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static Component getFrontWindow() {
|
|
|
|
|
|
Component res = null;
|
|
|
|
|
|
try {
|
|
|
|
|
|
res = windowsStack.peek();
|
2024-07-22 00:57:05 +03:00
|
|
|
|
} catch (Exception ignored){
|
|
|
|
|
|
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
return res;
|
|
|
|
|
|
}
|
|
|
|
|
|
//-----
|
|
|
|
|
|
public static void ShowTabsNames(JTabbedPane tabs) {
|
|
|
|
|
|
ShowTabsNames(tabs, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void ShowTabsNames(JTabbedPane tabs, int startIndex) {
|
|
|
|
|
|
boolean flag = Global.db.settings.get(SettingName.ShowFullTabsNames).toBoolean();
|
|
|
|
|
|
for (int i = startIndex; i < tabs.getTabCount(); ++i)
|
|
|
|
|
|
tabs.setTitleAt(i, flag ? tabs.getToolTipTextAt(i) : "");
|
|
|
|
|
|
}
|
|
|
|
|
|
public static boolean Contains(Vector<String> list, String line, int max_index) {
|
|
|
|
|
|
int last_index = -1;
|
|
|
|
|
|
for (int i = 0; i < list.size(); ++i)
|
|
|
|
|
|
if (list.get(i).equals(line)) last_index = i;
|
|
|
|
|
|
return (last_index >= max_index);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void MakeSpinnerRapid(JSpinner spinner, ChangeListener listener) {
|
|
|
|
|
|
JComponent comp = spinner.getEditor();
|
|
|
|
|
|
JFormattedTextField field = (JFormattedTextField) comp.getComponent(0);
|
|
|
|
|
|
DefaultFormatter formatter = (DefaultFormatter) field.getFormatter();
|
|
|
|
|
|
formatter.setCommitsOnValidEdit(true);
|
|
|
|
|
|
formatter.setAllowsInvalid(true);
|
|
|
|
|
|
spinner.addChangeListener(listener);
|
|
|
|
|
|
}
|
|
|
|
|
|
//---------------
|
|
|
|
|
|
public static boolean Question(Component parent, String text) {
|
|
|
|
|
|
return !Current.hasUI() || (JOptionPane.showConfirmDialog(parent,
|
|
|
|
|
|
text + "?",
|
|
|
|
|
|
"Подтверждение",
|
|
|
|
|
|
JOptionPane.YES_NO_OPTION,
|
|
|
|
|
|
JOptionPane.QUESTION_MESSAGE) == 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static boolean Question(String text) {
|
|
|
|
|
|
return Question(getFrontWindow(), text);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void Info(String message) {
|
2023-10-02 18:30:23 +03:00
|
|
|
|
Utils.CopyToClipboard(message);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (Current.hasUI())
|
|
|
|
|
|
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void Error(String message) {
|
2023-10-02 18:30:23 +03:00
|
|
|
|
Utils.CopyToClipboard(message);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (Current.hasUI())
|
|
|
|
|
|
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static boolean Warning(String text) {
|
|
|
|
|
|
return !Current.hasUI() ||
|
|
|
|
|
|
JOptionPane.showConfirmDialog(getFrontWindow(),
|
|
|
|
|
|
text + "\nВы уверены?",
|
|
|
|
|
|
"Подтверждение",
|
|
|
|
|
|
JOptionPane.YES_NO_OPTION,
|
|
|
|
|
|
JOptionPane.WARNING_MESSAGE) == 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
//--
|
|
|
|
|
|
public static VersionsWindow getVersionsWindow() {
|
|
|
|
|
|
return versionsWindow;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void CreateVersionsWindow() {
|
|
|
|
|
|
versionsWindow = new VersionsForm(Current.getRoot());
|
|
|
|
|
|
}
|
2023-10-11 01:31:38 +03:00
|
|
|
|
public static DebugWindow getDebugWindow() {
|
2023-11-01 19:06:07 +03:00
|
|
|
|
if (debugWindow == null)
|
2023-10-11 01:31:38 +03:00
|
|
|
|
debugWindow = new DebugForm();
|
|
|
|
|
|
return debugWindow;
|
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//-
|
|
|
|
|
|
public static void ShowSearchForm(boolean replace) {
|
|
|
|
|
|
getSearchReplaceForm().setMode(replace);
|
|
|
|
|
|
getSearchReplaceForm().ShowMode();
|
|
|
|
|
|
ShowSearchForm();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void HideSearchForm() {
|
|
|
|
|
|
if (getSearchReplaceForm().isVisible())
|
|
|
|
|
|
getSearchReplaceForm().setVisible(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void ShowSearchForm() {
|
|
|
|
|
|
if (getSearchReplaceForm().isVisible())
|
|
|
|
|
|
getSearchReplaceForm().Refresh();
|
|
|
|
|
|
else
|
|
|
|
|
|
getSearchReplaceForm().Show();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void ShowComponentsWindow() {
|
|
|
|
|
|
getComponentsWindow().ShowDialog("");
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void ShowProfilesWindow() {
|
|
|
|
|
|
getProfilesWindow().ShowDialog("");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|