Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 6c2b603c by tchemit at 2019-09-26T17:23:23Z Bouton 'Supprimer les marées par lot' ne fonctionne pas - Closes #1398 - - - - - 24 changed files: - client-core/src/main/i18n/getters/java.getter - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jcss - + client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/actions/DeleteActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/actions/TripListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/actions/LandingListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityListUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/TripSampleListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivityListUIDelete.java - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/ActivityListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/actions/ActivityListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/TripListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/actions/TripListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/ActivityListUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/RouteListUI.jaxx - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/ActivityListUIDelete.java - + client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/RouteListUIDelete.java - client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties Changes: ===================================== client-core/src/main/i18n/getters/java.getter ===================================== @@ -783,6 +783,7 @@ observe.message.db.loaded observe.message.db.loading observe.message.delete observe.message.delete.directory +observe.message.delete.list observe.message.delete.new observe.message.goto.site observe.message.help.usage @@ -881,7 +882,6 @@ observe.ui.tree.data.ll.trip.unsaved observe.ui.tree.data.ps.activity.list observe.ui.tree.data.ps.activity.unsaved observe.ui.tree.data.ps.discardedTargetCatch -observe.ui.tree.data.ps.discardedTargetSample observe.ui.tree.data.ps.floatingObject.unsaved observe.ui.tree.data.ps.keptTargetCatch observe.ui.tree.data.ps.keptTargetSample ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jaxx ===================================== @@ -86,11 +86,12 @@ public abstract ContentListUIHandler<E, C, R, U> getHandler(); </cell> </row> <row> - <cell fill='both'> - <JButton id='move'/> - </cell> - <cell> - <JButton id='create'/> + <cell columns="3"> + <JPanel layout="{new GridLayout(1, 0)}"> + <JButton id='delete'/> + <JButton id='move'/> + <JButton id='create'/> + </JPanel> </cell> </row> </Table> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/ContentListUI.jcss ===================================== @@ -93,6 +93,10 @@ enabled:{model.isOneOrMoreSelectedData()}; } +#delete { + enabled:{model.isOneOrMoreSelectedData()}; +} + #showTechnicalInformation { enabled:{model.isOneSelectedData()}; } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/list/actions/DeleteActionSupport.java ===================================== @@ -0,0 +1,120 @@ +package fr.ird.observe.client.ui.content.api.data.list.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.ObserveKeyStrokes; +import fr.ird.observe.client.ui.content.api.actions.ContentUIActionSupport; +import fr.ird.observe.client.ui.content.api.data.list.ContentListUI; +import fr.ird.observe.client.ui.tree.navigation.NavigationTree; +import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.dto.IdDto; +import fr.ird.observe.dto.data.DataDto; +import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; +import fr.ird.observe.dto.reference.DataDtoReference; +import fr.ird.observe.dto.reference.DtoReference; +import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException; +import fr.ird.observe.navigation.model.edit.ObserveEditNode; +import fr.ird.observe.navigation.tree.MultipleReferenceContainerNode; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.SwingUtilities; +import javax.swing.tree.MutableTreeNode; +import javax.swing.tree.TreeNode; +import java.awt.event.ActionEvent; +import java.util.List; +import java.util.stream.Collectors; + +import static fr.ird.observe.client.ui.content.api.ContentUIHandler.getNavigationTree; +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +public abstract class DeleteActionSupport<E extends IdDto, D extends DataDto, R extends DataDtoReference<D, R>, U extends ContentListUI<E, D, R, U>> extends ContentUIActionSupport<U> { + + private static final Logger log = LogManager.getLogger(Close.class); + + protected final String typeI18nKey; + + protected abstract void doDelete(U ui, List<R> beanList); + + public DeleteActionSupport(Class<D> beanType) { + super( + n("observe.action.delete"), + null, + "delete", + ObserveKeyStrokes.KEY_STROKE_DELETE_DATA_GLOBAL); + this.typeI18nKey = t(ObserveI18nDecoratorHelper.getTypeI18nKey(beanType)); + setTooltipText(t("observe.action.delete.data.tip", typeI18nKey)); + } + + @Override + protected void doActionPerformed(ActionEvent event, U ui) { + + List<R> selectedData = ui.getModel().getSelectedDatas(); + + ObserveEditNode editNode = ui.getModel().getEditNode(); + try { + fr.ird.observe.client.ui.content.api.data.open.actions.Close.closeData(editNode); + } catch (CloseEditNodeVetoException e1) { + UIHelper.handlingError(e1); + return; + } + boolean canDelete = askToDelete(ui, selectedData); + if (canDelete) { + getMainUIModel().setBusy(true); + try { + doDelete(ui, selectedData); + } finally { + SwingUtilities.invokeLater(() -> afterDelete(selectedData)); + } + } + } + + private boolean askToDelete(U ui, List<R> bean) { + return UIHelper.confirmForEntityDelete(ui, ui.getModel().getReferenceType(), bean); + } + + private void afterDelete(List<R> selectedData) { + + try { + + log.info("After delete: " + selectedData.stream().map(DtoReference::getId).collect(Collectors.joining())); + getDataSource().setModified(true); + NavigationTree tree = getNavigationTree(); + + MultipleReferenceContainerNode<D, R> parentNode = (MultipleReferenceContainerNode<D, R>) tree.getSelectedNode(); + for (R selectedDatum : selectedData) { + int nodePosition = parentNode.getNodePosition(selectedDatum); + TreeNode nodeToDelete = parentNode.getChildAt(nodePosition); + tree.removeNode((MutableTreeNode) nodeToDelete); + } + tree.reloadNode(parentNode, false); + tree.selectSafeNode(parentNode.getParent()); + tree.selectSafeNode(parentNode); + } finally { + getMainUIModel().setBusy(false); + } + + } + +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/TripListUI.jaxx ===================================== @@ -41,4 +41,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/common/actions/TripListUIDelete.java ===================================== @@ -0,0 +1,51 @@ +package fr.ird.observe.client.ui.content.data.ll.common.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ll.common.TripListUI; +import fr.ird.observe.dto.data.ll.common.TripDto; +import fr.ird.observe.dto.data.ll.common.TripReference; +import fr.ird.observe.dto.referential.common.ProgramDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class TripListUIDelete extends DeleteActionSupport<ProgramDto, TripDto, TripReference, TripListUI> { + + private static final Logger log = LogManager.getLogger(TripListUIDelete.class); + + public TripListUIDelete() { + super(TripDto.class); + } + + @Override + protected void doDelete(TripListUI ui, List<TripReference> beanList) { + for (TripReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getLlCommonTripService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/LandingListUI.jaxx ===================================== @@ -41,4 +41,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/landing/actions/LandingListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ll.landing.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ll.landing.LandingListUI; +import fr.ird.observe.dto.data.ll.common.TripDto; +import fr.ird.observe.dto.data.ll.landing.LandingDto; +import fr.ird.observe.dto.data.ll.landing.LandingReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class LandingListUIDelete extends DeleteActionSupport<TripDto, LandingDto, LandingReference, LandingListUI> { + + private static final Logger log = LogManager.getLogger(LandingListUIDelete.class); + + public LandingListUIDelete() { + super(LandingDto.class); + } + + @Override + protected void doDelete(LandingListUI ui, List<LandingReference> beanList) { + for (LandingReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getLlLandingLandingService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/ActivityListUI.jaxx ===================================== @@ -42,4 +42,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/TripSampleListUI.jaxx ===================================== @@ -42,4 +42,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/ActivityListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ll.logbook.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ll.logbook.ActivityListUI; +import fr.ird.observe.dto.data.ll.common.TripDto; +import fr.ird.observe.dto.data.ll.logbook.ActivityDto; +import fr.ird.observe.dto.data.ll.logbook.ActivityReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class ActivityListUIDelete extends DeleteActionSupport<TripDto, ActivityDto, ActivityReference, ActivityListUI> { + + private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class); + + public ActivityListUIDelete() { + super(ActivityDto.class); + } + + @Override + protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) { + for (ActivityReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getLlLogbookActivityService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/logbook/actions/TripSampleListUIDelete.java ===================================== @@ -0,0 +1,53 @@ +package fr.ird.observe.client.ui.content.data.ll.logbook.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ll.logbook.TripSampleListUI; +import fr.ird.observe.dto.data.ll.common.TripDto; +import fr.ird.observe.dto.data.ll.logbook.SampleDto; +import fr.ird.observe.dto.data.ll.logbook.SampleReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class TripSampleListUIDelete extends DeleteActionSupport<TripDto, SampleDto, SampleReference, TripSampleListUI> { + + private static final Logger log = LogManager.getLogger(TripSampleListUIDelete.class); + + public TripSampleListUIDelete() { + super(SampleDto.class); + } + + @Override + protected void doDelete(TripSampleListUI ui, List<SampleReference> beanList) { + String parentId = ui.getModel().getSelectedParentId(); + for (SampleReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getLlLogbookTripSampleService().delete(parentId, bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/ActivityListUI.jaxx ===================================== @@ -42,4 +42,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ll/observation/actions/ActivityListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ll.observation.ActivityListUI; +import fr.ird.observe.dto.data.ll.common.TripDto; +import fr.ird.observe.dto.data.ll.observation.ActivityDto; +import fr.ird.observe.dto.data.ll.observation.ActivityReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class ActivityListUIDelete extends DeleteActionSupport<TripDto, ActivityDto, ActivityReference, ActivityListUI> { + + private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class); + + public ActivityListUIDelete() { + super(ActivityDto.class); + } + + @Override + protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) { + for (ActivityReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getLlObservationActivityService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/TripListUI.jaxx ===================================== @@ -43,4 +43,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/common/actions/TripListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ps.common.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ps.common.TripListUI; +import fr.ird.observe.dto.data.ps.common.TripDto; +import fr.ird.observe.dto.data.ps.common.TripReference; +import fr.ird.observe.dto.referential.common.ProgramDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class TripListUIDelete extends DeleteActionSupport<ProgramDto, TripDto, TripReference, TripListUI> { + + private static final Logger log = LogManager.getLogger(TripListUIDelete.class); + + public TripListUIDelete() { + super(TripDto.class); + } + + @Override + protected void doDelete(TripListUI ui, List<TripReference> beanList) { + for (TripReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getPsCommonTripService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/ActivityListUI.jaxx ===================================== @@ -42,4 +42,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/RouteListUI.jaxx ===================================== @@ -43,5 +43,5 @@ <JButton id='close'/> <JButton id='move'/> <JButton id='create'/> - + <JButton id='delete'/> </fr.ird.observe.client.ui.content.api.data.list.ContentListUI> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/ActivityListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ps.observation.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ps.observation.ActivityListUI; +import fr.ird.observe.dto.data.ps.observation.ActivityDto; +import fr.ird.observe.dto.data.ps.observation.ActivityReference; +import fr.ird.observe.dto.data.ps.observation.RouteDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class ActivityListUIDelete extends DeleteActionSupport<RouteDto, ActivityDto, ActivityReference, ActivityListUI> { + + private static final Logger log = LogManager.getLogger(ActivityListUIDelete.class); + + public ActivityListUIDelete() { + super(ActivityDto.class); + } + + @Override + protected void doDelete(ActivityListUI ui, List<ActivityReference> beanList) { + for (ActivityReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getPsObservationActivityService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/actions/RouteListUIDelete.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.ui.content.data.ps.observation.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.content.api.data.list.actions.DeleteActionSupport; +import fr.ird.observe.client.ui.content.data.ps.observation.RouteListUI; +import fr.ird.observe.dto.data.ps.common.TripDto; +import fr.ird.observe.dto.data.ps.observation.RouteDto; +import fr.ird.observe.dto.data.ps.observation.RouteReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +public class RouteListUIDelete extends DeleteActionSupport<TripDto, RouteDto, RouteReference, RouteListUI> { + + private static final Logger log = LogManager.getLogger(RouteListUIDelete.class); + + public RouteListUIDelete() { + super(RouteDto.class); + } + + @Override + protected void doDelete(RouteListUI ui, List<RouteReference> beanList) { + for (RouteReference bean : beanList) { + log.info(String.format("Will delete `%s`: %s",typeI18nKey, bean.getId())); + getServicesProvider().getPsObservationRouteService().delete(bean.getId()); + log.info(String.format("Delete done for `%s`: %s",typeI18nKey, bean.getId())); + + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java ===================================== @@ -69,6 +69,7 @@ import java.awt.event.ComponentEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.beans.PropertyChangeListener; +import java.util.List; import java.util.Objects; import static io.ultreia.java4all.i18n.I18n.t; @@ -323,6 +324,61 @@ public class UIHelper extends UIHelperSupport { return response == 0; } + public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, List<E> beanList) { + return confirmForEntityDelete(parent, beanClass, beanList, null); + } + + /** + * Ouvre une demande de confirmation, avant suppression d'une entité. + * + * @param <E> le type de l'entité à supprimer + * @param parent le component graphique demande l'action + * @param beanClass le tyê de l'entité à supprimer + * @param beanList la liste d'entité à supprimer + * @param extraMessage un message supplémentaire a ajouter + * @return {@code true} si l'utilisateur a confitmé la suppression, + * {@code false} sinon. + */ + public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, List<E> beanList, String extraMessage) { + JFrame mainUI = ObserveSwingApplicationContextSupport.get().getMainUI(); + + if (parent == null) { + // on cherche l'ui principale + parent = (JAXXObject) mainUI; + } + + ObserveSwingApplicationContextSupport.get().getMainUIModel().setBusy(true); + int response; + try { + DecoratorService decoratorService = ObserveSwingApplicationContextSupport.get().getDecoratorService(); + Decorator<E> decorator = decoratorService.getDecoratorByType(beanClass); + String messageDelete; + String type = ObserveI18nDecoratorHelper.getTypeI18nKey(beanClass); + type = t(type); + + StringBuilder beanStr = new StringBuilder(); + // delete existing entity + for (E e : beanList) { + beanStr.append("\n\t").append(decorator.toString(e)); + } + messageDelete = t("observe.message.delete.list", type, beanStr.toString()); + + if (extraMessage != null) { + messageDelete += '\n' + extraMessage; + } + + response = askUser((Component) parent, + t("observe.title.delete"), + messageDelete, + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + } finally { + ObserveSwingApplicationContextSupport.get().getMainUIModel().setBusy(false); + } + return response == 0; + } public static void handlingError(Exception e) { handlingError(e.getMessage(), e); ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=< No data source loaded > observe.message.db.none.loaded.tip=No data source loaded... observe.message.delete=Confirm to delete object\:\n\n '%1$s' - '%2$s'\n observe.message.delete.directory=Delete directory %1$s +observe.message.delete.list=Confirm to delete object '%1$s'\:\n%2$s\n observe.message.delete.new=Confirm to delete object\:\n\n '%1$s'\n observe.message.goto.site=Go to ObServe site (%1$s) observe.message.h2.server.login=Login ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=No hay fuente de datos cargada observe.message.db.none.loaded.tip=No hay fuente de datos cargada... observe.message.delete=Confirmar la eliminación del objeto \:\n\n '%1$s' - '%2$s'\n observe.message.delete.directory=Eliminación del directorio %1$s +observe.message.delete.list=Confirmar la eliminación del objeto '%1$s' \:\n%2$s\n observe.message.delete.new=Confirme la eliminación del objeto \:\n\n '%1$s'\n observe.message.goto.site=Acceder al sitio de d'Observe (%1$s) observe.message.h2.server.login=Iniciar sesión ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -2302,6 +2302,7 @@ observe.message.db.none.loaded=Aucune source de données chargée observe.message.db.none.loaded.tip=Aucune source de données chargée... observe.message.delete=Confirmer la suppression de l'objet \:\n\n '%1$s' - '%2$s'\n observe.message.delete.directory=Suppresion du répertoire %1$s +observe.message.delete.list=Confirmer la suppression des objets de type '%1$s' \:\n%2$s\n observe.message.delete.new=Confirmer la suppression de l'objet \:\n\n '%1$s'\n observe.message.goto.site=Accéder au site d'Observe (%1$s) observe.message.h2.server.login=Identifiant View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6c2b603c8c4d7807b21702f9ce47... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6c2b603c8c4d7807b21702f9ce47... You're receiving this email because of your account on gitlab.com.