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