|
@@ -0,0 +1,624 @@
|
|
|
+package com.its.vds.ui.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.vds.domain.NET;
|
|
|
+import com.its.vds.entity.TbVdsCtlr;
|
|
|
+import com.its.vds.global.AppRepository;
|
|
|
+import com.its.vds.service.VdsCtlrService;
|
|
|
+import com.sun.management.OperatingSystemMXBean;
|
|
|
+import lombok.Getter;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+
|
|
|
+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.awt.event.MouseAdapter;
|
|
|
+import java.awt.event.MouseEvent;
|
|
|
+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 VdsCtlrService vdsCtlrService = null;
|
|
|
+ OperatingSystemMXBean osBean = null;
|
|
|
+ private Timer timer;
|
|
|
+ private Long tick = Long.valueOf(0);
|
|
|
+ private TbVdsCtlr selObj = null;
|
|
|
+
|
|
|
+ private CtlrSttsTableModel ctlrSttsTableModel;
|
|
|
+ private TableCellRenderer cellRenderer = new CtlrSttsTableCellRenderer();
|
|
|
+
|
|
|
+ private JPanel rootPanel;
|
|
|
+ private JPanel pnlCtlr;
|
|
|
+ private JPanel pnlLog;
|
|
|
+ private JPanel pnlLogTitle;
|
|
|
+ private JPanel pnlCtlrTitle;
|
|
|
+ private JButton btnLogDirOpen;
|
|
|
+ private JButton btnLogPause;
|
|
|
+ private JCheckBox chkLogPause;
|
|
|
+ private JLabel lblSystime;
|
|
|
+ private JPanel pnlStatusBar;
|
|
|
+ private JTable tblCtlrList;
|
|
|
+ private JTextArea taLog;
|
|
|
+ private JButton btnLogCopy;
|
|
|
+ private JLabel lblTotal;
|
|
|
+ private JLabel lblError;
|
|
|
+ private JLabel lblCpuRate;
|
|
|
+ private JLabel lblMemoryUsage;
|
|
|
+ private JPanel pnlControl;
|
|
|
+ private JButton btnImage;
|
|
|
+ private JButton btnInitialize;
|
|
|
+ private JButton btnReset;
|
|
|
+ private JButton btnDisconnect;
|
|
|
+ private JTextField txtName;
|
|
|
+ private JTextField txtId;
|
|
|
+
|
|
|
+ public static MainUI getInstance() {
|
|
|
+ return _instance;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void displaySystime() {
|
|
|
+ lblSystime.setText(" " + SysUtils.getSysTimeStr() + " ");
|
|
|
+ updateCommSttsTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void displayResource() {
|
|
|
+ long memoryUsage = Math.round(((double) (osBean.getTotalPhysicalMemorySize() - osBean.getFreePhysicalMemorySize())) / (double) osBean.getTotalPhysicalMemorySize() * 100.0);
|
|
|
+ lblMemoryUsage.setText(String.valueOf(memoryUsage));
|
|
|
+ double cpuLoad = osBean.getSystemCpuLoad();
|
|
|
+ lblCpuRate.setText(String.valueOf(Math.round(cpuLoad * 100.0)));
|
|
|
+ }
|
|
|
+
|
|
|
+ public MainUI() {
|
|
|
+ System.setProperty("awt.useSystemAAFontSettings", "false"); // AntiAliasing false
|
|
|
+
|
|
|
+ if (_instance == null) {
|
|
|
+ _instance = this;
|
|
|
+ }
|
|
|
+ osBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);
|
|
|
+ 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) {
|
|
|
+ }
|
|
|
+
|
|
|
+ //taLog.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));
|
|
|
+ Font d2font = new Font("D2Coding", Font.PLAIN, 14);
|
|
|
+ if (d2font != null) {
|
|
|
+ taLog.setFont(d2font);
|
|
|
+ }
|
|
|
+
|
|
|
+// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
|
|
+// String fontNames[] = ge.getAvailableFontFamilyNames();
|
|
|
+// for (int ii = 0; ii < fontNames.length; ii++) {
|
|
|
+// log.error("GraphicsEnvironment Fonts: {}", fontNames[ii]);
|
|
|
+// }
|
|
|
+// final Font fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
|
|
|
+// for (Font font : fonts) {
|
|
|
+// log.error("FONTS: {}", font);
|
|
|
+// }
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ //initTblListUI();
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ tblCtlrList.addMouseListener(new MouseAdapter() {
|
|
|
+ public void mouseClicked(MouseEvent me) {
|
|
|
+ // double click
|
|
|
+ if (me.getClickCount() == 2) {
|
|
|
+ updateControllerInfo();
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ btnDisconnect.addActionListener(new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ controlController(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ btnReset.addActionListener(new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ controlController(2);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ btnInitialize.addActionListener(new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ controlController(3);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ btnImage.addActionListener(new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ controlController(4);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 제어기 명령 처리
|
|
|
+ *
|
|
|
+ * @param type
|
|
|
+ */
|
|
|
+ public void controlController(int type) {
|
|
|
+ if (selObj == null) {
|
|
|
+ JOptionPane.showMessageDialog(getRootPanel(), "제어기가 선택되지 않았습니다. 목록을 더블클릭하여 제어기를 선택하세요.", "제어기 선택", JOptionPane.ERROR_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (selObj.getNetState() == NET.CLOSED) {
|
|
|
+ JOptionPane.showMessageDialog(getRootPanel(), "제어기가 현재 연결이 되어 있지 않습니다.", "제어기 연결 상태", JOptionPane.ERROR_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String message, title;
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ message = "제어기와의 연결을 종료 하시겠습니까?";
|
|
|
+ title = "제어기 연결 종료";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ message = "제어기를 리셋 하시겠습니까?";
|
|
|
+ title = "제어기 리셋";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ message = "제어기를 초기화 하시겠습니까?";
|
|
|
+ title = "제어기 초기화";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ message = "제어기의 정지영상 정보를 요청하시겠습니까?";
|
|
|
+ title = "제어기 정지영상 요청";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (JOptionPane.showConfirmDialog(getRootPanel(), message, title, JOptionPane.YES_NO_OPTION) != 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean result = false;
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ result = selObj.channelClose();
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ result = selObj.reset();
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ result = selObj.initialize();
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ result = selObj.stopImage((byte) 0x01);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!result) {
|
|
|
+ JOptionPane.showMessageDialog(getRootPanel(), "명령 전송이 실패 하였습니다.", title, JOptionPane.ERROR_MESSAGE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateControllerInfo() {
|
|
|
+ int row = tblCtlrList.getSelectedRow();
|
|
|
+ if (row < 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ txtId.setText("");
|
|
|
+ txtName.setText("");
|
|
|
+ CtlrSttsTableModel tableModel = (CtlrSttsTableModel) tblCtlrList.getModel();
|
|
|
+ selObj = tableModel.getControllerInfo(row);
|
|
|
+ if (selObj != null) {
|
|
|
+ txtId.setText(selObj.getVDS_CTLR_ID());
|
|
|
+ txtName.setText(selObj.getVDS_NM());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 목록 헤더 생성
|
|
|
+ */
|
|
|
+ private void initTblListUI(List<TbVdsCtlr> ctlrList) {
|
|
|
+
|
|
|
+ tblCtlrList.getTableHeader().setOpaque(false);
|
|
|
+ tblCtlrList.getTableHeader().setBackground(Color.LIGHT_GRAY);
|
|
|
+ tblCtlrList.setRowMargin(1);
|
|
|
+ //tblCtlrList.setGridColor(Color.LIGHT_GRAY);
|
|
|
+ tblCtlrList.setRowHeight(tblCtlrList.getRowHeight() + 5);
|
|
|
+ //tblCtlrList.setRowSelectionAllowed(true);
|
|
|
+ //tblCtlrList.setColumnSelectionAllowed(false);
|
|
|
+
|
|
|
+ ctlrSttsTableModel = new CtlrSttsTableModel(ctlrList);
|
|
|
+ tblCtlrList.setModel(ctlrSttsTableModel);
|
|
|
+ tblCtlrList.setBackground(Color.WHITE);
|
|
|
+ tblCtlrList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
|
+ //tblCtlrList.setAutoCreateRowSorter(true); // sorting
|
|
|
+
|
|
|
+ //tblCtlrList.addMouseListener(new ListMouseListener(null));
|
|
|
+
|
|
|
+ TableColumnModel getColumnModel = tblCtlrList.getColumnModel();
|
|
|
+ getColumnModel.getColumn(0).setPreferredWidth(30); // "S",
|
|
|
+ getColumnModel.getColumn(1).setPreferredWidth(75); // "번호",
|
|
|
+ getColumnModel.getColumn(2).setPreferredWidth(75); // "시설물ID",
|
|
|
+ getColumnModel.getColumn(3).setPreferredWidth(260); // "명칭",
|
|
|
+ getColumnModel.getColumn(4).setPreferredWidth(120); // "IP",
|
|
|
+ getColumnModel.getColumn(5).setPreferredWidth(55); // "PORT",
|
|
|
+ getColumnModel.getColumn(6).setPreferredWidth(70); // "연결상태",
|
|
|
+ getColumnModel.getColumn(7).setPreferredWidth(50); // "도어",
|
|
|
+ getColumnModel.getColumn(8).setPreferredWidth(50); // "팬",
|
|
|
+ getColumnModel.getColumn(9).setPreferredWidth(50); // "히터",
|
|
|
+ getColumnModel.getColumn(10).setPreferredWidth(50); // "온도",
|
|
|
+ getColumnModel.getColumn(11).setPreferredWidth(50); // "Video",
|
|
|
+ getColumnModel.getColumn(12).setPreferredWidth(120);
|
|
|
+ getColumnModel.getColumn(13).setPreferredWidth(120);
|
|
|
+ getColumnModel.getColumn(0).setMaxWidth(30);
|
|
|
+ getColumnModel.getColumn(0).setMinWidth(30);
|
|
|
+ getColumnModel.getColumn(0).setResizable(false);
|
|
|
+ Color color = UIManager.getColor("Table.gridColor");
|
|
|
+ MatteBorder border = new MatteBorder(1, 1, 0, 0, color);
|
|
|
+ tblCtlrList.setBorder(border);
|
|
|
+
|
|
|
+ DefaultTableCellRenderer centerAlign = new DefaultTableCellRenderer();
|
|
|
+ centerAlign.setHorizontalAlignment(JLabel.CENTER);
|
|
|
+ for (int ii = 0; ii < getColumnModel.getColumnCount(); ii++) {
|
|
|
+ getColumnModel.getColumn(ii).setCellRenderer(cellRenderer);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateCommSttsTotal() {
|
|
|
+ int ctlrTotal = 0;
|
|
|
+ int ctlrError = 0;
|
|
|
+ for (Map.Entry<String, TbVdsCtlr> e : AppRepository.getInstance().getCtlrMap().entrySet()) {
|
|
|
+ TbVdsCtlr obj = e.getValue();
|
|
|
+ if (StringUtils.equals("N", obj.getDEL_YN()) && StringUtils.equals("Y", obj.getVALD_YN())) {
|
|
|
+ ctlrTotal++;
|
|
|
+ if (!"CMS0".equals(obj.getStts().getCMNC_STTS_CD())) {
|
|
|
+ ctlrError++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lblTotal.setText(" " + ctlrTotal + " ");
|
|
|
+ lblError.setText(" " + ctlrError + " ");
|
|
|
+ }
|
|
|
+
|
|
|
+ public void LoadControllerInfo(VdsCtlrService vdsCtlrService) {
|
|
|
+ this.vdsCtlrService = vdsCtlrService;
|
|
|
+
|
|
|
+ SortedMap<Integer, TbVdsCtlr> ctlrMap = new TreeMap<>();
|
|
|
+ for (Map.Entry<String, TbVdsCtlr> e : AppRepository.getInstance().getCtlrMap().entrySet()) {
|
|
|
+ TbVdsCtlr obj = e.getValue();
|
|
|
+ if (StringUtils.equals("N", obj.getDEL_YN()) && StringUtils.equals("Y", obj.getVALD_YN())) {
|
|
|
+ ctlrMap.put(Integer.valueOf(obj.getVDS_CTLR_NMBR()), obj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<TbVdsCtlr> ctlrList = new ArrayList<TbVdsCtlr>(ctlrMap.values());
|
|
|
+ initTblListUI(ctlrList);
|
|
|
+// for (Map.Entry<Integer, TbVdsCtlr> e : ctlrMap.entrySet()) {
|
|
|
+// TbVdsCtlr obj = e.getValue();
|
|
|
+// ctlrSttsTableModel.Add(obj);
|
|
|
+// }
|
|
|
+ updateCommSttsTotal();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateCtlrStts(TbVdsCtlr obj) {
|
|
|
+
|
|
|
+ //CtlrSttsTableModel ctlrSttsTableModel = (CtlrSttsTableModel)tblCtlrList.getModel();
|
|
|
+ for (int ii = 0; ii < ctlrSttsTableModel.getRowCount(); ii++) {
|
|
|
+ if (obj.getVDS_CTLR_ID().equals(ctlrSttsTableModel.getValueAt(ii, 2).toString())) {
|
|
|
+ int modelRow = tblCtlrList.convertRowIndexToModel(ii);
|
|
|
+// //int viewColumn = tblCtlrList.getSelectedColumn();
|
|
|
+// int modelColumn = tblCtlrList.convertColumnIndexToModel(4);
|
|
|
+// Object cell = tblCtlrList.getValueAt(modelRow, modelColumn);
|
|
|
+// log.error("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: {}", cell);
|
|
|
+ ctlrSttsTableModel.setValue(obj, ii, modelRow);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+// 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(3, 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));
|
|
|
+ pnlCtlrTitle = new JPanel();
|
|
|
+ pnlCtlrTitle.setLayout(new GridLayoutManager(1, 6, new Insets(0, 0, 0, 2), -1, -1));
|
|
|
+ pnlCtlr.add(pnlCtlrTitle, 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.setHorizontalTextPosition(11);
|
|
|
+ label1.setIcon(new ImageIcon(getClass().getResource("/static/image/controller.png")));
|
|
|
+ label1.setText("제어기 정보");
|
|
|
+ pnlCtlrTitle.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();
|
|
|
+ pnlCtlrTitle.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
|
|
|
+ final JLabel label2 = new JLabel();
|
|
|
+ Font label2Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label2.getFont());
|
|
|
+ if (label2Font != null) label2.setFont(label2Font);
|
|
|
+ label2.setText("제어기 전체: ");
|
|
|
+ pnlCtlrTitle.add(label2, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 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.setText("통신 이상: ");
|
|
|
+ pnlCtlrTitle.add(label3, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ lblTotal = new JLabel();
|
|
|
+ Font lblTotalFont = this.$$$getFont$$$("Malgun Gothic", Font.BOLD, 12, lblTotal.getFont());
|
|
|
+ if (lblTotalFont != null) lblTotal.setFont(lblTotalFont);
|
|
|
+ lblTotal.setHorizontalAlignment(0);
|
|
|
+ lblTotal.setHorizontalTextPosition(0);
|
|
|
+ lblTotal.setText(" -");
|
|
|
+ pnlCtlrTitle.add(lblTotal, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ lblError = new JLabel();
|
|
|
+ Font lblErrorFont = this.$$$getFont$$$("Malgun Gothic", Font.BOLD, 12, lblError.getFont());
|
|
|
+ if (lblErrorFont != null) lblError.setFont(lblErrorFont);
|
|
|
+ lblError.setForeground(new Color(-65536));
|
|
|
+ lblError.setHorizontalAlignment(0);
|
|
|
+ lblError.setHorizontalTextPosition(0);
|
|
|
+ lblError.setText(" -");
|
|
|
+ pnlCtlrTitle.add(lblError, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ final JScrollPane scrollPane1 = new JScrollPane();
|
|
|
+ pnlCtlr.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));
|
|
|
+ tblCtlrList = new JTable();
|
|
|
+ Font tblCtlrListFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, tblCtlrList.getFont());
|
|
|
+ if (tblCtlrListFont != null) tblCtlrList.setFont(tblCtlrListFont);
|
|
|
+ scrollPane1.setViewportView(tblCtlrList);
|
|
|
+ pnlControl = new JPanel();
|
|
|
+ pnlControl.setLayout(new GridLayoutManager(1, 8, new Insets(0, 0, 0, 2), 1, 1));
|
|
|
+ pnlCtlr.add(pnlControl, 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));
|
|
|
+ btnImage = new JButton();
|
|
|
+ Font btnImageFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnImage.getFont());
|
|
|
+ if (btnImageFont != null) btnImage.setFont(btnImageFont);
|
|
|
+ btnImage.setText("정지영상");
|
|
|
+ pnlControl.add(btnImage, new GridConstraints(0, 7, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ final Spacer spacer2 = new Spacer();
|
|
|
+ pnlControl.add(spacer2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
|
|
|
+ btnInitialize = new JButton();
|
|
|
+ Font btnInitializeFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnInitialize.getFont());
|
|
|
+ if (btnInitializeFont != null) btnInitialize.setFont(btnInitializeFont);
|
|
|
+ btnInitialize.setText("초기화");
|
|
|
+ pnlControl.add(btnInitialize, new GridConstraints(0, 6, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ btnReset = new JButton();
|
|
|
+ Font btnResetFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnReset.getFont());
|
|
|
+ if (btnResetFont != null) btnReset.setFont(btnResetFont);
|
|
|
+ btnReset.setText("리셋");
|
|
|
+ pnlControl.add(btnReset, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ btnDisconnect = new JButton();
|
|
|
+ Font btnDisconnectFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, btnDisconnect.getFont());
|
|
|
+ if (btnDisconnectFont != null) btnDisconnect.setFont(btnDisconnectFont);
|
|
|
+ btnDisconnect.setText("연결끊기");
|
|
|
+ pnlControl.add(btnDisconnect, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ txtName = new JTextField();
|
|
|
+ txtName.setEditable(false);
|
|
|
+ Font txtNameFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtName.getFont());
|
|
|
+ if (txtNameFont != null) txtName.setFont(txtNameFont);
|
|
|
+ txtName.setHorizontalAlignment(2);
|
|
|
+ txtName.setText("제어기 명칭");
|
|
|
+ pnlControl.add(txtName, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, new Dimension(200, -1), new Dimension(200, -1), new Dimension(200, -1), 0, false));
|
|
|
+ txtId = new JTextField();
|
|
|
+ txtId.setEditable(false);
|
|
|
+ Font txtIdFont = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, txtId.getFont());
|
|
|
+ if (txtIdFont != null) txtId.setFont(txtIdFont);
|
|
|
+ txtId.setHorizontalAlignment(0);
|
|
|
+ txtId.setText("ID");
|
|
|
+ pnlControl.add(txtId, new GridConstraints(0, 2, 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));
|
|
|
+ final JLabel label4 = new JLabel();
|
|
|
+ Font label4Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label4.getFont());
|
|
|
+ if (label4Font != null) label4.setFont(label4Font);
|
|
|
+ label4.setIcon(new ImageIcon(getClass().getResource("/static/image/select.png")));
|
|
|
+ label4.setText("선택한 제어기 ");
|
|
|
+ pnlControl.add(label4, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
|
+ 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, 300), new Dimension(-1, 300), new Dimension(-1, 300), 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 label5 = new JLabel();
|
|
|
+ Font label5Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label5.getFont());
|
|
|
+ if (label5Font != null) label5.setFont(label5Font);
|
|
|
+ label5.setHorizontalAlignment(2);
|
|
|
+ label5.setIcon(new ImageIcon(getClass().getResource("/static/image/logging.png")));
|
|
|
+ label5.setText("시스템 로그");
|
|
|
+ pnlLogTitle.add(label5, 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 spacer3 = new Spacer();
|
|
|
+ pnlLogTitle.add(spacer3, 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 scrollPane2 = new JScrollPane();
|
|
|
+ Font scrollPane2Font = this.$$$getFont$$$("D2Coding", Font.PLAIN, 12, scrollPane2.getFont());
|
|
|
+ if (scrollPane2Font != null) scrollPane2.setFont(scrollPane2Font);
|
|
|
+ pnlLog.add(scrollPane2, 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");
|
|
|
+ scrollPane2.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 spacer4 = new Spacer();
|
|
|
+ pnlStatusBar.add(spacer4, 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 label6 = new JLabel();
|
|
|
+ label6.setIcon(new ImageIcon(getClass().getResource("/static/image/on.png")));
|
|
|
+ label6.setText(" ");
|
|
|
+ pnlStatusBar.add(label6, 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 label7 = new JLabel();
|
|
|
+ Font label7Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label7.getFont());
|
|
|
+ if (label7Font != null) label7.setFont(label7Font);
|
|
|
+ label7.setHorizontalAlignment(0);
|
|
|
+ label7.setHorizontalTextPosition(0);
|
|
|
+ label7.setText(" CPU 사용율(%):");
|
|
|
+ pnlStatusBar.add(label7, 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 label8 = new JLabel();
|
|
|
+ Font label8Font = this.$$$getFont$$$("Malgun Gothic", Font.PLAIN, 12, label8.getFont());
|
|
|
+ if (label8Font != null) label8.setFont(label8Font);
|
|
|
+ label8.setHorizontalAlignment(0);
|
|
|
+ label8.setHorizontalTextPosition(0);
|
|
|
+ label8.setText(" 메모리 사용율(%):");
|
|
|
+ pnlStatusBar.add(label8, 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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|