1 package fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation.locations;
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.configuration.programStrategy.ProgramDTO;
27 import fr.ifremer.dali.dto.referential.LocationDTO;
28 import fr.ifremer.dali.ui.swing.content.manage.program.locations.LocationsTableUIModel;
29 import fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation.StrategiesLieuxUI;
30 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
31 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
32 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
33 import org.jdesktop.swingx.table.TableColumnExt;
34
35 import javax.swing.BorderFactory;
36 import javax.swing.SortOrder;
37 import java.util.List;
38
39 import static org.nuiton.i18n.I18n.t;
40
41
42
43
44 public class LieuxProgrammeTableUIHandler extends AbstractDaliTableUIHandler<LieuxProgrammeTableRowModel, LieuxProgrammeTableUIModel, LieuxProgrammeTableUI> {
45
46
47 @Override
48 public AbstractDaliTableModel<LieuxProgrammeTableRowModel> getTableModel() {
49 return (LieuxProgrammeTableModel) getTable().getModel();
50 }
51
52
53 @Override
54 public SwingTable getTable() {
55 return getUI().getTableau();
56 }
57
58
59 @Override
60 public void beforeInit(final LieuxProgrammeTableUI ui) {
61 super.beforeInit(ui);
62
63
64 final LieuxProgrammeTableUIModel model = new LieuxProgrammeTableUIModel();
65 ui.setContextValue(model);
66 }
67
68
69 @Override
70 public void afterInit(final LieuxProgrammeTableUI ui) {
71
72
73 initUI(ui);
74
75
76 initialiserTableau();
77
78
79 initialiserListeners();
80 }
81
82
83
84
85
86
87 public void load(final ProgramDTO programme) {
88
89
90 getModel().setProgramme(programme);
91
92
93 final List<LocationDTO> lieux = getContext().getReferentialService().getLocations(null, programme.getCode());
94
95
96 getModel().setBeans(lieux);
97
98
99 getUI().setBorder(BorderFactory.createTitledBorder(
100 t("dali.program.strategies.location.title", programme.getCode())));
101
102
103 selectCell(0, null);
104
105
106 if (getContext().getSelectedLocationId() != null) {
107 selectRowById(getContext().getSelectedLocationId());
108 setFocusOnCell(getModel().getSingleSelectedRow());
109 }
110 }
111
112
113
114
115 private void initialiserListeners() {
116
117
118 getModel().addPropertyChangeListener(LocationsTableUIModel.PROPERTY_SINGLE_ROW_SELECTED, evt -> loadAutresTableaux(getModel().getSingleSelectedRow()));
119 }
120
121
122
123
124
125 private void loadAutresTableaux(final LocationDTO lieu) {
126 if (lieu != null) {
127
128
129 getUI().getParentContainer(StrategiesLieuxUI.class).getStrategiesLieuTableUI().getHandler().load(lieu);
130
131
132 getUI().getParentContainer(StrategiesLieuxUI.class).getStrategiesProgrammeTableUI().getHandler().load(
133 getModel().getProgramme(), lieu);
134 }
135 }
136
137
138
139
140 private void initialiserTableau() {
141
142
143 final SwingTable table = getTable();
144
145
146 final TableColumnExt colonneLabel = addColumn(
147 LieuxProgrammeTableModel.CODE);
148 colonneLabel.setSortable(true);
149 colonneLabel.setMinWidth(80);
150 colonneLabel.setCellRenderer(newNumberCellRenderer(0));
151
152
153 final TableColumnExt colonneName = addColumn(
154 LieuxProgrammeTableModel.LABEL);
155 colonneName.setSortable(true);
156 colonneName.setMinWidth(80);
157
158
159 final TableColumnExt colonneComment = addColumn(
160 LieuxProgrammeTableModel.NAME);
161 colonneComment.setSortable(true);
162 colonneComment.setMinWidth(100);
163
164
165 final LieuxProgrammeTableModel tableModel = new LieuxProgrammeTableModel(getTable().getColumnModel());
166 table.setModel(tableModel);
167
168
169 initTable(table, true);
170
171
172 table.setSortOrder(LieuxProgrammeTableModel.CODE, SortOrder.ASCENDING);
173
174
175 tableModel.setNoneEditableCols();
176
177
178 colonneLabel.setHideable(false);
179 colonneLabel.setEditable(false);
180 colonneName.setHideable(false);
181 colonneName.setEditable(false);
182 colonneComment.setHideable(false);
183 colonneComment.setEditable(false);
184 }
185 }