SubUI.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. package com.its.vms.ui;
  2. import com.intellij.uiDesigner.core.GridConstraints;
  3. import com.intellij.uiDesigner.core.GridLayoutManager;
  4. import com.intellij.uiDesigner.core.Spacer;
  5. import com.its.vms.domain.NET;
  6. import com.its.vms.dto.TbVmsCtlrDto;
  7. import com.its.vms.entity.TbVmsCtlrStts;
  8. import com.its.vms.xnettcp.vms.process.TcpServerSendData;
  9. import com.its.vms.xnettcp.vms.protocol.enums.eVmsOpCode;
  10. import com.its.vms.xnettcp.vms.protocol.impl.VmsReqStatusControl;
  11. import com.sun.management.OperatingSystemMXBean;
  12. import lombok.Getter;
  13. import lombok.extern.slf4j.Slf4j;
  14. import javax.swing.*;
  15. import javax.swing.plaf.FontUIResource;
  16. import javax.swing.text.StyleContext;
  17. import java.awt.*;
  18. import java.awt.event.ActionEvent;
  19. import java.awt.event.ActionListener;
  20. import java.io.File;
  21. import java.io.IOException;
  22. import java.lang.management.ManagementFactory;
  23. import java.text.SimpleDateFormat;
  24. import java.util.Date;
  25. import java.util.Locale;
  26. @Slf4j
  27. @Getter
  28. public abstract class SubUI {
  29. OperatingSystemMXBean osBean = null;
  30. private TbVmsCtlrDto selObj = null;
  31. private JPanel rootPanel;
  32. private JPanel pnlCtlr;
  33. private JTextArea taLog;
  34. private JPanel pnlControl;
  35. private JButton btnReqFan;
  36. private JButton btnReqHeater;
  37. private JButton btnSignBoardOn;
  38. private JButton btnSignBoardOff;
  39. private JTextField txtName;
  40. private JTextField txtNmbr;
  41. private JTextField txtPort;
  42. private JTextField txtIpAddr;
  43. private JTextField txtDoor;
  44. private JTextField txtFan;
  45. private JTextField txtHeater;
  46. private JTextField txtTemp;
  47. private JTextField txtState;
  48. private JButton btnLogClear;
  49. private JTextField txtCtlrId;
  50. private JButton btnReqStatus;
  51. private JButton btnReqParam;
  52. private JButton btnScnDnld;
  53. private JButton btnTimeSync;
  54. private JComboBox cboControl;
  55. private JSpinner spControl;
  56. protected abstract void actionButtonClicked();
  57. public SubUI() {
  58. System.setProperty("awt.useSystemAAFontSettings", "false"); // AntiAliasing false
  59. osBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);
  60. try {
  61. Font font = Font.createFont(Font.TRUETYPE_FONT, new File("fonts/D2Coding.ttc"));
  62. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  63. ge.registerFont(font);
  64. } catch (FontFormatException | IOException e) {
  65. }
  66. Font d2font = new Font("D2Coding", Font.PLAIN, 12);
  67. taLog.setFont(d2font);
  68. SpinnerModel value = new SpinnerNumberModel(0, 0, 100, 1);
  69. spControl.setModel(value);
  70. btnLogClear.addActionListener(new ActionListener() {
  71. @Override
  72. public void actionPerformed(ActionEvent e) {
  73. taLog.setText(null);
  74. }
  75. });
  76. btnReqStatus.addActionListener(new ActionListener() {
  77. @Override
  78. public void actionPerformed(ActionEvent e) {
  79. statusControl(1); // 상태정보요청
  80. }
  81. });
  82. btnReqParam.addActionListener(new ActionListener() {
  83. @Override
  84. public void actionPerformed(ActionEvent e) {
  85. statusControl(2); // 파라미터정보요청
  86. }
  87. });
  88. btnScnDnld.addActionListener(new ActionListener() {
  89. @Override
  90. public void actionPerformed(ActionEvent e) {
  91. statusControl(3); // 시나리오 다운로드
  92. }
  93. });
  94. btnTimeSync.addActionListener(new ActionListener() {
  95. @Override
  96. public void actionPerformed(ActionEvent e) {
  97. statusControl(4); // 시간설정
  98. }
  99. });
  100. btnSignBoardOff.addActionListener(new ActionListener() {
  101. @Override
  102. public void actionPerformed(ActionEvent e) {
  103. statusControl(5); // 전광판 OFF
  104. }
  105. });
  106. btnSignBoardOn.addActionListener(new ActionListener() {
  107. @Override
  108. public void actionPerformed(ActionEvent e) {
  109. statusControl(6); // 전광판 ON
  110. }
  111. });
  112. btnReqFan.addActionListener(new ActionListener() {
  113. @Override
  114. public void actionPerformed(ActionEvent e) {
  115. statusControl(7); // FAN 제어
  116. }
  117. });
  118. btnReqHeater.addActionListener(new ActionListener() {
  119. @Override
  120. public void actionPerformed(ActionEvent e) {
  121. statusControl(8); // HEATER 제어
  122. }
  123. });
  124. }
  125. public void statusControl(int controlType) {
  126. if (this.selObj == null) {
  127. JOptionPane.showMessageDialog(getRootPanel(), "제어기가 선택되지 않았습니다. 목록을 더블클릭하여 제어기를 선택하세요.", "제어기 선택", JOptionPane.ERROR_MESSAGE);
  128. return;
  129. }
  130. if (this.selObj.getNetState() == NET.CLOSED) {
  131. JOptionPane.showMessageDialog(getRootPanel(), "제어기가 현재 연결이 되어 있지 않습니다.", "제어기 연결 상태", JOptionPane.ERROR_MESSAGE);
  132. return;
  133. }
  134. String message = "";
  135. String title = "제어기 상태 제어";
  136. switch (controlType) {
  137. case 1:
  138. message = "제어기의 상태정보를 요청 하시겠습니까?";
  139. break;
  140. case 2:
  141. message = "제어기의 파라미터정보를 요청 하시겠습니까?";
  142. break;
  143. case 3:
  144. message = "제어기의 표출 시나리오를 다운로드 하시겠습니까?";
  145. break;
  146. case 4:
  147. message = "제어기의 시간 정보를 설정 하시겠습니까?";
  148. break;
  149. case 5:
  150. message = "제어기의 전광판 전원을 OFF 하시겠습니까?";
  151. break;
  152. case 6:
  153. message = "제어기의 전광판 전원을 ON 하시겠습니까?";
  154. break;
  155. case 7:
  156. message = "제어기의 FAN 을 제어 하시겠습니까?";
  157. break;
  158. case 8:
  159. message = "제어기의 HEATER 를 제어 하시겠습니까?";
  160. break;
  161. default:
  162. return;
  163. }
  164. if (JOptionPane.showConfirmDialog(getRootPanel(), message, title, JOptionPane.YES_NO_OPTION) != 0) {
  165. return;
  166. }
  167. VmsReqStatusControl statusControl = new VmsReqStatusControl(this.selObj);
  168. switch (controlType) {
  169. case 1:
  170. this.selObj.addRequestData(new TcpServerSendData(eVmsOpCode.OP_VMS_STATUS_REQ, null));
  171. return;
  172. case 2:
  173. this.selObj.addRequestData(new TcpServerSendData(eVmsOpCode.OP_VMS_PARAMETER_REQ, null));
  174. return;
  175. case 3:
  176. this.selObj.downloadForm(false);
  177. return;
  178. case 4:
  179. statusControl.controlSystemTime();
  180. break;
  181. case 5:
  182. statusControl.controlSignboardPower((byte) 0x00);
  183. break;
  184. case 6:
  185. statusControl.controlSignboardPower((byte) 0x01);
  186. break;
  187. case 7:
  188. statusControl.controlFan((byte) (cboControl.getSelectedIndex() & 0xff), (byte) ((Integer) spControl.getValue() & 0xFF));
  189. break;
  190. case 8:
  191. statusControl.controlHeater((byte) (cboControl.getSelectedIndex() & 0xff), (byte) ((Integer) spControl.getValue() & 0xFF));
  192. break;
  193. }
  194. this.selObj.addRequestData(new TcpServerSendData(eVmsOpCode.OP_VMS_STATUS_CONTROL, statusControl));
  195. }
  196. public void logging(String txt) {
  197. Date now = new Date();
  198. SimpleDateFormat sFormat = new SimpleDateFormat("[MM/dd HH:mm:ss] ");
  199. String newLog = sFormat.format(now);
  200. taLog.append("\n" + newLog + txt);
  201. taLog.setCaretPosition(taLog.getDocument().getLength());
  202. }
  203. public void updateInfo(TbVmsCtlrDto selObj) {
  204. this.selObj = selObj;
  205. taLog.setText(null);
  206. txtNmbr.setText("");
  207. txtCtlrId.setText("");
  208. txtName.setText("");
  209. txtState.setText("");
  210. txtIpAddr.setText("");
  211. txtPort.setText("");
  212. txtDoor.setText("");
  213. txtFan.setText("");
  214. txtHeater.setText("");
  215. txtTemp.setText("");
  216. if (selObj != null) {
  217. txtNmbr.setText(String.valueOf(selObj.getVmsCtlrNmbr()));
  218. txtCtlrId.setText(selObj.getCtlrId());
  219. txtName.setText(selObj.getName());
  220. txtIpAddr.setText(selObj.getCtlrIp());
  221. txtPort.setText(String.valueOf(selObj.getCtlrPort()));
  222. txtState.setText(CtlrSttsTableModel.netStateStr[selObj.getNetState()]);
  223. TbVmsCtlrStts stts = selObj.getStts();
  224. String door = "-";
  225. String fan = "-";
  226. String heater = "-";
  227. String temper = "-";
  228. if ("CMS0".equals(stts.getCmncSttsCd())) {
  229. if (stts.getCboxDoorSttsCd().equals("CDS0")) {
  230. door = "닫힘";
  231. } else if (stts.getCboxDoorSttsCd().equals("CDS1")) {
  232. door = "열림";
  233. }
  234. if (stts.getFanSttsCd().equals("PAS0")) {
  235. fan = "중지";
  236. } else if (stts.getFanSttsCd().equals("PAS1")) {
  237. fan = "가동";
  238. }
  239. if (stts.getHetrSttsCd().equals("HTS0")) {
  240. heater = "중지";
  241. } else if (stts.getHetrSttsCd().equals("HTS1")) {
  242. heater = "가동";
  243. }
  244. temper = String.valueOf(stts.getCboxTmpr());
  245. }
  246. txtDoor.setText(door);
  247. txtFan.setText(fan);
  248. txtHeater.setText(heater);
  249. txtTemp.setText(temper);
  250. }
  251. }
  252. {
  253. // GUI initializer generated by IntelliJ IDEA GUI Designer
  254. // >>> IMPORTANT!! <<<
  255. // DO NOT EDIT OR ADD ANY CODE HERE!
  256. $$$setupUI$$$();
  257. }
  258. /**
  259. * Method generated by IntelliJ IDEA GUI Designer
  260. * >>> IMPORTANT!! <<<
  261. * DO NOT edit this method OR call it in your code!
  262. *
  263. * @noinspection ALL
  264. */
  265. private void $$$setupUI$$$() {
  266. rootPanel = new JPanel();
  267. rootPanel.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1));
  268. pnlCtlr = new JPanel();
  269. pnlCtlr.setLayout(new GridLayoutManager(2, 1, new Insets(0, 4, 0, 4), -1, -1));
  270. rootPanel.add(pnlCtlr, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  271. pnlControl = new JPanel();
  272. pnlControl.setLayout(new GridLayoutManager(5, 1, new Insets(0, 0, 0, 2), 1, 1));
  273. pnlCtlr.add(pnlControl, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
  274. final JPanel panel1 = new JPanel();
  275. panel1.setLayout(new GridLayoutManager(5, 11, new Insets(0, 0, 0, 0), -1, -1));
  276. pnlControl.add(panel1, new GridConstraints(0, 0, 5, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
  277. txtName = new JTextField();
  278. txtName.setEditable(false);
  279. Font txtNameFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtName.getFont());
  280. if (txtNameFont != null) txtName.setFont(txtNameFont);
  281. txtName.setHorizontalAlignment(2);
  282. txtName.setText("제어기 명칭");
  283. panel1.add(txtName, new GridConstraints(1, 4, 1, 3, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false));
  284. final JLabel label1 = new JLabel();
  285. Font label1Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label1.getFont());
  286. if (label1Font != null) label1.setFont(label1Font);
  287. label1.setText("ㅣ명칭");
  288. panel1.add(label1, new GridConstraints(1, 0, 1, 4, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  289. final JLabel label2 = new JLabel();
  290. Font label2Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label2.getFont());
  291. if (label2Font != null) label2.setFont(label2Font);
  292. label2.setText("ㅣIP / Port ");
  293. panel1.add(label2, new GridConstraints(2, 0, 1, 3, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  294. final JLabel label3 = new JLabel();
  295. Font label3Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label3.getFont());
  296. if (label3Font != null) label3.setFont(label3Font);
  297. label3.setText("ㅣ도어");
  298. panel1.add(label3, new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  299. txtDoor = new JTextField();
  300. txtDoor.setEditable(false);
  301. Font txtDoorFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtDoor.getFont());
  302. if (txtDoorFont != null) txtDoor.setFont(txtDoorFont);
  303. txtDoor.setHorizontalAlignment(0);
  304. txtDoor.setText("열림/닫힘");
  305. panel1.add(txtDoor, new GridConstraints(3, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  306. txtState = new JTextField();
  307. txtState.setEditable(false);
  308. Font txtStateFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtState.getFont());
  309. if (txtStateFont != null) txtState.setFont(txtStateFont);
  310. txtState.setHorizontalAlignment(0);
  311. txtState.setText("통신");
  312. panel1.add(txtState, new GridConstraints(0, 8, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  313. txtCtlrId = new JTextField();
  314. txtCtlrId.setEditable(false);
  315. Font txtCtlrIdFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtCtlrId.getFont());
  316. if (txtCtlrIdFont != null) txtCtlrId.setFont(txtCtlrIdFont);
  317. txtCtlrId.setHorizontalAlignment(0);
  318. txtCtlrId.setText("제어기 ID");
  319. panel1.add(txtCtlrId, new GridConstraints(0, 5, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
  320. txtNmbr = new JTextField();
  321. txtNmbr.setEditable(false);
  322. Font txtNmbrFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtNmbr.getFont());
  323. if (txtNmbrFont != null) txtNmbr.setFont(txtNmbrFont);
  324. txtNmbr.setHorizontalAlignment(0);
  325. txtNmbr.setText("관리번호");
  326. panel1.add(txtNmbr, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  327. final JLabel label4 = new JLabel();
  328. Font label4Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label4.getFont());
  329. if (label4Font != null) label4.setFont(label4Font);
  330. label4.setText("ㅣVMS");
  331. panel1.add(label4, new GridConstraints(0, 0, 1, 4, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  332. txtFan = new JTextField();
  333. txtFan.setEditable(false);
  334. Font txtFanFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtFan.getFont());
  335. if (txtFanFont != null) txtFan.setFont(txtFanFont);
  336. txtFan.setHorizontalAlignment(0);
  337. txtFan.setText("가동/중지");
  338. panel1.add(txtFan, new GridConstraints(3, 6, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  339. txtPort = new JTextField();
  340. txtPort.setEditable(false);
  341. Font txtPortFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtPort.getFont());
  342. if (txtPortFont != null) txtPort.setFont(txtPortFont);
  343. txtPort.setHorizontalAlignment(0);
  344. txtPort.setText("3001");
  345. panel1.add(txtPort, new GridConstraints(2, 6, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  346. final JLabel label5 = new JLabel();
  347. Font label5Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label5.getFont());
  348. if (label5Font != null) label5.setFont(label5Font);
  349. label5.setText("ㅣ함체온도");
  350. panel1.add(label5, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  351. final JLabel label6 = new JLabel();
  352. Font label6Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label6.getFont());
  353. if (label6Font != null) label6.setFont(label6Font);
  354. label6.setText("ㅣ히터");
  355. panel1.add(label6, new GridConstraints(4, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  356. txtTemp = new JTextField();
  357. txtTemp.setEditable(false);
  358. Font txtTempFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtTemp.getFont());
  359. if (txtTempFont != null) txtTemp.setFont(txtTempFont);
  360. txtTemp.setHorizontalAlignment(0);
  361. txtTemp.setText("34");
  362. panel1.add(txtTemp, new GridConstraints(4, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  363. txtHeater = new JTextField();
  364. txtHeater.setEditable(false);
  365. Font txtHeaterFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtHeater.getFont());
  366. if (txtHeaterFont != null) txtHeater.setFont(txtHeaterFont);
  367. txtHeater.setHorizontalAlignment(0);
  368. txtHeater.setText("가동/중지");
  369. panel1.add(txtHeater, new GridConstraints(4, 6, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(100, -1), new Dimension(100, -1), new Dimension(100, -1), 0, false));
  370. txtIpAddr = new JTextField();
  371. txtIpAddr.setEditable(false);
  372. Font txtIpAddrFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtIpAddr.getFont());
  373. if (txtIpAddrFont != null) txtIpAddr.setFont(txtIpAddrFont);
  374. txtIpAddr.setHorizontalAlignment(0);
  375. txtIpAddr.setText("192.168.113.112");
  376. panel1.add(txtIpAddr, new GridConstraints(2, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  377. btnReqStatus = new JButton();
  378. Font btnReqStatusFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnReqStatus.getFont());
  379. if (btnReqStatusFont != null) btnReqStatus.setFont(btnReqStatusFont);
  380. btnReqStatus.setText("상태정보요청");
  381. panel1.add(btnReqStatus, new GridConstraints(1, 8, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  382. btnReqParam = new JButton();
  383. Font btnReqParamFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnReqParam.getFont());
  384. if (btnReqParamFont != null) btnReqParam.setFont(btnReqParamFont);
  385. btnReqParam.setText("파라미터 요청");
  386. panel1.add(btnReqParam, new GridConstraints(2, 8, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  387. btnScnDnld = new JButton();
  388. Font btnScnDnldFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnScnDnld.getFont());
  389. if (btnScnDnldFont != null) btnScnDnld.setFont(btnScnDnldFont);
  390. btnScnDnld.setText("시나리오 다운로드");
  391. panel1.add(btnScnDnld, new GridConstraints(3, 8, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  392. btnTimeSync = new JButton();
  393. Font btnTimeSyncFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnTimeSync.getFont());
  394. if (btnTimeSyncFont != null) btnTimeSync.setFont(btnTimeSyncFont);
  395. btnTimeSync.setText("시간 설정");
  396. panel1.add(btnTimeSync, new GridConstraints(4, 8, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  397. btnSignBoardOff = new JButton();
  398. Font btnSignBoardOffFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnSignBoardOff.getFont());
  399. if (btnSignBoardOffFont != null) btnSignBoardOff.setFont(btnSignBoardOffFont);
  400. btnSignBoardOff.setText("전광판 전원 OFF");
  401. btnSignBoardOff.setToolTipText("");
  402. panel1.add(btnSignBoardOff, new GridConstraints(1, 9, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  403. btnSignBoardOn = new JButton();
  404. Font btnSignBoardOnFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnSignBoardOn.getFont());
  405. if (btnSignBoardOnFont != null) btnSignBoardOn.setFont(btnSignBoardOnFont);
  406. btnSignBoardOn.setText("전광판 전원 ON");
  407. btnSignBoardOn.setToolTipText("");
  408. panel1.add(btnSignBoardOn, new GridConstraints(1, 10, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  409. btnReqFan = new JButton();
  410. Font btnReqFanFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnReqFan.getFont());
  411. if (btnReqFanFont != null) btnReqFan.setFont(btnReqFanFont);
  412. btnReqFan.setText("Fan 제어");
  413. btnReqFan.setToolTipText("");
  414. panel1.add(btnReqFan, new GridConstraints(4, 9, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  415. btnReqHeater = new JButton();
  416. Font btnReqHeaterFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnReqHeater.getFont());
  417. if (btnReqHeaterFont != null) btnReqHeater.setFont(btnReqHeaterFont);
  418. btnReqHeater.setText("Heater 제어");
  419. btnReqHeater.setToolTipText("");
  420. panel1.add(btnReqHeater, new GridConstraints(4, 10, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  421. cboControl = new JComboBox();
  422. Font cboControlFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, cboControl.getFont());
  423. if (cboControlFont != null) cboControl.setFont(cboControlFont);
  424. final DefaultComboBoxModel defaultComboBoxModel1 = new DefaultComboBoxModel();
  425. defaultComboBoxModel1.addElement("0x00: 꺼짐");
  426. defaultComboBoxModel1.addElement("0x01: 켜짐");
  427. defaultComboBoxModel1.addElement("0x02: 자동");
  428. cboControl.setModel(defaultComboBoxModel1);
  429. panel1.add(cboControl, new GridConstraints(3, 9, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  430. final JLabel label7 = new JLabel();
  431. Font label7Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label7.getFont());
  432. if (label7Font != null) label7.setFont(label7Font);
  433. label7.setText("ㅣ팬");
  434. panel1.add(label7, new GridConstraints(3, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  435. final JLabel label8 = new JLabel();
  436. Font label8Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label8.getFont());
  437. if (label8Font != null) label8.setFont(label8Font);
  438. label8.setText("ㅣ팬/히터 제어 구분");
  439. panel1.add(label8, new GridConstraints(2, 9, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  440. final JLabel label9 = new JLabel();
  441. Font label9Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label9.getFont());
  442. if (label9Font != null) label9.setFont(label9Font);
  443. label9.setText("ㅣ팬/히터 제어 값");
  444. panel1.add(label9, new GridConstraints(2, 10, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  445. final JPanel panel2 = new JPanel();
  446. panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
  447. panel1.add(panel2, new GridConstraints(3, 10, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
  448. spControl = new JSpinner();
  449. panel2.add(spControl, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  450. final JPanel panel3 = new JPanel();
  451. panel3.setLayout(new GridLayoutManager(2, 1, new Insets(0, 4, 0, 4), -1, -1));
  452. rootPanel.add(panel3, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, new Dimension(-1, 200), null, null, 0, false));
  453. final JPanel panel4 = new JPanel();
  454. panel4.setLayout(new GridLayoutManager(1, 3, new Insets(2, 0, 0, 2), -1, -1));
  455. panel3.add(panel4, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
  456. final JLabel label10 = new JLabel();
  457. Font label10Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label10.getFont());
  458. if (label10Font != null) label10.setFont(label10Font);
  459. label10.setHorizontalAlignment(2);
  460. label10.setIcon(new ImageIcon(getClass().getResource("/static/image/logging.png")));
  461. label10.setText("제어 로그");
  462. panel4.add(label10, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  463. btnLogClear = new JButton();
  464. Font btnLogClearFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnLogClear.getFont());
  465. if (btnLogClearFont != null) btnLogClear.setFont(btnLogClearFont);
  466. btnLogClear.setHorizontalTextPosition(0);
  467. btnLogClear.setText("지우기");
  468. panel4.add(btnLogClear, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
  469. final Spacer spacer1 = new Spacer();
  470. panel4.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
  471. final JScrollPane scrollPane1 = new JScrollPane();
  472. panel3.add(scrollPane1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
  473. taLog = new JTextArea();
  474. taLog.setBackground(new Color(-16777216));
  475. taLog.setCaretColor(new Color(-1));
  476. taLog.setEditable(false);
  477. Font taLogFont = this.$$$getFont$$$("D2Coding", Font.PLAIN, 14, taLog.getFont());
  478. if (taLogFont != null) taLog.setFont(taLogFont);
  479. taLog.setForeground(new Color(-1));
  480. taLog.setMargin(new Insets(4, 4, 4, 4));
  481. taLog.setText("제어로그");
  482. scrollPane1.setViewportView(taLog);
  483. }
  484. /**
  485. * @noinspection ALL
  486. */
  487. private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) {
  488. if (currentFont == null) return null;
  489. String resultName;
  490. if (fontName == null) {
  491. resultName = currentFont.getName();
  492. } else {
  493. Font testFont = new Font(fontName, Font.PLAIN, 10);
  494. if (testFont.canDisplay('a') && testFont.canDisplay('1')) {
  495. resultName = fontName;
  496. } else {
  497. resultName = currentFont.getName();
  498. }
  499. }
  500. Font font = new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize());
  501. boolean isMac = System.getProperty("os.name", "").toLowerCase(Locale.ENGLISH).startsWith("mac");
  502. Font fontWithFallback = isMac ? new Font(font.getFamily(), font.getStyle(), font.getSize()) : new StyleContext().getFont(font.getFamily(), font.getStyle(), font.getSize());
  503. return fontWithFallback instanceof FontUIResource ? fontWithFallback : new FontUIResource(fontWithFallback);
  504. }
  505. /**
  506. * @noinspection ALL
  507. */
  508. public JComponent $$$getRootComponent$$$() {
  509. return rootPanel;
  510. }
  511. }