SubUI.java 35 KB

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