пока завершение рефакторинга и обощения фильтров

This commit is contained in:
2024-10-22 01:35:30 +03:00
parent 20044315fb
commit 348b7602ff
10 changed files with 104 additions and 107 deletions

8
.idea/workspace.xml generated
View File

@@ -7,14 +7,12 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/Common/Visual/FilterFlag.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Common/Visual/MenuButtonFilterFlag.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/DBbjectFilter_.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DBObjectFilter_.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/DataSetControlForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DataSetControlForm.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Visual/DataSetControlForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DataSetControlForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/DataSetFiltersMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DataSetFiltersMenu.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Visual/DataSetFiltersMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DataSetFiltersMenu.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/FilterFlagMenuItem.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/FilterFlagMenuItem.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Visual/FilterFlag.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/FilterFlag.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/Tables/HeaderTextFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/Tables/HeaderTextFilter.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Visual/FilterFlagMenuItem.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/MenuButtonFilterFlag.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java" afterDir="false" />
</list> </list>

View File

@@ -7,6 +7,7 @@ import Common.Database.Tables.DataSet;
import Common.Database.Tables.FKBehaviour; import Common.Database.Tables.FKBehaviour;
import Common.MainModule_; import Common.MainModule_;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.Controls.MenuBarButton;
import Common.Visual.Menus.DataMenuBar; import Common.Visual.Menus.DataMenuBar;
import Common.Visual.Menus.TableMenu; import Common.Visual.Menus.TableMenu;
import Common.Visual.Tables.*; import Common.Visual.Tables.*;
@@ -43,12 +44,12 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
} }
return res; return res;
} }
public void AddFilter(DBObjectFilter_ filter_in){ public void AddFilter(DBObjectFilter_<D> filter_in){
allFilters.add(filter_in); allFilters.add(filter_in);
} }
//--- //---
//фильтры и подсчеты. todo слить с баром (?) //фильтры и подсчеты. todo слить с баром (?)
MatchesCounter f_ui = null; MatchesCounter counter_ui = null;
//-- //--
Object savedCurrentKey = null; Object savedCurrentKey = null;
Vector<Object> savedSelectedKeys = new Vector<>(); Vector<Object> savedSelectedKeys = new Vector<>();
@@ -70,11 +71,16 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
} }
mountPanel.add(bar, BorderLayout.NORTH); mountPanel.add(bar, BorderLayout.NORTH);
//-- //--
f_ui = (count -> bar.countLabel.setText(String.valueOf(count))); counter_ui = (count -> bar.countLabel.setText(String.valueOf(count)));
//todo возможно улушить объект бара //--фильтры всегда в конец бара.
bar.add(new JSeparator());
for (FilterFlag filter : getFilters(FilterFlag.class)) {
bar.add(filter.getControl());
}
for (JMenu filter : getFilters(DataSetFiltersMenu.class)) { for (JMenu filter : getFilters(DataSetFiltersMenu.class)) {
bar.addMenus(filter); bar.addMenus(filter);
} }
//------------------------
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
@@ -342,7 +348,7 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
} }
protected boolean ApplyFilters(D object) { protected boolean ApplyFilters(D object) {
for (DBObjectFilter_ filterInterface: allFilters){ for (DBObjectFilter_ filterInterface: allFilters){
if (!filterInterface.Validate(object)) if (!filterInterface.Validate(object)) //??
return false; return false;
} }
return true; return true;
@@ -355,7 +361,7 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
public void Show() { public void Show() {
for (DBObjectFilter_ filter_ : allFilters) filter_.DropMatchesCount(); for (DBObjectFilter_ filter_ : allFilters) filter_.DropMatchesCount();
super.Show(); super.Show();
if (f_ui != null) f_ui.ShowMatchesCount(getRowCount()); if (counter_ui != null) counter_ui.ShowMatchesCount(getRowCount());
for (DBObjectFilter_ filter_ : allFilters) filter_.ShowMatchesCount(); for (DBObjectFilter_ filter_ : allFilters) filter_.ShowMatchesCount();
} }
public void Show(Object pk) { public void Show(Object pk) {
@@ -372,7 +378,7 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
@Override @Override
public void Clear() { public void Clear() {
super.Clear(); super.Clear();
if (f_ui != null) f_ui.ShowNoMatches(); if (counter_ui != null) counter_ui.ShowNoMatches();
} }
public int getRowCount() { public int getRowCount() {
return control.getRowCount(); return control.getRowCount();

View File

@@ -10,14 +10,14 @@ import java.util.Vector;
public abstract class DataSetFiltersMenu<D extends DBObject> extends VisualiserMenu implements DBObjectFilter_<D> { public abstract class DataSetFiltersMenu<D extends DBObject> extends VisualiserMenu implements DBObjectFilter_<D> {
//-- //--
protected DataSet<?, D> dataSet; protected DataSet<?, D> dataSet;
protected Vector<FilterFlagMenuItem<D>> field_filters; protected Vector<FilterFlag<D>> field_filters;
public DataSetFiltersMenu(String name, DataSet dataSet_in) { public DataSetFiltersMenu(String name, DataSet dataSet_in) {
super(name, "/Common/icons/Filter.png", true); super(name, "/Common/icons/Filter.png", true);
dataSet = dataSet_in; dataSet = dataSet_in;
field_filters = new Vector<>(); field_filters = new Vector<>();
fill(); fill();
//- //-
for (FilterFlagMenuItem<D> filter : field_filters) for (FilterFlag<D> filter : field_filters)
add(filter.getControl()); add(filter.getControl());
addSeparator(); addSeparator();
add(new StableMenuItem("Выбрать всё", "/Common/icons/SelectAll.png") { add(new StableMenuItem("Выбрать всё", "/Common/icons/SelectAll.png") {
@@ -48,12 +48,12 @@ public abstract class DataSetFiltersMenu<D extends DBObject> extends VisualiserM
public boolean Validate(D object) { public boolean Validate(D object) {
if (!isActive()) { if (!isActive()) {
//считаем без учета результатов //считаем без учета результатов
for (FilterFlagMenuItem<D> filter : field_filters) for (FilterFlag<D> filter : field_filters)
filter.Validate(object); filter.Validate(object);
return true; return true;
} }
boolean res = false; boolean res = false;
for (FilterFlagMenuItem<D> filter : field_filters) for (FilterFlag<D> filter : field_filters)
if (filter.Validate(object)) if (filter.Validate(object))
res |= true; res |= true;
return res; return res;
@@ -61,22 +61,22 @@ public abstract class DataSetFiltersMenu<D extends DBObject> extends VisualiserM
//------- //-------
void selectAll(boolean flag) { void selectAll(boolean flag) {
for (FilterFlagMenuItem filter : field_filters) for (FilterFlag filter : field_filters)
filter.setActive(flag); filter.setActive(flag);
} }
public abstract void fill(); public abstract void fill();
@Override @Override
public void DropMatchesCount() { public void DropMatchesCount() {
for (FilterFlagMenuItem<D> filter : field_filters) for (FilterFlag<D> filter : field_filters)
filter.DropMatchesCount(); filter.DropMatchesCount();
} }
@Override @Override
public void ShowMatchesCount() { public void ShowMatchesCount() {
for (FilterFlagMenuItem<D> filter : field_filters) for (FilterFlag<D> filter : field_filters)
filter.ShowMatchesCount(); filter.ShowMatchesCount();
} }
public boolean isActive() { public boolean isActive() {
for (FilterFlagMenuItem<D> filter : field_filters) { for (FilterFlag<D> filter : field_filters) {
if (filter.isActive()) if (filter.isActive())
return true; return true;
} }

View File

@@ -1,7 +1,9 @@
package Common.Visual; package Common.Visual;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Tables.DataSet; import Common.Database.Tables.DataSet;
import Common.MainModule_;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.Fonts.VisualiserFonts;
import javax.swing.*; import javax.swing.*;
//фильтр флаг. либо в меню, либо на баре. текста нет. //фильтр флаг. либо в меню, либо на баре. текста нет.
@@ -24,10 +26,12 @@ public abstract class FilterFlag<D extends DBObject> implements DBObjectFilter_<
description = control.getText(); description = control.getText();
control.addActionListener(e -> { control.addActionListener(e -> {
active = !active; active = !active;
System.out.println("active="+active);
Mark(); Mark();
dataSet.ShowUI(); dataSet.ShowUI();
}); });
Mark(); Mark();
control.setFont(MainModule_.instance.getUI().getTheme().Fonts.get(VisualiserFonts.TreePlain));
} }
public AbstractButton getControl(){return control;} public AbstractButton getControl(){return control;}
public void Mark() { public void Mark() {
@@ -46,14 +50,11 @@ public abstract class FilterFlag<D extends DBObject> implements DBObjectFilter_<
boolean valid = validate(object); boolean valid = validate(object);
if (valid) if (valid)
count++; count++;
return valid & active; return !active || valid;
} }
@Override @Override
public void DropMatchesCount() { public void DropMatchesCount() {
count = 0; count = 0;
} }
@Override
public void ShowMatchesCount() {
control.setText(description + " " + Utils_.RBrackets(count));
}
} }

View File

@@ -1,13 +0,0 @@
package Common.Visual;
import Common.Database.Objects.DBObject;
import Common.Database.Tables.DataSet;
import Common.Utils.Utils_;
import Common.Visual.Controls.StableMenuItem;
import javax.swing.*;
//одиночный фильтр, пункт фильтрационного меню.
public abstract class FilterFlagMenuItem<D extends DBObject> extends FilterFlag<D> {
public FilterFlagMenuItem(DataSet dataSet_in, String description_in, boolean active_in) {
super(dataSet_in, new StableMenuItem(description_in), active_in);
}
}

View File

@@ -0,0 +1,22 @@
package Common.Visual;
import Common.Database.Objects.DBObject;
import Common.Database.Tables.DataSet;
import Common.Utils.Utils_;
import javax.swing.*;
public abstract class FilterMenuFlag<D extends DBObject> extends FilterFlag<D>{
public FilterMenuFlag(DataSet<?, D> dataSet_in, AbstractButton control_in, boolean active_in) {
super(dataSet_in, control_in, active_in);
}
@Override
public boolean Validate(D object) {
boolean valid = validate(object);
if (valid)
count++;
return active & valid;
}
@Override
public void ShowMatchesCount() {
control.setText(description + " " + Utils_.RBrackets(count));
}
}

View File

@@ -1,9 +0,0 @@
package Common.Visual;
import Common.Database.Objects.DBObject;
public class MenuButtonFilterFlag<D extends DBObject> implements DBObjectFilter_<D> {
boolean active = true; //включен ли фильтр
@Override
public boolean Validate(D dbObject) {
return false;
}
}

View File

@@ -1,10 +1,12 @@
package _VisualDVM.TestingSystem.Common.Group.UI; package _VisualDVM.TestingSystem.Common.Group.UI;
import Common.Database.Tables.DataSet; import Common.Database.Tables.DataSet;
import Common.Utils.Utils_;
import Common.Visual.Controls.MenuBarButton; import Common.Visual.Controls.MenuBarButton;
import Common.Visual.FilterFlagMenuItem; import Common.Visual.Controls.StableMenuItem;
import Common.Visual.DataSetControlForm; import Common.Visual.DataSetControlForm;
import Common.Visual.DataSetFiltersMenu; import Common.Visual.DataSetFiltersMenu;
import Common.Visual.FilterFlag;
import Common.Visual.FilterMenuFlag;
import Common.Visual.Fonts.VisualiserFonts;
import Common.Visual.Menus.DataMenuBar; import Common.Visual.Menus.DataMenuBar;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -47,11 +49,6 @@ public class GroupsForm extends DataSetControlForm<Group> {
} }
} }
@Override @Override
public boolean isObjectVisible(Group object) {
return super.isObjectVisible(object) &&
(!filterMyOnly || Global.mainModule.getAccount().email.equals(object.sender_address));
}
@Override
public DataMenuBar createMenuBar() { public DataMenuBar createMenuBar() {
return new DataMenuBar(dataSource.getPluralDescription(), return new DataMenuBar(dataSource.getPluralDescription(),
PassCode.SynchronizeTests, PassCode.SynchronizeTests,
@@ -59,32 +56,27 @@ public class GroupsForm extends DataSetControlForm<Group> {
{ {
addMenus(new AddGroupMenu(), new EditGroupMenu()); addMenus(new AddGroupMenu(), new EditGroupMenu());
addPasses(PassCode.DeleteGroup); addPasses(PassCode.DeleteGroup);
add(new JSeparator());
add(new MenuBarButton() {
{
setText("Свои");
setToolTipText("Отображать только группы тестов авторства пользователя");
Mark();
addActionListener(e -> {
filterMyOnly = !filterMyOnly;
Mark();
Global.testingServer.db.groups.ShowUI();
});
}
public void Mark() {
setIcon(Utils_.getIcon(filterMyOnly ? "/Common/icons/Pick.png" : "/Common/icons/NotPick.png"));
}
});
} }
}; };
} }
@Override @Override
protected void createFilters() { protected void createFilters() {
AddFilter(new FilterFlag<Group>(dataSource, new MenuBarButton() {
{
setText("Свои");
setToolTipText("Отображать только группы тестов авторства пользователя");
}
}, false) {
@Override
protected boolean validate(Group object) {
return Global.mainModule.getAccount().email.equals(object.sender_address);
}
});
AddFilter(new DataSetFiltersMenu<Group>("Тип", dataSource) { AddFilter(new DataSetFiltersMenu<Group>("Тип", dataSource) {
@Override @Override
public void fill() { public void fill() {
for (TestType type : TestType.values()) for (TestType type : TestType.values())
field_filters.add(new FilterFlagMenuItem<Group>(dataSet, type.getDescription(), true) { field_filters.add(new FilterMenuFlag<Group>(dataSource, new StableMenuItem(type.getDescription()), true) {
@Override @Override
protected boolean validate(Group object) { protected boolean validate(Group object) {
return object.type.equals(type); return object.type.equals(type);
@@ -96,7 +88,7 @@ public class GroupsForm extends DataSetControlForm<Group> {
@Override @Override
public void fill() { public void fill() {
for (LanguageName languageName : LanguageName.values()) { for (LanguageName languageName : LanguageName.values()) {
field_filters.add(new FilterFlagMenuItem<Group>(dataSet, languageName.getDescription(), true) { field_filters.add(new FilterMenuFlag<Group>(dataSource, new StableMenuItem(languageName.getDescription()), true) {
@Override @Override
protected boolean validate(Group object) { protected boolean validate(Group object) {
return object.language.equals(languageName); return object.language.equals(languageName);

View File

@@ -3,6 +3,8 @@ import Common.Database.Tables.DataSet;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.Controls.MenuBarButton; import Common.Visual.Controls.MenuBarButton;
import Common.Visual.DataSetControlForm; import Common.Visual.DataSetControlForm;
import Common.Visual.FilterFlag;
import Common.Visual.Fonts.VisualiserFonts;
import Common.Visual.Menus.DataMenuBar; import Common.Visual.Menus.DataMenuBar;
import Common.Visual.Tables.RendererDate; import Common.Visual.Tables.RendererDate;
import Common.Visual.Tables.RendererMultiline; import Common.Visual.Tables.RendererMultiline;
@@ -12,6 +14,8 @@ import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
import _VisualDVM.ServerObjectsCache.PackageCache; import _VisualDVM.ServerObjectsCache.PackageCache;
import _VisualDVM.ServerObjectsCache.VisualCaches; import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import javax.swing.*; import javax.swing.*;
@@ -110,39 +114,34 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
addPasses(PassCode.DownloadDVMPackage, addPasses(PassCode.DownloadDVMPackage,
PassCode.ExportDVMPackageToExcel, PassCode.ExportDVMPackageToExcel,
PassCode.DeleteDVMPackage); PassCode.DeleteDVMPackage);
add(new JSeparator());
add(new MenuBarButton() {
{
setText("Свои");
setToolTipText("Отображать только пакеты тестов авторства пользователя");
Mark();
addActionListener(e -> {
filterMyOnly = !filterMyOnly;
Mark();
Global.testingServer.db.dvmPackages.ShowUI();
});
}
public void Mark() {
setIcon(Utils_.getIcon(filterMyOnly ? "/Common/icons/Pick.png" : "/Common/icons/NotPick.png"));
}
});
add(new MenuBarButton() {
{
setText("Активные");
setToolTipText("Отображать только активные пакеты тестов");
Mark();
addActionListener(e -> {
filterActive = !filterActive;
Mark();
Global.testingServer.db.dvmPackages.ShowUI();
});
}
public void Mark() {
setIcon(Utils_.getIcon(filterActive ? "/Common/icons/Pick.png" : "/Common/icons/NotPick.png"));
}
});
} }
}; };
}
@Override
protected void createFilters() {
AddFilter(new FilterFlag<DVMPackage>(dataSource, new MenuBarButton() {
{
setText("Свои");
setToolTipText("Отображать только пакеты тестов авторства пользователя");
}
}, false) {
@Override
protected boolean validate(DVMPackage object) {
return Global.mainModule.getAccount().email.equals(object.sender_address);
}
});
AddFilter(new FilterFlag<DVMPackage>(dataSource, new MenuBarButton() {
{
setText("Активные");
setToolTipText("Отображать только активные пакеты тестов");
}
}, false) {
@Override
protected boolean validate(DVMPackage object) {
return object.state.isActive();
}
});
} }
@Override @Override
protected Comparator<DVMPackage> getDefaultComparator() { protected Comparator<DVMPackage> getDefaultComparator() {

View File

@@ -1,12 +1,13 @@
package _VisualDVM.TestingSystem.DVM.DVMTasks.UI; package _VisualDVM.TestingSystem.DVM.DVMTasks.UI;
import Common.Database.Tables.DataSet; import Common.Database.Tables.DataSet;
import Common.Visual.FilterFlagMenuItem; import Common.Visual.Controls.StableMenuItem;
import Common.Visual.DataSetControlForm; import Common.Visual.DataSetControlForm;
import Common.Visual.DataSetFiltersMenu; import Common.Visual.DataSetFiltersMenu;
import Common.Visual.FilterFlag;
import Common.Visual.FilterMenuFlag;
import Common.Visual.Menus.DataMenuBar; import Common.Visual.Menus.DataMenuBar;
import Common.Visual.Tables.RendererProgressBar; import Common.Visual.Tables.RendererProgressBar;
import Common.Visual.Tables.RendererStatusEnum; import Common.Visual.Tables.RendererStatusEnum;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Tasks.TaskState; import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
@@ -86,7 +87,7 @@ public class DVMRunTasksForm extends DataSetControlForm<DVMRunTask> {
public void fill() { public void fill() {
for (TaskState state : TaskState.values()) { for (TaskState state : TaskState.values()) {
if (state.isVisible()) { if (state.isVisible()) {
field_filters.add(new FilterFlagMenuItem<DVMRunTask>(dataSet, state.getDescription(), true) { field_filters.add(new FilterMenuFlag<DVMRunTask>(dataSource, new StableMenuItem(state.getDescription()) , true) {
@Override @Override
protected boolean validate(DVMRunTask object) { protected boolean validate(DVMRunTask object) {
return object.compilation_state.equals(state); return object.compilation_state.equals(state);
@@ -101,7 +102,7 @@ public class DVMRunTasksForm extends DataSetControlForm<DVMRunTask> {
public void fill() { public void fill() {
for (TaskState state : TaskState.values()) { for (TaskState state : TaskState.values()) {
if (state.isVisible()) { if (state.isVisible()) {
field_filters.add(new FilterFlagMenuItem<DVMRunTask>(dataSet, state.getDescription(), true) { field_filters.add(new FilterMenuFlag<DVMRunTask>(dataSource,new StableMenuItem(state.getDescription()),true) {
@Override @Override
protected boolean validate(DVMRunTask object) { protected boolean validate(DVMRunTask object) {
return object.state.equals(state); return object.state.equals(state);