diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java index 652125e481fae8384f42cb95c4a502ffb3a08808..f3783a268627b6c1462d411e9d912476a76e2324 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -56,6 +57,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDele import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria2; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleChildrenInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; @@ -107,6 +109,8 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli private PropertyGrid propertyGrid; private SectionsPanel rightPanel; + + private StringBuffer additionalMessage; public static DatabaseModificationAwareComponent create( final IViewContext<IGenericClientServiceAsync> creationViewContext, @@ -165,20 +169,67 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli return; } addToolBarButton(createDeleteButton(new IDelegatedAction() + { + @Override + @SuppressWarnings( + { "unchecked", "rawtypes" }) + public void execute() { - @Override - @SuppressWarnings( - { "unchecked", "rawtypes" }) - public void execute() - { - final AsyncCallback<Void> callback = - isTrashEnabled() ? createDeletionCallback() - : createPermanentDeletionCallback(); - new SampleListDeletionConfirmationDialog(getViewContext() - .getCommonViewContext(), getOriginalDataAsSingleton(), callback, - getOriginalData()).show(); - } - })); + final AsyncCallback<Void> callback = + isTrashEnabled() ? createDeletionCallback() + : createPermanentDeletionCallback(); + additionalMessage = new StringBuffer(); + + //we need info for just 1 sample/ + List<TechId> sampleIds = new ArrayList<TechId>(Arrays.asList(TechId.create(getOriginalData()))); + // new ArrayList<TechId>(); + // sampleIds.add(TechId.create(getOriginalData())); + + viewContext.getCommonService().getSampleChildrenInfo(sampleIds, true, + new AbstractAsyncCallback<List<SampleChildrenInfo>>(viewContext) + { + @Override + protected void process(List<SampleChildrenInfo> info) + { + final int MAX_INFO_SIZE = 10; + SampleChildrenInfo sampleInfo = info.get(0); + + StringBuffer sampleSb = new StringBuffer(); + StringBuffer dataSetSb = new StringBuffer(); + for (String child : sampleInfo.getDerivedSamples()) + { + sampleSb.append(child + "<br>"); + } + for (String ds : sampleInfo.getDataSets()) + { + dataSetSb.append(ds + "<br>"); + } + + if(sampleSb.length() > 0 || dataSetSb.length() > 0) { + additionalMessage.append("<br>Sample " + getOriginalData().getIdentifier() + " has the following:"); + } + if(sampleSb.length() > 0) { + additionalMessage.append("<br><br>Derived Samples:<br>"); + additionalMessage.append(sampleSb); + if(sampleInfo.getChildCount() > MAX_INFO_SIZE ) + additionalMessage.append("<br> and " + (sampleInfo.getChildCount()-MAX_INFO_SIZE) + " more"); + } + if(dataSetSb.length() > 0) { + additionalMessage.append("<br>Data Sets:<br>"); + additionalMessage.append(dataSetSb); + if(sampleInfo.getDataSetCount() > MAX_INFO_SIZE) + additionalMessage.append("<br> and " + (sampleInfo.getDataSetCount()-MAX_INFO_SIZE) + " more"); + } + if(sampleSb.length() > 0 || dataSetSb.length() > 0) { + additionalMessage.append("<br>"); + } + new SampleListDeletionConfirmationDialog(getViewContext() + .getCommonViewContext(), getOriginalDataAsSingleton(), callback, + getOriginalData(), additionalMessage.toString()).show(); + } + }); + } + })); addToolBarButton(createRevertDeletionButton(new IDelegatedAction() { @Override