Skip to content

Commit

Permalink
Added the user preference setting form.
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffyu committed Jul 5, 2012
1 parent ed3acb5 commit bcd0537
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 5 deletions.
Expand Up @@ -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;
Expand All @@ -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;

/**
Expand Down Expand Up @@ -60,6 +65,7 @@ interface PortletUiBinder extends UiBinder<Widget, Portlet> {}
@UiField FlowPanel userPreference;
@UiField FlowPanel portletContent;
@UiField Frame gadgetSpec;
@UiField FlexTable prefTable;

private Portlet(final String wid, final String pid) {
widgetId = wid;
Expand Down Expand Up @@ -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());
Expand All @@ -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);
}
Expand All @@ -111,13 +124,65 @@ 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");
gadgetSpec.setHeight("250px");
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<Option> options) {
ListBox listBox = new ListBox(false);
listBox.setName(name);
for (Option option : options) {
listBox.addItem(option.getValue());
}

return listBox;
}

private Widget createPrefSettingButtons() {
HorizontalPanel btnPanel = new HorizontalPanel();
Button saveBtn = new Button("Save");
Button cancelBtn = new Button("Cancel");
btnPanel.add(saveBtn);
btnPanel.add(cancelBtn);
cancelBtn.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event) {
hideUserPref(id);
}
});
return btnPanel;
}

public String getHomeView() {
return "view=home";
}
Expand All @@ -130,6 +195,7 @@ public String getCanvasView() {
public void onAttach() {
super.onAttach();
hideRestoreButton(id);
hideUserPref(id);
}

/**
Expand Down Expand Up @@ -188,5 +254,13 @@ private static native void restoreWindow(String id) /*-{
$wnd.$(".column").sortable( "option", "disabled", false);
$wnd.$('#' + id).removeClass("portlet-canvas").addClass("portlet");
}-*/;

private static native void hideUserPref(String id) /*-{
$wnd.$('#' + id).find(".portlet-preference").hide();
}-*/;

private static native void showUserPref(String id) /*-{
$wnd.$('#' + id).find(".portlet-preference").show();
}-*/;

}
Expand Up @@ -11,7 +11,10 @@
<g:InlineLabel ui:field="removeBtn" styleName="ui-icon ui-icon-closethick portlet-close"></g:InlineLabel>
<g:InlineLabel ui:field="restoreBtn" styleName="ui-icon ui-icon-arrowthick-1-sw portlet-restore"></g:InlineLabel>
</g:FlowPanel>
<g:FlowPanel ui:field="userPreference"></g:FlowPanel>
<g:FlowPanel ui:field="userPreference" styleName="portlet-preference">
<g:FlexTable ui:field="prefTable">
</g:FlexTable>
</g:FlowPanel>
<g:FlowPanel styleName="portlet-content" ui:field="portletContent">
<g:Frame ui:field="gadgetSpec" styleName="portlet-iframe"></g:Frame>
</g:FlowPanel>
Expand Down
Expand Up @@ -85,7 +85,7 @@ public WidgetModel getGadgetMetadata(String gadgetUrl) {
theSetting.setRequired(Boolean.valueOf(setting.getString("required")));
theSetting.setType(UserPreference.Type.valueOf(theType));

if (responseObject.has("orderedEnumValues")) {
if (setting.has("orderedEnumValues")) {
JSONArray enumValues = setting.getJSONArray("orderedEnumValues");
for (int i =0; i < enumValues.length(); i++) {
UserPreference.Option option = new UserPreference.Option();
Expand Down Expand Up @@ -179,7 +179,6 @@ public Gadget getGadgetData(String gadgetUrl) {
gadget.setThumbnailUrl(modulePref.getString("thumbnail"));
gadget.setDescription(modulePref.getString("description"));


return gadget;
} catch (JSONException e) {
throw new IllegalArgumentException("Error occurred while processing response from shindig metadata call", e);
Expand All @@ -192,7 +191,7 @@ public static void main(String[] args) throws Exception {
ShindigGadgetMetadataService svc = new ShindigGadgetMetadataService();
//svc.getGadgetMetadata("http://www.gstatic.com/ig/modules/currency_converter/currency_converter_v2.xml");
//svc.getGadgetMetadata("http://www.gstatic.com/ig/modules/datetime_v3/datetime_v3.xml");
svc.getGadgetMetadata("http://research.stlouisfed.org/gadgets/code/alfredgraph.xml");
svc.getGadgetMetadata("http://rt-gadget.googlecode.com/git/gadget.xml");
//svc.getGadgetMetadata("http://www.labpixies.com/campaigns/todo/todo.xml");
//svc.getGadgetMetadata("http://sam-gadget.appspot.com/Gadget/SamGadget.gadget.xml");
}
Expand Down
2 changes: 2 additions & 0 deletions gadget-web/src/main/webapp/Application.css
Expand Up @@ -102,6 +102,8 @@ a {

.portlet-canvas {position:absolute;width:95%; height:100%; z-index:1000;left: 10px;top:50px}

.portlet-preference {border-bottom: 1px solid grey}

/** css for the Tab */
li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }

Expand Down
19 changes: 18 additions & 1 deletion gadget-web/src/main/webapp/widgets-sample/portlets.html
Expand Up @@ -41,6 +41,8 @@
.find( ".portlet-content" );

$(".portlet").find(".portlet-restore").hide();

$(".portlet").find(".portlet-userpref").hide();

$( ".portlet-header .ui-icon-triangle-1-s" ).click(function() {
$( this ).toggleClass( "ui-icon-triangle-1-s" ).toggleClass( "ui-icon-triangle-1-n" );
Expand All @@ -66,6 +68,10 @@
$("#news").find(".portlet-setting").show();
$("#news").find(".portlet-close").show();
});

$(".portlet-header .portlet-setting").click(function(){
$("#feed").find(".portlet-userpref").show();
});

$( ".column" ).disableSelection();
});
Expand All @@ -92,7 +98,18 @@
<div class="column">
<div class="portlet" id="feed">
<div class="portlet-header">Feeds</div>
<div class="portlet-userpref"></div>
<div class="portlet-userpref">
<form>
<table>
<tr>
<td>refresh Cycle</td><td><input type="text" /></td>
</tr>
<tr>
<td><input type="button" value="Save"></td><td><input type="button" value="Cancel"></td>
</tr>
</table>
</form>
</div>
<div class="portlet-content">
<div class="test">
Google Web Toolkit contains two powerful tools for creating optimized web applications. The GWT compiler performs comprehensive optimizations across your codebase — in-lining methods, removing dead code, optimizing strings, and more. By setting split-points in the code, it can also segment your download into multiple JavaScript fragments, splitting up large applications for faster startup time.
Expand Down

0 comments on commit bcd0537

Please sign in to comment.