Example usage for com.jgoodies.forms.util LayoutStyle getCurrent

List of usage examples for com.jgoodies.forms.util LayoutStyle getCurrent

Introduction

In this page you can find the example usage for com.jgoodies.forms.util LayoutStyle getCurrent.

Prototype

public static LayoutStyle getCurrent() 

Source Link

Document

Returns the current LayoutStyle .

Usage

From source file:ai.aitia.meme.gui.Wizard.java

License:Open Source License

private JPanel getJButtonsPanel() {
    if (jButtonsPanel == null) {
        int b = GUIUtils.GUI_unit(2);
        int bb = LayoutStyle.getCurrent().getDialogMarginX().getPixelSize(this);
        jButtonsPanel = new JPanel();
        jButtonsPanel.setLayout(new BoxLayout(getJButtonsPanel(), BoxLayout.X_AXIS));
        jButtonsPanel//  ww  w.  ja v a 2 s. co m
                .setBorder(BorderFactory.createEmptyBorder(b / 6, customButton == null ? b : bb, b / 6, b));
        if (customButton != null) {
            JButton JCustomButton = getButton(Button.CUSTOM);
            JCustomButton.setName("btn_wizard_savewizard");
            jButtonsPanel.add(JCustomButton);
        }
        jButtonsPanel.add(Box.createHorizontalGlue());
        jButtonsPanel.add(getJBackButton(), null);
        jButtonsPanel.add(getJNextButton(), null);
        jButtonsPanel.add(Box.createHorizontalStrut(b / 6));
        jButtonsPanel.add(getJFinishButton(), null);
        jButtonsPanel.add(Box.createHorizontalStrut(b / 6));
        jButtonsPanel.add(getJCancelButton(), null);
    }
    return jButtonsPanel;
}

From source file:com.salas.bb.reports.ReportsDialog.java

License:Open Source License

private JComponent buildButtonBar() {
    JButton btnReset = new JButton(new ResetAction());
    JPanel bar = ButtonBarFactory.buildHelpBar(btnReset, createCloseButton(true));
    bar.setBorder(Borders.createEmptyBorder(LayoutStyle.getCurrent().getDialogMarginY(), Sizes.dluX(0),
            Sizes.dluY(0), Sizes.dluX(0)));

    return bar;/*w  w  w .  j a  v a2  s .com*/
}

From source file:com.zeroc.IceGridGUI.EditorBase.java

License:Open Source License

protected void buildPropertiesPanel() {
    JComponent contents = createPropertiesPanel();

    if (contents == null) {
        FormLayout layout = new FormLayout("right:pref, 3dlu, fill:pref:grow, 3dlu, pref", "");

        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        builder.border(Borders.DLU2);/*  ww  w  .  ja  va  2  s  .c  o m*/
        builder.rowGroupingEnabled(true);
        builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

        appendProperties(builder);

        contents = builder.getPanel();
    }

    JScrollPane scrollPane = new JScrollPane(contents, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

    scrollPane.setBorder(Borders.DIALOG);

    if (_propertiesPanel == null) {
        _propertiesPanel = new JPanel(new BorderLayout());
    } else {
        _propertiesPanel.removeAll();
    }
    _propertiesPanel.add(scrollPane, BorderLayout.CENTER);
    _propertiesPanel.setBorder(Borders.EMPTY);
    _propertiesPanel.revalidate();
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.ApplicationDetailsDialog.java

License:Open Source License

ApplicationDetailsDialog(final Root root) {
    super(root.getCoordinator().getMainFrame(), "Application Details - IceGrid Admin", true);
    setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
    _mainFrame = root.getCoordinator().getMainFrame();

    _name.setEditable(false);//from ww  w.  ja  va2 s .  c  om
    _uuid.setEditable(false);
    _createTime.setEditable(false);
    _createUser.setEditable(false);
    _updateTime.setEditable(false);
    _updateUser.setEditable(false);
    _revision.setEditable(false);

    FormLayout layout = new FormLayout("right:pref, 3dlu, pref", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    builder.append("Name", _name);
    builder.nextLine();
    builder.append("UUID", _uuid);
    builder.nextLine();
    builder.append("Created", _createTime);
    builder.nextLine();
    builder.append("Created by", _createUser);
    builder.nextLine();
    builder.append("Last Update", _updateTime);
    builder.nextLine();
    builder.append("Updated by", _updateUser);
    builder.nextLine();
    builder.append("Revision", _revision);
    builder.nextLine();

    Container contentPane = getContentPane();
    contentPane.add(builder.getPanel());

    pack();
    setResizable(false);
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.LogFilterDialog.java

License:Open Source License

LogFilterDialog(final ShowIceLogDialog dialog) {
    super(dialog, "Ice log filter - IceGrid Admin", true);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    java.util.Set<com.zeroc.Ice.LogMessageType> messageTypeFilterSet = null;
    if (dialog.getMessageTypeFilter() != null) {
        messageTypeFilterSet = new java.util.HashSet<>(java.util.Arrays.asList(dialog.getMessageTypeFilter()));
    }//  w ww  .ja  v a  2s.  c om

    final JCheckBox error = new JCheckBox("Error",
            messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.ErrorMessage));
    final JCheckBox warning = new JCheckBox("Warning",
            messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.WarningMessage));
    final JCheckBox print = new JCheckBox("Print",
            messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.PrintMessage));
    final JCheckBox trace = new JCheckBox("Trace",
            messageTypeFilterSet == null || messageTypeFilterSet.contains(LogMessageType.TraceMessage));

    final JTextArea traceCategories = new JTextArea(3, 40);
    traceCategories.setLineWrap(true);

    String[] traceCategoryFilter = dialog.getTraceCategoryFilter();
    if (traceCategoryFilter != null) {
        // TODO: join with escapes!
        traceCategories.setText(com.zeroc.IceUtilInternal.StringUtil
                .joinString(java.util.Arrays.asList(traceCategoryFilter), ", "));
    } else {
        traceCategories.setText(null);
    }

    traceCategories.setToolTipText("Trace categories separated by commas; leave blank to get all categories");

    JButton okButton = new JButton("OK");
    ActionListener okListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String[] traceCategoryFilter = null;

            String txt = traceCategories.getText();
            if (txt != null && !txt.isEmpty()) {
                traceCategoryFilter = com.zeroc.IceUtilInternal.StringUtil.splitString(txt, ", \t\r\n");
                if (traceCategoryFilter == null) {
                    // unmatched quote
                    JOptionPane.showMessageDialog(LogFilterDialog.this,
                            "Unmatched quote in Trace categories field", "Invalid entry",
                            JOptionPane.ERROR_MESSAGE);
                    return;
                }

                if (traceCategoryFilter.length == 0) // only separators
                {
                    traceCategoryFilter = null;
                }
            }

            java.util.Set<LogMessageType> messageTypeFilterSet = new java.util.HashSet<>();
            if (error.isSelected()) {
                messageTypeFilterSet.add(LogMessageType.ErrorMessage);
            }
            if (warning.isSelected()) {
                messageTypeFilterSet.add(LogMessageType.WarningMessage);
            }
            if (print.isSelected()) {
                messageTypeFilterSet.add(LogMessageType.PrintMessage);
            }
            if (trace.isSelected()) {
                messageTypeFilterSet.add(LogMessageType.TraceMessage);
            }
            if (messageTypeFilterSet.size() == 0 || messageTypeFilterSet.size() == 4) {
                // All or nothing checked equivalent of getting everything!
                messageTypeFilterSet = null;
            }
            LogMessageType[] messageTypeFilter = null;
            if (messageTypeFilterSet != null) {
                messageTypeFilter = messageTypeFilterSet.toArray(new LogMessageType[0]);
            }

            dispose();
            dialog.setFilters(messageTypeFilter, traceCategoryFilter);
        }
    };
    okButton.addActionListener(okListener);
    getRootPane().setDefaultButton(okButton);

    JButton cancelButton = new JButton("Cancel");
    ActionListener cancelListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    };
    cancelButton.addActionListener(cancelListener);

    FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    builder.appendSeparator("Retrieve only the following types of log messages (server-side filtering)");
    builder.nextLine();
    builder.append(error);
    builder.nextLine();
    builder.append(warning);
    builder.nextLine();
    builder.append(print);
    builder.nextLine();
    builder.append(trace);
    builder.nextLine();
    builder.append("Trace categories");
    builder.nextLine();
    builder.append("");
    builder.nextRow(-2);
    CellConstraints cc = new CellConstraints();
    JScrollPane scrollPane = new JScrollPane(traceCategories);
    builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 1, 3));
    builder.nextRow(2);
    builder.nextLine();

    JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
    buttonBar.setBorder(Borders.DIALOG);

    java.awt.Container contentPane = getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
    contentPane.add(builder.getPanel());
    contentPane.add(buttonBar);

    pack();
    setResizable(false);
    setLocationRelativeTo(dialog);
    setVisible(true);
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.LogPrefsDialog.java

License:Open Source License

LogPrefsDialog(final ShowLogFileDialog dialog) {
    super(dialog, "Preferences - IceGrid Admin", true);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    final JTextField maxLinesField = new JTextField(10);
    maxLinesField.setText(Integer.toString(dialog.getMaxLines()));
    maxLinesField.setToolTipText("Maximum number of lines in this dialog's buffer");

    final JTextField maxSizeField = new JTextField(10);
    maxSizeField.setText(Integer.toString(dialog.getMaxSize()));
    maxSizeField.setToolTipText("Maximum number of characters in this dialog's buffer");

    final JTextField initialLinesField = new JTextField(10);
    initialLinesField.setText(Integer.toString(dialog.getInitialLines()));
    initialLinesField.setToolTipText("Start by retrieving <num> lines from the server; -1 means retrieve all");

    final JTextField maxReadSizeField = new JTextField(10);
    maxReadSizeField.setText(Integer.toString(dialog.getMaxReadSize()));
    maxReadSizeField.setToolTipText("Maximum number of bytes read by each request");

    final JTextField periodField = new JTextField(10);
    periodField.setText(Float.toString((float) dialog.getPeriod() / 1000));
    periodField.setToolTipText("After reaching EOF, check every <num> seconds for new output");

    JButton okButton = new JButton("OK");
    ActionListener okListener = new ActionListener() {
        @Override//w w  w . j a va  2 s.  c o m
        public void actionPerformed(ActionEvent e) {
            try {
                int maxLines = parseInt(maxLinesField, "Max lines in buffer");
                int maxSize = parseInt(maxSizeField, "Max characters in buffer");
                int initialLines = parseInt(initialLinesField, "Number of lines retrieved initially");
                int maxReadSize = parseInt(maxReadSizeField, "Max bytes read per request");
                int period = (int) (parseFloat(periodField, "Poll period (seconds)") * 1000);

                dialog.setPrefs(maxLines, maxSize, initialLines, maxReadSize, period);
                dispose();
            } catch (NumberFormatException ex) {
                return;
            }
        }
    };
    okButton.addActionListener(okListener);
    getRootPane().setDefaultButton(okButton);

    JButton cancelButton = new JButton("Cancel");
    ActionListener cancelListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    };
    cancelButton.addActionListener(cancelListener);

    FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    builder.append("Max lines in buffer", maxLinesField);
    builder.nextLine();
    builder.append("Max characters in buffer", maxSizeField);
    builder.nextLine();
    builder.append("Number of lines retrieved initially", initialLinesField);
    builder.nextLine();
    builder.append("Max bytes read per request", maxReadSizeField);
    builder.nextLine();
    builder.append("Poll period (seconds)", periodField);
    builder.nextLine();

    JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
    buttonBar.setBorder(Borders.DIALOG);

    java.awt.Container contentPane = getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
    contentPane.add(builder.getPanel());
    contentPane.add(buttonBar);

    pack();
    setResizable(false);
    setLocationRelativeTo(dialog);
    setVisible(true);
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.LogPrefsDialog.java

License:Open Source License

LogPrefsDialog(final ShowIceLogDialog dialog) {
    super(dialog, "Preferences - IceGrid Admin", true);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    final JTextField maxMessagesField = new JTextField(10);
    maxMessagesField.setText(Integer.toString(dialog.getMaxMessages()));
    maxMessagesField.setToolTipText("Maximum number of log messages to keep in this dialog's buffer");

    final JTextField initialMessagesField = new JTextField(10);
    initialMessagesField.setText(Integer.toString(dialog.getInitialMessages()));
    initialMessagesField/* ww w.j ava2  s  . com*/
            .setToolTipText("Start by retrieving <num> log messages from the server; -1 means retrieve all");

    JButton okButton = new JButton("OK");
    ActionListener okListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                int maxMessages = parseInt(maxMessagesField, "Max log messages in buffer");
                int initialMessages = parseInt(initialMessagesField,
                        "Number of log messages retrieved initially");
                dialog.setPrefs(maxMessages, initialMessages);
                dispose();
            } catch (NumberFormatException ex) {
                return;
            }
        }
    };
    okButton.addActionListener(okListener);
    getRootPane().setDefaultButton(okButton);

    JButton cancelButton = new JButton("Cancel");
    ActionListener cancelListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    };
    cancelButton.addActionListener(cancelListener);

    FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    builder.append("Max log messages in buffer", maxMessagesField);
    builder.nextLine();
    builder.append("Number of log messages retrieved initially", initialMessagesField);
    builder.nextLine();

    JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
    buttonBar.setBorder(Borders.DIALOG);

    java.awt.Container contentPane = getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
    contentPane.add(builder.getPanel());
    contentPane.add(buttonBar);

    pack();
    setResizable(false);
    setLocationRelativeTo(dialog);
    setVisible(true);
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.ObjectDialog.java

License:Open Source License

ObjectDialog(final Root root, boolean readOnly) {
    super(root.getCoordinator().getMainFrame(),
            (readOnly ? "" : "New ") + "Dynamic Well-Known Object - IceGrid Admin", true);

    setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
    _mainFrame = root.getCoordinator().getMainFrame();

    _proxy.setLineWrap(true);/*from  w  ww  .j  a v  a 2 s .  c  o m*/

    if (readOnly) {
        _proxy.setEditable(false);
        _proxy.setOpaque(false);
        _type.setEditable(false);
    } else {
        _typeCombo.setEditable(true);
    }

    FormLayout layout = new FormLayout("right:pref, 3dlu, pref", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    builder.append("Proxy");
    builder.nextLine();
    builder.append("");
    builder.nextRow(-2);
    CellConstraints cc = new CellConstraints();
    JScrollPane scrollPane = new JScrollPane(_proxy);
    builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 1, 3));
    builder.nextRow(2);
    builder.nextLine();

    if (readOnly) {
        builder.append("Type", _type);
    } else {
        builder.append("Type", _typeCombo);
    }
    builder.nextLine();

    Container contentPane = getContentPane();
    if (readOnly) {
        contentPane.add(builder.getPanel());
    } else {
        JButton okButton = new JButton("OK");
        ActionListener okListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (_proxy.isEditable()) {
                    String type = null;
                    if (_typeCombo.getSelectedItem() != QUERY_OBJECT) {
                        type = _typeCombo.getSelectedItem().toString();
                    }

                    root.addObject(_proxy.getText(), type, ObjectDialog.this);
                } else {
                    setVisible(false);
                }
            }
        };
        okButton.addActionListener(okListener);
        getRootPane().setDefaultButton(okButton);

        JButton cancelButton = new JButton("Cancel");
        ActionListener cancelListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
            }
        };
        cancelButton.addActionListener(cancelListener);

        JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
        buttonBar.setBorder(Borders.DIALOG);

        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
        contentPane.add(builder.getPanel());
        contentPane.add(buttonBar);
    }

    pack();
    setResizable(false);
}

From source file:com.zeroc.IceGridGUI.LiveDeployment.WriteMessageDialog.java

License:Open Source License

WriteMessageDialog(final Root root) {
    super(root.getCoordinator().getMainFrame(), "Write Message - IceGrid Admin", true);
    setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);

    _mainFrame = root.getCoordinator().getMainFrame();

    _stdOut = new JRadioButton("Write to stdout");
    _stdOut.setSelected(true);/*from   w  w  w .j a  va  2s  . co m*/
    JRadioButton stdErr = new JRadioButton("Write to stderr");
    ButtonGroup bg = new ButtonGroup();
    bg.add(_stdOut);
    bg.add(stdErr);

    JButton okButton = new JButton("OK");
    ActionListener okListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            final Coordinator c = root.getCoordinator();

            AdminPrx admin = c.getAdmin();
            if (admin == null) {
                JOptionPane.showMessageDialog(_mainFrame, "No longer connected to IceGrid Registry",
                        "Writing message to server '" + _target + "' failed", JOptionPane.ERROR_MESSAGE);
            } else {
                com.zeroc.Ice.Identity adminId = new com.zeroc.Ice.Identity(_target,
                        c.getServerAdminCategory());

                final com.zeroc.Ice.ProcessPrx process = com.zeroc.Ice.ProcessPrx
                        .uncheckedCast(admin.ice_identity(adminId).ice_facet("Process"));

                final String prefix = "Writing message to server '" + _target + "'...";
                c.getStatusBar().setText(prefix);

                try {
                    process.writeMessageAsync(_message.getText(), _stdOut.isSelected() ? 1 : 2)
                            .whenComplete((result, ex) -> {
                                if (ex == null) {
                                    SwingUtilities.invokeLater(() -> {
                                        c.getStatusBar().setText(prefix + "done.");
                                    });
                                } else {
                                    SwingUtilities.invokeLater(() -> {
                                        c.getStatusBar().setText(prefix + "failed!");

                                        JOptionPane
                                                .showMessageDialog(_mainFrame,
                                                        "Communication exception: " + ex.toString(),
                                                        "Writing message to server '"
                                                                + process.ice_getIdentity().name + "' failed",
                                                        JOptionPane.ERROR_MESSAGE);
                                    });
                                }
                            });

                } catch (com.zeroc.Ice.LocalException ex) {
                    c.getStatusBar().setText(prefix + "failed.");
                    JOptionPane.showMessageDialog(_mainFrame, "Communication exception: " + ex.toString(),
                            "Writing message to server '" + _target + "' failed", JOptionPane.ERROR_MESSAGE);

                    return;
                }
            }

            setVisible(false);
        }
    };
    okButton.addActionListener(okListener);
    getRootPane().setDefaultButton(okButton);

    JButton cancelButton = new JButton("Cancel");
    ActionListener cancelListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            setVisible(false);
        }
    };
    cancelButton.addActionListener(cancelListener);

    FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());

    _message.setLineWrap(true);
    JScrollPane scrollPane = new JScrollPane(_message, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    builder.append(scrollPane, 3);
    builder.nextLine();
    builder.append(_stdOut);
    builder.append(stdErr);
    builder.nextLine();

    JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
    buttonBar.setBorder(Borders.DIALOG);

    Container contentPane = getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
    contentPane.add(builder.getPanel());
    contentPane.add(buttonBar);

    pack();
    setResizable(false);
}

From source file:com.zeroc.IceGridGUI.SessionKeeper.java

License:Open Source License

public static JPanel getSubjectPanel(X509Certificate cert) throws javax.naming.InvalidNameException {
    java.util.HashMap<String, Object> details = new java.util.HashMap<>();
    LdapName dn = new LdapName(cert.getSubjectX500Principal().getName());
    for (Rdn rdn : dn.getRdns()) {
        details.put(rdn.getType().toUpperCase(), rdn.getValue());
    }//from   ww  w .j av a2  s.co  m

    FormLayout layout = new FormLayout("right:pref, 2dlu, left:pref:grow", "pref");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.border(Borders.DIALOG);
    builder.rowGroupingEnabled(true);
    builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());
    builder.addSeparator("Subject");
    builder.nextLine();

    if (details.get("CN") != null) {
        builder.append(new JLabel("<html><b>Common Name (CN):</b></html>"),
                new JLabel(details.get("CN").toString()));
    } else {
        builder.append(new JLabel("<html><b>Common Name (CN):</b></html>"));
    }

    if (details.get("O") != null) {
        builder.append(new JLabel("<html><b>Organization (O):</b></html>"),
                new JLabel(details.get("O").toString()));
    } else {
        builder.append(new JLabel("<html><b>Organization (O):</b></html>"));
    }

    if (details.get("OU") != null) {
        builder.append(new JLabel("<html><b>Organization Unit (OU):</b></html>"),
                new JLabel(details.get("OU").toString()));
    } else {
        builder.append(new JLabel("<html><b>Organization Unit (OU):</b></html>"));
    }
    builder.append(new JLabel("<html><b>Serial Number:</b></html>"),
            new JLabel(cert.getSerialNumber().toString()));

    return builder.getPanel();
}