import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
+import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
import com.vaadin.ui.AbstractField;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.permission.CRUD;
import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.persistence.permission.PermissionDeniedException;
import eu.etaxonomy.cdm.ref.TypedEntityReference;
import eu.etaxonomy.cdm.service.CdmBeanItemContainerFactory;
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
}
private void applyWorkingset(){
- getView().setWorkingset(workingset);
- // PagingProviders and CacheGenerator for the existingNameCombobox
- activateComboboxes();
+ if (workingset != null) {
+ getView().setWorkingset(workingset);
+ // PagingProviders and CacheGenerator for the existingNameCombobox
+ activateComboboxes();
+ }
}
protected void activateComboboxes() {
try {
workingset = getWorkingSetService().loadWorkingSetByReferenceUuid(referenceUuid, true);
+ } catch (PermissionDeniedException error) {
+ logger.warn(error);
+ showErrorDialog("Permission denied", "You are not allowed to access this working set.");
+ return;
} catch (TypeDesignationSetException error) {
logger.error(error);
showErrorDialog("Validation Error", error.getMessage());
+ //NOTE by AM: should we return here, too, or is this error not so
}
cache = new CdmTransientEntityWithUuidCacher(this);
for(Registration registration : workingset.getRegistrations()) {
}
public void showErrorDialog(String errorDialogCaption, String errorMessage) {
- Window errorDialog = new Window(errorDialogCaption);
+
+ final Window errorDialog = new Window(errorDialogCaption);
errorDialog.setModal(true);
+ errorDialog.setClosable(false);
+ errorDialog.setResizable(false);
VerticalLayout subContent = new VerticalLayout();
+ subContent.setSpacing(true);
subContent.setMargin(true);
errorDialog.setContent(subContent);
subContent.addComponent(new Label(errorMessage));
+
+ //close button (quick & dirty by AM, to fix #10373)
+ Button cancelButton = new Button("Close");
+ subContent.addComponent(cancelButton);
+ cancelButton.setWidth("-1px");
+ cancelButton.setHeight("-1px");
+ subContent.addComponent(cancelButton);
+ subContent.setComponentAlignment(cancelButton, new Alignment(48));
+ cancelButton.addClickListener((ev)->errorDialog.close());
+ cancelButton.setClickShortcut(KeyCode.ENTER, null);
+ cancelButton.focus();
+
UI.getCurrent().addWindow(errorDialog);
}