added image create and image edit editors

This commit is contained in:
fmittag committed 2015-06-04 18:56:48 +02:00
1 parent ab73fc2b3d
commit 96e5628ac2
10 files changed
+236 -55

No files matched your search

@@ -221,8 +221,11 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
try {
ImageSize imageSize = event.getImageSize(url);
if(imageSize != null) {
// TODO: do we habe a title?
photoGalleryUrls.add(new SailingImageDTO(eventRef, url.toString(), imageSize, null));
SailingImageDTO sailingImageDTO = new SailingImageDTO(eventRef, url.toString(), null);
if (imageSize != null) {
sailingImageDTO.setSizeInPx(imageSize.getWidth(), imageSize.getHeight());
photoGalleryUrls.add(sailingImageDTO);
}
}
} catch (Exception e) {
}
@@ -434,9 +437,11 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
} catch (InterruptedException | ExecutionException e) {
logger.log(Level.FINE, "Was unable to obtain image size for "+url+" earlier.", e);
}
SailingImageDTO entry = new SailingImageDTO(eventRef, url.toString(), imageSize, //
event.getEndDate().asDate() // FIXME: using the event end date for now, we need a better solution for migration
);
// FIXME: using the event end date for 'createdAtDate' for now, we need a better solution for migration
SailingImageDTO entry = new SailingImageDTO(eventRef, url.toString(), event.getEndDate().asDate());
if (imageSize != null) {
entry.setSizeInPx(imageSize.getWidth(), imageSize.getHeight());
}
entry.setTitle(eventName);
media.addPhoto(entry);
}
@@ -2,7 +2,6 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.sap.sailing.gwt.ui.client.StringMessages;
@@ -10,7 +9,6 @@ import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.media.ImageDTO;
public class EventEditDialog extends EventDialog {
public EventEditDialog(EventDTO event, Collection<EventDTO> otherExistingEvents, List<LeaderboardGroupDTO> availableLeaderboardGroups, StringMessages stringMessages, DialogCallback<EventDTO> callback) {
@@ -0,0 +1,24 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Collections;
import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.media.ImageDTO;
public class ImageCreateDialog extends ImageDialog {
public ImageCreateDialog(StringMessages stringMessages, DialogCallback<ImageDTO> callback) {
super(new ImageParameterValidator(stringMessages), stringMessages, callback);
createdAtLabel = new Label(creationDate.toString());
titleTextBox = createTextBox(null);
titleTextBox.setVisibleLength(50);
subtitleTextBox = createTextBox(null);
subtitleTextBox.setVisibleLength(50);
copyrightTextBox = createTextBox(null);
copyrightTextBox.setVisibleLength(50);
widthInPxBox = createIntegerBox(null, 10);
heightInPxBox = createIntegerBox(null, 10);
tagsListEditor.setValue(Collections.<String>emptyList());
}
}
@@ -0,0 +1,125 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.adminconsole.URLFieldWithFileUpload;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.controls.IntegerBox;
import com.sap.sse.gwt.client.controls.listedit.StringListInlineEditorComposite;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.media.ImageDTO;
public abstract class ImageDialog extends DataEntryDialog<ImageDTO> {
protected final StringMessages stringMessages;
protected final URLFieldWithFileUpload imageURLAndUploadComposite;
protected final Date creationDate;
protected Label createdAtLabel;
protected TextBox titleTextBox;
protected TextBox subtitleTextBox;
protected TextBox copyrightTextBox;
protected IntegerBox widthInPxBox;
protected IntegerBox heightInPxBox;
protected StringListInlineEditorComposite tagsListEditor;
protected static class ImageParameterValidator implements Validator<ImageDTO> {
private StringMessages stringMessages;
public ImageParameterValidator(StringMessages stringMessages) {
this.stringMessages = stringMessages;
}
@Override
public String getErrorMessage(ImageDTO eventToValidate) {
String errorMessage = null;
return errorMessage;
}
}
public ImageDialog(ImageParameterValidator validator, StringMessages stringMessages, DialogCallback<ImageDTO> callback) {
super(stringMessages.image(), null, stringMessages.ok(), stringMessages.cancel(), validator,
callback);
this.stringMessages = stringMessages;
this.creationDate = new Date();
getDialogBox().getWidget().setWidth("730px");
final ValueChangeHandler<Iterable<String>> valueChangeHandler = new ValueChangeHandler<Iterable<String>>() {
@Override
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
validate();
}
};
imageURLAndUploadComposite = new URLFieldWithFileUpload(stringMessages);
final List<String> tagSuggestions = Arrays.asList(new String[] { "Stage", "Eventteaser", "Sponsor", "Logo" });
tagsListEditor = new StringListInlineEditorComposite(Collections.<String> emptyList(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(), /* suggestValues */
tagSuggestions, "Enter tags for the image", 50));
tagsListEditor.addValueChangeHandler(valueChangeHandler);
}
@Override
protected ImageDTO getResult() {
ImageDTO result = new ImageDTO(imageURLAndUploadComposite.getURL(), new Date());
result.setTitle(titleTextBox.getValue());
result.setSubtitle(subtitleTextBox.getValue());
result.setCopyright(copyrightTextBox.getValue());
if(widthInPxBox.getValue() != null && heightInPxBox.getValue() != null) {
result.setSizeInPx(widthInPxBox.getValue(), heightInPxBox.getValue());
}
List<String> tags = new ArrayList<String>();
for (String tag: tagsListEditor.getValue()) {
tags.add(tag);
}
result.setTags(tags);
return result;
}
@Override
protected Widget getAdditionalWidget() {
final VerticalPanel panel = new VerticalPanel();
panel.setWidth("100%");
Widget additionalWidget = super.getAdditionalWidget();
if (additionalWidget != null) {
panel.add(additionalWidget);
}
Grid formGrid = new Grid(8, 2);
panel.add(formGrid);
formGrid.setWidget(0, 0, new Label("Created at:"));
formGrid.setWidget(0, 1, createdAtLabel);
formGrid.setWidget(1, 0, new Label("Image URL:"));
formGrid.setWidget(1, 1, imageURLAndUploadComposite);
formGrid.setWidget(2, 0, new Label(stringMessages.title() + ":"));
formGrid.setWidget(2, 1, titleTextBox);
formGrid.setWidget(3, 0, new Label("Subtitle:"));
formGrid.setWidget(3, 1, subtitleTextBox);
formGrid.setWidget(4, 0, new Label("Copyright:"));
formGrid.setWidget(4, 1, copyrightTextBox);
formGrid.setWidget(5, 0, new Label("Width in px:"));
formGrid.setWidget(5, 1, widthInPxBox);
formGrid.setWidget(6, 0, new Label("Height in px:"));
formGrid.setWidget(6, 1, heightInPxBox);
formGrid.setWidget(7, 0, new Label("Tags:"));
formGrid.setWidget(7, 1, tagsListEditor);
return panel;
}
@Override
public void show() {
super.show();
imageURLAndUploadComposite.setFocus(true);
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.media.ImageDTO;
public class ImageEditDialog extends ImageDialog {
public ImageEditDialog(ImageDTO image, StringMessages stringMessages, DialogCallback<ImageDTO> callback) {
super(new ImageParameterValidator(stringMessages), stringMessages, callback);
createdAtLabel = new Label(image.getCreatedAtDate().toString());
imageURLAndUploadComposite.setURL(image.getSourceRef());
titleTextBox = createTextBox(image.getTitle());
titleTextBox.setVisibleLength(50);
subtitleTextBox = createTextBox(image.getSubtitle());
subtitleTextBox.setVisibleLength(50);
copyrightTextBox = createTextBox(image.getCopyright());
copyrightTextBox.setVisibleLength(50);
widthInPxBox = createIntegerBox(image.getWidthInPx(), 10);
heightInPxBox = createIntegerBox(image.getHeightInPx(), 10);
List<String> tags = new ArrayList<String>();
tags.addAll(image.getTags());
tagsListEditor.setValue(tags);
}
}
@@ -28,6 +28,7 @@ import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.domain.common.impl.NaturalComparator;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.media.ImageDTO;
/**
@@ -216,51 +217,55 @@ public class ImagesListComposite extends Composite {
}
private void openCreateImageDialog() {
// EventCreateDialog dialog = new EventCreateDialog(Collections.unmodifiableCollection(existingEvents),
// existingLeaderboardGroups, stringMessages, new DialogCallback<ImageDTO>() {
// @Override
// public void cancel() {
// }
//
// @Override
// public void ok(ImageDTO newEvent) {
// createNewEvent(newEvent);
// }
// });
// dialog.show();
ImageCreateDialog dialog = new ImageCreateDialog(stringMessages, new DialogCallback<ImageDTO>() {
@Override
public void cancel() {
}
@Override
public void ok(ImageDTO newImage) {
allImages.add(newImage);
imageListDataProvider.getList().add(newImage);
updateTableVisisbilty();
}
});
dialog.show();
}
private void openEditImageDialog(final ImageDTO selectedEvent) {
// List<ImageDTO> existingEvents = new ArrayList<ImageDTO>(eventListDataProvider.getList());
// existingEvents.remove(selectedEvent);
// List<LeaderboardGroupDTO> existingLeaderboardGroups = new ArrayList<LeaderboardGroupDTO>();
// Util.addAll(availableLeaderboardGroups, existingLeaderboardGroups);
// EventEditDialog dialog = new EventEditDialog(selectedEvent, Collections.unmodifiableCollection(existingEvents),
// existingLeaderboardGroups, stringMessages, new DialogCallback<ImageDTO>() {
// @Override
// public void cancel() {
// }
//
// @Override
// public void ok(ImageDTO updatedEvent) {
// updateEvent(selectedEvent, updatedEvent);
// }
// });
// dialog.show();
private void openEditImageDialog(final ImageDTO selectedImage) {
ImageEditDialog dialog = new ImageEditDialog(selectedImage, stringMessages, new DialogCallback<ImageDTO>() {
@Override
public void cancel() {
}
@Override
public void ok(ImageDTO updatedImage) {
allImages.remove(selectedImage);
allImages.add(updatedImage);
imageListDataProvider.getList().remove(selectedImage);
imageListDataProvider.getList().add(updatedImage);
updateTableVisisbilty();
}
});
dialog.show();
}
public void fillImages(List<ImageDTO> images) {
if (images.isEmpty()) {
private void updateTableVisisbilty() {
if (allImages.isEmpty()) {
imageTable.setVisible(false);
noImagesLabel.setVisible(true);
} else {
imageTable.setVisible(true);
noImagesLabel.setVisible(false);
}
}
public void fillImages(List<ImageDTO> images) {
imageSelectionModel.clear();
allImages.clear();
allImages.addAll(images);
updateTableVisisbilty();
}
public List<ImageDTO> getAllImages() {
@@ -3450,8 +3450,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
private ImageDTO convertToImageDTO(ImageDescriptor image) {
ImageDTO result = new ImageDTO(image.getURL().toString(), image.getWidthInPx(), image.getHeightInPx(),
image.getCreatedAtDate() != null ? image.getCreatedAtDate().asDate() : null);
ImageDTO result = new ImageDTO(image.getURL().toString(), image.getCreatedAtDate() != null ? image.getCreatedAtDate().asDate() : null);
result.setCopyright(image.getCopyright());
result.setTitle(image.getTitle());
result.setSubtitle(image.getSubtitle());
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.shared.media;
import java.util.Date;
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
import com.sap.sse.common.media.ImageSize;
import com.sap.sse.gwt.client.media.ImageDTO;
public class SailingImageDTO extends ImageDTO {
@@ -14,10 +13,9 @@ public class SailingImageDTO extends ImageDTO {
super();
}
public SailingImageDTO(EventReferenceDTO eventRef, String imageRef, ImageSize size, Date createdAtDate) {
super(imageRef, size, createdAtDate);
public SailingImageDTO(EventReferenceDTO eventRef, String imageRef, Date createdAtDate) {
super(imageRef, createdAtDate);
this.eventRef = eventRef;
}
public EventReferenceDTO getEventRef() {
@@ -139,4 +139,8 @@ public class URLFieldWithFileUpload extends Composite {
removeButton.setEnabled(true);
}
}
public void setFocus(boolean focused) {
urlTextBox.setFocus(focused);
}
}
@@ -2,7 +2,6 @@ package com.sap.sse.gwt.client.media;
import java.util.Date;
import com.sap.sse.common.media.ImageSize;
import com.sap.sse.common.media.MimeType;
public class ImageDTO extends AbstractMediaDTO {
@@ -15,16 +14,8 @@ public class ImageDTO extends AbstractMediaDTO {
private Integer widthInPx;
private Integer heightInPx;
public ImageDTO(String imageRef, ImageSize size, Date createdAtDate) {
public ImageDTO(String imageRef, Date createdAtDate) {
super(imageRef, MimeType.image, createdAtDate);
this.widthInPx = size.getWidth();
this.heightInPx = size.getHeight();
}
public ImageDTO(String imageRef, Integer widthInPx, Integer heightInPx, Date createdAtDate) {
super(imageRef, MimeType.image, createdAtDate);
this.widthInPx = widthInPx;
this.heightInPx = heightInPx;
}
public Integer getWidthInPx() {
@@ -34,4 +25,9 @@ public class ImageDTO extends AbstractMediaDTO {
public Integer getHeightInPx() {
return heightInPx;
}
public void setSizeInPx(Integer widthInPx, Integer heightInPx) {
this.widthInPx = widthInPx;
this.heightInPx = heightInPx;
}
}