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<Fence> 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<Fence> 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);
|
}
|
}
|