X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fdialogs%2FCmsMessageDialog.java;h=fa85dff462c3dcac791c2f947faa4cf3a9431cee;hb=d2e617c3adda3874dd0fbc26ebe83f64814293c1;hp=521c4b010f92ba91ced8095a871becef21e4babe;hpb=9b0996e1dd6b7cd59e998b7f4210898c42c3631f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsMessageDialog.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsMessageDialog.java index 521c4b010..fa85dff46 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsMessageDialog.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsMessageDialog.java @@ -1,10 +1,13 @@ package org.argeo.cms.ui.dialogs; import org.argeo.cms.CmsMsg; +import org.argeo.cms.util.CmsUtils; 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; @@ -33,8 +36,20 @@ public class CmsMessageDialog extends LightweightDialog { 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; @@ -42,13 +57,15 @@ public class CmsMessageDialog extends LightweightDialog { body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Label messageLbl = new Label(body, SWT.WRAP); + CmsUtils.markup(messageLbl); + messageLbl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); messageLbl.setFont(EclipseUiUtils.getBoldFont(parent)); if (message != null) messageLbl.setText(message); - createInputArea(body); // 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); @@ -60,7 +77,16 @@ public class CmsMessageDialog extends LightweightDialog { 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; @@ -70,13 +96,22 @@ public class CmsMessageDialog extends LightweightDialog { 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; }