提交 02140b8a 编写于 作者: S serge-rider

RSV decorator model


Former-commit-id: 153b0b6e
上级 79f9774c
......@@ -19,6 +19,7 @@ package org.jkiss.dbeaver.ui.controls.resultset;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbenchPartSite;
import org.jkiss.code.NotNull;
......@@ -63,6 +64,8 @@ public interface IResultSetController extends DBPContextProvider {
@NotNull
DBDDataReceiver getDataReceiver();
public Composite getControl();
boolean hasData();
boolean isHasMoreData();
......
......@@ -18,29 +18,30 @@
package org.jkiss.dbeaver.ui.controls.resultset;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import java.util.List;
/**
* ResultSet panel.
* RSV can embed multiple panels to provide additional visualization functionality
* ResultSet decorator.
*/
public interface IResultSetDecorator {
Composite createTopBar(ResultSetViewer viewer, Composite parent);
void attach(IResultSetController controller);
Composite createBottomBar(ResultSetViewer viewer, Composite parent);
Composite createTopBar(Composite parent);
Composite createBottomBar(Composite parent);
void setFocus();
void updateEditControls();
List<String> getSupportedPresentations();
void fillContextMenu(@NotNull IMenuManager manager, @Nullable final DBDAttributeBinding attr, @Nullable final ResultSetRow row);
}
......@@ -21,7 +21,9 @@ package org.jkiss.dbeaver.ui.controls.resultset;
* Result set provider
*/
public interface IResultSetListener {
void handleResultSetLoad();
void handleResultSetChange();
}
......@@ -184,4 +184,5 @@ class ResultSetDataReceiver implements DBDDataReceiver {
public void setFocusRow(int focusRow) {
this.focusRow = focusRow;
}
}
......@@ -20,13 +20,8 @@ import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.EditTextDialog;
import org.jkiss.dbeaver.ui.dialogs.ViewExceptionDialog;
......@@ -38,13 +33,11 @@ class StatusDetailsDialog extends EditTextDialog {
private static final String DIALOG_ID = "DBeaver.StatusDetailsDialog";//$NON-NLS-1$
private final ResultSetViewer resultSetViewer;
private final List<Throwable> warnings;
private Table warnTable;
public StatusDetailsDialog(ResultSetViewer resultSetViewer, String message, List<Throwable> warnings) {
super(resultSetViewer.getControl().getShell(), "Status details", message);
this.resultSetViewer = resultSetViewer;
public StatusDetailsDialog(Shell shell, String message, List<Throwable> warnings) {
super(shell, "Status details", message);
this.warnings = warnings;
textHeight = 100;
setReadonly(true);
......@@ -90,13 +83,10 @@ class StatusDetailsDialog extends EditTextDialog {
openWarning();
}
});
warnTable.addTraverseListener(new TraverseListener() {
@Override
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_RETURN) {
openWarning();
e.doit = false;
}
warnTable.addTraverseListener(e -> {
if (e.detail == SWT.TRAVERSE_RETURN) {
openWarning();
e.doit = false;
}
});
}
......
......@@ -21,8 +21,6 @@ import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
......@@ -30,6 +28,7 @@ import org.eclipse.swt.widgets.*;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPMessageType;
import org.jkiss.dbeaver.model.data.DBDDataReceiver;
import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.TextUtils;
import org.jkiss.dbeaver.ui.UIIcon;
......@@ -41,13 +40,13 @@ import org.jkiss.dbeaver.utils.RuntimeUtils;
*/
class StatusLabel extends Composite {
private final ResultSetViewer viewer;
private final IResultSetController viewer;
private final Label statusIcon;
private final Text statusText;
//private final Color colorDefault, colorError, colorWarning;
private DBPMessageType messageType;
public StatusLabel(@NotNull Composite parent, int style, @Nullable final ResultSetViewer viewer) {
public StatusLabel(@NotNull Composite parent, int style, @Nullable final IResultSetController viewer) {
super(parent, SWT.BORDER);
this.viewer = viewer;
......@@ -96,22 +95,22 @@ class StatusLabel extends Composite {
showDetails();
}
});
statusText.addTraverseListener(new TraverseListener() {
@Override
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_RETURN) {
showDetails();
}
statusText.addTraverseListener(e -> {
if (e.detail == SWT.TRAVERSE_RETURN) {
showDetails();
}
});
}
protected void showDetails() {
StatusDetailsDialog dialog = new StatusDetailsDialog(
viewer,
getMessage(),
viewer.getDataReceiver().getErrorList());
dialog.open();
DBDDataReceiver dataReceiver = viewer.getDataReceiver();
if (dataReceiver instanceof ResultSetDataReceiver) {
StatusDetailsDialog dialog = new StatusDetailsDialog(
viewer.getSite().getShell(),
getMessage(),
((ResultSetDataReceiver) dataReceiver).getErrorList());
dialog.open();
}
}
public void setStatus(String message) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册