1 package fr.ifremer.dali.ui.swing.content.extraction.list;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import fr.ifremer.dali.dto.system.extraction.ExtractionDTO;
27 import fr.ifremer.dali.ui.swing.action.AbstractDaliAction;
28
29 import javax.swing.*;
30
31 import static org.nuiton.i18n.I18n.t;
32
33
34
35
36 public class DuplicateExtractionAction extends AbstractDaliAction<ExtractionsTableUIModel, ExtractionsTableUI, ExtractionsTableUIHandler> {
37
38 private ExtractionDTO duplicateExtraction;
39
40
41
42
43
44
45 public DuplicateExtractionAction(ExtractionsTableUIHandler handler) {
46 super(handler, false);
47 }
48
49
50
51
52 @Override
53 public boolean prepareAction() throws Exception {
54 if (!super.prepareAction() || getModel().getSelectedRows().size() != 1) {
55 return false;
56 }
57
58 return getContext().getDialogHelper().showConfirmDialog(
59 getUI(),
60 t("dali.action.duplicate.extraction.message"),
61 t("dali.action.duplicate.extraction.title"),
62 JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
63 }
64
65
66
67
68 @Override
69 public void doAction() throws Exception {
70
71
72 final ExtractionsRowModel extractionsRowModel = getModel().getSelectedRows().iterator().next();
73 if (extractionsRowModel != null) {
74
75
76 duplicateExtraction = getContext().getExtractionService().duplicateExtraction(extractionsRowModel.toBean());
77 }
78 }
79
80
81
82
83 @Override
84 public void postSuccessAction() {
85 super.postSuccessAction();
86
87 getModel().setModify(true);
88
89
90 getHandler().setFocusOnCell(getModel().addNewRow(duplicateExtraction));
91 }
92 }