package open.dolphin.client; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import javax.swing.*; import javax.swing.table.AbstractTableModel; import open.dolphin.infomodel.UserModel; import open.dolphin.project.Project; import open.dolphin.table.StripeTableCellRenderer; /** * * @author Kazushi Minagawa. Digital Globe, Inc. */ public final class AboutDolphin { private final UserModel user; private final String[] copyrights; private JDialog dialog; private final String[] rowItems; private final String textRunning; private final String textUnderStop; public AboutDolphin() { this.user = Project.getUserModel(); copyrights = ClientContext.getString("copyrightString").split(","); java.util.ResourceBundle bundle = ClientContext.getMyBundle(AboutDolphin.class); rowItems = bundle.getString("rowItems.table").split(","); textRunning = bundle.getString("text.running"); textUnderStop = bundle.getString("text.underStop"); } public void start() { SwingUtilities.invokeLater(() -> { createAndShowGUI(); }); } private void createAndShowGUI() { final java.util.ResourceBundle bundle = ClientContext.getMyBundle(AboutDolphin.class); AbstractTableModel model = new AbstractTableModel() { @Override public int getRowCount() { //Server-ORCA連携^ return Project.claimSenderIsClient() ? 27 : 21; } @Override public int getColumnCount() { return 2; } @Override public Object getValueAt(int row, int col) { String ret = null; switch (row) { case 0: ret = col==0 ? rowItems[0] : ClientContext.getString("productString"); break; case 1: ret = col==0 ? rowItems[1] : ClientContext.getVersion(); break; case 2: ret = col==0 ? rowItems[2] : ClientContext.getString("softwareLicense"); break; case 3: ret = col==0 ? rowItems[3] : copyrights[0]; break; case 4: ret = col==0 ? rowItems[4] : copyrights[1]; break; case 5: ret = col==0 ? rowItems[5] : ClientContext.getString("technologies.used"); break; case 6: ret = col==0 ? rowItems[6] : bundle.getString("names.contributers"); break; case 7: ret = col==0 ? rowItems[7] : ClientContext.getString("url.support"); break; case 8: ret = col==0 ? rowItems[8] : user.getFacilityModel().getFacilityId(); break; case 9: ret = col==0 ? rowItems[9] : Project.getUserId(); break; case 10: ret = col==0 ? rowItems[10] : user.getCommonName(); break; case 11: ret = col==0 ? rowItems[11] : user.getLicenseModel().getLicenseDesc(); break; case 12: ret = col==0 ? rowItems[12] : user.getUseDrugId(); break; case 13: if (col==0) { ret = rowItems[13]; } else { // if (ClientContext.is5mTest()) { // ret = "test.open.dolphin.pro"; // } else if (ClientContext.isOpenDolphin()) { // ret = "cloud.open.dolphin"; // } else if (ClientContext.isDolphinPro()) { // String val = Project.getBaseURI(); // int index = val.lastIndexOf("/open"); // ret = val.substring(0, index); // } else { // ret = ""; // } ret = Project.getServer(); } break; case 14: if (col==0) { ret = rowItems[14]; } else { if (Project.getBoolean(GUIConst.SEND_MML_IS_RUNNING)) { StringBuilder sb = new StringBuilder(); sb.append(textRunning).append(" ").append(Project.getString(Project.SEND_MML_DIRECTORY)); ret = sb.toString(); } else { ret = textUnderStop; } } break; case 15: if (col==0) { ret = rowItems[15]; } else { if (Project.getBoolean(Project.KARTE_PDF_SEND_AT_SAVE)) { StringBuilder sb = new StringBuilder(); sb.append(textRunning).append(" ").append(Project.getString(Project.KARTE_PDF_SEND_DIRECTORY)); ret = sb.toString(); } else { ret = textUnderStop; } } break; case 16: if (col==0) { ret = rowItems[16]; } else { if (Project.getBoolean(GUIConst.PVT_RELAY_IS_RUNNING)) { StringBuilder sb = new StringBuilder(); sb.append(textRunning).append(" ").append(Project.getString(Project.PVT_RELAY_DIRECTORY)); sb.append(" ").append(Project.getString(Project.PVT_RELAY_ENCODING)); ret = sb.toString(); } else { ret = textUnderStop; } } break; case 17: if (col==0) { ret = rowItems[17]; } else { String clientText = bundle.getString("text.client"); String serverText = bundle.getString("text.server"); ret = Project.claimSenderIsClient() ? clientText : serverText; } break; case 18: ret = col==0 ? rowItems[18] : Project.getBasicInfo(); break; case 19: ret = col==0 ? rowItems[19] : Project.getString(Project.JMARI_CODE); break; case 20: ret = col==0 ? rowItems[20] : user.getOrcaId(); break; // 以降はClient-ORCA接続の時 case 21: if (col==0) { ret = rowItems[21]; } else { String test = Project.getString(Project.CLAIM_ADDRESS); ret = test!=null ? test : null; } break; case 22: if (col==0) { ret = rowItems[22]; } else { ret = Project.getBoolean(GUIConst.SEND_CLAIM_IS_RUNNING) ? textRunning : textUnderStop; } break; case 23: if (col==0) { ret = rowItems[23]; } else { ret = Project.getString(Project.CLAIM_PORT); } break; case 24: if (col==0) { ret = rowItems[24]; } else { ret = (Project.getBoolean(GUIConst.PVT_SERVER_IS_RUNNING)) ? textRunning : textUnderStop; } break; case 25: if (col==0) { ret = rowItems[25]; } else { String test = Project.getString(Project.CLAIM_BIND_ADDRESS); ret = test!=null ? test : null; } break; case 26: ret = col==0 ? rowItems[26] : "5002"; break; } return ret; } }; JTable table = new JTable(model); table.setRowSelectionAllowed(false); table.setCellSelectionEnabled(false); table.setFocusable(false); //table.setIntercellSpacing(new Dimension(5,5)); //table.setRowHeight(ClientContext.getMoreHigherRowHeight()); StripeTableCellRenderer c0r = new StripeTableCellRenderer(); c0r.setHorizontalAlignment(SwingConstants.RIGHT); c0r.setTable(table); StripeTableCellRenderer c1r = new StripeTableCellRenderer(); c1r.setHorizontalAlignment(SwingConstants.LEFT); c1r.setTable(table); table.getColumnModel().getColumn(0).setCellRenderer(c0r); table.getColumnModel().getColumn(1).setCellRenderer(c1r); table.getColumnModel().getColumn(0).setPreferredWidth(150); table.getColumnModel().getColumn(1).setPreferredWidth(450); // StripeTableCellRendererの場合はsetTable以降で行う table.setIntercellSpacing(new Dimension(7,7)); table.setRowHeight(ClientContext.getMoreHigherRowHeight()); table.setBorder(BorderFactory.createEtchedBorder()); String actionText = bundle.getString("actionText.close"); JButton done = new JButton(actionText); done.addActionListener((ActionEvent ae) -> { dialog.setVisible(false); dialog.dispose(); }); JPanel btnPanel = new JPanel(); btnPanel.setBackground(Color.white); btnPanel.setOpaque(true); btnPanel.add(done); JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setBackground(Color.white); contentPane.setOpaque(true); contentPane.add(table,BorderLayout.CENTER); contentPane.add(btnPanel, BorderLayout.SOUTH); contentPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); dialog = new JDialog(new JFrame(), ClientContext.getString("productString"), true); dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); dialog.setContentPane(contentPane); dialog.getRootPane().setDefaultButton(done); dialog.pack(); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int n = ClientContext.isMac() ? 3 : 2; int x = (screen.width - dialog.getPreferredSize().width) / 2; int y = (screen.height - dialog.getPreferredSize().height) / n; dialog.setLocation(x, y); dialog.setVisible(true); } }