From bcd0537873318390ee9b7539e104baf43ac27f27 Mon Sep 17 00:00:00 2001 From: Jeff Yu Date: Fri, 6 Jul 2012 00:32:08 +1000 Subject: [PATCH] Added the user preference setting form. --- .../gadgets/web/client/widgets/Portlet.java | 74 +++++++++++++++++++ .../gadgets/web/client/widgets/Portlet.ui.xml | 5 +- .../server/ShindigGadgetMetadataService.java | 5 +- gadget-web/src/main/webapp/Application.css | 2 + .../main/webapp/widgets-sample/portlets.html | 19 ++++- 5 files changed, 100 insertions(+), 5 deletions(-) diff --git a/gadget-web/src/main/java/org/overlord/gadgets/web/client/widgets/Portlet.java b/gadget-web/src/main/java/org/overlord/gadgets/web/client/widgets/Portlet.java index b8ce6c6..964c4c8 100644 --- a/gadget-web/src/main/java/org/overlord/gadgets/web/client/widgets/Portlet.java +++ b/gadget-web/src/main/java/org/overlord/gadgets/web/client/widgets/Portlet.java @@ -17,6 +17,8 @@ */ package org.overlord.gadgets.web.client.widgets; +import java.util.List; + import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; @@ -30,6 +32,9 @@ import org.overlord.gadgets.web.client.URLBuilder; import org.overlord.gadgets.web.client.util.RestfulInvoker; +import org.overlord.gadgets.web.shared.dto.UserPreference; +import org.overlord.gadgets.web.shared.dto.UserPreference.Option; +import org.overlord.gadgets.web.shared.dto.UserPreference.UserPreferenceSetting; import org.overlord.gadgets.web.shared.dto.WidgetModel; /** @@ -60,6 +65,7 @@ interface PortletUiBinder extends UiBinder {} @UiField FlowPanel userPreference; @UiField FlowPanel portletContent; @UiField Frame gadgetSpec; + @UiField FlexTable prefTable; private Portlet(final String wid, final String pid) { widgetId = wid; @@ -90,6 +96,7 @@ public void onResponseReceived(Request request, Response response) { maxBtn.addClickHandler(new ClickHandler(){ public void onClick(ClickEvent event) { maximizeWindow(id, portalId); + hideUserPref(id); showRestoreButton(id); gadgetSpec.setWidth("100%"); gadgetSpec.setUrl("http://localhost:8080/gadget-server/gadgets/ifr?url=" + wmodel.getSpecUrl() + "?" + getCanvasView()); @@ -103,6 +110,12 @@ public void onClick(ClickEvent event) { gadgetSpec.setUrl("http://localhost:8080/gadget-server/gadgets/ifr?url=" + wmodel.getSpecUrl() + "?" + getHomeView()); } }); + + settingBtn.addClickHandler(new ClickHandler(){ + public void onClick(ClickEvent event) { + showUserPref(id); + } + }); gadgetSpec.getElement().setId(widgetId); } @@ -111,6 +124,9 @@ public Portlet(WidgetModel model, int width, String portalId) { this(String.valueOf(model.getWidgetId()), portalId); title.setText(model.getName()); wmodel = model; + + generateUserPref(model); + gadgetSpec.getElement().setAttribute("scrolling", "no"); gadgetSpec.getElement().setAttribute("frameborder", "0"); gadgetSpec.setWidth(width - 20 + "px"); @@ -118,6 +134,55 @@ public Portlet(WidgetModel model, int width, String portalId) { gadgetSpec.setUrl("http://localhost:8080/gadget-server/gadgets/ifr?url=" + model.getSpecUrl() + "?" + getHomeView()); } + + private void generateUserPref(WidgetModel model) { + UserPreference pref = model.getUserPreference(); + int row = 0; + for (UserPreferenceSetting prefSet : pref.getData()) { + if (UserPreference.Type.STRING.equals(prefSet.getType())) { + prefTable.setWidget(row, 0, new Label(prefSet.getDisplayName())); + prefTable.setWidget(row, 1, createTextBox(prefSet.getName(), prefSet.getDefaultValue())); + } else if (UserPreference.Type.ENUM.equals(prefSet.getType())) { + prefTable.setWidget(row, 0, new Label(prefSet.getDisplayName())); + prefTable.setWidget(row, 1, createSelectBox(prefSet.getName(), prefSet.getDefaultValue(), prefSet.getEnumOptions())); + } + row ++; + } + prefTable.setWidget(row, 1, createPrefSettingButtons()); + + } + + private Widget createTextBox(String name, String defaultVal) { + TextBox textBox = new TextBox(); + textBox.setName(name); + textBox.setValue(defaultVal); + return textBox; + } + + private Widget createSelectBox(String name, String defaultVal, List