package dell_Fence; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.sql.SQLException; import java.util.List; import java.util.ResourceBundle; import dell_Fence.Dell_Fence; import dell_Fence.Dell_FenceType; import targets.Fence; import publicsWay.TableUtils; @SuppressWarnings("serial") public class FenceListPanel extends JPanel { private ResourceBundle messages; private JTable fenceTable; private DefaultTableModel tableModel; private JTextField searchField; // ×ÊÔ´¼üÖµ private static final String TITLE_KEY = "fence.list.title"; private static final String SEARCH_KEY = "fence.list.search"; private static final String EDIT_KEY = "fence.list.edit"; private static final String DELETE_KEY = "fence.list.delete"; private static final String REFRESH_KEY = "fence.list.refresh"; private static final String COL_ID_KEY = "fence.list.column.id"; private static final String COL_NAME_KEY = "fence.list.column.name"; private static final String COL_TYPE_KEY = "fence.list.column.type"; private static final String COL_DEPT_KEY = "fence.list.column.department"; private static final String COL_LAYER_KEY = "fence.list.column.layer"; private static final String COL_START_KEY = "fence.list.column.startTime"; private static final String COL_END_KEY = "fence.list.column.endTime"; private static final String COL_COLOR_KEY = "fence.list.column.color"; private static final String COL_ENABLED_KEY = "fence.list.column.enabled"; private static final String COL_COMPANY_KEY = "fence.list.column.company"; private static final String COL_ADD_TIME_KEY = "fence.list.column.addTime"; public FenceListPanel(ResourceBundle messages) { this.messages = messages; setLayout(new BorderLayout()); initUI(); loadFenceData(); } private void initUI() { // ¶¥²¿Ãæ°å JPanel topPanel = new JPanel(new BorderLayout()); topPanel.setBorder(BorderFactory.createTitledBorder(getResourceString(TITLE_KEY))); // ËÑË÷Ãæ°å JPanel searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); searchField = new JTextField(20); searchPanel.add(new JLabel(getResourceString(COL_NAME_KEY) + ":")); searchPanel.add(searchField); // ËÑË÷°´Å¥ JButton searchButton = new JButton(getResourceString(SEARCH_KEY)); searchButton.addActionListener(e -> searchFences()); searchPanel.add(searchButton); // ²Ù×÷°´Å¥Ãæ°å JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); // ±à¼­°´Å¥ JButton editButton = new JButton(getResourceString(EDIT_KEY)); editButton.addActionListener(e -> showEditDialog()); actionPanel.add(editButton); // ɾ³ý°´Å¥ JButton deleteButton = new JButton(getResourceString(DELETE_KEY)); deleteButton.addActionListener(e -> deleteSelectedFence()); actionPanel.add(deleteButton); // ˢа´Å¥ JButton refreshButton = new JButton(getResourceString(REFRESH_KEY)); refreshButton.addActionListener(e -> refreshData()); actionPanel.add(refreshButton); // Ìí¼Ó×é¼þµ½¶¥²¿Ãæ°å topPanel.add(searchPanel, BorderLayout.CENTER); topPanel.add(actionPanel, BorderLayout.EAST); add(topPanel, BorderLayout.NORTH); // ±í¸ñÁÐÃû String[] columnNames = { getResourceString(COL_ID_KEY), getResourceString(COL_NAME_KEY), getResourceString(COL_TYPE_KEY), getResourceString(COL_DEPT_KEY), getResourceString(COL_LAYER_KEY), getResourceString(COL_START_KEY), getResourceString(COL_END_KEY), getResourceString(COL_COLOR_KEY), getResourceString(COL_ENABLED_KEY), getResourceString(COL_COMPANY_KEY), getResourceString(COL_ADD_TIME_KEY) }; // ´´½¨±í¸ñ fenceTable = TableUtils.createCommonTable(columnNames); tableModel = (DefaultTableModel) fenceTable.getModel(); // Ìí¼Ó±í¸ñµ½¹ö¶¯Ãæ°å JScrollPane scrollPane = new JScrollPane(fenceTable); add(scrollPane, BorderLayout.CENTER); } private void loadFenceData() { tableModel.setRowCount(0); try { List fences = Dell_Fence.getAllFences(); for (Fence fence : fences) { Object[] row = { fence.getId(), fence.getFenceName(), getFenceTypeName(fence.getFenceType()), fence.getRelatedDepartment(), fence.getLayer(), fence.getEffectiveTime(), fence.getExpirationTime(), getColorName(fence.getColor()), fence.getIsEnabled().equals("1") ? "ÊÇ" : "·ñ", fence.getCompany(), fence.getAddedTime() }; tableModel.addRow(row); } } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "¼ÓÔØÎ§À¸Êý¾Ýʧ°Ü: " + e.getMessage(), "´íÎó", JOptionPane.ERROR_MESSAGE); } } private String getFenceTypeName(String typeCode) { try { return Dell_FenceType.getFenceTypeById(Integer.parseInt(typeCode)).getTypeName(); } catch (Exception e) { return "δ֪ÀàÐÍ"; } } private String getColorName(String colorCode) { switch (colorCode) { case "0": return "ºìÉ«"; case "1": return "À¶É«"; case "2": return "ÂÌÉ«"; case "3": return "×ÏÉ«"; case "4": return "ÇàÉ«"; default: return "δ֪"; } } private void searchFences() { String keyword = searchField.getText().trim().toLowerCase(); tableModel.setRowCount(0); try { List fences = Dell_Fence.getAllFences(); for (Fence fence : fences) { if (fence.getFenceName().toLowerCase().contains(keyword)) { Object[] row = { fence.getId(), fence.getFenceName(), getFenceTypeName(fence.getFenceType()), fence.getRelatedDepartment(), fence.getLayer(), fence.getEffectiveTime(), fence.getExpirationTime(), getColorName(fence.getColor()), fence.getIsEnabled().equals("1") ? "ÊÇ" : "·ñ", fence.getCompany(), fence.getAddedTime() }; tableModel.addRow(row); } } } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "ËÑË÷ΧÀ¸Ê§°Ü: " + e.getMessage(), "´íÎó", JOptionPane.ERROR_MESSAGE); } } private void showEditDialog() { int selectedRow = fenceTable.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog(this, "ÇëÏÈÑ¡ÔñÒªÐ޸ĵÄΧÀ¸", "Ìáʾ", JOptionPane.WARNING_MESSAGE); return; } int fenceId = Integer.parseInt(tableModel.getValueAt(selectedRow, 0).toString()); try { Fence fence = Dell_Fence.getFenceById(String.valueOf(fenceId)); if (fence != null) { EditFenceDialog dialog = new EditFenceDialog( (JFrame) SwingUtilities.getWindowAncestor(this), "ÐÞ¸ÄΧÀ¸", true, fence, messages ); dialog.setVisible(true); if (dialog.isSaved()) { refreshData(); } } } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "»ñȡΧÀ¸Êý¾Ýʧ°Ü: " + e.getMessage(), "´íÎó", JOptionPane.ERROR_MESSAGE); } } private void deleteSelectedFence() { int selectedRow = fenceTable.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog(this, "ÇëÏÈÑ¡ÔñҪɾ³ýµÄΧÀ¸", "Ìáʾ", JOptionPane.WARNING_MESSAGE); return; } int confirm = JOptionPane.showConfirmDialog(this, "È·¶¨ÒªÉ¾³ýÑ¡ÖеÄΧÀ¸Âð£¿", "È·ÈÏɾ³ý", JOptionPane.YES_NO_OPTION); if (confirm == JOptionPane.YES_OPTION) { int fenceId = Integer.parseInt(tableModel.getValueAt(selectedRow, 0).toString()); try { Dell_Fence.deleteFence(String.valueOf(fenceId)); refreshData(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "ɾ³ýΧÀ¸Ê§°Ü: " + e.getMessage(), "´íÎó", JOptionPane.ERROR_MESSAGE); } } } private void refreshData() { loadFenceData(); searchField.setText(""); } private String getResourceString(String key) { return messages.getString(key); } }