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

#2398 Object selector dialog redesign (modeless)


Former-commit-id: 18b93f4e
上级 364650e5
......@@ -21,6 +21,8 @@ import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
......@@ -63,6 +65,7 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
private List<T> selectedObjects = new ArrayList<>();
private boolean singleSelection;
private Font boldFont;
private boolean modeless;
public SelectObjectDialog(Shell parentShell, String title, boolean singleSelection, String listId, Collection<T> objects, Collection<T> selected)
{
......@@ -80,7 +83,7 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
@Override
protected IDialogSettings getDialogBoundsSettings()
{
return UIUtils.getDialogSettings(DIALOG_ID);
return UIUtils.getDialogSettings(DIALOG_ID + "." + listId);
}
@Override
......@@ -89,6 +92,15 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
return true;
}
public void setModeless(boolean modeless) {
this.modeless = modeless;
if (modeless) {
setShellStyle(SWT.SHELL_TRIM);
} else {
setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.MAX | SWT.RESIZE);
}
}
@Override
protected Control createDialogArea(Composite parent)
{
......@@ -183,7 +195,9 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
selectedObjects.clear();
selectedObjects.addAll(selection.toList());
getButton(IDialogConstants.OK_ID).setEnabled(!selectedObjects.isEmpty());
if (!modeless) {
getButton(IDialogConstants.OK_ID).setEnabled(!selectedObjects.isEmpty());
}
}
});
objectList.setDoubleClickHandler(new IDoubleClickListener()
......@@ -191,7 +205,7 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
@Override
public void doubleClick(DoubleClickEvent event)
{
if (getButton(IDialogConstants.OK_ID).isEnabled()) {
if (modeless || getButton(IDialogConstants.OK_ID).isEnabled()) {
okPressed();
}
}
......@@ -199,9 +213,26 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
objectList.loadData();
Control listControl = objectList.getItemsViewer().getControl();
listControl.setFocus();
listControl.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
okPressed();
}
});
return group;
}
@Override
protected Control createButtonBar(Composite parent) {
if (this.modeless) {
return UIUtils.createPlaceholder(parent, 1);
}
return super.createButtonBar(parent);
}
@Override
public int open() {
int result = super.open();
......@@ -215,7 +246,9 @@ public class SelectObjectDialog<T extends DBPObject> extends Dialog {
protected Control createContents(Composite parent)
{
Control ctl = super.createContents(parent);
getButton(IDialogConstants.OK_ID).setEnabled(false);
if (!modeless) {
getButton(IDialogConstants.OK_ID).setEnabled(false);
}
return ctl;
}
......
......@@ -767,6 +767,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven
"SchemaSelector" + (curDS == null ? "": "_" + curDS.getDriver().getId()),
items,
selectedDB == null ? null : Collections.singletonList(selectedDB));
dialog.setModeless(true);
if (dialog.open() == IDialogConstants.CANCEL_ID) {
return;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册