пока завершение рефакторинга и обощения фильтров
This commit is contained in:
@@ -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<D extends DBObject> extends ControlForm<DataTabl
|
||||
}
|
||||
return res;
|
||||
}
|
||||
public void AddFilter(DBObjectFilter_ filter_in){
|
||||
public void AddFilter(DBObjectFilter_<D> filter_in){
|
||||
allFilters.add(filter_in);
|
||||
}
|
||||
//---
|
||||
//фильтры и подсчеты. todo слить с баром (?)
|
||||
MatchesCounter f_ui = null;
|
||||
MatchesCounter counter_ui = null;
|
||||
//--
|
||||
Object savedCurrentKey = null;
|
||||
Vector<Object> savedSelectedKeys = new Vector<>();
|
||||
@@ -70,11 +71,16 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
|
||||
}
|
||||
mountPanel.add(bar, BorderLayout.NORTH);
|
||||
//--
|
||||
f_ui = (count -> 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<D extends DBObject> extends ControlForm<DataTabl
|
||||
}
|
||||
protected boolean ApplyFilters(D object) {
|
||||
for (DBObjectFilter_ filterInterface: allFilters){
|
||||
if (!filterInterface.Validate(object))
|
||||
if (!filterInterface.Validate(object)) //??
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -355,7 +361,7 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
|
||||
public void Show() {
|
||||
for (DBObjectFilter_ filter_ : allFilters) filter_.DropMatchesCount();
|
||||
super.Show();
|
||||
if (f_ui != null) f_ui.ShowMatchesCount(getRowCount());
|
||||
if (counter_ui != null) counter_ui.ShowMatchesCount(getRowCount());
|
||||
for (DBObjectFilter_ filter_ : allFilters) filter_.ShowMatchesCount();
|
||||
}
|
||||
public void Show(Object pk) {
|
||||
@@ -372,7 +378,7 @@ public class DataSetControlForm<D extends DBObject> extends ControlForm<DataTabl
|
||||
@Override
|
||||
public void Clear() {
|
||||
super.Clear();
|
||||
if (f_ui != null) f_ui.ShowNoMatches();
|
||||
if (counter_ui != null) counter_ui.ShowNoMatches();
|
||||
}
|
||||
public int getRowCount() {
|
||||
return control.getRowCount();
|
||||
|
||||
@@ -10,14 +10,14 @@ import java.util.Vector;
|
||||
public abstract class DataSetFiltersMenu<D extends DBObject> extends VisualiserMenu implements DBObjectFilter_<D> {
|
||||
//--
|
||||
protected DataSet<?, D> dataSet;
|
||||
protected Vector<FilterFlagMenuItem<D>> field_filters;
|
||||
protected Vector<FilterFlag<D>> 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<D> filter : field_filters)
|
||||
for (FilterFlag<D> filter : field_filters)
|
||||
add(filter.getControl());
|
||||
addSeparator();
|
||||
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) {
|
||||
if (!isActive()) {
|
||||
//считаем без учета результатов
|
||||
for (FilterFlagMenuItem<D> filter : field_filters)
|
||||
for (FilterFlag<D> filter : field_filters)
|
||||
filter.Validate(object);
|
||||
return true;
|
||||
}
|
||||
boolean res = false;
|
||||
for (FilterFlagMenuItem<D> filter : field_filters)
|
||||
for (FilterFlag<D> filter : field_filters)
|
||||
if (filter.Validate(object))
|
||||
res |= true;
|
||||
return res;
|
||||
@@ -61,22 +61,22 @@ public abstract class DataSetFiltersMenu<D extends DBObject> 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<D> filter : field_filters)
|
||||
for (FilterFlag<D> filter : field_filters)
|
||||
filter.DropMatchesCount();
|
||||
}
|
||||
@Override
|
||||
public void ShowMatchesCount() {
|
||||
for (FilterFlagMenuItem<D> filter : field_filters)
|
||||
for (FilterFlag<D> filter : field_filters)
|
||||
filter.ShowMatchesCount();
|
||||
}
|
||||
public boolean isActive() {
|
||||
for (FilterFlagMenuItem<D> filter : field_filters) {
|
||||
for (FilterFlag<D> filter : field_filters) {
|
||||
if (filter.isActive())
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -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<D extends DBObject> 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<D extends DBObject> 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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
22
src/Common/Visual/FilterMenuFlag.java
Normal file
22
src/Common/Visual/FilterMenuFlag.java
Normal 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));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user