package home;
|
|
import javax.swing.*;
|
|
import PublicPannel.AntiCollisionPanel;
|
import PublicPannel.BaseParameterPanel;
|
import PublicPannel.BaseStationPanel;
|
import PublicPannel.TagPanel;
|
import PublicPannel.UpgradePanel;
|
|
import java.awt.*;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
|
public class NetworkCommunicationPanel extends JPanel {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
private MainFrame mainFrame;
|
private JComboBox<String> protocolCombo;
|
private JTextField hostAddressField, portField;
|
private JLabel hostLabel, portLabel;
|
private JButton openBtn;
|
private JTabbedPane rightTabbedPane;
|
private BaseParameterPanel baseParamPanel;
|
private BaseStationPanel baseStationPanel;
|
private TagPanel tagPanel;
|
private AntiCollisionPanel antiCollisionPanel;
|
private UpgradePanel upgradePanel;
|
private JButton readParamsBtn, saveParamsBtn, restartDeviceBtn, resetFactoryBtn;
|
private boolean isOpen = false;
|
|
public NetworkCommunicationPanel(MainFrame mainFrame) {
|
this.mainFrame = mainFrame;
|
initializeUI();
|
}
|
|
private void initializeUI() {
|
setLayout(new BorderLayout());
|
|
// ¿ØÖÆÃæ°å
|
add(createControlPanel(), BorderLayout.NORTH);
|
|
// Ö÷·Ö¸îÃæ°å - ʹÓÃˮƽ·Ö¸î
|
JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
|
mainSplitPane.setDividerLocation(320);
|
|
// »ù´¡²ÎÊýÃæ°å
|
JPanel leftPanel = createBaseParameterPanel();
|
|
// ÓҲ๦ÄÜÃæ°å
|
JPanel rightPanel = createRightPanel();
|
rightPanel.setBorder(null); // ÒÆ³ýÃæ°å±ß¿ò
|
|
mainSplitPane.setLeftComponent(leftPanel);
|
mainSplitPane.setRightComponent(rightPanel);
|
|
add(mainSplitPane, BorderLayout.CENTER);
|
|
// µ×²¿°´Å¥Ãæ°å
|
add(createBottomButtonPanel(), BorderLayout.SOUTH);
|
}
|
|
private JPanel createControlPanel() {
|
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
|
panel.add(new JLabel(getString("protocol.type")));
|
protocolCombo = new JComboBox<>(new String[]{"UDP", "TCP Client", "TCP Server"});
|
protocolCombo.addActionListener(new ProtocolChangeListener());
|
panel.add(protocolCombo);
|
|
hostLabel = new JLabel(getString("local.host.address"));
|
panel.add(hostLabel);
|
|
hostAddressField = new JTextField(15);
|
panel.add(hostAddressField);
|
|
portLabel = new JLabel(getString("local.host.port"));
|
panel.add(portLabel);
|
|
portField = new JTextField(8);
|
panel.add(portField);
|
|
// ʹÓÃButtonUtils´´½¨À¶É«Ñùʽ°´Å¥
|
openBtn = ButtonUtils.createBlueButton(getString("open"));
|
openBtn.addActionListener(e -> toggleConnection());
|
panel.add(openBtn);
|
|
return panel;
|
}
|
|
private void toggleConnection() {
|
isOpen = !isOpen;
|
openBtn.setText(isOpen ? getString("close") : getString("open"));
|
}
|
|
private JPanel createBaseParameterPanel() {
|
JPanel panel = new JPanel(new BorderLayout());
|
baseParamPanel = new BaseParameterPanel(mainFrame);
|
panel.add(baseParamPanel, BorderLayout.CENTER);
|
return panel;
|
}
|
|
private JPanel createRightPanel() {
|
JPanel panel = new JPanel(new BorderLayout());
|
panel.setBorder(null); // ÒÆ³ýÃæ°å±ß¿ò
|
|
// ÓÒ²àÑ¡Ï
|
rightTabbedPane = new JTabbedPane();
|
|
// ´´½¨¸÷¸ö¹¦ÄÜÃæ°å
|
baseStationPanel = new BaseStationPanel(mainFrame);
|
tagPanel = new TagPanel(mainFrame);
|
antiCollisionPanel = new AntiCollisionPanel(mainFrame);
|
upgradePanel = new UpgradePanel(mainFrame);
|
|
rightTabbedPane.addTab(getString("base.station"), baseStationPanel);
|
rightTabbedPane.addTab(getString("tag"), tagPanel);
|
rightTabbedPane.addTab(getString("anti.collision"), antiCollisionPanel);
|
rightTabbedPane.addTab(getString("upgrade"), upgradePanel);
|
|
panel.add(rightTabbedPane, BorderLayout.CENTER);
|
|
return panel;
|
}
|
|
private JPanel createBottomButtonPanel() {
|
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
|
// ʹÓÃButtonUtils´´½¨À¶É«Ñùʽ°´Å¥
|
readParamsBtn = ButtonUtils.createBlueButton(getString("read.parameters"));
|
saveParamsBtn = ButtonUtils.createBlueButton(getString("save.parameters"));
|
restartDeviceBtn = ButtonUtils.createBlueButton(getString("restart.device"));
|
resetFactoryBtn = ButtonUtils.createBlueButton(getString("reset.factory"));
|
|
panel.add(readParamsBtn);
|
panel.add(saveParamsBtn);
|
panel.add(restartDeviceBtn);
|
panel.add(resetFactoryBtn);
|
|
return panel;
|
}
|
|
public void updateLanguage() {
|
// ¸üпØÖÆÃæ°åÎı¾
|
openBtn.setText(isOpen ? getString("close") : getString("open"));
|
readParamsBtn.setText(getString("read.parameters"));
|
saveParamsBtn.setText(getString("save.parameters"));
|
restartDeviceBtn.setText(getString("restart.device"));
|
resetFactoryBtn.setText(getString("reset.factory"));
|
|
// ¸üÐÂÖ÷»ú±êÇ©ºÍ¶Ë¿Ú±êÇ©
|
hostLabel.setText(getString("local.host.address"));
|
portLabel.setText(getString("local.host.port"));
|
|
// ¸üÐÂÐÒéÑ¡Ôñ
|
protocolCombo.removeAllItems();
|
protocolCombo.addItem("UDP");
|
protocolCombo.addItem("TCP Client");
|
protocolCombo.addItem("TCP Server");
|
|
// ¸üÐÂÑ¡Ï±êÌâ
|
if (rightTabbedPane != null) {
|
rightTabbedPane.setTitleAt(0, getString("base.station"));
|
rightTabbedPane.setTitleAt(1, getString("tag"));
|
rightTabbedPane.setTitleAt(2, getString("anti.collision"));
|
rightTabbedPane.setTitleAt(3, getString("upgrade"));
|
}
|
|
// ¸üи÷¸ö¹¦ÄÜÃæ°åµÄÓïÑÔ
|
baseParamPanel.updateLanguage();
|
baseStationPanel.updateLanguage();
|
tagPanel.updateLanguage();
|
antiCollisionPanel.updateLanguage();
|
upgradePanel.updateLanguage();
|
|
revalidate();
|
repaint();
|
}
|
|
private class ProtocolChangeListener implements ActionListener {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
String protocol = (String) protocolCombo.getSelectedItem();
|
// Ìí¼Ó¿ÕÖµ¼ì²é
|
if (protocol == null) {
|
return;
|
}
|
|
switch (protocol) {
|
case "UDP":
|
hostLabel.setText(getString("local.host.address"));
|
portLabel.setText(getString("local.host.port"));
|
break;
|
case "TCP Client":
|
hostLabel.setText(getString("remote.host.address"));
|
portLabel.setText(getString("remote.host.port"));
|
break;
|
case "TCP Server":
|
hostLabel.setText(getString("local.host.address"));
|
portLabel.setText(getString("local.host.port"));
|
break;
|
}
|
}
|
}
|
|
private String getString(String key) {
|
return mainFrame.getString(key);
|
}
|
}
|