| 
					
				 | 
			
			
				@@ -0,0 +1,472 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.its.wthr.ui; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.intellij.uiDesigner.core.GridConstraints; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.intellij.uiDesigner.core.GridLayoutManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.intellij.uiDesigner.core.Spacer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.app.utils.SysUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.wthr.repository.AppRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.wthr.vo.AtmpPltnVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.wthr.vo.FrcsZoneVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sun.management.OperatingSystemMXBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.Getter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.Timer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.border.MatteBorder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.plaf.FontUIResource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.table.DefaultTableCellRenderer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.table.TableCellRenderer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.table.TableColumnModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.text.StyleContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.datatransfer.Clipboard; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.datatransfer.StringSelection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.event.ActionEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.event.ActionListener; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.lang.management.ManagementFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Getter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class MainUI { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static MainUI _instance = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JFrame jFrame = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Timer timer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Long tick = Long.valueOf(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private AtmpPltnVo selObj = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private AtmpTableModel atmpTableModel = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private FrcsTableModel frcsTableModel = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TableCellRenderer atmpCellRenderer = new AtmpTableCellRenderer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TableCellRenderer frcsCellRenderer = new FrcsTableCellRenderer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel rootPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel pnlCtlr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel pnlLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel pnlLogTitle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JButton btnLogDirOpen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JButton btnLogPause; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JCheckBox chkLogPause; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JLabel lblSystime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel pnlStatusBar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JTextArea taLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JButton btnLogCopy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JLabel lblCpuRate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JLabel lblMemoryUsage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JTabbedPane tabInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel tabAtmp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JPanel tabFrcs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JTable listAtmp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JTable listFrcs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static MainUI getInstance() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _instance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void displaySystime() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblSystime.setText(" " + SysUtils.getSysTimeStr() + "  "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void displayResource() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //OperatingSystemMXBean osBean = (OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long memoryUsage = Math.round(((double) (osBean.getTotalPhysicalMemorySize() - osBean.getFreePhysicalMemorySize())) / (double) osBean.getTotalPhysicalMemorySize() * 100.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblMemoryUsage.setText(String.valueOf(memoryUsage)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        double cpuLoad = osBean.getSystemCpuLoad(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cpuLoad >= 0.0 && cpuLoad <= 1.0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lblCpuRate.setText(String.valueOf(Math.round(cpuLoad * 100.0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lblCpuRate.setText("---"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (osBean instanceof com.sun.management.OperatingSystemMXBean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            com.sun.management.OperatingSystemMXBean nativeOsBean = (com.sun.management.OperatingSystemMXBean)osBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            log.error("CPU LOAD: {}", Math.ceil(nativeOsBean.getSystemCpuLoad() * 100.0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            log.error("You're not using Oracle Java nor using the native library. You won't be able to read some native data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public MainUI(JFrame jFrame) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.setProperty("awt.useSystemAAFontSettings", "false"); // AntiAliasing false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.jFrame = jFrame; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (_instance == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _instance = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Font font = Font.createFont(Font.TRUETYPE_FONT, new File("fonts/D2Coding.ttc")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ge.registerFont(font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (FontFormatException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font d2font = new Font("D2Coding", Font.PLAIN, 14); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (d2font != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            taLog.setFont(d2font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        displaySystime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        displayResource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        timer = new Timer(1000, new ActionListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public void actionPerformed(ActionEvent evt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                displaySystime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tick++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (tick % 5 == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    displayResource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        timer.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause.setFocusable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogPause.setFocusable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogDirOpen.setFocusable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogCopy.setFocusable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogPause.addActionListener(new ActionListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public void actionPerformed(ActionEvent e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                taLog.setText(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogDirOpen.addActionListener(new ActionListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public void actionPerformed(ActionEvent e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Runtime rt = Runtime.getRuntime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rt.exec("explorer.exe logs"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (IOException ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new RuntimeException(ex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause.addActionListener(new ActionListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public void actionPerformed(ActionEvent e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                JTextAreaOutputStream.isLoggingPause = chkLogPause.isSelected(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogCopy.addActionListener(new ActionListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public void actionPerformed(ActionEvent e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                StringSelection stringSelection = new StringSelection(taLog.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Clipboard clpBrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                clpBrd.setContents(stringSelection, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 목록 헤더 생성 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void initTblListUI(List<AtmpPltnVo> atmpList, List<FrcsZoneVo> frcsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.atmpTableModel = new AtmpTableModel(atmpList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setModel(this.atmpTableModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.getTableHeader().setOpaque(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.getTableHeader().setBackground(Color.LIGHT_GRAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setRowMargin(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setRowHeight(listAtmp.getRowHeight() + 5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setBackground(Color.WHITE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TableColumnModel getColumnModel = listAtmp.getColumnModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(0).setPreferredWidth(30);  //  "S", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(1).setPreferredWidth(100);  //  "번호", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(2).setPreferredWidth(80);  //  "측정소명칭", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(3).setPreferredWidth(50); //  "상태", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(4).setPreferredWidth(130); //  "마지막 요청시각", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(5).setPreferredWidth(400);  //  "대기환경 실시간 현황", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(0).setMaxWidth(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(0).setMinWidth(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(0).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(1).setMaxWidth(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(1).setMinWidth(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(1).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(2).setMaxWidth(80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(2).setMinWidth(80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(2).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(3).setMaxWidth(50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(3).setMinWidth(50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(3).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(4).setMaxWidth(130); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(4).setMinWidth(130); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel.getColumn(4).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Color color = UIManager.getColor("Table.gridColor"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MatteBorder border = new MatteBorder(1, 1, 0, 0, color); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setBorder(border); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DefaultTableCellRenderer centerAlign = new DefaultTableCellRenderer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        centerAlign.setHorizontalAlignment(JLabel.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int ii = 0; ii < getColumnModel.getColumnCount(); ii++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getColumnModel.getColumn(ii).setCellRenderer(atmpCellRenderer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.frcsTableModel = new FrcsTableModel(frcsList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.setModel(this.frcsTableModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.getTableHeader().setOpaque(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.getTableHeader().setBackground(Color.LIGHT_GRAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp.setRowMargin(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.setRowHeight(listFrcs.getRowHeight() + 5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.setBackground(Color.WHITE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TableColumnModel getColumnModel_ = listFrcs.getColumnModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(0).setPreferredWidth(30);  //  "S", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(1).setPreferredWidth(100);  //  "구역코드", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(2).setPreferredWidth(80);  //  "예보구역명칭", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(3).setPreferredWidth(50); //  "상태", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(4).setPreferredWidth(130); //  "마지막 요청시각", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(5).setPreferredWidth(400);  //  "동네예보 실시간 현황", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(0).setMaxWidth(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(0).setMinWidth(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(0).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(1).setMaxWidth(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(1).setMinWidth(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(1).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(2).setMaxWidth(80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(2).setMinWidth(80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(2).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(3).setMaxWidth(50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(3).setMinWidth(50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(3).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(4).setMaxWidth(130); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(4).setMinWidth(130); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getColumnModel_.getColumn(4).setResizable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs.setBorder(border); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int ii = 0; ii < getColumnModel_.getColumnCount(); ii++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getColumnModel_.getColumn(ii).setCellRenderer(frcsCellRenderer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void LoadControllerInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SortedMap<Integer, AtmpPltnVo> atmpMap = new TreeMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Map.Entry<String, AtmpPltnVo> e : AppRepository.getInstance().getAtmpPltnMap().entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AtmpPltnVo obj = e.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            atmpMap.put(Integer.valueOf(obj.getATMP_STTN_NMBR()), obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SortedMap<String, FrcsZoneVo> frcsMap = new TreeMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Map.Entry<String, FrcsZoneVo> e : AppRepository.getInstance().getFrcsZoneMap().entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FrcsZoneVo obj = e.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            frcsMap.put(obj.getVILG_FRCS_ZONE_CD(), obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<AtmpPltnVo> atmpList = new ArrayList<AtmpPltnVo>(atmpMap.values()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<FrcsZoneVo> frcsList = new ArrayList<FrcsZoneVo>(frcsMap.values()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        initTblListUI(atmpList, frcsList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void updateCtlrStts(AtmpPltnVo obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.atmpTableModel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int ii = 0; ii < this.atmpTableModel.getRowCount(); ii++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (obj.getPIS_NMBR().equals(ctlrSttsTableModel.getValueAt(ii, 1).toString())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                int modelRow = tblCtlrList.convertRowIndexToModel(ii); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                this.ctlrSttsTableModel.setValue(obj, ii, modelRow); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AtmpTableModel tableModel = (AtmpTableModel) listAtmp.getModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (tableModel != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tableModel.fireTableDataChanged(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// GUI initializer generated by IntelliJ IDEA GUI Designer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// >>> IMPORTANT!! <<< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// DO NOT EDIT OR ADD ANY CODE HERE! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $$$setupUI$$$(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Method generated by IntelliJ IDEA GUI Designer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * >>> IMPORTANT!! <<< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * DO NOT edit this method OR call it in your code! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @noinspection ALL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void $$$setupUI$$$() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rootPanel = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rootPanel.setLayout(new GridLayoutManager(3, 1, new Insets(0, 0, 0, 0), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlCtlr = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlCtlr.setLayout(new GridLayoutManager(1, 1, new Insets(10, 4, 0, 4), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rootPanel.add(pnlCtlr, new GridConstraints(0, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabInfo = new JTabbedPane(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlCtlr.add(tabInfo, 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, new Dimension(200, 200), null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabAtmp = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabAtmp.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabInfo.addTab("대기환경 ", tabAtmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JScrollPane scrollPane1 = new JScrollPane(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabAtmp.add(scrollPane1, new GridConstraints(0, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listAtmp = new JTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scrollPane1.setViewportView(listAtmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabFrcs = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabFrcs.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabInfo.addTab("동네예보 ", tabFrcs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JScrollPane scrollPane2 = new JScrollPane(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabFrcs.add(scrollPane2, new GridConstraints(0, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        listFrcs = new JTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scrollPane2.setViewportView(listFrcs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLog = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLog.setLayout(new GridLayoutManager(2, 1, new Insets(0, 4, 0, 4), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rootPanel.add(pnlLog, 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), new Dimension(-1, 200), new Dimension(-1, 200), 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.setLayout(new GridLayoutManager(1, 6, new Insets(0, 0, 0, 2), 1, 1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLog.add(pnlLogTitle, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JLabel label1 = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font label1Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label1.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (label1Font != null) label1.setFont(label1Font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label1.setHorizontalAlignment(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label1.setIcon(new ImageIcon(getClass().getResource("/static/image/logging.png"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label1.setText("시스템 로그"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final Spacer spacer1 = new Spacer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogDirOpen = new JButton(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font btnLogDirOpenFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnLogDirOpen.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (btnLogDirOpenFont != null) btnLogDirOpen.setFont(btnLogDirOpenFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogDirOpen.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogDirOpen.setText("로그 폴더"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(btnLogDirOpen, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogPause = new JButton(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font btnLogPauseFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnLogPause.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (btnLogPauseFont != null) btnLogPause.setFont(btnLogPauseFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogPause.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogPause.setText("지우기"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(btnLogPause, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause = new JCheckBox(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font chkLogPauseFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, chkLogPause.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (chkLogPauseFont != null) chkLogPause.setFont(chkLogPauseFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause.setHorizontalAlignment(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause.setHorizontalTextPosition(11); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chkLogPause.setText("멈춤"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(chkLogPause, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogCopy = new JButton(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font btnLogCopyFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnLogCopy.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (btnLogCopyFont != null) btnLogCopy.setFont(btnLogCopyFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        btnLogCopy.setText("복사"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLogTitle.add(btnLogCopy, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JScrollPane scrollPane3 = new JScrollPane(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font scrollPane3Font = this.$$$getFont$$$("D2Coding", Font.PLAIN, 12, scrollPane3.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (scrollPane3Font != null) scrollPane3.setFont(scrollPane3Font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlLog.add(scrollPane3, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog = new JTextArea(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setBackground(new Color(-16777216)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setCaretColor(new Color(-1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setEditable(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font taLogFont = this.$$$getFont$$$("D2Coding", Font.PLAIN, 14, taLog.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (taLogFont != null) taLog.setFont(taLogFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setForeground(new Color(-1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setMargin(new Insets(4, 4, 4, 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taLog.setText("[10:50:08.561] [ INFO] ************************************************************************************\n[10:50:08.561] [ INFO] **                   Center Communication Server Information                      **\n[10:50:08.561] [ INFO] **     bindAddress: 0.0.0.0\n[10:50:08.561] [ INFO] **      listenPort: 9901\n[10:50:08.561] [ INFO] **         backlog: 1024\n[10:50:08.561] [ INFO] **   acceptThreads: 16\n[10:50:08.561] [ INFO] **   workerThreads: 16\n[10:50:08.561] [ INFO] ************************************************************************************\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scrollPane3.setViewportView(taLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar = new JPanel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.setLayout(new GridLayoutManager(1, 7, new Insets(0, 4, 4, 4), -1, -1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rootPanel.add(pnlStatusBar, new GridConstraints(2, 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final Spacer spacer2 = new Spacer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(spacer2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblSystime = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font lblSystimeFont = this.$$$getFont$$$("Malgun Gothic", Font.BOLD, 12, lblSystime.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (lblSystimeFont != null) lblSystime.setFont(lblSystimeFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblSystime.setHorizontalAlignment(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblSystime.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblSystime.setText(" 2022-08-04 13:24:33 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(lblSystime, new GridConstraints(0, 6, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JLabel label2 = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label2.setIcon(new ImageIcon(getClass().getResource("/static/image/on.png"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label2.setText(" "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(label2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblCpuRate = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font lblCpuRateFont = this.$$$getFont$$$("Malgun Gothic", Font.BOLD, 12, lblCpuRate.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (lblCpuRateFont != null) lblCpuRate.setFont(lblCpuRateFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblCpuRate.setHorizontalAlignment(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblCpuRate.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblCpuRate.setText("    "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(lblCpuRate, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(40, -1), new Dimension(40, -1), new Dimension(40, -1), 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblMemoryUsage = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font lblMemoryUsageFont = this.$$$getFont$$$("Malgun Gothic", Font.BOLD, 12, lblMemoryUsage.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (lblMemoryUsageFont != null) lblMemoryUsage.setFont(lblMemoryUsageFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblMemoryUsage.setHorizontalAlignment(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblMemoryUsage.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lblMemoryUsage.setText("    "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(lblMemoryUsage, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(40, -1), new Dimension(40, -1), new Dimension(40, -1), 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JLabel label3 = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font label3Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label3.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (label3Font != null) label3.setFont(label3Font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label3.setHorizontalAlignment(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label3.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label3.setText("  CPU 사용율(%):"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(label3, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final JLabel label4 = new JLabel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font label4Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label4.getFont()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (label4Font != null) label4.setFont(label4Font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label4.setHorizontalAlignment(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label4.setHorizontalTextPosition(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label4.setText("  메모리 사용율(%):"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pnlStatusBar.add(label4, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @noinspection ALL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (currentFont == null) return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String resultName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (fontName == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            resultName = currentFont.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Font testFont = new Font(fontName, Font.PLAIN, 10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (testFont.canDisplay('a') && testFont.canDisplay('1')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                resultName = fontName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                resultName = currentFont.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font font = new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean isMac = System.getProperty("os.name", "").toLowerCase(Locale.ENGLISH).startsWith("mac"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Font fontWithFallback = isMac ? new Font(font.getFamily(), font.getStyle(), font.getSize()) : new StyleContext().getFont(font.getFamily(), font.getStyle(), font.getSize()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return fontWithFallback instanceof FontUIResource ? fontWithFallback : new FontUIResource(fontWithFallback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @noinspection ALL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public JComponent $$$getRootComponent$$$() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rootPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |