рефактиринг фильтров завершен.
This commit is contained in:
2023-12-26 20:37:20 +03:00
parent b21e25e932
commit 64073e8b15
7 changed files with 50 additions and 142 deletions

View File

@@ -5,18 +5,6 @@ import Visual_DVM_2021.Passes.PassCode_2021;
import javax.swing.*;
public class DVMRunTasksBar extends DataMenuBar {
JMenuBar filters= null;
public void DropFilters() {
if (filters != null) {
remove(filters);
filters = null;
}
revalidate();
repaint();
}
public void addFilters(JMenu cFilterMenu, JMenu rFilterMenu) {
filters= addMenus(cFilterMenu, rFilterMenu);
}
public DVMRunTasksBar() {
super("задачи", PassCode_2021.DownloadTaskTest);
}

View File

@@ -1,116 +1,52 @@
package TestingSystem.DVM.DVMTasks;
import Common.Current;
import Common.Database.DataSet;
import Common.Database.DBObjectFilter;
import Common.Database.DataSet;
import Common.Database.DataSetFilter;
import Common.UI.DataSetControlForm;
import Common.UI.Menus_2023.VisualiserMenu;
import Common.UI.UI;
import GlobalData.Tasks.TaskState;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import javax.swing.*;
import java.util.Vector;
import static Common.UI.Tables.TableRenderers.RendererProgress;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> {
//todo обобщить бы наличие фильтров для всех таблиц.
public Vector<DBObjectFilter<DVMRunTask>> compilationFilters;
public Vector<DBObjectFilter<DVMRunTask>> runFilters;
DVMPackage target;
@Override
protected void createFilters() {
filters.add(new DataSetFilter<DVMRunTask>("Компиляция", this) {
@Override
public void fill() {
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
field_filters.add(new DBObjectFilter<DVMRunTask>(dataSet, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.compilation_state.equals(state);
}
});
}
}
}
});
filters.add(new DataSetFilter<DVMRunTask>("Запуск", this) {
@Override
public void fill() {
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
field_filters.add(new DBObjectFilter<DVMRunTask>(dataSet, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.state.equals(state);
}
});
}
}
}
});
}
public DVMRunTasksSet() {
super(Integer.class, DVMRunTask.class);
//todo обобщить бы наличие фильтров для всех таблиц.
if (Current.hasUI()) {
compilationFilters = new Vector<>();
runFilters = new Vector<>();
//--
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
compilationFilters.add(new DBObjectFilter<DVMRunTask>(this, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.compilation_state.equals(state);
}
});
}
}
//--
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
runFilters.add(new DBObjectFilter<DVMRunTask>(this, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.state.equals(state);
}
});
}
}
}
}
public void ResetFiltersCount() {
for (DBObjectFilter<DVMRunTask> filter : compilationFilters)
filter.Drop();
for (DBObjectFilter<DVMRunTask> filter : runFilters)
filter.Drop();
}
public void ShowFiltersCount() {
for (DBObjectFilter<DVMRunTask> filter : compilationFilters) {
filter.Refresh();
}
for (DBObjectFilter<DVMRunTask> filter : runFilters) {
filter.Refresh();
}
}
public boolean applyFilters(DVMRunTask object) {
boolean compilation = false;
//возвращать сразу нельзя. иначе количество не посчитает.
for (DBObjectFilter filter : compilationFilters) {
if (filter.Validate(object)) {
compilation |= true;
}
}
boolean run = false;
for (DBObjectFilter filter : runFilters) {
if (filter.Validate(object)) {
run |= true;
}
}
return compilation && run;
}
@Override
public void mountUI(JPanel content_in) {
super.mountUI(content_in);
//-
DVMRunTasksBar menuBar = (DVMRunTasksBar) UI.menuBars.get(getClass());
menuBar.DropFilters();
//----
menuBar.addFilters(
new VisualiserMenu("Компиляция", "/icons/Filter.png", true) {
{
for (DBObjectFilter filter : compilationFilters)
add(filter.menuItem);
}
},
new VisualiserMenu("Запуск", "/icons/Filter.png", true) {
{
for (DBObjectFilter filter : runFilters)
add(filter.menuItem);
}
}
);
}
@Override
public void ShowUI() {
ResetFiltersCount();
super.ShowUI();
ShowFiltersCount();
}
@Override
public void ShowUI(Object key) {
ResetFiltersCount();
super.ShowUI(key);
ShowFiltersCount();
}
@Override
public String getSingleDescription() {