diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/Component.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/Component.java index 2c18707bc34..b72b8eaff09 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/Component.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/Component.java @@ -9,12 +9,7 @@ package com.sap.sailing.gwt.ui.shared.components; * the type that describes this component's settings (if any). Use {@link Object} in case your components * doesn't support any settings. */ -public interface Component { - /** - * @return the name to display to a user for quick navigation to this component - */ - String getLocalizedShortName(); - +public interface Component extends ComponentForestEntry { /** * @return whether this component has settings that a user may change; if so, */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForest.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForest.java new file mode 100755 index 00000000000..965d94bffdd --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForest.java @@ -0,0 +1,12 @@ +package com.sap.sailing.gwt.ui.shared.components; + +/** + * {@link Component}s are arranged in an "ordered forest" structure (multi-rooted tree with the roots ordered in a sequence). + * Each hierarchy level can optionally provide a localized name. Each hierarchy level consists of one or more + * + * @author Axel Uhl (d043530) + * + */ +public interface ComponentForest extends ComponentForestEntry { + Iterable getEntries(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForestEntry.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForestEntry.java new file mode 100755 index 00000000000..50cec5ce4ae --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentForestEntry.java @@ -0,0 +1,8 @@ +package com.sap.sailing.gwt.ui.shared.components; + +public interface ComponentForestEntry { + /** + * @return the name to display to a user for quick navigation to this component + */ + String getLocalizedShortName(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentHierarchy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentHierarchy.java deleted file mode 100755 index 9dcff35b70e..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/ComponentHierarchy.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.sap.sailing.gwt.ui.shared.components; - -public interface ComponentHierarchy { - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialog.java index 5a157736e81..df926fe1d45 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialog.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared.components; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.FocusWidget; import com.sap.sailing.gwt.ui.client.DataEntryDialog; import com.sap.sailing.gwt.ui.client.StringConstants; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -30,4 +31,13 @@ public class SettingsDialog extends DataEntryDialog return settingsDialogComponent.getResult(); } + @Override + public void show() { + super.show(); + FocusWidget focusWidget = settingsDialogComponent.getFocusWidget(); + if (focusWidget != null) { + focusWidget.setFocus(true); + } + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialogComponent.java index 73e345e026e..9add54e3ed1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/SettingsDialogComponent.java @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.ui.shared.components; +import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.DataEntryDialog; import com.sap.sailing.gwt.ui.client.DataEntryDialog.Validator; @@ -26,4 +27,11 @@ public interface SettingsDialogComponent { * changes. If null is returned, no validation will be performed. */ Validator getValidator(); + + /** + * @return null if no initial focus on any widget is desired, or a widget from the + * {@link #getAdditionalWidget(DataEntryDialog)} result that will then receive the focus when the settings + * dialog is shown + */ + FocusWidget getFocusWidget(); }