приведение фильтров к объекту интерфейса таблицы

This commit is contained in:
2024-10-17 21:49:18 +03:00
parent 452c023f1d
commit c9c8519a10
9 changed files with 97 additions and 139 deletions

View File

@@ -5,8 +5,7 @@ import Common.MainModule_;
import Common.Passes.PassCode_;
import Common.Utils.TextLog;
import Common.Visual.DataSetControlForm;
import Common.Visual.DataSetFilter;
import Common.Visual.Menus.DataMenuBar;
import Common.Visual.DataSetFiltersMenu;
import Common.Visual.Tables.ColumnFilter;
import Common.Visual.UI;
import Common.Visual.Windows.Dialog.DBObjectDialog;
@@ -30,8 +29,6 @@ public class DataSet<K, D extends DBObject> extends DataSetAnchestor {
//-
protected DataSetControlForm ui = null;
//--
protected Vector<DataSetFilter<D>> filters = new Vector<>();
//--
public DataSet(Class<K> k_in, Class<D> d_in) {
k = k_in;
d = d_in;
@@ -45,12 +42,6 @@ public class DataSet<K, D extends DBObject> extends DataSetAnchestor {
public void mountUI(JPanel mountPanel_in) {
UI.Clear(mountPanel_in);
ui = createUI(mountPanel_in);
createFilters();
if (!filters.isEmpty()) {
DataMenuBar menuBar = MainModule_.instance.getUI().menuBars.get(getClass());
for (DataSetFilter<D> filter : filters)
menuBar.addMenus(filter.menu);
}
}
public void ClearUI() {
if ((ui != null) && ui.isShown()) {
@@ -192,33 +183,14 @@ public class DataSet<K, D extends DBObject> extends DataSetAnchestor {
}
//--
public void ShowUI() {
for (DataSetFilter<D> filter : filters)
filter.Drop();
//--
if (ui != null) {
ui.Show();
}
//--
for (DataSetFilter<D> filter : filters)
filter.Refresh();
}
public void ShowUI(Object key) {
for (DataSetFilter<D> filter : filters)
filter.Drop();
//--
if (ui != null) {
ui.Show(key);
}
//--
for (DataSetFilter<D> filter : filters)
filter.Refresh();
}
public boolean applyFilters(D object) {
for (DataSetFilter<D> filter : filters) {
if (!filter.Validate(object))
return false;
}
return true;
}
//------------------------------------------------------------------------------------
public Current_ CurrentName() {

View File

@@ -33,7 +33,9 @@ public class DataSetControlForm extends ControlForm<DataTable> {
protected boolean events_on = true;
protected String colNamesAndSizes = "";
protected Vector<ColumnInfo> columns = new Vector<>(); //информация о столбцах и их оформлении
FilterInterface f_ui; // отображение количества объектов ( todo слить с баром ?)
//фильтры и подсчеты. todo слить с баром (?)
MatchesCounter f_ui = null;
protected Vector<DataSetFiltersMenu> filters = new Vector<>();
public DataSetControlForm(DataSet dataSource_in, JPanel mountPanel_in) {
super(DataTable.class, mountPanel_in);
dataSource = dataSource_in;
@@ -52,6 +54,11 @@ public class DataSetControlForm extends ControlForm<DataTable> {
//--
f_ui = (count -> bar.countLabel.setText(String.valueOf(count)));
//--
createFilters();
if (!filters.isEmpty()) {
for (DataSetFiltersMenu filter : filters)
bar.addMenus(filter.getMenu());
}
} catch (Exception ex) {
ex.printStackTrace();
}
@@ -275,14 +282,28 @@ public class DataSetControlForm extends ControlForm<DataTable> {
protected DataMenuBar createMenuBar() {
return new DataMenuBar(dataSource.getPluralDescription());
}
protected void createFilters() {}
protected boolean applyFiltersMenus(DBObject object){
for (DataSetFiltersMenu filterMenu : filters) {
if (!filterMenu.Validate(object))
return false;
}
return true;
}
public boolean ApplyFilters(DBObject object) {
//могут быть и другие фильтры ( например свои/активные). перенести их сюда и обобщить
return applyFiltersMenus(object);
}
@Override
protected void redrawControl() {
control.CorrectSizes();
}
@Override
public void Show() {
for (DataSetFiltersMenu filterMenu : filters) filterMenu.Drop();
super.Show();
if (f_ui != null) f_ui.ShowMatchesCount(getRowCount());
for (DataSetFiltersMenu filterMenu : filters) filterMenu.Refresh();
}
public void Show(Object pk) {
Show();

View File

@@ -7,12 +7,13 @@ import Common.Visual.Menus.VisualiserMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
public abstract class DataSetFilter<D extends DBObject> {
public VisualiserMenu menu;
public abstract class DataSetFiltersMenu<D extends DBObject> {
VisualiserMenu menu= null;
public VisualiserMenu getMenu(){return menu;}
//--
protected DataSet<?, D> dataSet;
protected Vector<DBObjectFilter<D>> field_filters;
public DataSetFilter(String name, DataSet dataSet_in) {
public DataSetFiltersMenu(String name, DataSet dataSet_in) {
dataSet = dataSet_in;
menu = new VisualiserMenu(name, "/Common/icons/Filter.png", true);
field_filters = new Vector<>();

View File

@@ -1,5 +1,5 @@
package Common.Visual;
public interface FilterInterface {
public interface MatchesCounter {
void ShowMatchesCount(int count);
default void ShowNoMatches() {
ShowMatchesCount(0);