mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 06:47:15 +00:00
added image create and image edit editors
This commit is contained in:
1 parent
ab73fc2b3d
commit
96e5628ac2
10 files changed
+236
-55
No files matched your search
+10
-5
@@ -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
@@ -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) {
|
||||
|
||||
+24
@@ -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());
|
||||
}
|
||||
}
|
||||
+125
@@ -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);
|
||||
}
|
||||
}
|
||||
+27
@@ -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);
|
||||
}
|
||||
}
|
||||
+37
-32
@@ -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() {
|
||||
|
||||
+1
-2
@@ -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());
|
||||
|
||||
+2
-4
@@ -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() {
|
||||
|
||||
+4
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user