From d2db80bf737f86331ae73ce553ee888e3239680c Mon Sep 17 00:00:00 2001 From: lethanhdat <91755733+ldss13@users.noreply.github.com> Date: Fri, 23 May 2025 20:34:14 +0700 Subject: [PATCH] [refactor] Improve MedicineDialog and ServiceDialog to prevent unnecessary filtering during programmatic updates --- .DS_Store | Bin 8196 -> 6148 bytes .../MedicineDialog/MedicineDialog.java | 33 ++++++++++++------ .../ServiceDialog/ServiceDialog.java | 30 ++++++++++------ 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/.DS_Store b/.DS_Store index 550d0377b6fbdda6cee716562689a3fa7eb759ab..00246a087a598cf69ae20df04de2336979d2d39d 100644 GIT binary patch literal 6148 zcmeHKy-EW?5S}%s1O-hYsNGc}h(g}r3}<5}sqD;;#6ZFY6Dyl5wetxi3RkG z<6~HvNAR27A-Oe)rHIVH?zguybKlJub~j5zrgT~_5*3IjkH#3xqnlvt=Qd_DGP4Xc z{Ek+mSgs}Q&RC>Qr~<0MUsQnCZa~}ApeFUa^}BL+p7phpIIgymD(0{mr0;u!*B#$q z|Iyz$&g>0qmq?{q@HVMVM^y2cY317YX1Q-3p5B%|Eq5lros8H&9_#muV-X%d^_f4Q z7A2^>>#>_#-t30HEH~!+SMJRj|A={#-{Une2%#Kx>4a(?>-yPXFA>6i~C zE)q-~x^yyf`7pw4l z1qyR)+a08$@26@WDW zFtIQ!JOwY=Kq-4)IM1ua{^((C|9Sj#Nb%$m^GoTsJ3}^;41OEyGxMwplkJp!>mYK%)xGs_7=dUj$ zKhigzAwaaCSMtm3vbb3o0)+vx^b~6^k>xwIh-aCD9oWX)n{X4cgdUFSLCz;U(h$H1 zx(Tai%dPB5Fq9m7mJkd#>-$Nu7>;C*Zyob)3n=-QYbGnHM+>gHd) zJ<_Oa3qP9T_b2_-l}&1ubzS|4gU;hUX^ni3`hDzSS*$<^9bAt--VdR=CMjkUUu(ry z$=ld?lN>9N{l3gz86z==r8de;vKG%;@BhfQ7R|s(WFRe)USsF~?c=}ypTw!@oHYZQ zfj?w`7|m9*j>hx%rlcR+%%_`v2CF#^QlRU1Y!@0{t&=v L(3NK3uQKopbz>4) diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/MedicineDialog/MedicineDialog.java b/src/main/java/BsK/client/ui/component/CheckUpPage/MedicineDialog/MedicineDialog.java index 0e70b29..6f1a0aa 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/MedicineDialog/MedicineDialog.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/MedicineDialog/MedicineDialog.java @@ -45,6 +45,7 @@ public class MedicineDialog extends JDialog { private HashMap selectedMedicine = new HashMap<>(); private JTable medicineTable; private JTable selectedTable; + private boolean isProgrammaticallySettingMedicineNameField = false; private String[][] medicinePrescription; private static final Logger logger = LoggerFactory.getLogger(MedicineDialog.class); @@ -344,9 +345,21 @@ public class MedicineDialog extends JDialog { add(bottomButtonPanel, BorderLayout.SOUTH); medicineNameField.getDocument().addDocumentListener(new DocumentListener() { - public void changedUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterMedicineTable()); } - public void removeUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterMedicineTable()); } - public void insertUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterMedicineTable()); } + public void changedUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingMedicineNameField) { + SwingUtilities.invokeLater(() -> filterMedicineTable()); + } + } + public void removeUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingMedicineNameField) { + SwingUtilities.invokeLater(() -> filterMedicineTable()); + } + } + public void insertUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingMedicineNameField) { + SwingUtilities.invokeLater(() -> filterMedicineTable()); + } + } }); medicineTable.addMouseListener(new MouseAdapter() { @@ -359,13 +372,6 @@ public class MedicineDialog extends JDialog { handleMedicineTableRowSelection(selectedRow); } }); - } else if (e.getClickCount() == 2) { - SwingUtilities.invokeLater(() -> { - int selectedRow = medicineTable.getSelectedRow(); - if (selectedRow != -1) { - addSelectedMedicine(); - } - }); } } }); @@ -462,12 +468,17 @@ public class MedicineDialog extends JDialog { return; } int modelRow = medicineTable.convertRowIndexToModel(viewRow); + + isProgrammaticallySettingMedicineNameField = true; + medicineNameField.setText(tableModel.getValueAt(modelRow, 1).toString()); + isProgrammaticallySettingMedicineNameField = false; + medicineCompanyField.setText(tableModel.getValueAt(modelRow, 2).toString()); medicineDescriptionField.setText(tableModel.getValueAt(modelRow, 3).toString()); quantityLeftField.setText(tableModel.getValueAt(modelRow, 4).toString()); UnitComboBox.setSelectedItem(tableModel.getValueAt(modelRow, 5).toString()); priceField.setText(tableModel.getValueAt(modelRow, 6).toString()); - medicineNameField.setText(tableModel.getValueAt(modelRow, 1).toString()); + quantitySpinner.setValue(1); morningSpinner.setValue(0); noonSpinner.setValue(0); diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/ServiceDialog/ServiceDialog.java b/src/main/java/BsK/client/ui/component/CheckUpPage/ServiceDialog/ServiceDialog.java index 6721114..85217dd 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/ServiceDialog/ServiceDialog.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/ServiceDialog/ServiceDialog.java @@ -39,6 +39,7 @@ public class ServiceDialog extends JDialog { private TableColumnModel columnModel; private JTable serviceTable; private JTable selectedTable; + private boolean isProgrammaticallySettingNameField = false; private String[][] servicePrescription; private static final Logger logger = LoggerFactory.getLogger(ServiceDialog.class); @@ -236,9 +237,21 @@ public class ServiceDialog extends JDialog { add(bottomButtonPanel, BorderLayout.SOUTH); serviceNameField.getDocument().addDocumentListener(new DocumentListener() { - public void changedUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterServiceTable()); } - public void removeUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterServiceTable()); } - public void insertUpdate(DocumentEvent e) { SwingUtilities.invokeLater(() -> filterServiceTable()); } + public void changedUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingNameField) { + SwingUtilities.invokeLater(() -> filterServiceTable()); + } + } + public void removeUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingNameField) { + SwingUtilities.invokeLater(() -> filterServiceTable()); + } + } + public void insertUpdate(DocumentEvent e) { + if (!isProgrammaticallySettingNameField) { + SwingUtilities.invokeLater(() -> filterServiceTable()); + } + } }); serviceTable.addMouseListener(new MouseAdapter() { @@ -251,13 +264,6 @@ public class ServiceDialog extends JDialog { handleServiceTableRowSelection(selectedRow); } }); - } else if (e.getClickCount() == 2) { - SwingUtilities.invokeLater(() -> { - int selectedRow = serviceTable.getSelectedRow(); - if (selectedRow != -1) { - addSelectedService(); - } - }); } } }); @@ -363,7 +369,11 @@ public class ServiceDialog extends JDialog { return; } int modelRow = serviceTable.convertRowIndexToModel(viewRow); + + isProgrammaticallySettingNameField = true; serviceNameField.setText(tableModel.getValueAt(modelRow, 1).toString()); + isProgrammaticallySettingNameField = false; + priceField.setText(tableModel.getValueAt(modelRow, 2).toString()); quantitySpinner.setValue(1); noteField.setText("");