package org.argeo.cms.ui.dialogs;
import org.argeo.cms.CmsMsg;
+import org.argeo.cms.ui.util.CmsUiUtils;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.Selected;
import org.argeo.eclipse.ui.dialogs.LightweightDialog;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
protected Control createDialogArea(Composite parent) {
parent.setLayout(new GridLayout());
+ TraverseListener traverseListener = new TraverseListener() {
+ private static final long serialVersionUID = -1158892811534971856L;
+
+ public void keyTraversed(TraverseEvent e) {
+ if (e.detail == SWT.TRAVERSE_RETURN)
+ okPressed();
+ else if (e.detail == SWT.TRAVERSE_ESCAPE)
+ cancelPressed();
+ }
+ };
+
// message
Composite body = new Composite(parent, SWT.NONE);
+ body.addTraverseListener(traverseListener);
GridLayout bodyGridLayout = new GridLayout();
bodyGridLayout.marginHeight = 20;
bodyGridLayout.marginWidth = 20;
body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Label messageLbl = new Label(body, SWT.WRAP);
+ CmsUiUtils.markup(messageLbl);
+ messageLbl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
messageLbl.setFont(EclipseUiUtils.getBoldFont(parent));
if (message != null)
messageLbl.setText(message);
// buttons
Composite buttons = new Composite(parent, SWT.NONE);
+ buttons.addTraverseListener(traverseListener);
buttons.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
if (kind == INFORMATION || kind == WARNING) {
GridLayout layout = new GridLayout(1, true);
close.setText(CmsMsg.close.lead());
close.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
close.addSelectionListener((Selected) (e) -> closeShell(OK));
+ close.setFocus();
+ close.addTraverseListener(traverseListener);
+
+ buttons.setTabList(new Control[] { close });
} else if (kind == CONFIRM || kind == QUESTION) {
+ Control input = createInputArea(body);
+ if (input != null) {
+ input.addTraverseListener(traverseListener);
+ body.setTabList(new Control[] { input });
+ }
GridLayout layout = new GridLayout(2, true);
layout.marginWidth = 0;
layout.marginHeight = 0;
cancel.setText(CmsMsg.cancel.lead());
cancel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
cancel.addSelectionListener((Selected) (e) -> cancelPressed());
+ cancel.addTraverseListener(traverseListener);
Button ok = new Button(buttons, SWT.FLAT);
ok.setText(CmsMsg.ok.lead());
ok.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
ok.addSelectionListener((Selected) (e) -> okPressed());
+ ok.addTraverseListener(traverseListener);
+ if (input == null)
+ ok.setFocus();
+ else
+ input.setFocus();
+
+ buttons.setTabList(new Control[] { ok, cancel });
}
// pack();
+ parent.setTabList(new Control[] { body, buttons });
return body;
}
+ protected Control createInputArea(Composite parent) {
+ return null;
+ }
+
protected void okPressed() {
closeShell(OK);
}