提交 a58df2e4 编写于 作者: S Serge Rider

Stats presentation UI fix.

Dynamic sel provider fix (NPE during editor init).
上级 c6a26529
...@@ -98,7 +98,7 @@ public class ResultSetPanelDescriptor extends AbstractContextDescriptor { ...@@ -98,7 +98,7 @@ public class ResultSetPanelDescriptor extends AbstractContextDescriptor {
return showByDefault; return showByDefault;
} }
public boolean supportedBy(DBPDataSource dataSource, ResultSetPresentationDescriptor presentation) { public boolean supportedBy(DBPDataSource dataSource, String presentationId, IResultSetPresentation.PresentationType presentationType) {
if (!supportedDataSources.isEmpty()) { if (!supportedDataSources.isEmpty()) {
if (dataSource == null) { if (dataSource == null) {
return false; return false;
...@@ -108,13 +108,12 @@ public class ResultSetPanelDescriptor extends AbstractContextDescriptor { ...@@ -108,13 +108,12 @@ public class ResultSetPanelDescriptor extends AbstractContextDescriptor {
return false; return false;
} }
} }
//if (.getId())
if (supportedPresentations.isEmpty() && supportedPresentationTypes.isEmpty()) { if (supportedPresentations.isEmpty() && supportedPresentationTypes.isEmpty()) {
return true; return true;
} }
return return
supportedPresentations.contains(presentation.getId()) || (presentationId != null && supportedPresentations.contains(presentationId)) ||
supportedPresentationTypes.contains(presentation.getPresentationType()); (presentationType != null && supportedPresentationTypes.contains(presentationType));
} }
public IResultSetPanel createInstance() throws DBException { public IResultSetPanel createInstance() throws DBException {
......
...@@ -110,10 +110,10 @@ public class ResultSetPresentationRegistry { ...@@ -110,10 +110,10 @@ public class ResultSetPresentationRegistry {
return panels; return panels;
} }
public List<ResultSetPanelDescriptor> getSupportedPanels(DBPDataSource dataSource, ResultSetPresentationDescriptor presentation) { public List<ResultSetPanelDescriptor> getSupportedPanels(DBPDataSource dataSource, String presentationId, IResultSetPresentation.PresentationType presentationType) {
List<ResultSetPanelDescriptor> result = new ArrayList<>(); List<ResultSetPanelDescriptor> result = new ArrayList<>();
for (ResultSetPanelDescriptor panel : panels) { for (ResultSetPanelDescriptor panel : panels) {
if (panel.supportedBy(dataSource, presentation)) { if (panel.supportedBy(dataSource, presentationId, presentationType)) {
result.add(panel); result.add(panel);
} }
} }
......
...@@ -518,7 +518,12 @@ public class ResultSetViewer extends Viewer ...@@ -518,7 +518,12 @@ public class ResultSetViewer extends Viewer
availablePanels.clear(); availablePanels.clear();
activePanels.clear(); activePanels.clear();
if (activePresentationDescriptor != null) { if (activePresentationDescriptor != null) {
availablePanels.addAll(ResultSetPresentationRegistry.getInstance().getSupportedPanels(getDataSource(), activePresentationDescriptor)); availablePanels.addAll(ResultSetPresentationRegistry.getInstance().getSupportedPanels(
getDataSource(), activePresentationDescriptor.getId(), activePresentationDescriptor.getPresentationType()));
} else {
// Stats presentation
availablePanels.addAll(ResultSetPresentationRegistry.getInstance().getSupportedPanels(
getDataSource(), null, IResultSetPresentation.PresentationType.COLUMNS));
} }
activePresentation.createPresentation(this, presentationPanel); activePresentation.createPresentation(this, presentationPanel);
......
...@@ -26,8 +26,7 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent; ...@@ -26,8 +26,7 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.action.*; import org.eclipse.jface.action.*;
import org.eclipse.jface.dialogs.*; import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.*; import org.eclipse.jface.text.*;
import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredSelection;
...@@ -70,7 +69,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressListener; ...@@ -70,7 +69,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.model.sql.*; import org.jkiss.dbeaver.model.sql.*;
import org.jkiss.dbeaver.model.sql.parser.SQLSemanticProcessor;
import org.jkiss.dbeaver.model.struct.DBSDataContainer; import org.jkiss.dbeaver.model.struct.DBSDataContainer;
import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.model.struct.DBSObjectSelector; import org.jkiss.dbeaver.model.struct.DBSObjectSelector;
...@@ -363,7 +361,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -363,7 +361,7 @@ public class SQLEditor extends SQLEditorBase implements
private class OpenContextJob extends AbstractJob { private class OpenContextJob extends AbstractJob {
private final DBPDataSource dataSource; private final DBPDataSource dataSource;
private Throwable error; private Throwable error;
protected OpenContextJob(DBPDataSource dataSource) { OpenContextJob(DBPDataSource dataSource) {
super("Open connection to " + dataSource.getContainer().getName()); super("Open connection to " + dataSource.getContainer().getName());
this.dataSource = dataSource; this.dataSource = dataSource;
setUser(true); setUser(true);
...@@ -389,7 +387,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -389,7 +387,7 @@ public class SQLEditor extends SQLEditorBase implements
private class CloseContextJob extends AbstractJob { private class CloseContextJob extends AbstractJob {
private final DBCExecutionContext context; private final DBCExecutionContext context;
protected CloseContextJob(DBCExecutionContext context) { CloseContextJob(DBCExecutionContext context) {
super("Close context " + context.getContextName()); super("Close context " + context.getContextName());
this.context = context; this.context = context;
setUser(true); setUser(true);
...@@ -1402,7 +1400,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -1402,7 +1400,7 @@ public class SQLEditor extends SQLEditorBase implements
} }
@Nullable @Nullable
public ResultSetViewer getActiveResultSetViewer() private ResultSetViewer getActiveResultSetViewer()
{ {
if (curResultsContainer != null) { if (curResultsContainer != null) {
return curResultsContainer.getResultSetController(); return curResultsContainer.getResultSetController();
...@@ -1475,7 +1473,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -1475,7 +1473,7 @@ public class SQLEditor extends SQLEditorBase implements
private final List<QueryResultsContainer> resultContainers = new ArrayList<>(); private final List<QueryResultsContainer> resultContainers = new ArrayList<>();
private DBDDataReceiver curDataReceiver = null; private DBDDataReceiver curDataReceiver = null;
public QueryProcessor() { QueryProcessor() {
// Create first (default) results provider // Create first (default) results provider
queryProcessors.add(this); queryProcessors.add(this);
createResultsProvider(0); createResultsProvider(0);
...@@ -1988,8 +1986,11 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -1988,8 +1986,11 @@ public class SQLEditor extends SQLEditorBase implements
DBeaverUI.syncExec(new Runnable() { DBeaverUI.syncExec(new Runnable() {
@Override @Override
public void run() { public void run() {
topOffset = getTextViewer().getTopIndexStartOffset(); TextViewer textViewer = getTextViewer();
visibleLength = getTextViewer().getBottomIndexEndOffset() - topOffset; if (textViewer != null) {
topOffset = textViewer.getTopIndexStartOffset();
visibleLength = textViewer.getBottomIndexEndOffset() - topOffset;
}
} }
}); });
if (scriptMode) { if (scriptMode) {
...@@ -2105,7 +2106,8 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -2105,7 +2106,8 @@ public class SQLEditor extends SQLEditorBase implements
@Override @Override
public IFindReplaceTarget getTarget() { public IFindReplaceTarget getTarget() {
ResultSetViewer rsv = getActiveResultSetViewer(); ResultSetViewer rsv = getActiveResultSetViewer();
boolean focusInEditor = getTextViewer().getTextWidget().isFocusControl(); TextViewer textViewer = getTextViewer();
boolean focusInEditor = textViewer != null && textViewer.getTextWidget().isFocusControl();
if (!focusInEditor) { if (!focusInEditor) {
if (rsv != null && rsv.getActivePresentation().getControl().isFocusControl()) { if (rsv != null && rsv.getActivePresentation().getControl().isFocusControl()) {
focusInEditor = false; focusInEditor = false;
...@@ -2119,8 +2121,10 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -2119,8 +2121,10 @@ public class SQLEditor extends SQLEditorBase implements
if (nested != null) { if (nested != null) {
return nested; return nested;
} }
} else if (textViewer != null) {
return textViewer.getFindReplaceTarget();
} }
return getTextViewer().getFindReplaceTarget(); return null;
} }
} }
...@@ -2228,7 +2232,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -2228,7 +2232,7 @@ public class SQLEditor extends SQLEditorBase implements
private class SaveJob extends AbstractJob { private class SaveJob extends AbstractJob {
private transient Boolean success = null; private transient Boolean success = null;
public SaveJob() { SaveJob() {
super("Save '" + getPartName() + "' data changes..."); super("Save '" + getPartName() + "' data changes...");
setUser(true); setUser(true);
} }
......
...@@ -197,11 +197,13 @@ public abstract class BaseTextEditor extends AbstractDecoratedTextEditor impleme ...@@ -197,11 +197,13 @@ public abstract class BaseTextEditor extends AbstractDecoratedTextEditor impleme
} }
} }
@Nullable
public TextViewer getTextViewer() public TextViewer getTextViewer()
{ {
return (TextViewer) getSourceViewer(); return (TextViewer) getSourceViewer();
} }
@Nullable
public SourceViewer getViewer() public SourceViewer getViewer()
{ {
return (SourceViewer) super.getSourceViewer(); return (SourceViewer) super.getSourceViewer();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册