From 046c42fa1fbf8912af7125c1d53e8b1c08d4bbf0 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 6 Feb 2012 17:51:51 +0100 Subject: [PATCH] Created the busy indicator component --- .../gwt/ui/leaderboard/LeaderboardPanel.java | 13 +++++++ .../shared/components/CollapsablePanel.java | 32 +---------------- .../components/IsEmbeddableComponent.java | 5 +++ .../gwt/ui/shared/panels/BusyIndicator.java | 27 ++++++++++++++ .../shared/panels/SharedPanelsResources.java | 11 ++++++ .../ui/shared/panels/SimpleBusyIndicator.java | 34 ++++++++++++++++++ .../client/images/busy_indicator_circle.gif} | Bin 7 files changed, 91 insertions(+), 31 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java rename java/com.sap.sailing.gwt.ui/{images/busy_indicator.gif => src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif} (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 0dbb992a7b4..0b1928f81e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -66,6 +66,7 @@ import com.sap.sailing.gwt.ui.shared.components.Component; import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent; import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; +import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; /** * A leaderboard essentially consists of a table widget that in its columns displays the entries. @@ -1524,4 +1525,16 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta leaderboardSelectionModel.setSelected(row, false); } } + + @Override + public BusyIndicator getBusyIndicator() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasBusyIndicator() { + // TODO Auto-generated method stub + return false; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java index 84b9e41cc7a..9a0d1582285 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java @@ -45,37 +45,7 @@ public final class CollapsablePanel extends Composite implements HasWidgets.ForI HasOpenHandlers, HasCloseHandlers { private static ComponentResources resources = GWT.create(ComponentResources.class); - - /** - * Used to wrap widgets in the header to provide click support. Effectively wraps the widget in an - * anchor to get automatic keyboard access. - */ - /* - private final class ClickableHeader extends SimplePanel { - - private ClickableHeader() { - // Anchor is used to allow keyboard access. - super(DOM.createAnchor()); - Element elem = getElement(); - DOM.setElementProperty(elem, "href", "javascript:void(0);"); - // Avoids layout problems from having blocks in inlines. - DOM.setStyleAttribute(elem, "display", "block"); - sinkEvents(Event.ONCLICK); - setStyleName(STYLENAME_HEADER); - } - - @Override - public void onBrowserEvent(Event event) { - // no need to call super. - switch (DOM.eventGetType(event)) { - case Event.ONCLICK: - // Prevent link default action. - DOM.eventPreventDefault(event); - setOpen(!isOpen); - } - } - } -*/ + /** * An {@link Animation} used to open the content. */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java index 39a0d170255..68cf63f533f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.components; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; public interface IsEmbeddableComponent { @@ -10,7 +11,11 @@ public interface IsEmbeddableComponent { Widget getToolbarWidget(); + BusyIndicator getBusyIndicator(); + boolean isEmbedded(); boolean hasToolbar(); + + boolean hasBusyIndicator(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java new file mode 100644 index 00000000000..9f03990f025 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java @@ -0,0 +1,27 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.FlowPanel; + +/** + * A widget to show if something is currently busy. + * @author Lennart Hensler (D054527) + */ +public abstract class BusyIndicator extends FlowPanel { + + protected final static String STYLE_NAME_PREFIX = "busyIndicator-"; + protected final static SharedPanelsResources RESOURCES = GWT.create(SharedPanelsResources.class); + + protected boolean busy; + + /** + * Sets the busy state of the BusyIndicator, which displays or hides the busy indicator. + * @param busy The new busy state + */ + abstract void setBusy(boolean busy); + + public boolean isBusy() { + return busy; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java new file mode 100644 index 00000000000..407a88bac5e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java @@ -0,0 +1,11 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.ImageResource; + +public interface SharedPanelsResources extends ClientBundle { + + @Source("com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif") + ImageResource busyIndicatorCircle(); + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java new file mode 100644 index 00000000000..b38dda54771 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.user.client.ui.Image; + +public class SimpleBusyIndicator extends BusyIndicator { + + private Image busyIndicator; + + /** + * Creates a new SimpleBusyIndicator with the busy state false.
+ * The busy indicator component is a circling GIF. + */ + public SimpleBusyIndicator() { + this(false); + } + + /** + * Creates a new SimpleBusyIndicator with a custom busy state.
+ * The busy indicator component is a circling GIF. + */ + public SimpleBusyIndicator(boolean busy) { + busyIndicator = new Image(RESOURCES.busyIndicatorCircle()); + busyIndicator.setStyleName(STYLE_NAME_PREFIX + "busyIndicatorCircle"); + add(busyIndicator); + setBusy(busy); + } + + @Override + void setBusy(boolean busy) { + this.busy = busy; + busyIndicator.setVisible(busy); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/images/busy_indicator.gif b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif similarity index 100% rename from java/com.sap.sailing.gwt.ui/images/busy_indicator.gif rename to java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif