Skip to content

Commit

Permalink
use cancel confirmation on measurement upload dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
KochTobi committed Sep 3, 2024
1 parent 12a6103 commit 162fd67
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ private MessageType parseMessageType(String key, Locale locale) {
EMPTY_PARAMETERS, locale).strip().toUpperCase();
return MessageType.valueOf(messageType);
} catch (NoSuchMessageException e) {
throw new RuntimeException("No message type specified for " + key, e);
throw new RuntimeException("No message type specified for %s.message.type".formatted(key), e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import life.qbic.datamanager.views.general.Main;
import life.qbic.datamanager.views.general.download.DownloadProvider;
import life.qbic.datamanager.views.general.download.MeasurementTemplateDownload;
import life.qbic.datamanager.views.notifications.CancelConfirmationDialogFactory;
import life.qbic.datamanager.views.notifications.ErrorMessage;
import life.qbic.datamanager.views.notifications.StyledNotification;
import life.qbic.datamanager.views.projects.project.experiments.ExperimentMainLayout;
Expand Down Expand Up @@ -99,6 +100,7 @@ public class MeasurementMain extends Main implements BeforeEnterObserver {
private final DownloadProvider ngsDownloadProvider;
private final DownloadProvider proteomicsDownloadProvider;
private final ProjectInformationService projectInformationService;
private final CancelConfirmationDialogFactory cancelConfirmationDialogFactory;
private transient Context context;

public MeasurementMain(
Expand All @@ -108,7 +110,8 @@ public MeasurementMain(
@Autowired MeasurementService measurementService,
@Autowired MeasurementPresenter measurementPresenter,
@Autowired MeasurementValidationService measurementValidationService,
ProjectInformationService projectInformationService) {
ProjectInformationService projectInformationService,
CancelConfirmationDialogFactory cancelConfirmationDialogFactory) {
Objects.requireNonNull(measurementTemplateListComponent);
Objects.requireNonNull(measurementDetailsComponent);
Objects.requireNonNull(measurementService);
Expand All @@ -123,6 +126,9 @@ public MeasurementMain(
this.proteomicsDownloadProvider = new DownloadProvider(proteomicsMeasurementContentProvider);
this.measurementValidationService = measurementValidationService;
this.sampleInformationService = Objects.requireNonNull(sampleInformationService);
this.projectInformationService = projectInformationService;
this.cancelConfirmationDialogFactory = cancelConfirmationDialogFactory;

measurementTemplateDownload = new MeasurementTemplateDownload();
measurementTemplateListComponent.addDownloadMeasurementTemplateClickListener(
this::onDownloadMeasurementTemplateClicked);
Expand All @@ -147,7 +153,7 @@ public MeasurementMain(
getClass().getSimpleName(), System.identityHashCode(this),
measurementTemplateListComponent.getClass().getSimpleName(),
System.identityHashCode(measurementTemplateListComponent)));
this.projectInformationService = projectInformationService;

}

private static String convertErrorCodeToMessage(MeasurementService.ErrorCode errorCode) {
Expand Down Expand Up @@ -325,7 +331,9 @@ private void triggerMeasurementRegistration(
}

private void openEditMeasurementDialog() {
var dialog = new MeasurementMetadataUploadDialog(measurementValidationService, MODE.EDIT,
var dialog = new MeasurementMetadataUploadDialog(measurementValidationService,
cancelConfirmationDialogFactory,
MODE.EDIT,
context.projectId().orElse(null));
setupDialog(dialog);
dialog.open();
Expand Down Expand Up @@ -513,7 +521,9 @@ private void onDownloadMeasurementTemplateClicked(
}

private void openRegisterMeasurementDialog() {
var dialog = new MeasurementMetadataUploadDialog(measurementValidationService, MODE.ADD,
var dialog = new MeasurementMetadataUploadDialog(measurementValidationService,
cancelConfirmationDialogFactory,
MODE.ADD,
context.projectId().orElse(null));
setupDialog(dialog);
dialog.open();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
import life.qbic.datamanager.parser.xlsx.XLSXParser;
import life.qbic.datamanager.views.general.InfoBox;
import life.qbic.datamanager.views.general.WizardDialogWindow;
import life.qbic.datamanager.views.notifications.CancelConfirmationDialogFactory;
import life.qbic.datamanager.views.notifications.ErrorMessage;
import life.qbic.datamanager.views.notifications.NotificationDialog;
import life.qbic.datamanager.views.notifications.StyledNotification;
import life.qbic.datamanager.views.projects.EditableMultiFileMemoryBuffer;
import life.qbic.projectmanagement.application.measurement.MeasurementMetadata;
Expand Down Expand Up @@ -68,6 +68,8 @@ public class MeasurementMetadataUploadDialog extends WizardDialogWindow {
private static final long serialVersionUID = -8253078073427291947L;
private static final String VAADIN_FILENAME_EVENT = "event.detail.file.name";
private final MeasurementValidationService measurementValidationService;
private final CancelConfirmationDialogFactory cancelConfirmationDialogFactory;

private final EditableMultiFileMemoryBuffer uploadBuffer;
private final transient List<MeasurementMetadataUpload<MeasurementMetadata>> measurementMetadataUploads;
private final transient List<MeasurementFileItem> measurementFileItems;
Expand All @@ -77,7 +79,9 @@ public class MeasurementMetadataUploadDialog extends WizardDialogWindow {
private final UploadItemsDisplay uploadItemsDisplay;

public MeasurementMetadataUploadDialog(MeasurementValidationService measurementValidationService,
CancelConfirmationDialogFactory cancelConfirmationDialogFactory,
MODE mode, ProjectId projectId) {
this.cancelConfirmationDialogFactory = requireNonNull(cancelConfirmationDialogFactory);
this.projectId = requireNonNull(projectId, "projectId cannot be null");
this.measurementValidationService = requireNonNull(measurementValidationService,
"measurementValidationExecutor must not be null");
Expand Down Expand Up @@ -332,22 +336,10 @@ private void showErrorNotification(String title, String description) {
}

private void onCanceled() {

NotificationDialog dialog = NotificationDialog.warningDialog()
.withTitle("Discard uploaded information?")
.withContent(new Span("Uploaded information has not yet been saved."));
dialog.setCancelable(true);
dialog.setCancelText("Continue Editing");
Button redButton = new Button("Discard upload");
redButton.addClassName("danger");
dialog.setConfirmButton(redButton);
dialog.addConfirmListener(event -> {
event.getSource().close();
fireEvent(new CancelEvent(this, true));
});
dialog.addCancelListener(event -> event.getSource().close());
dialog.open();

cancelConfirmationDialogFactory.cancelConfirmationDialog(
it -> fireEvent(new CancelEvent(this, it.isFromClient())),
"measurement.metadata.upload", getLocale())
.open();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ experiment.edit.cancel-confirmation.title=Discard experiment changes?
experiment.edit.cancel-confirmation.message.type=text
experiment.edit.cancel-confirmation.message.text=You will lose all changes made to this experiment.
experiment.edit.cancel-confirmation.confirm-text=Discard changes
measurement.metadata.upload.cancel-confirmation.title=Discard uploaded information?
measurement.metadata.upload.cancel-confirmation.message.type=text
measurement.metadata.upload.cancel-confirmation.message.text=Uploaded information has not yet been saved.
measurement.metadata.upload.cancel-confirmation.confirm-text=Discard upload

0 comments on commit 162fd67

Please sign in to comment.