diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 8616af4d..95d4d093 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,14 +7,12 @@ - - - - - + + + diff --git a/src/Common/Visual/DataSetControlForm.java b/src/Common/Visual/DataSetControlForm.java index 6f3f821c..d7c2a2ec 100644 --- a/src/Common/Visual/DataSetControlForm.java +++ b/src/Common/Visual/DataSetControlForm.java @@ -7,6 +7,7 @@ import Common.Database.Tables.DataSet; import Common.Database.Tables.FKBehaviour; import Common.MainModule_; import Common.Utils.Utils_; +import Common.Visual.Controls.MenuBarButton; import Common.Visual.Menus.DataMenuBar; import Common.Visual.Menus.TableMenu; import Common.Visual.Tables.*; @@ -43,12 +44,12 @@ public class DataSetControlForm extends ControlForm filter_in){ allFilters.add(filter_in); } //--- //фильтры и подсчеты. todo слить с баром (?) - MatchesCounter f_ui = null; + MatchesCounter counter_ui = null; //-- Object savedCurrentKey = null; Vector savedSelectedKeys = new Vector<>(); @@ -70,11 +71,16 @@ public class DataSetControlForm extends ControlForm bar.countLabel.setText(String.valueOf(count))); - //todo возможно улушить объект бара + counter_ui = (count -> bar.countLabel.setText(String.valueOf(count))); + //--фильтры всегда в конец бара. + bar.add(new JSeparator()); + for (FilterFlag filter : getFilters(FilterFlag.class)) { + bar.add(filter.getControl()); + } for (JMenu filter : getFilters(DataSetFiltersMenu.class)) { bar.addMenus(filter); } + //------------------------ } catch (Exception ex) { ex.printStackTrace(); } @@ -342,7 +348,7 @@ public class DataSetControlForm extends ControlForm extends ControlForm extends ControlForm extends VisualiserMenu implements DBObjectFilter_ { //-- protected DataSet dataSet; - protected Vector> field_filters; + protected Vector> field_filters; public DataSetFiltersMenu(String name, DataSet dataSet_in) { super(name, "/Common/icons/Filter.png", true); dataSet = dataSet_in; field_filters = new Vector<>(); fill(); //- - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) add(filter.getControl()); addSeparator(); add(new StableMenuItem("Выбрать всё", "/Common/icons/SelectAll.png") { @@ -48,12 +48,12 @@ public abstract class DataSetFiltersMenu extends VisualiserM public boolean Validate(D object) { if (!isActive()) { //считаем без учета результатов - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) filter.Validate(object); return true; } boolean res = false; - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) if (filter.Validate(object)) res |= true; return res; @@ -61,22 +61,22 @@ public abstract class DataSetFiltersMenu extends VisualiserM //------- void selectAll(boolean flag) { - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) filter.setActive(flag); } public abstract void fill(); @Override public void DropMatchesCount() { - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) filter.DropMatchesCount(); } @Override public void ShowMatchesCount() { - for (FilterFlagMenuItem filter : field_filters) + for (FilterFlag filter : field_filters) filter.ShowMatchesCount(); } public boolean isActive() { - for (FilterFlagMenuItem filter : field_filters) { + for (FilterFlag filter : field_filters) { if (filter.isActive()) return true; } diff --git a/src/Common/Visual/FilterFlag.java b/src/Common/Visual/FilterFlag.java index a3193518..3254c599 100644 --- a/src/Common/Visual/FilterFlag.java +++ b/src/Common/Visual/FilterFlag.java @@ -1,7 +1,9 @@ package Common.Visual; import Common.Database.Objects.DBObject; import Common.Database.Tables.DataSet; +import Common.MainModule_; import Common.Utils.Utils_; +import Common.Visual.Fonts.VisualiserFonts; import javax.swing.*; //фильтр флаг. либо в меню, либо на баре. текста нет. @@ -24,10 +26,12 @@ public abstract class FilterFlag implements DBObjectFilter_< description = control.getText(); control.addActionListener(e -> { active = !active; + System.out.println("active="+active); Mark(); dataSet.ShowUI(); }); Mark(); + control.setFont(MainModule_.instance.getUI().getTheme().Fonts.get(VisualiserFonts.TreePlain)); } public AbstractButton getControl(){return control;} public void Mark() { @@ -46,14 +50,11 @@ public abstract class FilterFlag implements DBObjectFilter_< boolean valid = validate(object); if (valid) count++; - return valid & active; + return !active || valid; } @Override public void DropMatchesCount() { count = 0; } - @Override - public void ShowMatchesCount() { - control.setText(description + " " + Utils_.RBrackets(count)); - } + } diff --git a/src/Common/Visual/FilterFlagMenuItem.java b/src/Common/Visual/FilterFlagMenuItem.java deleted file mode 100644 index 2330c259..00000000 --- a/src/Common/Visual/FilterFlagMenuItem.java +++ /dev/null @@ -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 extends FilterFlag { - public FilterFlagMenuItem(DataSet dataSet_in, String description_in, boolean active_in) { - super(dataSet_in, new StableMenuItem(description_in), active_in); - } -} diff --git a/src/Common/Visual/FilterMenuFlag.java b/src/Common/Visual/FilterMenuFlag.java new file mode 100644 index 00000000..d42e1b8d --- /dev/null +++ b/src/Common/Visual/FilterMenuFlag.java @@ -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 extends FilterFlag{ + public FilterMenuFlag(DataSet 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)); + } +} diff --git a/src/Common/Visual/MenuButtonFilterFlag.java b/src/Common/Visual/MenuButtonFilterFlag.java deleted file mode 100644 index 56c37cf5..00000000 --- a/src/Common/Visual/MenuButtonFilterFlag.java +++ /dev/null @@ -1,9 +0,0 @@ -package Common.Visual; -import Common.Database.Objects.DBObject; -public class MenuButtonFilterFlag implements DBObjectFilter_ { - boolean active = true; //включен ли фильтр - @Override - public boolean Validate(D dbObject) { - return false; - } -} diff --git a/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java b/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java index 95708983..cb8ec83f 100644 --- a/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java +++ b/src/_VisualDVM/TestingSystem/Common/Group/UI/GroupsForm.java @@ -1,10 +1,12 @@ package _VisualDVM.TestingSystem.Common.Group.UI; import Common.Database.Tables.DataSet; -import Common.Utils.Utils_; import Common.Visual.Controls.MenuBarButton; -import Common.Visual.FilterFlagMenuItem; +import Common.Visual.Controls.StableMenuItem; import Common.Visual.DataSetControlForm; import Common.Visual.DataSetFiltersMenu; +import Common.Visual.FilterFlag; +import Common.Visual.FilterMenuFlag; +import Common.Visual.Fonts.VisualiserFonts; import Common.Visual.Menus.DataMenuBar; import _VisualDVM.Global; import _VisualDVM.Passes.PassCode; @@ -47,11 +49,6 @@ public class GroupsForm extends DataSetControlForm { } } @Override - public boolean isObjectVisible(Group object) { - return super.isObjectVisible(object) && - (!filterMyOnly || Global.mainModule.getAccount().email.equals(object.sender_address)); - } - @Override public DataMenuBar createMenuBar() { return new DataMenuBar(dataSource.getPluralDescription(), PassCode.SynchronizeTests, @@ -59,32 +56,27 @@ public class GroupsForm extends DataSetControlForm { { addMenus(new AddGroupMenu(), new EditGroupMenu()); 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 protected void createFilters() { + AddFilter(new FilterFlag(dataSource, new MenuBarButton() { + { + setText("Свои"); + setToolTipText("Отображать только группы тестов авторства пользователя"); + } + }, false) { + @Override + protected boolean validate(Group object) { + return Global.mainModule.getAccount().email.equals(object.sender_address); + } + }); AddFilter(new DataSetFiltersMenu("Тип", dataSource) { @Override public void fill() { for (TestType type : TestType.values()) - field_filters.add(new FilterFlagMenuItem(dataSet, type.getDescription(), true) { + field_filters.add(new FilterMenuFlag(dataSource, new StableMenuItem(type.getDescription()), true) { @Override protected boolean validate(Group object) { return object.type.equals(type); @@ -96,7 +88,7 @@ public class GroupsForm extends DataSetControlForm { @Override public void fill() { for (LanguageName languageName : LanguageName.values()) { - field_filters.add(new FilterFlagMenuItem(dataSet, languageName.getDescription(), true) { + field_filters.add(new FilterMenuFlag(dataSource, new StableMenuItem(languageName.getDescription()), true) { @Override protected boolean validate(Group object) { return object.language.equals(languageName); diff --git a/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java b/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java index a9afe396..0ff0c689 100644 --- a/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java +++ b/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java @@ -3,6 +3,8 @@ import Common.Database.Tables.DataSet; import Common.Utils.Utils_; import Common.Visual.Controls.MenuBarButton; import Common.Visual.DataSetControlForm; +import Common.Visual.FilterFlag; +import Common.Visual.Fonts.VisualiserFonts; import Common.Visual.Menus.DataMenuBar; import Common.Visual.Tables.RendererDate; import Common.Visual.Tables.RendererMultiline; @@ -12,6 +14,8 @@ import _VisualDVM.Global; import _VisualDVM.Passes.PassCode; import _VisualDVM.ServerObjectsCache.PackageCache; import _VisualDVM.ServerObjectsCache.VisualCaches; +import _VisualDVM.TestingSystem.Common.Group.Group; +import _VisualDVM.TestingSystem.Common.Test.Test; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import javax.swing.*; @@ -110,39 +114,34 @@ public class DVMPackagesForm extends DataSetControlForm { addPasses(PassCode.DownloadDVMPackage, PassCode.ExportDVMPackageToExcel, 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(dataSource, new MenuBarButton() { + { + setText("Свои"); + setToolTipText("Отображать только пакеты тестов авторства пользователя"); + } + }, false) { + @Override + protected boolean validate(DVMPackage object) { + return Global.mainModule.getAccount().email.equals(object.sender_address); + } + }); + AddFilter(new FilterFlag(dataSource, new MenuBarButton() { + { + setText("Активные"); + setToolTipText("Отображать только активные пакеты тестов"); + } + }, false) { + @Override + protected boolean validate(DVMPackage object) { + return object.state.isActive(); + } + }); } @Override protected Comparator getDefaultComparator() { diff --git a/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java b/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java index 2f47ce8e..455a9ef3 100644 --- a/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java +++ b/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java @@ -1,12 +1,13 @@ package _VisualDVM.TestingSystem.DVM.DVMTasks.UI; import Common.Database.Tables.DataSet; -import Common.Visual.FilterFlagMenuItem; +import Common.Visual.Controls.StableMenuItem; import Common.Visual.DataSetControlForm; import Common.Visual.DataSetFiltersMenu; +import Common.Visual.FilterFlag; +import Common.Visual.FilterMenuFlag; import Common.Visual.Menus.DataMenuBar; import Common.Visual.Tables.RendererProgressBar; import Common.Visual.Tables.RendererStatusEnum; -import _VisualDVM.Global; import _VisualDVM.GlobalData.Tasks.TaskState; import _VisualDVM.Passes.PassCode; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask; @@ -86,7 +87,7 @@ public class DVMRunTasksForm extends DataSetControlForm { public void fill() { for (TaskState state : TaskState.values()) { if (state.isVisible()) { - field_filters.add(new FilterFlagMenuItem(dataSet, state.getDescription(), true) { + field_filters.add(new FilterMenuFlag(dataSource, new StableMenuItem(state.getDescription()) , true) { @Override protected boolean validate(DVMRunTask object) { return object.compilation_state.equals(state); @@ -101,7 +102,7 @@ public class DVMRunTasksForm extends DataSetControlForm { public void fill() { for (TaskState state : TaskState.values()) { if (state.isVisible()) { - field_filters.add(new FilterFlagMenuItem(dataSet, state.getDescription(), true) { + field_filters.add(new FilterMenuFlag(dataSource,new StableMenuItem(state.getDescription()),true) { @Override protected boolean validate(DVMRunTask object) { return object.state.equals(state);