Skip to content

Commit 71aefee

Browse files
committed
refactor: enhance editPositionButton functionality to support multiple selections and improve search query handling
1 parent f01d306 commit 71aefee

1 file changed

Lines changed: 40 additions & 24 deletions

File tree

src/main/java/ui/ViewPosition.java

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,26 +92,26 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
9292
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
9393

9494
positionsTable.setModel(new javax.swing.table.DefaultTableModel(
95-
new Object [][] {
95+
new Object[][]{
9696

97-
},
98-
new String [] {
99-
"ID", "Postion Name", "Salary", "Description", "Created At"
100-
}
97+
},
98+
new String[]{
99+
"ID", "Postion Name", "Salary", "Description", "Created At"
100+
}
101101
) {
102-
Class[] types = new Class [] {
103-
java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
102+
Class[] types = new Class[]{
103+
java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
104104
};
105-
boolean[] canEdit = new boolean [] {
106-
false, false, false, false, false
105+
boolean[] canEdit = new boolean[]{
106+
false, false, false, false, false
107107
};
108108

109109
public Class getColumnClass(int columnIndex) {
110-
return types [columnIndex];
110+
return types[columnIndex];
111111
}
112112

113113
public boolean isCellEditable(int rowIndex, int columnIndex) {
114-
return canEdit [columnIndex];
114+
return canEdit[columnIndex];
115115
}
116116
});
117117
positionsTable.getTableHeader().setReorderingAllowed(false);
@@ -278,14 +278,29 @@ private void deletePositionButtonActionPerformed(java.awt.event.ActionEvent evt)
278278
}//GEN-LAST:event_deletePositionButtonActionPerformed
279279

280280
private void editPositionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editPositionButtonActionPerformed
281-
int selectedRow = positionsTable.getSelectedRow();
282-
if (selectedRow == -1) return;
283-
int positionId = (int) positionsTable.getValueAt(selectedRow, 0);
284-
PositionDetails positionDetails = (PositionDetails) HumanResourceInformationSystem.FRAMES.get(Windows.POSITION_DETAILS).get();
285-
positionDetails.openHrEditPosition(positionId);
281+
int[] selectedRows = positionsTable.getSelectedRows();
282+
if (selectedRows.length == 0) return;
283+
284+
if (selectedRows.length == 1) {
285+
// Single selection: hide ViewPosition and use canonical instance
286+
int positionId = (int) positionsTable.getValueAt(selectedRows[0], 0);
287+
PositionDetails positionDetails = (PositionDetails) HumanResourceInformationSystem.FRAMES.get(Windows.POSITION_DETAILS).get();
288+
setVisible(false);
289+
positionDetails.openForHrFromViewPositions(positionId);
290+
} else {
291+
// Multiple selection: create new instances for each, ViewPosition stays visible
292+
for (int selectedRow : selectedRows) {
293+
final int positionId = (int) positionsTable.getValueAt(selectedRow, 0);
294+
SwingUtilities.invokeLater(() -> {
295+
PositionDetails positionDetails = new PositionDetails();
296+
positionDetails.openHrEditPositionMultiple(positionId);
297+
});
298+
}
299+
}
286300
}//GEN-LAST:event_editPositionButtonActionPerformed
287301

288302
private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
303+
final String QUERY = searchField.getText();
289304
if (Validator.isEmptyOrNullString(searchField.getText())) {
290305
DefaultTableModel positionsTableModel = Util.UI.clearAndGetTableModel(Util.UI.getTableModel(positionsTable), () -> {
291306
editPositionButton.setEnabled(false);
@@ -299,41 +314,42 @@ private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN
299314
);
300315
return;
301316
}
317+
if (QUERY.contains("Search position by")) return;
302318
searchButtonActionPerformed(evt);
303319
}//GEN-LAST:event_refreshButtonActionPerformed
304320

305321
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed
306-
String query = searchField.getText();
322+
final String QUERY = searchField.getText();
307323
String filter = filters.getItemAt(filters.getSelectedIndex());
308-
if (Validator.isEmptyOrNullString(query)) {
309-
JOptionPane.showMessageDialog(this, "Please enter your search query and choose search filter", "Warning", JOptionPane.WARNING_MESSAGE);
324+
if (Validator.isEmptyOrNullString(QUERY)) {
325+
JOptionPane.showMessageDialog(this, "Please enter your search QUERY and choose search filter", "Warning", JOptionPane.WARNING_MESSAGE);
310326
return;
311327
}
312328
DefaultTableModel model = Util.UI.clearAndGetTableModel(Util.UI.getTableModel(positionsTable));
313329
if (Objects.equals(filter, "Name")) {
314330
HumanResourceInformationSystem.POSITION_SERVICE
315-
.getPositionByName(query)
331+
.getPositionByName(QUERY)
316332
.thenAccept(positions -> addPositions(positions, model))
317333
.exceptionally(throwable -> {
318334
JOptionPane.showMessageDialog(this, throwable.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
319335
throw new RuntimeException(throwable);
320336
});
321337
} else if (Objects.equals(filter, "Salary")) {
322338

323-
if (!Validator.isNumber(query)) {
324-
JOptionPane.showMessageDialog(this, "Salary query must be a number", "Warning", JOptionPane.WARNING_MESSAGE);
339+
if (!Validator.isNumber(QUERY)) {
340+
JOptionPane.showMessageDialog(this, "Salary QUERY must be a number", "Warning", JOptionPane.WARNING_MESSAGE);
325341
return;
326342
}
327343
HumanResourceInformationSystem.POSITION_SERVICE
328-
.getPositionBySalary(Double.parseDouble(query))
344+
.getPositionBySalary(Double.parseDouble(QUERY))
329345
.thenAccept(positions -> addPositions(positions, model))
330346
.exceptionally(throwable -> {
331347
JOptionPane.showMessageDialog(this, throwable.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
332348
throw new RuntimeException(throwable);
333349
});
334350
} else if (Objects.equals(filter, "Description")) {
335351
HumanResourceInformationSystem.POSITION_SERVICE
336-
.getPositionByDescription(query)
352+
.getPositionByDescription(QUERY)
337353
.thenAccept(positions -> addPositions(positions, model))
338354
.exceptionally(throwable -> {
339355
JOptionPane.showMessageDialog(this, throwable.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

0 commit comments

Comments
 (0)