288 lines
9.7 KiB
Java
288 lines
9.7 KiB
Java
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 AdministrationForm administrationForm;
|
||
//-----------------
|
||
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();
|
||
InstallAdministrationPanel();
|
||
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();
|
||
SaveAdministrationPanel();
|
||
//--
|
||
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<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() {
|
||
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 void SwitchAdministrationTab(boolean flag) {
|
||
globalTabs.setEnabledAt(5, flag);
|
||
}
|
||
@Override
|
||
public TestingWindow getTestingWindow() {
|
||
return testingForm;
|
||
}
|
||
@Override
|
||
public AdministrationWindow getAdministrationWindow() {
|
||
return administrationForm;
|
||
}
|
||
@Override
|
||
public void Show() {
|
||
//приходится идти на это только ПОСЛЕ создания главного окна.
|
||
// иначе ссылка на главное окно в методах пустая.
|
||
Global.mainModule.getUI().ShowAccount();
|
||
getCallbackWindow().ShowAll();
|
||
getTestsWindow().ShowAll();
|
||
getCredentialsWindow().ShowAll();
|
||
if (getTestingWindow() != null)
|
||
getTestingWindow().ShowAll();
|
||
if (Global.mainModule.getAccount().isAdmin())
|
||
getAdministrationWindow().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);
|
||
}
|
||
private void InstallAdministrationPanel() {
|
||
globalTabs.insertTab("Администрирование",
|
||
Utils_.getIcon("/icons/Subscribe.png"),
|
||
(administrationForm = new AdministrationForm()).getContent(),
|
||
"Подписчики", 5);
|
||
}
|
||
private void SaveAdministrationPanel() {
|
||
if (administrationForm != null) {
|
||
administrationForm.SaveSplitters();
|
||
administrationForm = null;
|
||
}
|
||
}
|
||
}
|