提交 7e27df4c 编写于 作者: S serge-rider

UI fixes: menu managers dispose

上级 1da75044
......@@ -21,6 +21,8 @@ import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
......@@ -64,7 +66,14 @@ public class BaseChartComposite extends ChartComposite {
fillContextMenu(manager);
return manager.createContextMenu(this);
Menu contextMenu = manager.createContextMenu(this);
contextMenu.addMenuListener(new MenuAdapter() {
@Override
public void menuHidden(MenuEvent e) {
manager.dispose();
}
});
return contextMenu;
}
protected void fillContextMenu(MenuManager manager) {
......
......@@ -65,6 +65,8 @@ public class DashboardList extends Composite implements DashboardGroupContainer
layout.wrap = true;
layout.justify = false;
this.setLayout(layout);
//setMenu();
}
DBPDataSourceContainer getDataSourceContainer() {
......
......@@ -61,6 +61,7 @@ public class StyledTextUtils {
fillDefaultStyledTextContextMenu(manager, text));
menuMgr.setRemoveAllWhenShown(true);
text.setMenu(menuMgr.createContextMenu(text));
text.addDisposeListener(e -> menuMgr.dispose());
}
public static void fillDefaultStyledTextContextMenu(IMenuManager menu, final StyledText text) {
......
......@@ -177,16 +177,10 @@ public abstract class AbstractPresentation implements IResultSetPresentation, IS
// Register context menu
MenuManager menuMgr = new MenuManager(null, RESULT_SET_PRESENTATION_CONTEXT_MENU);
Menu menu = menuMgr.createContextMenu(getControl());
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager)
{
controller.fillContextMenu(
manager,
getCurrentAttribute(),
controller.getCurrentRow());
}
});
menuMgr.addMenuListener(manager -> controller.fillContextMenu(
manager,
getCurrentAttribute(),
controller.getCurrentRow()));
menuMgr.setRemoveAllWhenShown(true);
getControl().setMenu(menu);
controller.getSite().registerContextMenu(menuMgr, null);
......
......@@ -30,10 +30,7 @@ import org.eclipse.jface.viewers.*;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
......@@ -297,6 +294,7 @@ public class ResultSetViewer extends Viewer
});
Menu panelsMenu = panelsMenuManager.createContextMenu(this.panelFolder);
this.panelFolder.setMenu(panelsMenu);
this.panelFolder.addDisposeListener(e -> panelsMenuManager.dispose());
}
setEmptyPresentation();
......@@ -1097,6 +1095,7 @@ public class ResultSetViewer extends Viewer
Point displayAt = item.getParent().toDisplay(ib.x, ib.y + ib.height);
swtMenu.setLocation(displayAt);
swtMenu.setVisible(true);
tb.addDisposeListener(e -> panelMenu.dispose());
return;
}
}
......@@ -1874,6 +1873,12 @@ public class ResultSetViewer extends Viewer
final Menu contextMenu = menuManager.createContextMenu(getActivePresentation().getControl());
contextMenu.setLocation(location);
contextMenu.setVisible(true);
contextMenu.addMenuListener(new MenuAdapter() {
@Override
public void menuHidden(MenuEvent e) {
menuManager.dispose();
}
});
}
}
......
......@@ -22,6 +22,8 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
......@@ -104,6 +106,7 @@ public class AggregateColumnsPanel implements IResultSetPanel {
menuMgr.setRemoveAllWhenShown(true);
this.aggregateTable.setMenu(menuMgr.createContextMenu(this.aggregateTable));
this.aggregateTable.addDisposeListener(e -> menuMgr.dispose());
aggregateTable.addSelectionListener(new SelectionAdapter() {
@Override
......@@ -338,6 +341,12 @@ public class AggregateColumnsPanel implements IResultSetPanel {
}
final Menu contextMenu = menuManager.createContextMenu(aggregateTable);
contextMenu.addMenuListener(new MenuAdapter() {
@Override
public void menuHidden(MenuEvent e) {
menuManager.dispose();
}
});
contextMenu.setLocation(location);
contextMenu.setVisible(true);
}
......
......@@ -229,6 +229,9 @@ public class GroupingPanel implements IResultSetPanel {
}
class DefaultSortingAction extends Action implements IMenuCreator {
private MenuManager menuManager;
DefaultSortingAction() {
super(ResultSetMessages.controls_resultset_grouping_default_sorting, Action.AS_DROP_DOWN_MENU);
setImageDescriptor(DBeaverIcons.getImageDescriptor(UIIcon.DROP_DOWN));
......@@ -241,16 +244,21 @@ public class GroupingPanel implements IResultSetPanel {
@Override
public void dispose() {
if (menuManager != null) {
menuManager.dispose();
menuManager = null;
}
}
@Override
public Menu getMenu(Control parent)
{
MenuManager menuManager = new MenuManager();
menuManager.add(new ChangeSortingAction(null));
menuManager.add(new ChangeSortingAction(Boolean.FALSE));
menuManager.add(new ChangeSortingAction(Boolean.TRUE));
if (menuManager == null) {
menuManager = new MenuManager();
menuManager.add(new ChangeSortingAction(null));
menuManager.add(new ChangeSortingAction(Boolean.FALSE));
menuManager.add(new ChangeSortingAction(Boolean.TRUE));
}
return menuManager.createContextMenu(parent);
}
......
......@@ -115,6 +115,7 @@ class GenericFilterValueEdit {
});
menuMgr.setRemoveAllWhenShown(true);
tableViewer.getTable().setMenu(menuMgr.createContextMenu(tableViewer.getTable()));
tableViewer.getTable().addDisposeListener(e -> menuMgr.dispose());
}
Collection<DBDLabelValuePair> getMultiValues() {
......
......@@ -82,6 +82,7 @@ public class StatisticsPresentation extends AbstractPresentation {
});
menuMgr.setRemoveAllWhenShown(true);
table.setMenu(menuMgr.createContextMenu(table));
table.addDisposeListener(e -> menuMgr.dispose());
}
}
......
......@@ -249,24 +249,21 @@ public class ComplexObjectEditor extends TreeViewer {
Control control = getControl();
MenuManager menuMgr = new MenuManager();
Menu menu = menuMgr.createContextMenu(control);
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager)
{
if (!getSelection().isEmpty()) {
manager.add(copyNameAction);
manager.add(copyValueAction);
manager.add(new Separator());
}
try {
parentController.getValueManager().contributeActions(manager, parentController, editor);
} catch (DBCException e) {
log.error(e);
}
menuMgr.addMenuListener(manager -> {
if (!getSelection().isEmpty()) {
manager.add(copyNameAction);
manager.add(copyValueAction);
manager.add(new Separator());
}
try {
parentController.getValueManager().contributeActions(manager, parentController, editor);
} catch (DBCException e) {
log.error(e);
}
});
menuMgr.setRemoveAllWhenShown(true);
control.setMenu(menu);
control.addDisposeListener(e -> menuMgr.dispose());
}
@Override
......
......@@ -149,45 +149,42 @@ public class ObjectCompilerLogViewer extends DBCCompileLogBase {
{
MenuManager menuMgr = new MenuManager();
Menu menu = menuMgr.createContextMenu(infoTable);
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager)
{
IAction copyAction = new Action(WorkbenchMessages.Workbench_copy) {
@Override
public void run()
{
copySelectionToClipboard();
}
};
copyAction.setEnabled(infoTable.getSelectionCount() > 0);
copyAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_COPY);
IAction selectAllAction = new Action(WorkbenchMessages.Workbench_selectAll) {
@Override
public void run()
{
infoTable.selectAll();
}
};
selectAllAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_SELECT_ALL);
IAction clearLogAction = new Action(WorkbenchMessages.Workbench_revert) {
@Override
public void run()
{
infoTable.removeAll();
}
};
menuMgr.addMenuListener(manager -> {
IAction copyAction = new Action(WorkbenchMessages.Workbench_copy) {
@Override
public void run()
{
copySelectionToClipboard();
}
};
copyAction.setEnabled(infoTable.getSelectionCount() > 0);
copyAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_COPY);
IAction selectAllAction = new Action(WorkbenchMessages.Workbench_selectAll) {
@Override
public void run()
{
infoTable.selectAll();
}
};
selectAllAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_SELECT_ALL);
IAction clearLogAction = new Action(WorkbenchMessages.Workbench_revert) {
@Override
public void run()
{
infoTable.removeAll();
}
};
manager.add(copyAction);
manager.add(selectAllAction);
manager.add(clearLogAction);
//manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
}
manager.add(copyAction);
manager.add(selectAllAction);
manager.add(clearLogAction);
//manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
});
menuMgr.setRemoveAllWhenShown(true);
infoTable.setMenu(menu);
infoTable.addDisposeListener(e -> menuMgr.dispose());
}
public void copySelectionToClipboard()
......
......@@ -123,6 +123,7 @@ public class SQLEditorOutputViewer extends Composite {
});
menuMgr.setRemoveAllWhenShown(true);
text.setMenu(menuMgr.createContextMenu(text));
text.addDisposeListener(e -> menuMgr.dispose());
}
void clearOutput() {
......
......@@ -549,6 +549,7 @@ public class PropertyTreeViewer extends TreeViewer {
Menu menu = menuMgr.createContextMenu(getTree());
getTree().setMenu(menu);
getTree().addDisposeListener(e -> menuMgr.dispose());
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册