提交 715afe28 编写于 作者: S serge-rider

Results viewer context menu redesign


Former-commit-id: cde364ce
上级 0c590830
......@@ -43,6 +43,9 @@ import java.util.List;
*/
public interface IResultSetController extends DBPContextProvider {
String MENU_ID_EDIT = "edit";
String MENU_ID_VIEW = "view";
String MENU_ID_FILTERS = "filters";
String MENU_GROUP_EDIT = "edit";
@NotNull
......
......@@ -1704,41 +1704,50 @@ public class ResultSetViewer extends Viewer
if (valueController != null) {
manager.add(ActionUtils.makeCommandContribution(site, IWorkbenchCommandConstants.EDIT_PASTE));
manager.add(ActionUtils.makeCommandContribution(site, CoreCommands.CMD_PASTE_SPECIAL));
manager.add(ActionUtils.makeCommandContribution(site, IWorkbenchCommandConstants.EDIT_DELETE));
// Edit items
manager.add(new Separator());
manager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_EDIT));
manager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_EDIT_INLINE));
if (!valueController.isReadOnly() && !DBUtils.isNullValue(value)/* && !attr.isRequired()*/) {
manager.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_CELL_SET_NULL));
}
}
manager.add(new GroupMarker(MENU_GROUP_EDIT));
}
if (valueController != null) {
// Menus from value handler
try {
manager.add(new Separator());
valueController.getValueManager().contributeActions(manager, valueController, null);
} catch (Exception e) {
log.error(e);
}
{
manager.add(new Separator());
MenuManager editMenu = new MenuManager(
CoreMessages.actions_menu_edit,
DBeaverIcons.getImageDescriptor(UIIcon.ROW_EDIT),
MENU_ID_EDIT); //$NON-NLS-1$
// Edit items
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_EDIT));
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_EDIT_INLINE));
if (!valueController.isReadOnly() && !DBUtils.isNullValue(value)/* && !attr.isRequired()*/) {
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_CELL_SET_NULL));
}
if (row.getState() == ResultSetRow.STATE_REMOVED || (row.changes != null && row.changes.containsKey(attr))) {
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_CELL_RESET));
}
if (row.getState() == ResultSetRow.STATE_REMOVED || (row.changes != null && row.changes.containsKey(attr))) {
manager.insertAfter(IResultSetController.MENU_GROUP_EDIT, ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_CELL_RESET));
// Menus from value handler
try {
valueController.getValueManager().contributeActions(editMenu, valueController, null);
} catch (Exception e) {
log.error(e);
}
editMenu.add(new Separator());
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_ADD));
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_COPY));
editMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_ROW_DELETE));
editMenu.add(new GroupMarker(MENU_GROUP_EDIT));
manager.add(editMenu);
}
}
}
}
if (dataSource != null && attr != null && model.getVisibleAttributeCount() > 0 && !model.isUpdateInProgress()) {
// Filters and View
manager.add(new Separator());
{
MenuManager filtersMenu = new MenuManager(
CoreMessages.controls_resultset_viewer_action_order_filter,
DBeaverIcons.getImageDescriptor(UIIcon.FILTER),
"filters"); //$NON-NLS-1$
MENU_ID_FILTERS); //$NON-NLS-1$
filtersMenu.setActionDefinitionId(ResultSetCommandHandler.CMD_FILTER_MENU);
filtersMenu.setRemoveAllWhenShown(true);
filtersMenu.addMenuListener(manager1 -> fillFiltersMenu(attr, manager1));
......@@ -1748,7 +1757,7 @@ public class ResultSetViewer extends Viewer
MenuManager viewMenu = new MenuManager(
"View/Format",
null,
"view"); //$NON-NLS-1$
MENU_ID_VIEW); //$NON-NLS-1$
List<? extends DBDAttributeTransformerDescriptor> transformers =
dataSource.getContainer().getPlatform().getValueHandlerRegistry().findTransformers(
......
......@@ -39,6 +39,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.viewers.ISelection;
......@@ -179,11 +180,8 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
fireSelectionChanged(new SpreadsheetSelectionImpl());
}
});
this.spreadsheet.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseScrolled(MouseEvent e) {
this.spreadsheet.addMouseWheelListener(e -> {
}
});
spreadsheet.addControlListener(new ControlAdapter() {
@Override
......@@ -734,28 +732,31 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
if (attr != null && row != null) {
final List<Object> selectedColumns = spreadsheet.getColumnSelection();
if (!controller.isRecordMode() && !selectedColumns.isEmpty()) {
String hideTitle;
if (selectedColumns.size() == 1) {
DBDAttributeBinding columnToHide = (DBDAttributeBinding) selectedColumns.get(0);
hideTitle = "Hide column '" + columnToHide.getName() + "'";
} else {
hideTitle = "Hide selected columns (" + selectedColumns.size() + ")";
}
manager.insertAfter(IResultSetController.MENU_GROUP_EDIT, new Action(hideTitle) {
@Override
public void run()
{
ResultSetModel model = controller.getModel();
if (selectedColumns.size() >= model.getVisibleAttributeCount()) {
UIUtils.showMessageBox(getControl().getShell(), "Hide columns", "Can't hide all result columns, at least one column must be visible", SWT.ERROR);
} else {
for (int i = 0, selectedColumnsSize = selectedColumns.size(); i < selectedColumnsSize; i++) {
model.setAttributeVisibility((DBDAttributeBinding) selectedColumns.get(i), false);
IMenuManager viewMenu = (IMenuManager) manager.find(ResultSetViewer.MENU_ID_VIEW);
if (viewMenu != null) {
String hideTitle;
if (selectedColumns.size() == 1) {
DBDAttributeBinding columnToHide = (DBDAttributeBinding) selectedColumns.get(0);
hideTitle = "Hide column '" + columnToHide.getName() + "'";
} else {
hideTitle = "Hide selected columns (" + selectedColumns.size() + ")";
}
viewMenu.add(new Separator());
viewMenu.add(new Action(hideTitle) {
@Override
public void run() {
ResultSetModel model = controller.getModel();
if (selectedColumns.size() >= model.getVisibleAttributeCount()) {
UIUtils.showMessageBox(getControl().getShell(), "Hide columns", "Can't hide all result columns, at least one column must be visible", SWT.ERROR);
} else {
for (int i = 0, selectedColumnsSize = selectedColumns.size(); i < selectedColumnsSize; i++) {
model.setAttributeVisibility((DBDAttributeBinding) selectedColumns.get(i), false);
}
refreshData(true, false, true);
}
refreshData(true, false, true);
}
}
});
});
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册