package _VisualDVM.Visual.Windows; import Common.MainModule_; import Common.Utils.Utils_; import Common.Visual.Controls.TabToolBar; import Common.Visual.FormWithSplitters; import Common.Visual.Windows.Form; import _VisualDVM.Global; import _VisualDVM.Passes.PassCode; import _VisualDVM.TestingSystem.Common.Group.Group; import _VisualDVM.TestingSystem.Common.Test.Test; import _VisualDVM.Visual.Interface.*; import _VisualDVM.Visual.Menus.MainMenuBar.MainMenuBar; import javax.swing.*; import java.awt.*; import java.util.Vector; public class MainForm extends Form implements MainWindow { private final WelcomeForm welcomeForm = new WelcomeForm(); //заглушка когда проекта нет. int global_index = 0; //----------------- private ProjectForm projectForm; private CallbackForm callbackForm; private CredentialsForm credentialsForm; private TestsForm testsForm; //--- private TestingForm testingForm; //----------------- private JPanel Content; private JTabbedPane globalTabs; private JPanel mainPanel; public MainForm() { mainPanel.add(Global.mainModule.getUI().mainMenuBar = new MainMenuBar(), BorderLayout.NORTH); InstallWelcomePanel(); InstallCallbackPanel(); InstallCredentialsPanel(); InstallTestsPanel(); InstallTestingPanel(); ShowUpdatesIcon(); //---------------------- } @Override protected JPanel getMainPanel() { return Content; } @Override public String getFormKey() { return "Main"; //можно было бы через имя класса } @Override public String getIconPath() { return "/icons/Sapfor.png"; } @Override public String getWTitleText() { return "Visual Sapfor 3.0"; } @Override public String getUTitleText() { return "Visual Sapfor 3.0"; } @Override public void AfterClose() { Global.mainModule.getPass(PassCode.CloseCurrentProject).Do(); if (Global.mainModule.getUI().getVersionsWindow() != null) ((FormWithSplitters) Global.mainModule.getUI().getVersionsWindow()).SaveSplitters(); SaveCallbackPanel(); SaveCredentialsPanel(); SaveTestsPanel(); SaveTestingPanel(); //-- if (Global.mainModule.getUI().getDebugWindow() != null) ((FormWithSplitters) Global.mainModule.getUI().getDebugWindow()).SaveSplitters(); //-- Global.mainModule.getDb().SaveCredentials(); //-- Global.FinishApplication(); } private void InstallWelcomePanel() { globalTabs.insertTab("Начало работы", null, welcomeForm.content, "Для начала работы откройте проект с помощью верхней панели инструментов, или перетащите его сюда", 0 ); } private void InstallProjectPanel() { globalTabs.insertTab("", null, (projectForm = new ProjectForm()).content, Global.mainModule.getProject().description, 0); globalTabs.setTabComponentAt(0, new TabToolBar("Проект: " + Global.mainModule.getProject().name, PassCode.CloseCurrentProject) { @Override public void leftMouseAction() { globalTabs.setSelectedIndex(0); } }); } private void RemoveProjectPanel() { globalTabs.removeTabAt(0); if (projectForm != null) { projectForm.SaveSplitters(); projectForm = null; } } private void InstallCallbackPanel() { globalTabs.insertTab("Обратная связь", Utils_.getIcon("/icons/Bug.png"), (callbackForm = new CallbackForm()).getContent(), "Журнал ошибок и связь с разработчиками", 1); } private void SaveCallbackPanel() { if (callbackForm != null) { callbackForm.SaveSplitters(); callbackForm = null; } } private void SaveCredentialsPanel() { if (credentialsForm != null) { credentialsForm.SaveSplitters(); credentialsForm = null; } } private void InstallCredentialsPanel() { globalTabs.insertTab("Машины", Utils_.getIcon("/icons/Session.png"), (credentialsForm = new CredentialsForm()).getContent(), "Машины, пользователи и компиляторы", 2); } private void InstallTestsPanel() { globalTabs.insertTab("Тесты", Utils_.getIcon("/Common/icons/Library.png"), (testsForm = new TestsForm()).getContent(), "Библиотека тестов на сервере", 3); } private void SaveTestsPanel() { if (testsForm != null) { testsForm.SaveSplitters(); testsForm = null; } } private void InstallTestingPanel() { testingForm = new TestingForm(); globalTabs.insertTab("Тестирование", Utils_.getIcon("/icons/Testing.png"), testingForm.getContent(), "Система тестирования", 4); } @Override public void ShowCheckedTestsCount() { int res = 0; for (Group group : Global.testingServer.db.groups.getUI().getSelectedItems()) { Vector selected_tests = new Vector<>(); Vector group_tests = new Vector<>(); for (Test test : Global.testingServer.db.tests.Data.values()) { if (test.group_id == group.id) { if (test.isSelected()) selected_tests.add(test); else group_tests.add(test); } } //- if (selected_tests.isEmpty()) res += group_tests.size(); else res += selected_tests.size(); } //-- globalTabs.setTitleAt(3, "Тесты: " + res); } private void SaveTestingPanel() { if (testingForm != null) { testingForm.SaveSplitters(); testingForm = null; } } private void saveGlobalTab() { global_index = globalTabs.getSelectedIndex(); } private void restoreGlobalTab() { globalTabs.setSelectedIndex(global_index); } @Override public ProjectWindow getProjectWindow() { return projectForm; } @Override public CallbackWindow getCallbackWindow() { return callbackForm; } @Override public TestsWindow getTestsWindow() { return testsForm; } @Override public void ShowUpdatesIcon() { Global.mainModule.getUI().mainMenuBar.ShowUpdatesIcon(); } @Override public void FocusProject() { globalTabs.setSelectedIndex(0); } @Override public void FocusCallback() { globalTabs.setSelectedIndex(1); } @Override public void FocusCredentials() { globalTabs.setSelectedIndex(2); } @Override public void FocusTests() { globalTabs.setSelectedIndex(3); } @Override public void FocusTesting() { globalTabs.setSelectedIndex(4); } @Override public void SwitchTestingTabs(boolean flag) { globalTabs.setEnabledAt(3, flag); globalTabs.setEnabledAt(4, flag); } @Override public TestingWindow getTestingWindow() { return testingForm; } @Override public void Show() { //приходится идти на это только ПОСЛЕ создания главного окна. // иначе ссылка на главное окно в методах пустая. getCallbackWindow().ShowAll(); getTestsWindow().ShowAll(); getCredentialsWindow().ShowAll(); if (getTestingWindow() != null) getTestingWindow().ShowAll(); MainModule_.instance.getUI().windowsStack.push(this); super.Show(); } @Override public CredentialsWindow getCredentialsWindow() { return credentialsForm; } @Override public void ShowProject() { //- saveGlobalTab(); RemoveProjectPanel(); InstallProjectPanel(); restoreGlobalTab(); Global.mainModule.getUI().getDebugWindow().DropCompilationTasksComparison(); Global.mainModule.getUI().mainMenuBar.ShowProject(true); } @Override public void ShowNoProject() { //- saveGlobalTab(); RemoveProjectPanel(); InstallWelcomePanel(); restoreGlobalTab(); Global.mainModule.getUI().mainMenuBar.ShowProject(false); } }