Files
VisualSapfor/src/TestingSystem/Common/Group/GroupsDBTable.java

195 lines
6.4 KiB
Java
Raw Normal View History

package TestingSystem.Common.Group;
2023-09-17 22:13:42 +03:00
import Common.Current;
import Common.Database.*;
import Common.UI.DataSetControlForm;
import Common.UI.Menus_2023.VisualiserMenu;
import Common.UI.UI;
import Common.UI.Windows.Dialog.DBObjectDialog;
import ProjectData.LanguageName;
import TestingSystem.Common.Group.UI.GroupFields;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.Test.TestType;
2023-09-17 22:13:42 +03:00
import javax.swing.*;
import java.util.LinkedHashMap;
import java.util.Vector;
//-
2023-11-16 21:03:25 +03:00
public class GroupsDBTable extends iDBTable<Group> {
2023-11-17 00:04:21 +03:00
public static boolean filterMyOnly = false;
2023-12-26 16:18:23 +03:00
public Vector<DBObjectFilter<Group>> typeFilters;
public Vector<DBObjectFilter<Group>> languageFilters;
2023-09-17 22:13:42 +03:00
//------------------------------------------------>>>
public GroupsDBTable() {
2023-11-16 21:03:25 +03:00
super(Group.class);
2023-09-17 22:13:42 +03:00
if (Current.hasUI()) {
//--
typeFilters = new Vector<>();
languageFilters = new Vector<>();
//--
for (TestType type : TestType.values()) {
typeFilters.add(
2023-12-26 16:18:23 +03:00
new DBObjectFilter<Group>(this, type.getDescription()) {
2023-09-17 22:13:42 +03:00
@Override
protected boolean validate(Group object) {
return object.type.equals(type);
}
});
}
//--
for (LanguageName languageName : LanguageName.values()) {
2023-12-26 16:18:23 +03:00
languageFilters.add(new DBObjectFilter<Group>(this, languageName.getDescription()) {
2023-09-17 22:13:42 +03:00
@Override
protected boolean validate(Group object) {
return object.language.equals(languageName);
}
});
}
}
}
@Override
public void mountUI(JPanel content_in) {
super.mountUI(content_in);
//---
GroupsMenuBar menuBar = (GroupsMenuBar) UI.menuBars.get(getClass());
menuBar.DropFilters();
//----
menuBar.addFilters(
new VisualiserMenu("Тип", "/icons/Filter.png", true) {
{
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : typeFilters)
2023-09-17 22:13:42 +03:00
add(filter.menuItem);
}
},
new VisualiserMenu("Язык", "/icons/Filter.png", true) {
{
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : languageFilters)
2023-09-17 22:13:42 +03:00
add(filter.menuItem);
}
}
);
}
public void ResetFiltersCount() {
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : typeFilters)
filter.ResetCount();
for (DBObjectFilter filter : languageFilters)
filter.ResetCount();
2023-09-17 22:13:42 +03:00
}
public void ShowFiltersCount() {
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : typeFilters)
2023-09-17 22:13:42 +03:00
filter.ShowDescriptionAndCount();
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : languageFilters)
2023-09-17 22:13:42 +03:00
filter.ShowDescriptionAndCount();
}
public boolean applyFilters(Group object) {
boolean type = false;
//возвращать сразу нельзя. иначе количество не посчитает.
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : typeFilters) {
if (filter.Validate(object)) {
type |= true;
}
}
boolean language = false;
2023-12-26 16:18:23 +03:00
for (DBObjectFilter filter : languageFilters) {
if (filter.Validate(object)) {
language |= true;
}
}
2023-12-26 16:18:23 +03:00
return type && language;
2023-09-17 22:13:42 +03:00
}
@Override
public void ShowUI() {
ResetFiltersCount();
super.ShowUI();
ShowFiltersCount();
}
@Override
public void ShowUI(Object key) {
ResetFiltersCount();
super.ShowUI(key);
ShowFiltersCount();
}
@Override
public String getSingleDescription() {
return "группа тестов";
}
@Override
public String getPluralDescription() {
return "группы";
}
@Override
public LinkedHashMap<Class<? extends DBObject>, FKBehaviour> getFKDependencies() {
LinkedHashMap<Class<? extends DBObject>, FKBehaviour> res = new LinkedHashMap<>();
res.put(Test.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.ACTIVE));
return res;
}
@Override
protected DataSetControlForm createUI() {
return new DataSetControlForm(this) {
@Override
public boolean hasCheckBox() {
return true;
}
@Override
protected void AdditionalInitColumns() {
//columns.get(0).setVisible(false);
2023-09-17 22:13:42 +03:00
}
};
}
@Override
public String[] getUIColumnNames() {
return new String[]{
"имя",
"автор",
"тип",
"язык"
};
}
@Override
public Object getFieldAt(Group object, int columnIndex) {
switch (columnIndex) {
case 2:
return object.description;
case 3:
return object.sender_name;
case 4:
return object.type.getDescription();
case 5:
return object.language.getDescription();
default:
return null;
}
}
@Override
public Current CurrentName() {
return Current.Group;
}
@Override
public DBObjectDialog<Group, GroupFields> getDialog() {
return new DBObjectDialog<Group, GroupFields>(GroupFields.class) {
@Override
public int getDefaultHeight() {
return 250;
}
@Override
public int getDefaultWidth() {
return 400;
}
@Override
public void validateFields() {
}
@Override
public void fillFields() {
fields.tfName.setText(Result.description);
UI.TrySelect(fields.cbType, Result.type);
UI.TrySelect(fields.cbLanguage, Result.language);
}
@Override
public void ProcessResult() {
Result.description = fields.tfName.getText();
Result.type = (TestType) fields.cbType.getSelectedItem();
Result.language = (LanguageName) fields.cbLanguage.getSelectedItem();
}
};
}
}