提交 d6361100 编写于 作者: J jurgen

Value preview panel

上级 1e55dcc9
......@@ -112,6 +112,8 @@ command.org.jkiss.dbeaver.core.compare.objects.description=Compare database obje
command.org.jkiss.dbeaver.core.resultset.toggleMode.name=Toggle Grid/Record view
command.org.jkiss.dbeaver.core.resultset.toggleMode.description=Toggle Result Set Grid/Record View
command.org.jkiss.dbeaver.core.resultset.togglePreview.name=Toggle value view panel
command.org.jkiss.dbeaver.core.resultset.togglePreview.description=Toggle result set cell value view panel
command.org.jkiss.dbeaver.core.resultset.row.first.name=First row
command.org.jkiss.dbeaver.core.resultset.row.first.description=Move to first row
command.org.jkiss.dbeaver.core.resultset.row.previous.name=Previous row
......
......@@ -200,6 +200,7 @@
<command id="org.jkiss.dbeaver.core.compare.objects" name="%command.org.jkiss.dbeaver.core.compare.objects.name" description="%command.org.jkiss.dbeaver.core.compare.objects.description" categoryId="org.jkiss.dbeaver.core.util"/>
<command id="org.jkiss.dbeaver.core.resultset.toggleMode" name="%command.org.jkiss.dbeaver.core.resultset.toggleMode.name" description="%command.org.jkiss.dbeaver.core.resultset.toggleMode.description" categoryId="org.jkiss.dbeaver.core.rs"/>
<command id="org.jkiss.dbeaver.core.resultset.togglePreview" name="%command.org.jkiss.dbeaver.core.resultset.togglePreview.name" description="%command.org.jkiss.dbeaver.core.resultset.togglePreview.description" categoryId="org.jkiss.dbeaver.core.rs"/>
<command id="org.jkiss.dbeaver.core.resultset.row.first" name="%command.org.jkiss.dbeaver.core.resultset.row.first.name" description="%command.org.jkiss.dbeaver.core.resultset.row.first.description" categoryId="org.jkiss.dbeaver.core.rs"/>
<command id="org.jkiss.dbeaver.core.resultset.row.previous" name="%command.org.jkiss.dbeaver.core.resultset.row.previous.name" description="%command.org.jkiss.dbeaver.core.resultset.row.previous.description" categoryId="org.jkiss.dbeaver.core.rs"/>
<command id="org.jkiss.dbeaver.core.resultset.row.next" name="%command.org.jkiss.dbeaver.core.resultset.row.next.name" description="%command.org.jkiss.dbeaver.core.resultset.row.next.description" categoryId="org.jkiss.dbeaver.core.rs"/>
......@@ -271,6 +272,7 @@
<image commandId="org.jkiss.dbeaver.core.resultset.applyChanges" icon="icons/sql/accept.png"/>
<image commandId="org.jkiss.dbeaver.core.resultset.rejectChanges" icon="icons/sql/cancel.png"/>
<image commandId="org.jkiss.dbeaver.core.resultset.toggleMode" icon="icons/sql/resultset_record.png"/>
<image commandId="org.jkiss.dbeaver.core.resultset.togglePreview" icon="icons/sql/resultset_preview_show.png"/>
<image commandId="org.jkiss.dbeaver.core.qm.filter" icon="icons/misc/filter.png"/>
<image commandId="org.jkiss.dbeaver.core.qm.clear" icon="IMG_ETOOL_CLEAR"/>
......@@ -826,7 +828,15 @@
<!-- ResultSet handlers
Handle both row and text editor commands
-->
<handler commandId="org.jkiss.dbeaver.core.resultset.toggleMode" class="org.jkiss.dbeaver.ui.controls.resultset.ResultSetModeToggleHandler">
<handler commandId="org.jkiss.dbeaver.core.resultset.toggleMode" class="org.jkiss.dbeaver.ui.controls.resultset.ResultSetModeToggleModeHandler">
<activeWhen><reference definitionId="org.jkiss.dbeaver.core.ui.spreadsheet.control"/></activeWhen>
<enabledWhen>
<with variable="activeFocusControl">
<test property="org.jkiss.dbeaver.core.resultset.canToggle"/>
</with>
</enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.core.resultset.togglePreview" class="org.jkiss.dbeaver.ui.controls.resultset.ResultSetModeTogglePreviewHandler">
<activeWhen><reference definitionId="org.jkiss.dbeaver.core.ui.spreadsheet.control"/></activeWhen>
<enabledWhen>
<with variable="activeFocusControl">
......@@ -1370,6 +1380,7 @@
<extension point="org.eclipse.ui.bindings">
<key commandId="org.jkiss.dbeaver.core.resultset.toggleMode" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="TAB"/>
<key commandId="org.jkiss.dbeaver.core.resultset.togglePreview" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="F7"/>
<key commandId="org.jkiss.dbeaver.core.resultset.row.first" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="CTRL+SHIFT+ARROW_LEFT"/>
<key commandId="org.jkiss.dbeaver.core.resultset.row.previous" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="CTRL+ARROW_LEFT"/>
<key commandId="org.jkiss.dbeaver.core.resultset.row.next" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="CTRL+ARROW_RIGHT"/>
......
......@@ -112,6 +112,8 @@ public enum DBIcon
RS_REFRESH("rs_refresh", "/icons/sql/resultset_refresh.png"), //$NON-NLS-1$ //$NON-NLS-2$
RS_TOGGLE_RECORD("rs_toggle_record", "icons/sql/resultset_record.png"), //$NON-NLS-1$ //$NON-NLS-2$
RS_TOGGLE_GRID("rs_toggle_grid", "icons/sql/resultset_grid.png"), //$NON-NLS-1$ //$NON-NLS-2$
RS_PREVIEW_SHOW("rs_preview_show", "icons/sql/resultset_preview_show.png"), //$NON-NLS-1$ //$NON-NLS-2$
RS_PREVIEW_HIDE("rs_preview_hide", "icons/sql/resultset_preview_hide.png"), //$NON-NLS-1$ //$NON-NLS-2$
TXN_COMMIT_AUTO("txn_commit_auto", "icons/sql/txn_auto.png"), //$NON-NLS-1$ //$NON-NLS-2$
TXN_COMMIT_MANUAL("txn_commit_manual", "icons/sql/txn_manual.png"), //$NON-NLS-1$ //$NON-NLS-2$
......
......@@ -29,6 +29,7 @@ import org.jkiss.dbeaver.ui.controls.spreadsheet.SpreadsheetCommandHandler;
* ResultSetCommandHandler
*/
public class ResultSetCommandHandler extends SpreadsheetCommandHandler {
public static final String CMD_TOGGLE_PREVIEW = "org.jkiss.dbeaver.core.resultset.togglePreview";
public static final String CMD_TOGGLE_MODE = "org.jkiss.dbeaver.core.resultset.toggleMode";
public static final String CMD_ROW_FIRST = "org.jkiss.dbeaver.core.resultset.row.first";
public static final String CMD_ROW_PREVIOUS = "org.jkiss.dbeaver.core.resultset.row.previous";
......@@ -59,6 +60,8 @@ public class ResultSetCommandHandler extends SpreadsheetCommandHandler {
resultSet.refresh();
} else if (actionId.equals(CMD_TOGGLE_MODE)) {
resultSet.toggleMode();
} else if (actionId.equals(CMD_TOGGLE_PREVIEW)) {
resultSet.togglePreview();
} else if (actionId.equals(CMD_ROW_PREVIOUS) || actionId.equals(ITextEditorActionDefinitionIds.WORD_PREVIOUS)) {
resultSet.scrollToRow(ResultSetViewer.RowPosition.PREVIOUS);
} else if (actionId.equals(CMD_ROW_NEXT) || actionId.equals(ITextEditorActionDefinitionIds.WORD_NEXT)) {
......
......@@ -28,7 +28,7 @@ import java.util.Map;
/**
* ResultSetCommandHandler
*/
public class ResultSetModeToggleHandler extends ResultSetCommandHandler implements IElementUpdater {
public class ResultSetModeToggleModeHandler extends ResultSetCommandHandler implements IElementUpdater {
@Override
public void updateElement(UIElement element, Map parameters)
......
/*
* Copyright (C) 2010-2012 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.jkiss.dbeaver.ui.controls.resultset;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.commands.IElementUpdater;
import org.eclipse.ui.menus.UIElement;
import org.jkiss.dbeaver.ui.DBIcon;
import java.util.Map;
/**
* ResultSetModeTogglePreviewHandler
*/
public class ResultSetModeTogglePreviewHandler extends ResultSetCommandHandler implements IElementUpdater {
@Override
public void updateElement(UIElement element, Map parameters)
{
if (element.getServiceLocator() instanceof IWorkbenchPartSite) {
IWorkbenchPartSite partSite = (IWorkbenchPartSite) element.getServiceLocator();
if (partSite.getPart() instanceof ResultSetProvider) {
ResultSetViewer rsv = ((ResultSetProvider) partSite.getPart()).getResultSetViewer();
if (rsv != null) {
if (rsv.isPreviewVisible()) {
element.setText("Hide value view panel");
element.setIcon(DBIcon.RS_PREVIEW_HIDE.getImageDescriptor());
} else {
element.setText("Show value view panel");
element.setIcon(DBIcon.RS_PREVIEW_SHOW.getImageDescriptor());
}
}
}
}
}
}
\ No newline at end of file
......@@ -101,7 +101,6 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
static final Log log = LogFactory.getLog(ResultSetViewer.class);
private static final int DEFAULT_ROW_HEADER_WIDTH = 50;
private final Composite previewPane;
public enum ResultSetMode {
GRID,
......@@ -119,7 +118,11 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
private ResultSetMode mode;
private Composite viewerPanel;
private Text filtersText;
private Spreadsheet spreadsheet;
private final SashForm resultsSash;
private final Spreadsheet spreadsheet;
private final Composite previewPane;
private ResultSetProvider resultSetProvider;
private ResultSetDataReceiver dataReceiver;
private IThemeManager themeManager;
......@@ -189,7 +192,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
this.filtersText.setVisible(false);
{
SashForm resultsSash = new SashForm(viewerPanel, SWT.HORIZONTAL | SWT.SMOOTH);
resultsSash = new SashForm(viewerPanel, SWT.HORIZONTAL | SWT.SMOOTH);
resultsSash.setLayoutData(new GridData(GridData.FILL_BOTH));
resultsSash.setSashWidth(5);
resultsSash.setBackground(resultsSash.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
......@@ -205,9 +208,16 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
new RowLabelProvider());
this.spreadsheet.setLayoutData(new GridData(GridData.FILL_BOTH));
this.previewPane = new ViewValuePanel(resultsSash);
this.previewPane = new ViewValuePanel(resultsSash) {
@Override
protected void hidePanel()
{
togglePreview();
}
};
resultsSash.setWeights(new int[] {75, 25});
resultsSash.setWeights(new int[]{75, 25});
resultsSash.setMaximizedControl(spreadsheet);
}
createStatusBar(viewerPanel);
......@@ -410,6 +420,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
toolBarManager.add(refreshAction);
toolBarManager.add(new Separator());
toolBarManager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_TOGGLE_MODE));
toolBarManager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_TOGGLE_PREVIEW));
toolBarManager.add(new ConfigAction());
toolBarManager.createControl(statusBar);
......@@ -503,6 +514,25 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
}
}
public boolean isPreviewVisible()
{
return resultsSash.getMaximizedControl() == null;
}
public void togglePreview()
{
if (resultsSash.getMaximizedControl() == null) {
resultsSash.setMaximizedControl(spreadsheet);
} else {
resultsSash.setMaximizedControl(null);
}
// Refresh elements
ICommandService commandService = (ICommandService) site.getService(ICommandService.class);
if (commandService != null) {
commandService.refreshElements(ResultSetCommandHandler.CMD_TOGGLE_PREVIEW, null);
}
}
private void changeMode(ResultSetMode resultSetMode)
{
int oldRowNum = this.curRowNum, oldColNum = this.curColNum;
......@@ -2908,6 +2938,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
menuManager.add(new DictionaryEditAction());
menuManager.add(new Separator());
menuManager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_TOGGLE_MODE, CommandContributionItem.STYLE_CHECK));
menuManager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_TOGGLE_PREVIEW, CommandContributionItem.STYLE_CHECK));
menuManager.add(new Separator());
menuManager.add(new Action("Preferences") {
@Override
......
package org.jkiss.dbeaver.ui.controls.resultset;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
......@@ -13,7 +15,7 @@ import org.jkiss.dbeaver.ui.UIUtils;
/**
* RSV value view panel
*/
class ViewValuePanel extends Composite {
abstract class ViewValuePanel extends Composite {
private final Label columnImageLabel;
private final Label columnNameLabel;
......@@ -46,5 +48,15 @@ class ViewValuePanel extends Composite {
hideToolbar.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
ToolItem hideItem = new ToolItem(hideToolbar, SWT.PUSH);
hideItem.setText("Hide");
hideItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e)
{
hidePanel();
}
});
}
protected abstract void hidePanel();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册