diff --git a/src/main/java/org/gcube/portlets/user/questions/client/Questions.java b/src/main/java/org/gcube/portlets/user/questions/client/Questions.java index 3c2438a..eb00788 100644 --- a/src/main/java/org/gcube/portlets/user/questions/client/Questions.java +++ b/src/main/java/org/gcube/portlets/user/questions/client/Questions.java @@ -1,20 +1,15 @@ package org.gcube.portlets.user.questions.client; import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.RootPanel; /** * Entry point classes define onModuleLoad(). */ public class Questions implements EntryPoint { - /** - * Create a remote service proxy to talk to the server-side Greeting service. - */ - private final QuestionsServiceAsync greetingService = GWT.create(QuestionsService.class); - - + public void onModuleLoad() { - + RootPanel.get("questionsManagersDiv").add(new VREManagersPanel()); } } diff --git a/src/main/java/org/gcube/portlets/user/questions/client/VREManagersPanel.java b/src/main/java/org/gcube/portlets/user/questions/client/VREManagersPanel.java new file mode 100644 index 0000000..d61c778 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/questions/client/VREManagersPanel.java @@ -0,0 +1,69 @@ +package org.gcube.portlets.user.questions.client; + +import java.util.ArrayList; + +import org.gcube.portal.databook.shared.UserInfo; +import org.gcube.portlets.user.questions.client.resources.Images; +import org.gcube.portlets.user.questions.client.ui.DisplayBadge; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HasAlignment; +import com.google.gwt.user.client.ui.HasVerticalAlignment; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.VerticalPanel; + +public class VREManagersPanel extends Composite { + + private final QuestionsServiceAsync service = GWT.create(QuestionsService.class); + + + private Image loadingImage; + + private VerticalPanel mainPanel = new VerticalPanel(); + public VREManagersPanel() { + super(); + Images images = GWT.create(Images.class); + loadingImage = new Image(images.membersLoader().getSafeUri()); + mainPanel.add(loadingImage); + showLoader(); + service.getManagers(new AsyncCallback>() { + + @Override + public void onSuccess(ArrayList users) { + mainPanel.clear(); + mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT); + mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP); + if (users == null || users.isEmpty()) { + mainPanel.add(new HTML("
Ops, something went wrong. Please reload this page.
")); + } else { + for (int i = 0; i < users.size(); i++) { + mainPanel.add(new DisplayBadge(users.get(i))); + } + } + } + + @Override + public void onFailure(Throwable caught) { + mainPanel.add(new HTML("
" + + "Sorry, looks like something is broken with the server connection
" + + "Please check your connection and try refresh this page.
")); + + } + }); + initWidget(mainPanel); + + } + + + private void showLoader() { + mainPanel.clear(); + mainPanel.setWidth("100%"); + mainPanel.setHeight("300px"); + mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER); + mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + mainPanel.add(loadingImage); + } +} diff --git a/src/main/java/org/gcube/portlets/user/questions/client/resources/Avatar_default.png b/src/main/java/org/gcube/portlets/user/questions/client/resources/Avatar_default.png new file mode 100644 index 0000000..2a6c844 Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/questions/client/resources/Avatar_default.png differ diff --git a/src/main/java/org/gcube/portlets/user/questions/client/resources/Images.java b/src/main/java/org/gcube/portlets/user/questions/client/resources/Images.java new file mode 100644 index 0000000..16f7ca8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/questions/client/resources/Images.java @@ -0,0 +1,18 @@ +package org.gcube.portlets.user.questions.client.resources; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.ImageResource; + +public interface Images extends ClientBundle { + @Source("avatarLoader.gif") + ImageResource avatarLoader(); + + @Source("Avatar_default.png") + ImageResource avatarDefaultImage(); + + @Source("members-loader.gif") + ImageResource membersLoader(); + + @Source("post-to.png") + ImageResource postToIcon(); +} diff --git a/src/main/java/org/gcube/portlets/user/questions/client/resources/avatarLoader.gif b/src/main/java/org/gcube/portlets/user/questions/client/resources/avatarLoader.gif new file mode 100644 index 0000000..4c4d825 Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/questions/client/resources/avatarLoader.gif differ diff --git a/src/main/java/org/gcube/portlets/user/questions/client/resources/members-loader.gif b/src/main/java/org/gcube/portlets/user/questions/client/resources/members-loader.gif new file mode 100644 index 0000000..89ae681 Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/questions/client/resources/members-loader.gif differ diff --git a/src/main/java/org/gcube/portlets/user/questions/client/resources/post-to.png b/src/main/java/org/gcube/portlets/user/questions/client/resources/post-to.png new file mode 100644 index 0000000..d1e53ac Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/questions/client/resources/post-to.png differ diff --git a/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.java b/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.java new file mode 100644 index 0000000..a804466 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.java @@ -0,0 +1,57 @@ +package org.gcube.portlets.user.questions.client.ui; + +import org.gcube.portal.databook.shared.UserInfo; +import org.gcube.portlets.user.questions.client.resources.Images; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Widget; + +public class DisplayBadge extends Composite { + private static DisplayBadgeUiBinder uiBinder = GWT.create(DisplayBadgeUiBinder.class); + + interface DisplayBadgeUiBinder extends UiBinder { } + + @UiField HTMLPanel mainPanel; + @UiField Image avatarImage; + @UiField Image postToImage; + @UiField HTML userFullName; + + @UiField HTML headlineLabel; + @UiField HTML institutionLabel; + @UiField AnchorElement imageRedirect; + + private UserInfo myUserInfo; + + public DisplayBadge(UserInfo user) { + initWidget(uiBinder.createAndBindUi(this)); + Images images = GWT.create(Images.class); + postToImage.setUrl(images.postToIcon().getSafeUri()); + avatarImage.setUrl(images.avatarLoader().getSafeUri()); + mainPanel.addStyleName("profile-section"); + + myUserInfo = user; + avatarImage.getElement().getParentElement().setAttribute("href", myUserInfo.getAvatarId()); + if (myUserInfo.getAvatarId() == null) + avatarImage.setUrl(images.avatarDefaultImage().getSafeUri()); + else + avatarImage.setUrl(myUserInfo.getAvatarId()); + userFullName.setHTML("
"+myUserInfo.getFullName()+""); + + + headlineLabel.setText("Head"); + institutionLabel.setText("Isti"); + imageRedirect.setHref(""); + String title = "See profile of " + myUserInfo.getFullName(); + avatarImage.setTitle(title); + userFullName.setTitle(title); + } + + +} diff --git a/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.ui.xml b/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.ui.xml new file mode 100644 index 0000000..1bf6fa9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/questions/client/ui/DisplayBadge.ui.xml @@ -0,0 +1,31 @@ + + + + + + + + + +
+
+ + + +
+
+
+ + + +
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/questions/server/QuestionsServiceImpl.java b/src/main/java/org/gcube/portlets/user/questions/server/QuestionsServiceImpl.java index c9fb151..a6987a5 100644 --- a/src/main/java/org/gcube/portlets/user/questions/server/QuestionsServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/questions/server/QuestionsServiceImpl.java @@ -53,7 +53,7 @@ public class QuestionsServiceImpl extends RemoteServiceServlet implements Questi */ public String getDevelopmentUser() { String user = TEST_USER; - //user = "massimiliano.assante"; + user = "massimiliano.assante"; return user; } @@ -99,11 +99,11 @@ public class QuestionsServiceImpl extends RemoteServiceServlet implements Questi } } } else { - toReturn.add(new UserInfo("pino.pino", "With Photo Third User", "avatarid1", "email@email.it", "", true, false, null)); - toReturn.add(new UserInfo("giorgi.giorgi", "Test Fourth User", "avatarid2", "email@email.it", "", true, false, null)); - toReturn.add(new UserInfo("pinetti.giorgi", "Test Fifth User", "avatarid3", "email@email.it", "", true, false, null)); - toReturn.add(new UserInfo("massimiliano.pinetti", "Test Sixth User", "avatarid3", "email@email.it", "", true, false, null)); - toReturn.add(new UserInfo("massimiliano.giorgi", "Eighth Testing User", "avatarid3", "email@email.it", "", true, false, null)); + toReturn.add(new UserInfo("pino.pino", "With Photo Third User", null, "email@email.it", "", true, false, null)); + toReturn.add(new UserInfo("giorgi.giorgi", "Test Fourth User", null, "email@email.it", "", true, false, null)); + toReturn.add(new UserInfo("pinetti.giorgi", "Test Fifth User", null, "email@email.it", "", true, false, null)); + toReturn.add(new UserInfo("massimiliano.pinetti", "Test Sixth User", null, "email@email.it", "", true, false, null)); + toReturn.add(new UserInfo("massimiliano.giorgi", "Eighth Testing User", null, "email@email.it", "", true, false, null)); } return toReturn; } diff --git a/src/main/webapp/Questions.css b/src/main/webapp/Questions.css index 7aca7ac..2e170cb 100644 --- a/src/main/webapp/Questions.css +++ b/src/main/webapp/Questions.css @@ -1,34 +1,62 @@ -/** Add css rules here for your application. */ -/** Example rules used by the template application (remove for your app) */ -h1 { - font-size: 2em; - font-weight: bold; - color: #777777; - margin: 40px 0px 70px; - text-align: center; +.manager-user-photo { + padding: 5px; + border: 1px solid #E6E6E6; + width: 50px; + height: 50px; } -.sendButton { - display: block; - font-size: 16pt; +.manager-user-details { + min-width: 200px; + padding: 5px; } -/** Most GWT widgets already have a style name defined */ -.gwt-DialogBox { - width: 400px; +.manager-photo-details { + width: 70px; + text-align: center; } -.dialogVPanel { - margin: 5px; +.manager-action { + width: 32px; + text-align: center; } -.serverResponseLabelError { - color: red; +.manager-post-image:hover { + cursor: pointer; + cursor: hand; + opacity: 0.7; } -/** Set ids using widget.getElement().setId("idOfElement") */ -#closeButton { - margin: 15px 6px 6px; +a.manager-person-link { + color: #444444; + font-size: 15px; + font-weight: bold; + line-height: 18px; } + +a.manager-person-link,a.manager-person-link:visited { + cursor: pointer; + cursor: hand; + font-size: 16x; + text-decoration: none; + color: #3B5998; +} + +a.manager-person-link:hover { + opacity: 0.8; + font-size: 16x; + text-decoration: underline; +} + + +.manager-headline { + font-size: 13px; + color: #444444; + line-height: 16px; +} + +.manager-institution { + font-size: 11px; + color: #444444; +} \ No newline at end of file diff --git a/src/main/webapp/Questions.html b/src/main/webapp/Questions.html index 643f9fc..6da94f0 100644 --- a/src/main/webapp/Questions.html +++ b/src/main/webapp/Questions.html @@ -34,30 +34,13 @@ - - - - -