Files
VisualSapfor/src/Visual_DVM_2021/UI/Main/MainForm.java

262 lines
8.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package Visual_DVM_2021.UI.Main;
import Common.Current;
import Common.Global;
import Common.UI.Menus_2023.MainMenuBar.MainWindow;
import Common.UI.UI;
import Common.UI.Windows.Form;
import Common.UI.Windows.FormType;
import Common.Utils.Utils;
import GlobalData.Compiler.CompilerType;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
import Visual_DVM_2021.UI.Interface.*;
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 TestsForm testsForm;
//---
private TestingForm testingForm;
//-----------------
private JPanel Content;
private JTabbedPane globalTabs;
private JPanel mainPanel;
@Override
protected JPanel getMainPanel() {
return Content;
}
@Override
protected FormType getFormType() {
return FormType.Main;
}
@Override
public String getIconName() {
return "Sapfor.png";
}
@Override
public String getWTitleText() {
return "Visual Sapfor 3.0";
}
@Override
public String getUTitleText() {
return "Visual Sapfor 3.0";
}
@Override
public void AfterClose() {
Pass_2021.passes.get(PassCode_2021.CloseCurrentProject).Do();
if (UI.getVersionsWindow() != null)
((VersionsForm) UI.getVersionsWindow()).SaveSplitters();
SaveCallbackPanel();
SaveTestsPanel();
SaveTestingPanel();
//--
if (UI.debugWindow != null)
((FormWithSplitters) UI.debugWindow).SaveSplitters();
//--
Global.db.SaveCredentials();
//--
Global.FinishApplication();
}
public MainForm() {
mainPanel.add(UI.mainMenuBar, BorderLayout.NORTH);
InstallWelcomePanel();
InstallCallbackPanel();
InstallTestsPanel();
InstallTestingPanel();
ShowUpdatesIcon();
//----------------------
}
private void InstallWelcomePanel() {
globalTabs.insertTab("Начало работы",
null,
welcomeForm.content,
"Для начала работы откройте проект с помощью верхней панели инструментов, или перетащите его сюда", 0
);
}
private void InstallProjectPanel() {
globalTabs.insertTab("", null,
(projectForm = new ProjectForm()).content, Current.getProject().description, 0);
globalTabs.setTabComponentAt(0,
new TabToolBar("Проект: " + Current.getProject().name, PassCode_2021.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 InstallTestsPanel() {
globalTabs.insertTab("Тесты",
Utils.getIcon("/icons/Library.PNG"),
(testsForm = new TestsForm()).getContent(),
"Библиотека тестов на сервере", 2);
}
private void SaveTestsPanel() {
if (testsForm != null) {
testsForm.SaveSplitters();
testsForm = null;
}
}
private void InstallTestingPanel() {
testingForm = new TestingForm();
globalTabs.insertTab("Тестирование",
Utils.getIcon("/icons/Session.png"),
testingForm.getContent(),
"Система тестирования", 3);
}
/*
public void ShowCurrentCompiler() {
String res = "";
if (Current.HasMachine()) {
res += "@" + Current.getMachine().getURL();
if (Current.HasUser()) {
res = Current.getUser().login + res;
} else res = "?" + res;
if (Current.HasCompiler() && Current.getCompiler().type.equals(CompilerType.dvm)) {
res += "DVM система: " + Current.getCompiler().description;
} else {
res += "DVM система: ?";
}
} else {
res += "?@?";
}
globalTabs.setTitleAt(2, res);
}
*/
@Override
public void ShowCheckedTestsCount() {
int res = 0;
for (Group group : Global.testingServer.db.groups.getCheckedItems()) {
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);
}
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() {
UI.mainMenuBar.ShowUpdatesIcon();
}
@Override
public void FocusProject() {
globalTabs.setSelectedIndex(0);
}
@Override
public void FocusCallback() {
globalTabs.setSelectedIndex(1);
}
@Override
public void FocusTests() {
globalTabs.setSelectedIndex(2);
}
@Override
public void FocusTesting() {
globalTabs.setSelectedIndex(3);
}
@Override
public void SwitchTestingTabs(boolean flag) {
globalTabs.setEnabledAt(2, flag);
globalTabs.setEnabledAt(3, flag);
// globalTabs.setEnabledAt(4, flag);
}
@Override
public TestingWindow getTestingWindow() {
return testingForm;
}
@Override
public void Show() {
//приходится идти на это только ПОСЛЕ создания главного окна.
// иначе ссылка на главное окно в методах пустая.
getCallbackWindow().ShowAll();
getTestsWindow().ShowAll();
if (getTestingWindow() != null)
getTestingWindow().ShowAll();
UI.windowsStack.push(this);
System.out.println("New Front Window");
super.Show();
}
@Override
public void ShowProject() {
//-
saveGlobalTab();
RemoveProjectPanel();
InstallProjectPanel();
restoreGlobalTab();
UI.getDebugWindow().DropCompilationTasksComparison();
UI.mainMenuBar.ShowProject(true);
}
@Override
public void ShowNoProject() {
//-
saveGlobalTab();
RemoveProjectPanel();
InstallWelcomePanel();
restoreGlobalTab();
UI.mainMenuBar.ShowProject(false);
}
}