Files
VisualSapfor/src/_VisualDVM/Visual/Windows/MainForm.java

262 lines
8.8 KiB
Java
Raw Normal View History

2024-10-09 22:15:56 +03:00
package _VisualDVM.Visual.Windows;
2024-10-14 21:55:58 +03:00
import Common.MainModule_;
2024-10-11 00:00:30 +03:00
import Common.Utils.Utils_;
2024-10-14 15:30:52 +03:00
import Common.Visual.Controls.TabToolBar;
import Common.Visual.FormWithSplitters;
2024-10-08 22:33:49 +03:00
import Common.Visual.Windows.Form;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
2024-10-09 22:21:57 +03:00
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.Visual.Interface.*;
2024-10-14 21:55:58 +03:00
import _VisualDVM.Visual.Menus.MainMenuBar.MainMenuBar;
2023-09-17 22:13:42 +03:00
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
2023-09-17 22:13:42 +03:00
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;
2023-10-10 23:33:23 +03:00
private TestsForm testsForm;
//---
2023-09-17 22:13:42 +03:00
private TestingForm testingForm;
//-----------------
private JPanel Content;
private JTabbedPane globalTabs;
private JPanel mainPanel;
2024-10-14 15:19:13 +03:00
public MainForm() {
mainPanel.add(Global.mainModule.getUI().mainMenuBar = new MainMenuBar(), BorderLayout.NORTH);
2024-10-14 15:19:13 +03:00
InstallWelcomePanel();
InstallCallbackPanel();
InstallCredentialsPanel();
2024-10-14 15:19:13 +03:00
InstallTestsPanel();
InstallTestingPanel();
ShowUpdatesIcon();
//----------------------
}
2023-09-17 22:13:42 +03:00
@Override
protected JPanel getMainPanel() {
return Content;
}
@Override
public String getFormKey() {
2024-10-08 23:21:47 +03:00
return "Main"; //можно было бы через имя класса
2023-09-17 22:13:42 +03:00
}
@Override
2024-10-08 22:33:49 +03:00
public String getIconPath() {
return "/icons/Sapfor.png";
2023-09-17 22:13:42 +03:00
}
@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)
2024-10-15 13:35:33 +03:00
((FormWithSplitters) Global.mainModule.getUI().getVersionsWindow()).SaveSplitters();
2023-09-17 22:13:42 +03:00
SaveCallbackPanel();
SaveCredentialsPanel();
2023-10-10 23:33:23 +03:00
SaveTestsPanel();
2023-09-17 22:13:42 +03:00
SaveTestingPanel();
2023-10-11 18:44:16 +03:00
//--
if (Global.mainModule.getUI().getDebugWindow() != null)
((FormWithSplitters) Global.mainModule.getUI().getDebugWindow()).SaveSplitters();
2023-10-11 18:44:16 +03:00
//--
2024-10-12 00:17:51 +03:00
Global.mainModule.getDb().SaveCredentials();
//--
2023-09-17 22:13:42 +03:00
Global.FinishApplication();
}
private void InstallWelcomePanel() {
globalTabs.insertTab("Начало работы",
null,
welcomeForm.content,
"Для начала работы откройте проект с помощью верхней панели инструментов, или перетащите его сюда", 0
2023-09-17 22:13:42 +03:00
);
}
private void InstallProjectPanel() {
globalTabs.insertTab("", null,
2024-10-14 15:19:13 +03:00
(projectForm = new ProjectForm()).content, Global.mainModule.getProject().description, 0);
2023-09-17 22:13:42 +03:00
globalTabs.setTabComponentAt(0,
new TabToolBar("Проект: " + Global.mainModule.getProject().name, PassCode.CloseCurrentProject) {
2023-09-17 22:13:42 +03:00
@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("Обратная связь",
2024-10-11 00:00:30 +03:00
Utils_.getIcon("/icons/Bug.png"),
2023-09-17 22:13:42 +03:00
(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);
}
2023-10-10 23:33:23 +03:00
private void InstallTestsPanel() {
globalTabs.insertTab("Тесты",
Utils_.getIcon("/Common/icons/Library.png"),
2023-10-10 23:33:23 +03:00
(testsForm = new TestsForm()).getContent(),
"Библиотека тестов на сервере", 3);
2023-10-10 23:33:23 +03:00
}
private void SaveTestsPanel() {
if (testsForm != null) {
testsForm.SaveSplitters();
testsForm = null;
}
}
2023-09-17 22:13:42 +03:00
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<Test> selected_tests = new Vector<>();
Vector<Test> 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);
}
2023-09-17 22:13:42 +03:00
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
2023-10-10 23:33:23 +03:00
public TestsWindow getTestsWindow() {
return testsForm;
}
@Override
2023-09-17 22:13:42 +03:00
public void ShowUpdatesIcon() {
Global.mainModule.getUI().mainMenuBar.ShowUpdatesIcon();
2023-09-17 22:13:42 +03:00
}
@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);
2023-09-17 22:13:42 +03:00
}
@Override
public void FocusTesting() {
globalTabs.setSelectedIndex(4);
}
@Override
public void SwitchTestingTabs(boolean flag) {
globalTabs.setEnabledAt(3, flag);
globalTabs.setEnabledAt(4, flag);
}
@Override
2023-09-17 22:13:42 +03:00
public TestingWindow getTestingWindow() {
return testingForm;
}
@Override
public void Show() {
//приходится идти на это только ПОСЛЕ создания главного окна.
// иначе ссылка на главное окно в методах пустая.
getCallbackWindow().ShowAll();
2023-10-10 23:33:23 +03:00
getTestsWindow().ShowAll();
getCredentialsWindow().ShowAll();
2023-09-17 22:13:42 +03:00
if (getTestingWindow() != null)
getTestingWindow().ShowAll();
2024-10-14 21:55:58 +03:00
MainModule_.instance.getUI().windowsStack.push(this);
2023-09-17 22:13:42 +03:00
super.Show();
}
@Override
public CredentialsWindow getCredentialsWindow() {
return credentialsForm;
}
@Override
2023-09-17 22:13:42 +03:00
public void ShowProject() {
//-
saveGlobalTab();
RemoveProjectPanel();
InstallProjectPanel();
restoreGlobalTab();
Global.mainModule.getUI().getDebugWindow().DropCompilationTasksComparison();
Global.mainModule.getUI().mainMenuBar.ShowProject(true);
2023-09-17 22:13:42 +03:00
}
@Override
public void ShowNoProject() {
//-
saveGlobalTab();
RemoveProjectPanel();
InstallWelcomePanel();
restoreGlobalTab();
Global.mainModule.getUI().mainMenuBar.ShowProject(false);
2023-09-17 22:13:42 +03:00
}
}