提交 89b611e5 编写于 作者: S serge-rider

#3550 Object searcher fix (NPE). Search in property tree.

上级 92a3fdcb
......@@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.edit.DBEObjectManager;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry;
import org.jkiss.dbeaver.ui.ISearchExecutor;
import org.jkiss.dbeaver.ui.editors.IDatabaseEditor;
public class ObjectEditorPageControl extends ProgressPageControl {
......@@ -101,6 +102,24 @@ public class ObjectEditorPageControl extends ProgressPageControl {
}
}
@Override
protected ISearchExecutor getSearchRunner() {
ISearchExecutor searchRunner = super.getSearchRunner();
if (searchRunner != null) {
return searchRunner;
}
return new ISearchExecutor() {
@Override
public boolean performSearch(String searchString, int options) {
return false;
}
@Override
public void cancelSearch() {
}
};
}
/*
@Override
......
......@@ -22,10 +22,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
......@@ -42,6 +39,7 @@ import org.jkiss.dbeaver.model.DBPEvent;
import org.jkiss.dbeaver.model.DBPEventListener;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
......@@ -163,7 +161,7 @@ public class TabbedFolderPageProperties extends TabbedFolderPage implements IRef
}
}
private class PropertiesPageControl extends ProgressPageControl implements ILazyPropertyLoadListener {
private class PropertiesPageControl extends ProgressPageControl implements ILazyPropertyLoadListener, ISearchExecutor {
PropertiesPageControl(Composite parent) {
super(parent, SWT.SHEET);
......@@ -215,6 +213,11 @@ public class TabbedFolderPageProperties extends TabbedFolderPage implements IRef
});
}
@Override
protected ISearchExecutor getSearchRunner() {
return this;
}
@Override
protected void fillCustomActions(IContributionManager contributionManager) {
super.fillCustomActions(contributionManager);
......@@ -239,6 +242,17 @@ public class TabbedFolderPageProperties extends TabbedFolderPage implements IRef
}
}
@Override
public boolean performSearch(String searchString, int options) {
propertyTree.setFilters(new PropertyTreeViewer.NodeFilter(searchString));
propertyTree.expandAll();
return propertyTree.getTree().getItemCount() > 0;
}
@Override
public void cancelSearch() {
propertyTree.resetFilters();
}
}
private boolean isAttached() {
......
......@@ -701,6 +701,26 @@ public class PropertyTreeViewer extends TreeViewer {
}
}
public static class NodeFilter extends ViewerFilter {
private final String searchString;
public NodeFilter(String searchString) {
this.searchString = searchString.toUpperCase(Locale.ENGLISH);
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof TreeNode) {
DBPPropertyDescriptor property = ((TreeNode) element).property;
if (property != null) {
return property.getDisplayName().toUpperCase(Locale.ENGLISH).contains(searchString);
} else if (((TreeNode) element).category != null) {
return true;
}
}
return false;
}
}
class PropsContentProvider implements IStructuredContentProvider, ITreeContentProvider {
@Override
public void inputChanged(Viewer v, Object oldInput, Object newInput)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册