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

#2050 Session manager auto-refresh

上级 e1295859
......@@ -16,6 +16,8 @@
*/
package org.jkiss.dbeaver.ui.controls.autorefresh;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
......@@ -114,18 +116,32 @@ public class AutoRefreshControl {
}
public void populateRefreshButton(ToolBar toolbar) {
if (autoRefreshButton != null && !autoRefreshButton.isDisposed()) {
autoRefreshButton.dispose();
}
autoRefreshButton = new ToolItem(toolbar, SWT.DROP_DOWN | SWT.NO_FOCUS);
autoRefreshButton.addSelectionListener(new AutoRefreshMenuListener(autoRefreshButton));
updateAutoRefreshToolbar();
}
public void populateRefreshButton(IContributionManager contributionManager) {
contributionManager.add(new ContributionItem() {
@Override
public void fill(ToolBar parent, int index) {
populateRefreshButton(parent);
}
});
}
private void updateAutoRefreshToolbar() {
if (isAutoRefreshEnabled()) {
autoRefreshButton.setImage(DBeaverIcons.getImage(UIIcon.RS_SCHED_STOP));
autoRefreshButton.setToolTipText(CoreMessages.sql_editor_resultset_filter_panel_btn_stop_refresh);
} else {
autoRefreshButton.setImage(DBeaverIcons.getImage(UIIcon.RS_SCHED_START));
autoRefreshButton.setToolTipText(CoreMessages.sql_editor_resultset_filter_panel_btn_config_refresh);
if (autoRefreshButton != null && !autoRefreshButton.isDisposed()) {
if (isAutoRefreshEnabled()) {
autoRefreshButton.setImage(DBeaverIcons.getImage(UIIcon.RS_SCHED_STOP));
autoRefreshButton.setToolTipText(CoreMessages.sql_editor_resultset_filter_panel_btn_stop_refresh);
} else {
autoRefreshButton.setImage(DBeaverIcons.getImage(UIIcon.RS_SCHED_START));
autoRefreshButton.setToolTipText(CoreMessages.sql_editor_resultset_filter_panel_btn_config_refresh);
}
}
}
......
......@@ -35,14 +35,18 @@ import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.PartInitException;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSession;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSessionManager;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.runtime.properties.PropertyCollector;
import org.jkiss.dbeaver.runtime.ui.DBUserInterface;
import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.UIIcon;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.controls.autorefresh.AutoRefreshControl;
import org.jkiss.dbeaver.ui.editors.StringEditorInput;
import org.jkiss.dbeaver.ui.editors.SubEditorSite;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase;
......@@ -50,6 +54,7 @@ import org.jkiss.dbeaver.ui.properties.PropertyTreeViewer;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.CommonUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
/**
......@@ -65,6 +70,7 @@ public class SessionManagerViewer
private Font boldFont;
private PropertyTreeViewer sessionProps;
private DBAServerSession curSession;
private AutoRefreshControl refreshControl;
public void dispose()
{
......@@ -80,6 +86,8 @@ public class SessionManagerViewer
SashForm sash = UIUtils.createPartDivider(part, composite, SWT.VERTICAL | SWT.SMOOTH);
sash.setLayoutData(new GridData(GridData.FILL_BOTH));
refreshControl = new AutoRefreshControl(sash, sessionManager.getClass().getSimpleName(), monitor -> DBeaverUI.syncExec(this::refreshSessions));
sessionTable = new SessionListControl(sash, part.getSite(), sessionManager);
sessionTable.getItemsViewer().addSelectionChangedListener(new ISelectionChangedListener() {
@Override
......@@ -169,6 +177,8 @@ public class SessionManagerViewer
{
sessionTable.loadData();
onSessionSelect(null);
refreshControl.scheduleAutoRefresh(false);
}
public void alterSession(final DBAServerSession session, Map<String, Object> options) {
......@@ -206,6 +216,7 @@ public class SessionManagerViewer
@Override
protected void fillCustomActions(IContributionManager contributionManager) {
contributeToToolbar(getSessionManager(), contributionManager);
refreshControl.populateRefreshButton(contributionManager);
contributionManager.add(new Action("Refresh sessions", DBeaverIcons.getImageDescriptor(UIIcon.REFRESH)) {
@Override
public void run()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册