almost ready
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/questions@101770 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
acffbbe418
commit
240cdf5f1b
|
@ -1,20 +1,15 @@
|
||||||
package org.gcube.portlets.user.questions.client;
|
package org.gcube.portlets.user.questions.client;
|
||||||
|
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
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 <code>onModuleLoad()</code>.
|
* Entry point classes define <code>onModuleLoad()</code>.
|
||||||
*/
|
*/
|
||||||
public class Questions implements EntryPoint {
|
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() {
|
public void onModuleLoad() {
|
||||||
|
RootPanel.get("questionsManagersDiv").add(new VREManagersPanel());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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<ArrayList<UserInfo>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(ArrayList<UserInfo> users) {
|
||||||
|
mainPanel.clear();
|
||||||
|
mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT);
|
||||||
|
mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP);
|
||||||
|
if (users == null || users.isEmpty()) {
|
||||||
|
mainPanel.add(new HTML("<div class=\"frame\" style=\"font-size: 16px;\">Ops, something went wrong. Please <a href=\"javascript: location.reload();\">reload<a/> this page.</div>"));
|
||||||
|
} 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("<div class=\"nofeed-message\">" +
|
||||||
|
"Sorry, looks like something is broken with the server connection<br> " +
|
||||||
|
"Please check your connection and try refresh this page.</div>"));
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 997 B |
|
@ -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();
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -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<Widget, DisplayBadge> { }
|
||||||
|
|
||||||
|
@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("<a class=\"manager-person-link\" href=\""+user.getAccountURL()+"\">"+myUserInfo.getFullName()+"</a>");
|
||||||
|
|
||||||
|
|
||||||
|
headlineLabel.setText("Head");
|
||||||
|
institutionLabel.setText("Isti");
|
||||||
|
imageRedirect.setHref("");
|
||||||
|
String title = "See profile of " + myUserInfo.getFullName();
|
||||||
|
avatarImage.setTitle(title);
|
||||||
|
userFullName.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||||
|
xmlns:m="urn:import:org.gcube.portlets.user.gcubewidgets.client.elements">
|
||||||
|
<g:HTMLPanel ui:field="mainPanel">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div class="manager-photo-details">
|
||||||
|
<a ui:field="imageRedirect" href="">
|
||||||
|
<g:Image title="Profile Picture" styleName="manager-user-photo"
|
||||||
|
url="" ui:field="avatarImage" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="manager-user-details">
|
||||||
|
<g:HTML styleName="manager-fullName" ui:field="userFullName"></g:HTML>
|
||||||
|
<g:HTML styleName="manager-headline" ui:field="headlineLabel"></g:HTML>
|
||||||
|
<g:HTML styleName="manager-institution" ui:field="institutionLabel"></g:HTML>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="manager-action">
|
||||||
|
<g:Image title="Post question to the manager" ui:field="postToImage" styleName="manager-post-image"/>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -53,7 +53,7 @@ public class QuestionsServiceImpl extends RemoteServiceServlet implements Questi
|
||||||
*/
|
*/
|
||||||
public String getDevelopmentUser() {
|
public String getDevelopmentUser() {
|
||||||
String user = TEST_USER;
|
String user = TEST_USER;
|
||||||
//user = "massimiliano.assante";
|
user = "massimiliano.assante";
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,11 +99,11 @@ public class QuestionsServiceImpl extends RemoteServiceServlet implements Questi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
toReturn.add(new UserInfo("pino.pino", "With Photo Third User", "avatarid1", "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", "avatarid2", "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", "avatarid3", "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", "avatarid3", "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", "avatarid3", "email@email.it", "", true, false, null));
|
toReturn.add(new UserInfo("massimiliano.giorgi", "Eighth Testing User", null, "email@email.it", "", true, false, null));
|
||||||
}
|
}
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,34 +1,62 @@
|
||||||
/** Add css rules here for your application. */
|
|
||||||
|
|
||||||
|
|
||||||
/** Example rules used by the template application (remove for your app) */
|
.manager-user-photo {
|
||||||
h1 {
|
padding: 5px;
|
||||||
font-size: 2em;
|
border: 1px solid #E6E6E6;
|
||||||
font-weight: bold;
|
width: 50px;
|
||||||
color: #777777;
|
height: 50px;
|
||||||
margin: 40px 0px 70px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sendButton {
|
.manager-user-details {
|
||||||
display: block;
|
min-width: 200px;
|
||||||
font-size: 16pt;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Most GWT widgets already have a style name defined */
|
.manager-photo-details {
|
||||||
.gwt-DialogBox {
|
width: 70px;
|
||||||
width: 400px;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialogVPanel {
|
.manager-action {
|
||||||
margin: 5px;
|
width: 32px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.serverResponseLabelError {
|
.manager-post-image:hover {
|
||||||
color: red;
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set ids using widget.getElement().setId("idOfElement") */
|
a.manager-person-link {
|
||||||
#closeButton {
|
color: #444444;
|
||||||
margin: 15px 6px 6px;
|
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;
|
||||||
|
}
|
|
@ -34,30 +34,13 @@
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<!-- OPTIONAL: include this if you want history support -->
|
<noscript>
|
||||||
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
|
|
||||||
|
|
||||||
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
|
|
||||||
<noscript>
|
|
||||||
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
|
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
|
||||||
Your web browser must have JavaScript enabled
|
Your web browser must have JavaScript enabled
|
||||||
in order for this application to display correctly.
|
in order for this application to display correctly.
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<h1>Web Application Starter Project</h1>
|
<div id="questionsManagersDiv"></div>
|
||||||
|
|
||||||
<table align="center">
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" style="font-weight:bold;">Please enter your name:</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id="nameFieldContainer"></td>
|
|
||||||
<td id="sendButtonContainer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" style="color:red;" id="errorLabelContainer"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module>
|
|
||||||
<!-- Inherit our applications main module. -->
|
|
||||||
<inherits name='org.gcube.portlets.user.questions.Questions' />
|
|
||||||
|
|
||||||
<!-- Specify the path to any remote services. -->
|
|
||||||
<servlet path="/Questions/greet" class="org.gcube.portlets.user.questions.server.GreetingServiceImpl" />
|
|
||||||
|
|
||||||
</module>
|
|
Loading…
Reference in New Issue