нюансы с фильтром. отключение сортировки (что было ранее) как оказалось влияло на отрисовку всей таблицы. так что пока оставил включенным.

This commit is contained in:
2024-10-20 23:08:22 +03:00
parent 0b6f555099
commit 4999e1587f
10 changed files with 27 additions and 35 deletions

9
.idea/workspace.xml generated
View File

@@ -8,10 +8,15 @@
<component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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/Tables/HeaderTextFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/Tables/HeaderTextFilter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Errors/ErrorsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Errors/ErrorsDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Errors/MessageError.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Errors/MessageError.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/MessagesControlForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/MessagesControlForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Warnings/WarningsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Warnings/WarningsDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Notes/MessageNote.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Notes/MessageNote.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Recommendations/UI/RecommendationsForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Recommendations/UI/RecommendationsForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Warnings/MessageWarning.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Warnings/MessageWarning.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/Visual/Windows/FileForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/FileForm.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -20,10 +20,12 @@ public class HeaderTextFilter {
JTextField textField = null;
JPopupMenu popup = null;
private String filterValue = "";
private int offset=0;
//при одиночном клике, показать поверх заголовка столбца выпавшее меню с полем фильтра.
public HeaderTextFilter(DataSet dataSet_in, int columnIndex_in) {
public HeaderTextFilter(DataSet dataSet_in, int columnIndex_in, int offset_in) {
dataSet = dataSet_in;
columnIndex = columnIndex_in;
offset=offset_in;
}
public void Mount(DataTable control) {
popup = new JPopupMenu() {
@@ -42,13 +44,11 @@ public class HeaderTextFilter {
@Override
public void insertUpdate(DocumentEvent e) {
setFilterValue(getText());
// dataSet.getUI().changeHeaderFilterValue(columnIndex, getText());
dataSet.getUI().Show();
}
@Override
public void removeUpdate(DocumentEvent e) {
setFilterValue(getText());
// dataSet.getUI().changeHeaderFilterValue(columnIndex, getText());
dataSet.getUI().Show();
}
@Override
@@ -58,13 +58,15 @@ public class HeaderTextFilter {
}
};
popup.add(textField);
//запретить сортировать по столбцу,чтобы при нажатии на фильтр не сбивался
/*
Это лучше не использовать. убирание сортера по неведомым причинам урезает размер строк таблицы.
control.setRowSorter(null);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(control.getModel());
sorter.setSortable(columnIndex, false);
control.setRowSorter(sorter);
//--
control.getColumnModel().getColumn(columnIndex).setHeaderRenderer((table, value, isSelected, hasFocus, row, column1) -> new JLabel() {
*/
control.getColumnModel().getColumn(columnIndex).setHeaderRenderer(
(table, value, isSelected, hasFocus, row, column1) -> new JLabel() {
{
setIcon(Utils_.getIcon("/Common/icons/Filter.png"));
setForeground(control.getTableHeader().getForeground());
@@ -72,7 +74,6 @@ public class HeaderTextFilter {
setFont(control.getTableHeader().getFont());
setBorder(new MatteBorder(0, 0, 1, 1, Color.DARK_GRAY));
setText(dataSet.getUI().getColumnInfo(columnIndex).getName() + " : " + getFilterValue());
// setText(dataSet.getUI().getColumnInfo(columnIndex).getName() + " : " + dataSet.getUI().getHeaderFilterValue(columnIndex));
}
});
//--
@@ -83,16 +84,16 @@ public class HeaderTextFilter {
int clickedColumnIndex = control.getTableHeader().columnAtPoint(event.getPoint());
if (columnIndex == clickedColumnIndex) {
Rectangle columnRectangle = control.getTableHeader().getHeaderRect(columnIndex);
Dimension d = new Dimension(columnRectangle.width - 72, columnRectangle.height - 1);
Dimension d = new Dimension(columnRectangle.width - offset, columnRectangle.height - 1);
//-
popup.setPreferredSize(d);
popup.setMaximumSize(d);
popup.show(control.getTableHeader(), columnRectangle.x + 72, 0);
popup.show(control.getTableHeader(), columnRectangle.x + offset, 0);
//-
textField.setText(getFilterValue());
// textField.setText(dataSet.getUI().getHeaderFilterValue(columnIndex).toString());
textField.requestFocusInWindow();
textField.selectAll();
//-
}
}
}
@@ -104,8 +105,8 @@ public class HeaderTextFilter {
public void setFilterValue(String filterValue_in) {
this.filterValue = filterValue_in;
}
public boolean Validate(DBObject object){
public boolean Validate(DBObject object) {
Object field = dataSet.getUI().getFieldAt(object, columnIndex);
return (field instanceof String)&& field.toString().contains(filterValue);
return (field instanceof String) && field.toString().contains(filterValue);
}
}

View File

@@ -4,7 +4,6 @@ import _VisualDVM.ProjectData.Messages.MessagesDBTable;
public class ErrorsDBTable extends MessagesDBTable<MessageError> {
public ErrorsDBTable() {
super(MessageError.class);
// setUIContent(UI.getMainWindow().errorsPanel);
}
@Override
public String getSingleDescription() {

View File

@@ -1,7 +1,6 @@
package _VisualDVM.ProjectData.Messages.Errors;
import _VisualDVM.ProjectData.Messages.Message;
public class MessageError extends Message {
public static String filterValue = "";
public MessageError(String file_in, int line_in, String value_in, int group_in) throws Exception {
super(file_in,
line_in,
@@ -10,10 +9,4 @@ public class MessageError extends Message {
}
public MessageError() {
}
/*
@Override
public boolean isVisible() {
return super.isVisible() && value.contains(filterValue);
}
*/
}

View File

@@ -50,7 +50,7 @@ public class MessagesControlForm extends DataSetControlForm<Message> {
}
@Override
protected void createFilters() {
headersTextFilters.put(3, new HeaderTextFilter(dataSource, 3));
headersTextFilters.put(3, new HeaderTextFilter(dataSource, 3, 72));
}
@Override
protected Comparator<Message> getDefaultComparator() {

View File

@@ -1,16 +1,9 @@
package _VisualDVM.ProjectData.Messages.Notes;
import _VisualDVM.ProjectData.Messages.Message;
public class MessageNote extends Message {
public static String filterValue = "";
public MessageNote(String file_in, int line_in, String value_in, int group_in) throws Exception {
super(file_in, line_in, value_in, group_in);
}
public MessageNote() {
}
/*
@Override
public boolean isVisible() {
return super.isVisible() && value.contains(filterValue);
}
*/
}

View File

@@ -1,6 +1,7 @@
package _VisualDVM.ProjectData.Messages.Recommendations.UI;
import Common.Database.Tables.DataSet;
import Common.Visual.DataSetControlForm;
import Common.Visual.Tables.HeaderTextFilter;
import Common.Visual.Tables.RendererWrapText;
import _VisualDVM.ProjectData.Messages.Recommendations.MessageRecommendation;
@@ -29,6 +30,10 @@ public class RecommendationsForm extends DataSetControlForm<MessageRecommendatio
columns.get(1).setRendererClass(RendererWrapText.class);
}
@Override
protected void createFilters() {
headersTextFilters.put(1, new HeaderTextFilter(dataSource, 1, 72));
}
@Override
public boolean hasMenuBar() {
return false;
}

View File

@@ -1,7 +1,6 @@
package _VisualDVM.ProjectData.Messages.Warnings;
import _VisualDVM.ProjectData.Messages.Message;
public class MessageWarning extends Message {
public static String filterValue = "";
public MessageWarning(String file_in, int line_in, String value_in, int group_in) throws Exception {
super(file_in, line_in, value_in, group_in);
}

View File

@@ -6,6 +6,7 @@ import Common.Visual.DBObjectFilter;
import Common.Visual.DataSetControlForm;
import Common.Visual.DataSetFiltersMenu;
import Common.Visual.Menus.DataMenuBar;
import Common.Visual.Tables.HeaderTextFilter;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ProjectData.LanguageName;

View File

@@ -72,10 +72,6 @@ public class FileForm implements FileWindow, FormWithSplitters {
public FileForm(DBProjectFile file_in) {
LoadSplitters();
//--
MessageWarning.filterValue = "";
MessageError.filterValue = "";
MessageNote.filterValue = "";
//-
file = file_in;
//--
loopsForm = new TreeForm(FileLoopsTree.class, loopsGraphPanel);