SubUI.java 37 KB

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