Example usage for java.awt Font MONOSPACED

List of usage examples for java.awt Font MONOSPACED

Introduction

In this page you can find the example usage for java.awt Font MONOSPACED.

Prototype

String MONOSPACED

To view the source code for java.awt Font MONOSPACED.

Click Source Link

Document

A String constant for the canonical family name of the logical font "Monospaced".

Usage

From source file:net.pms.newgui.LooksFrame.java

/**
 * Constructs a <code>DemoFrame</code>, configures the UI,
 * and builds the content./*  ww  w  .ja  va2  s  . co m*/
 */
public LooksFrame(AutoUpdater autoUpdater, @Nonnull PmsConfiguration configuration,
        @Nonnull WindowPropertiesConfiguration windowConfiguration) {
    super(windowConfiguration.getGraphicsConfiguration());
    if (configuration == null) {
        throw new IllegalArgumentException("configuration can't be null");
    }
    setResizable(true);
    windowProperties = new WindowProperties(this, STANDARD_SIZE, MINIMUM_SIZE, windowConfiguration);
    this.autoUpdater = autoUpdater;
    this.configuration = configuration;
    assert this.configuration != null;
    setMinimumSize(MINIMUM_SIZE);
    Options.setDefaultIconSize(new Dimension(18, 18));
    Options.setUseNarrowButtons(true);

    // Set view level, can be omitted if ViewLevel is implemented in configuration
    // by setting the view level as variable initialization
    if (configuration.isHideAdvancedOptions()) {
        viewLevel = ViewLevel.NORMAL;
    } else {
        viewLevel = ViewLevel.ADVANCED;
    }

    // Global options
    Options.setTabIconsEnabled(true);
    UIManager.put(Options.POPUP_DROP_SHADOW_ENABLED_KEY, null);

    // Swing Settings
    initializeLookAndFeel();

    // wait till the look and feel has been initialized before (possibly) displaying the update notification dialog
    if (autoUpdater != null) {
        autoUpdater.addObserver(this);
        autoUpdater.pollServer();
    }

    // Shared Fonts
    final Integer twelve = Integer.valueOf(12);
    final Integer fontPlain = Integer.valueOf(Font.PLAIN);
    final Integer fontBold = Integer.valueOf(Font.BOLD);

    LazyValue dialogPlain12 = new LazyValue() {
        @Override
        public Object createValue(UIDefaults t) {
            return new FontUIResource(Font.DIALOG, fontPlain, twelve);
        }
    };

    LazyValue sansSerifPlain12 = new LazyValue() {
        @Override
        public Object createValue(UIDefaults t) {
            return new FontUIResource(Font.SANS_SERIF, fontPlain, twelve);
        }
    };

    LazyValue monospacedPlain12 = new LazyValue() {
        @Override
        public Object createValue(UIDefaults t) {
            return new FontUIResource(Font.MONOSPACED, fontPlain, twelve);
        }
    };

    LazyValue dialogBold12 = new LazyValue() {
        @Override
        public Object createValue(UIDefaults t) {
            return new FontUIResource(Font.DIALOG, fontBold, twelve);
        }
    };

    Object MenuFont = dialogPlain12;
    Object FixedControlFont = monospacedPlain12;
    Object ControlFont = dialogPlain12;
    Object MessageFont = dialogPlain12;
    Object WindowFont = dialogBold12;
    Object ToolTipFont = sansSerifPlain12;
    Object IconFont = ControlFont;

    // Override our fonts with a unicode font for languages with special characters
    final String language = configuration.getLanguageTag();
    if (language != null && (language.equals("ja") || language.startsWith("zh") || language.equals("ko"))) {
        // http://propedit.sourceforge.jp/propertieseditor.jnlp
        MenuFont = sansSerifPlain12;
        FixedControlFont = sansSerifPlain12;
        ControlFont = sansSerifPlain12;
        MessageFont = sansSerifPlain12;
        WindowFont = sansSerifPlain12;
        IconFont = sansSerifPlain12;
    }

    UIManager.put("Button.font", ControlFont);
    UIManager.put("CheckBox.font", ControlFont);
    UIManager.put("CheckBoxMenuItem.font", MenuFont);
    UIManager.put("ComboBox.font", ControlFont);
    UIManager.put("EditorPane.font", ControlFont);
    UIManager.put("FileChooser.listFont", IconFont);
    UIManager.put("FormattedTextField.font", ControlFont);
    UIManager.put("InternalFrame.titleFont", WindowFont);
    UIManager.put("Label.font", ControlFont);
    UIManager.put("List.font", ControlFont);
    UIManager.put("PopupMenu.font", MenuFont);
    UIManager.put("Menu.font", MenuFont);
    UIManager.put("MenuBar.font", MenuFont);
    UIManager.put("MenuItem.font", MenuFont);
    UIManager.put("MenuItem.acceleratorFont", MenuFont);
    UIManager.put("RadioButton.font", ControlFont);
    UIManager.put("RadioButtonMenuItem.font", MenuFont);
    UIManager.put("OptionPane.font", MessageFont);
    UIManager.put("OptionPane.messageFont", MessageFont);
    UIManager.put("OptionPane.buttonFont", MessageFont);
    UIManager.put("Panel.font", ControlFont);
    UIManager.put("PasswordField.font", ControlFont);
    UIManager.put("ProgressBar.font", ControlFont);
    UIManager.put("ScrollPane.font", ControlFont);
    UIManager.put("Slider.font", ControlFont);
    UIManager.put("Spinner.font", ControlFont);
    UIManager.put("TabbedPane.font", ControlFont);
    UIManager.put("Table.font", ControlFont);
    UIManager.put("TableHeader.font", ControlFont);
    UIManager.put("TextArea.font", FixedControlFont);
    UIManager.put("TextField.font", ControlFont);
    UIManager.put("TextPane.font", ControlFont);
    UIManager.put("TitledBorder.font", ControlFont);
    UIManager.put("ToggleButton.font", ControlFont);
    UIManager.put("ToolBar.font", MenuFont);
    UIManager.put("ToolTip.font", ToolTipFont);
    UIManager.put("Tree.font", ControlFont);
    UIManager.put("Viewport.font", ControlFont);

    setTitle("Test");
    setIconImage(readImageIcon("icon-32.png").getImage());

    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    JComponent jp = buildContent();
    String showScrollbars = System.getProperty("scrollbars", "").toLowerCase();

    /**
     * Handle scrollbars:
     *
     * 1) forced scrollbars (-Dscrollbars=true): always display them
     * 2) optional scrollbars (-Dscrollbars=optional): display them as needed
     * 3) otherwise (default): don't display them
     */
    switch (showScrollbars) {
    case "true":
        setContentPane(new JScrollPane(jp, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS));
        break;
    case "optional":
        setContentPane(new JScrollPane(jp, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED));
        break;
    default:
        setContentPane(jp);
        break;
    }

    String projectName = PropertiesUtil.getProjectProperties().get("project.name");
    String projectVersion = PropertiesUtil.getProjectProperties().get("project.version");
    String title = projectName + " " + projectVersion;

    // If the version contains a "-" (e.g. "1.50.1-SNAPSHOT" or "1.50.1-beta1"), add a warning message
    if (projectVersion.indexOf('-') > -1) {
        title = title + " - " + Messages.getString("LooksFrame.26");
    }

    if (PMS.getTraceMode() == 2) {
        // Forced trace mode
        title = title + "  [" + Messages.getString("TracesTab.10").toUpperCase() + "]";
    }

    setTitle(title);
    setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

    // Display tooltips immediately and for a long time
    ToolTipManager.sharedInstance().setInitialDelay(400);
    ToolTipManager.sharedInstance().setDismissDelay(60000);
    ToolTipManager.sharedInstance().setReshowDelay(400);

    if (!configuration.isMinimized() && System.getProperty(START_SERVICE) == null) {
        setVisible(true);
    }
    BasicSystemUtils.INSTANCE.addSystemTray(this);
}

From source file:lab4.YouQuiz.java

private void updateAnswerForm() {
    contentPanel.answerPanel.removeAll();

    final Question question = questionsArray.get(questionIndex);

    switch (question.type) {
    case Question.QUESTION_TYPE_MULTIPLE_CHOICE:
    case Question.QUESTION_TYPE_TRUE_FALSE:
        JRadioButton radioButton;
        final ButtonGroup radioGroup = new ButtonGroup();

        for (int i = 0; i < ((MultipleChoiceQuestion) question).getChoices().size(); ++i) {
            radioButton = new JRadioButton(((MultipleChoiceQuestion) question).getChoices().get(i));
            radioButton.setFont(new Font("Consolas", Font.PLAIN, 20));
            radioGroup.add(radioButton);
            radioButton.setFocusable(false);
            contentPanel.answerPanel.add(radioButton);
        }/*from  w ww.  jav  a2  s.  co m*/

        for (ActionListener al : contentPanel.checkButton.getActionListeners()) {
            contentPanel.checkButton.removeActionListener(al);
        }

        contentPanel.checkButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                if (question.checkAnswer(getSelectedButtonText(radioGroup))) {
                    JOptionPane.showMessageDialog(null, "Thats Great, Correct Answer", "Excellent",
                            JOptionPane.INFORMATION_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null,
                            "Oops! Wrong Answer. Its '" + question.getAnswer().get(0) + "'", "Sorry",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        break;
    case Question.QUESTION_TYPE_SHORT_ANSWER:
        final JTextField answerText = new JTextField(25);
        answerText.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 20));
        contentPanel.answerPanel.add(answerText);

        for (ActionListener al : contentPanel.checkButton.getActionListeners()) {
            contentPanel.checkButton.removeActionListener(al);
        }

        contentPanel.checkButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                if (question.checkAnswer(answerText.getText())) {
                    JOptionPane.showMessageDialog(null, "Thats Great, Correct Answer", "Excellent",
                            JOptionPane.INFORMATION_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null,
                            "Oops! Wrong Answer. Its '" + question.getAnswer().get(0) + "'", "Sorry",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        break;
    }

    contentPanel.answerPanel.invalidate();
}

From source file:edu.brown.gui.CatalogViewer.java

/**
 * /*  ww  w.jav  a2  s .  co m*/
 */
protected void viewerInit() {
    // ----------------------------------------------
    // MENU
    // ----------------------------------------------
    JMenu menu;
    JMenuItem menuItem;

    // 
    // File Menu
    //
    menu = new JMenu("File");
    menu.getPopupMenu().setLightWeightPopupEnabled(false);
    menu.setMnemonic(KeyEvent.VK_F);
    menu.getAccessibleContext().setAccessibleDescription("File Menu");
    menuBar.add(menu);

    menuItem = new JMenuItem("Open Catalog From File");
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("Open Catalog From File");
    menuItem.addActionListener(this.menuHandler);
    menuItem.putClientProperty(MenuHandler.MENU_ID, MenuOptions.CATALOG_OPEN_FILE);
    menu.add(menuItem);

    menuItem = new JMenuItem("Open Catalog From Jar");
    menuItem.setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("Open Catalog From Project Jar");
    menuItem.addActionListener(this.menuHandler);
    menuItem.putClientProperty(MenuHandler.MENU_ID, MenuOptions.CATALOG_OPEN_JAR);
    menu.add(menuItem);

    menu.addSeparator();

    menuItem = new JMenuItem("Quit", KeyEvent.VK_Q);
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("Quit Program");
    menuItem.addActionListener(this.menuHandler);
    menuItem.putClientProperty(MenuHandler.MENU_ID, MenuOptions.QUIT);
    menu.add(menuItem);

    // ----------------------------------------------
    // CATALOG TREE PANEL
    // ----------------------------------------------
    this.catalogTree = new JTree();
    this.catalogTree.setEditable(false);
    this.catalogTree.setCellRenderer(new CatalogViewer.CatalogTreeRenderer());
    this.catalogTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    this.catalogTree.addTreeSelectionListener(new TreeSelectionListener() {
        public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) CatalogViewer.this.catalogTree
                    .getLastSelectedPathComponent();
            if (node == null)
                return;

            Object user_obj = node.getUserObject();
            String new_text = ""; // <html>";
            boolean text_mode = true;
            if (user_obj instanceof WrapperNode) {
                CatalogType catalog_obj = ((WrapperNode) user_obj).getCatalogType();
                new_text += CatalogViewer.this.getAttributesText(catalog_obj);
            } else if (user_obj instanceof AttributesNode) {
                AttributesNode wrapper = (AttributesNode) user_obj;
                new_text += wrapper.getAttributes();

            } else if (user_obj instanceof PlanTreeCatalogNode) {
                final PlanTreeCatalogNode wrapper = (PlanTreeCatalogNode) user_obj;
                text_mode = false;

                CatalogViewer.this.mainPanel.remove(0);
                CatalogViewer.this.mainPanel.add(wrapper.getPanel(), BorderLayout.CENTER);
                CatalogViewer.this.mainPanel.validate();
                CatalogViewer.this.mainPanel.repaint();

                if (SwingUtilities.isEventDispatchThread() == false) {
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            wrapper.centerOnRoot();
                        }
                    });
                } else {
                    wrapper.centerOnRoot();
                }

            } else {
                new_text += CatalogViewer.this.getSummaryText();
            }

            // Text Mode
            if (text_mode) {
                if (CatalogViewer.this.text_mode == false) {
                    CatalogViewer.this.mainPanel.remove(0);
                    CatalogViewer.this.mainPanel.add(CatalogViewer.this.textInfoPanel);
                }
                CatalogViewer.this.textInfoTextArea.setText(new_text);

                // Scroll to top
                CatalogViewer.this.textInfoTextArea.grabFocus();
            }

            CatalogViewer.this.text_mode = text_mode;
        }
    });
    this.generateCatalogTree(this.catalog, this.catalog_file_path.getName());

    //
    // Text Information Panel
    //
    this.textInfoPanel = new JPanel();
    this.textInfoPanel.setLayout(new BorderLayout());
    this.textInfoTextArea = new JTextArea();
    this.textInfoTextArea.setEditable(false);
    this.textInfoTextArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
    this.textInfoTextArea.setText(this.getSummaryText());
    this.textInfoTextArea.addFocusListener(new FocusListener() {
        @Override
        public void focusLost(FocusEvent e) {
            // TODO Auto-generated method stub
        }

        @Override
        public void focusGained(FocusEvent e) {
            CatalogViewer.this.scrollTextInfoToTop();
        }
    });
    this.textInfoScroller = new JScrollPane(this.textInfoTextArea);
    this.textInfoPanel.add(this.textInfoScroller, BorderLayout.CENTER);
    this.mainPanel = new JPanel(new BorderLayout());
    this.mainPanel.add(textInfoPanel, BorderLayout.CENTER);

    //
    // Search Toolbar
    //
    JPanel searchPanel = new JPanel();
    searchPanel.setLayout(new BorderLayout());
    JPanel innerSearchPanel = new JPanel();
    innerSearchPanel.setLayout(new BoxLayout(innerSearchPanel, BoxLayout.X_AXIS));
    innerSearchPanel.add(new JLabel("Search: "));
    this.searchField = new JTextField(30);
    innerSearchPanel.add(this.searchField);
    searchPanel.add(innerSearchPanel, BorderLayout.EAST);

    this.searchField.addKeyListener(new KeyListener() {
        private String last = null;

        @Override
        public void keyReleased(KeyEvent e) {
            String value = CatalogViewer.this.searchField.getText().toLowerCase().trim();
            if (!value.isEmpty() && (this.last == null || !this.last.equals(value))) {
                CatalogViewer.this.search(value);
            }
            this.last = value;
        }

        @Override
        public void keyTyped(KeyEvent e) {
            // Do nothing...
        }

        @Override
        public void keyPressed(KeyEvent e) {
            // Do nothing...
        }
    });

    // Putting it all together
    JScrollPane scrollPane = new JScrollPane(this.catalogTree);
    JPanel topPanel = new JPanel();
    topPanel.setLayout(new BorderLayout());
    topPanel.add(searchPanel, BorderLayout.NORTH);
    topPanel.add(scrollPane, BorderLayout.CENTER);

    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, topPanel, this.mainPanel);
    splitPane.setDividerLocation(400);

    this.add(splitPane, BorderLayout.CENTER);
}

From source file:org.n52.ifgicopter.spf.output.GpxOutputPlugin.java

/**
 * // w  w  w . j  a va 2  s  . c o m
 * @return
 */
private JPanel makeGUI() {
    if (this.panel == null) {
        this.panel = new JPanel(new BorderLayout());
        JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
        JButton selectFileButton = new JButton(SELECT_GPX_FILE_TEXT);
        selectFileButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                selectGpxFileAction();
            }
        });
        controlPanel.add(selectFileButton);

        this.outputFileLabel = new JLabel();
        controlPanel.add(this.outputFileLabel);

        JButton saveFileButton = new JButton(SAVE_CURRENT_FILE_TEXT);
        saveFileButton.setToolTipText("Does also save manual changes undless model changes were made.");
        saveFileButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                saveCurrentFile();
            }
        });
        controlPanel.add(saveFileButton);

        // JCheckBox scrollLockCheckBox = new JCheckBox("scroll lock");
        // scrollLockCheckBox.setSelected(true);
        // scrollLockCheckBox.addActionListener(new ActionListener() {
        // @Override
        // public void actionPerformed(final ActionEvent e) {
        // EventQueue.invokeLater(new Runnable() {
        //
        // @Override
        // public void run() {
        // JCheckBox source = (JCheckBox) e.getSource();
        // // GpxOutputPlugin.this.textPane.setAutoscrolls(source.isSelected());
        // }
        // });
        // }
        // });
        // controlPanel.add(scrollLockCheckBox);

        this.panel.add(controlPanel, BorderLayout.NORTH);

        JPanel valuesPanel = new JPanel(new VerticalLayout(5, VerticalLayout.LEFT));
        DefaultListModel listModel = new DefaultListModel();
        listModel.addElement(NO_DATA_LIST_ELEMENT);
        this.valuesToSaveList = new JList(listModel);
        this.valuesToSaveList.setVisibleRowCount(2);
        this.valuesToSaveList
                .setToolTipText("Select (multiple) values to include in the GPX file [Multiple using <Ctrl>].");
        this.valuesToSaveList.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(final ListSelectionEvent e) {
                EventQueue.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        JList list = (JList) e.getSource();
                        // DefaultListModel listModel = (DefaultListModel) list.getModel();
                        Object[] selectedValues = list.getSelectedValues();
                        log.debug("New selection in value list:" + Arrays.toString(selectedValues));

                        GpxOutputPlugin.this.valuesToSave.clear();

                        for (Object o : selectedValues) {
                            if (o instanceof String) {
                                String s = (String) o;
                                if (!GpxOutputPlugin.this.valuesToSave.contains(s))
                                    GpxOutputPlugin.this.valuesToSave.add(s);
                            }
                        }
                    }
                });
            }
        });
        this.valuesToSaveList.setSize(200, 22);
        this.valuesToSaveList.setAlignmentY(Component.CENTER_ALIGNMENT);
        valuesPanel.add(new JLabel("Saved attributes:"));
        valuesPanel.add(this.valuesToSaveList);
        valuesPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
        this.panel.add(valuesPanel, BorderLayout.EAST);

        this.textPane = new XmlTextPane();
        this.textPane.setEditable(true);
        this.textPane.setFont(Font.getFont(Font.MONOSPACED));

        JScrollPane scrollPane = new JScrollPane(this.textPane);
        this.panel.add(scrollPane, BorderLayout.CENTER);
        JButton refreshTextFieldButton = new JButton("Update");
        refreshTextFieldButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                EventQueue.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        updateGUI();
                    }
                });
            }
        });
        this.panel.add(refreshTextFieldButton, BorderLayout.SOUTH);

        updateGUI();
    }

    return this.panel;
}

From source file:org.ala.spatial.web.services.GDMWSController.java

public static void generateCharts123(String outputdir) {
    try {//from   w w w  .  ja  v  a  2 s  .  com
        IniReader ir = new IniReader(outputdir + "/gdm_params.txt");
        double intercept = ir.getDoubleValue("GDMODEL", "Intercept");

        // 1. read the ObservedVsPredicted.csv file
        System.out.println("Loading csv data");
        CSVReader csv = new CSVReader(new FileReader(outputdir + "ObservedVsPredicted.csv"));
        List<String[]> rawdata = csv.readAll();
        double[][] dataCht1 = new double[2][rawdata.size() - 1];
        double[][] dataCht2 = new double[2][rawdata.size() - 1];

        // for Chart 1: obs count
        int[] obscount = new int[11];
        for (int i = 0; i < obscount.length; i++) {
            obscount[i] = 0;
        }

        System.out.println("populating data");
        for (int i = 1; i < rawdata.size(); i++) {
            String[] row = rawdata.get(i);
            double obs = Double.parseDouble(row[4]);
            dataCht1[0][i - 1] = Double.parseDouble(row[6]);
            dataCht1[1][i - 1] = obs;

            dataCht2[0][i - 1] = Double.parseDouble(row[5]) - intercept;
            dataCht2[1][i - 1] = obs;

            int obc = (int) Math.round(obs * 10);
            obscount[obc]++;
        }

        DefaultXYDataset dataset1 = new DefaultXYDataset();
        dataset1.addSeries("", dataCht1);

        DefaultXYDataset dataset2 = new DefaultXYDataset();
        dataset2.addSeries("", dataCht2);

        DefaultCategoryDataset dataset3 = new DefaultCategoryDataset();
        for (int i = 0; i < obscount.length; i++) {
            String col = "0." + i + "-0." + (i + 1);
            if (i == 10) {
                col = "0.9-1.0";
            }
            dataset3.addValue(obscount[i] + 100, "col", col);
        }
        generateChartByType("Response Histogram", "Observed Dissimilarity Class", "Number of Site Pairs",
                dataset3, outputdir, "bar", "resphist");

        XYDotRenderer renderer = new XYDotRenderer();
        //Shape cross = ShapeUtilities.createDiagonalCross(3, 1);
        //renderer.setSeriesShape(0, cross);
        renderer.setDotWidth(3);
        renderer.setDotHeight(3);
        renderer.setSeriesPaint(0, Color.BLACK);

        JFreeChart jChart1 = ChartFactory.createScatterPlot(
                "Observed versus predicted compositional dissimilarity",
                "Predicted Compositional Dissimilarity", "Observed Compositional Dissimilarity", dataset1,
                PlotOrientation.VERTICAL, false, false, false);
        jChart1.getTitle().setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));

        XYPlot plot = (XYPlot) jChart1.getPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setDomainZeroBaselineVisible(true);
        plot.setRangeZeroBaselineVisible(true);
        plot.setDomainGridlinesVisible(true);
        plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
        plot.setDomainGridlineStroke(new BasicStroke(0.5F, 0, 1));
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        plot.setRangeGridlineStroke(new BasicStroke(0.5F, 0, 1));
        plot.setRenderer(0, renderer);

        NumberAxis domain = (NumberAxis) plot.getDomainAxis();
        domain.setAutoRangeIncludesZero(false);
        domain.setAxisLineVisible(false);
        domain.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        NumberAxis range = (NumberAxis) plot.getRangeAxis();
        range.setAutoRangeIncludesZero(false);
        range.setAxisLineVisible(false);
        range.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        double dMinPred = domain.getRange().getLowerBound();
        double dMaxPred = domain.getRange().getUpperBound();

        double dMinObs = range.getRange().getLowerBound();
        double dMaxObs = range.getRange().getUpperBound();

        System.out.println("1..pred.min.max: " + dMinPred + ", " + dMaxPred);

        int regressionLineSegs = 10;
        double dInc = (dMaxPred - dMinPred) / regressionLineSegs;
        double[][] dataReg1 = new double[2][regressionLineSegs + 1];
        DefaultXYDataset dsReg1 = new DefaultXYDataset();
        int i = 0;
        for (double d = dMinPred; d <= dMaxPred; d += dInc, i++) {
            dataReg1[0][i] = d;
            dataReg1[1][i] = d;
        }
        dsReg1.addSeries("", dataReg1);
        XYSplineRenderer regressionRenderer = new XYSplineRenderer();
        regressionRenderer.setBaseSeriesVisibleInLegend(true);
        regressionRenderer.setSeriesPaint(0, Color.RED);
        regressionRenderer.setSeriesStroke(0, new BasicStroke(1.5f));
        regressionRenderer.setBaseShapesVisible(false);
        plot.setDataset(1, dsReg1);
        plot.setRenderer(1, regressionRenderer);

        System.out.println("Writing image....");
        ChartUtilities.saveChartAsPNG(new File(outputdir + "plots/obspredissim.png"), jChart1, 600, 400);

        // For chart 3
        JFreeChart jChart2 = ChartFactory.createScatterPlot(
                "Observed compositional dissimilarity vs predicted ecological distance",
                "Predicted ecological distance", "Observed Compositional Dissimilarity", dataset2,
                PlotOrientation.VERTICAL, false, false, false);
        jChart2.getTitle().setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));

        plot = (XYPlot) jChart2.getPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setDomainZeroBaselineVisible(true);
        plot.setRangeZeroBaselineVisible(true);
        plot.setDomainGridlinesVisible(true);
        plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
        plot.setDomainGridlineStroke(new BasicStroke(0.5F, 0, 1));
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        plot.setRangeGridlineStroke(new BasicStroke(0.5F, 0, 1));
        plot.setRenderer(0, renderer);

        domain = (NumberAxis) plot.getDomainAxis();
        domain.setAutoRangeIncludesZero(false);
        domain.setAxisLineVisible(false);
        domain.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        range = (NumberAxis) plot.getRangeAxis();
        range.setAutoRangeIncludesZero(false);
        range.setAxisLineVisible(false);
        range.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        dMinPred = domain.getRange().getLowerBound();
        dMaxPred = domain.getRange().getUpperBound();

        dMinObs = range.getRange().getLowerBound();
        dMaxObs = range.getRange().getUpperBound();

        System.out.println("2.pred.min.max: " + dMinPred + ", " + dMaxPred);

        regressionLineSegs = 10;
        dInc = (dMaxPred - dMinPred) / regressionLineSegs;
        dataReg1 = new double[2][regressionLineSegs + 1];
        dsReg1 = new DefaultXYDataset();
        i = 0;
        for (double d = dMinPred; d <= dMaxPred; d += dInc, i++) {
            dataReg1[0][i] = d;
            dataReg1[1][i] = (1.0 - Math.exp(-d));
        }
        dsReg1.addSeries("", dataReg1);
        regressionRenderer.setBaseSeriesVisibleInLegend(true);
        regressionRenderer.setSeriesPaint(0, Color.RED);
        regressionRenderer.setSeriesStroke(0, new BasicStroke(1.5f));
        regressionRenderer.setBaseShapesVisible(false);
        plot.setDataset(1, dsReg1);
        plot.setRenderer(1, regressionRenderer);

        System.out.println("Writing image....");
        ChartUtilities.saveChartAsPNG(new File(outputdir + "plots/dissimdist.png"), jChart2, 600, 400);

    } catch (Exception e) {
        System.out.println("Unable to generate charts 2 and 3:");
        e.printStackTrace(System.out);
    }
}

From source file:org.ala.spatial.web.services.GDMWSController.java

public static void generateChart5(String outputdir, String plotName, String plotData) {
    try {//from   w  w  w.j  a v  a 2 s. c om

        CSVReader csv = new CSVReader(new FileReader(plotData));
        List<String[]> rawdata = csv.readAll();
        double[][] dataCht = new double[2][rawdata.size() - 1];
        for (int i = 1; i < rawdata.size(); i++) {
            String[] row = rawdata.get(i);
            dataCht[0][i - 1] = Double.parseDouble(row[0]);
            dataCht[1][i - 1] = Double.parseDouble(row[1]);
        }

        DefaultXYDataset dataset = new DefaultXYDataset();
        dataset.addSeries("", dataCht);

        System.out.println("Setting up jChart for " + plotName);
        //generateChartByType(plotName, plotName, "f("+plotName+")", null, outputdir, "xyline", plotName);
        JFreeChart jChart = ChartFactory.createXYLineChart(plotName, plotName, "f(" + plotName + ")", dataset,
                PlotOrientation.VERTICAL, false, false, false);

        jChart.getTitle().setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));

        XYPlot plot = (XYPlot) jChart.getPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setDomainZeroBaselineVisible(true);
        plot.setRangeZeroBaselineVisible(true);
        plot.setDomainGridlinesVisible(true);
        plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
        plot.setDomainGridlineStroke(new BasicStroke(0.5F, 0, 1));
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        plot.setRangeGridlineStroke(new BasicStroke(0.5F, 0, 1));

        NumberAxis domain = (NumberAxis) plot.getDomainAxis();
        domain.setAutoRangeIncludesZero(false);
        domain.setAxisLineVisible(false);
        domain.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        NumberAxis range = (NumberAxis) plot.getRangeAxis();
        range.setAutoRangeIncludesZero(false);
        range.setAxisLineVisible(false);
        range.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        System.out.println("Writing image....");
        ChartUtilities.saveChartAsPNG(new File(outputdir + "plots/" + plotName + ".png"), jChart, 500, 500);
        ChartUtilities.saveChartAsPNG(new File(outputdir + "plots/" + plotName + "_thumb.png"), jChart, 210,
                140);

    } catch (Exception e) {
        System.out.println("Unable to generate charts 2 and 3:");
        e.printStackTrace(System.out);
    }
}

From source file:org.ala.spatial.web.services.GDMWSController.java

public static void generateChartByType(String title, String xLabel, String yLabel, Dataset dataset,
        String outputdir, String type, String filename) throws IOException {
    JFreeChart jChart = null;//from  w w w  . jav a 2 s .c om
    if ("line".equalsIgnoreCase(type)) {
        jChart = ChartFactory.createLineChart(title, xLabel, yLabel, (CategoryDataset) dataset,
                PlotOrientation.VERTICAL, false, false, false);
    } else if ("bar".equalsIgnoreCase(type)) {
        System.out.println("Setting up jChart");
        jChart = ChartFactory.createBarChart(title, xLabel, yLabel, (CategoryDataset) dataset,
                PlotOrientation.VERTICAL, false, false, false);
        System.out.println("Writing image....");
    } else if ("xyline".equalsIgnoreCase(type)) {
        jChart = ChartFactory.createXYLineChart(title, xLabel, yLabel, (XYDataset) dataset,
                PlotOrientation.VERTICAL, false, false, false);
    }

    if ("xyline".equalsIgnoreCase(type)) {

        XYPlot plot = (XYPlot) jChart.getPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setRangeZeroBaselineVisible(true);
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        plot.setRangeGridlineStroke(new BasicStroke(0.5F, 0, 1));

        NumberAxis domain = (NumberAxis) plot.getDomainAxis();
        domain.setAxisLineVisible(false);
        domain.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
        domain.setAutoRangeIncludesZero(false);

        NumberAxis range = (NumberAxis) plot.getRangeAxis();
        range.setAutoRangeIncludesZero(false);
        range.setAxisLineVisible(false);
        range.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        //System.out.println("dataset.getColumnCount(): " + dataset.getColumnCount());
        //System.out.println("dataset.getRowCount(): " + dataset.getRowCount());

    } else {

        CategoryPlot plot = (CategoryPlot) jChart.getPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setRangeZeroBaselineVisible(true);
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        plot.setRangeGridlineStroke(new BasicStroke(0.5F, 0, 1));

        CategoryAxis domain = (CategoryAxis) plot.getDomainAxis();
        domain.setAxisLineVisible(false);
        domain.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        NumberAxis range = (NumberAxis) plot.getRangeAxis();
        range.setAutoRangeIncludesZero(false);
        range.setAxisLineVisible(false);
        range.setLabelFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

        //System.out.println("dataset.getColumnCount(): " + dataset.getColumnCount());
        //System.out.println("dataset.getRowCount(): " + dataset.getRowCount());

    }

    jChart.getTitle().setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));
    ChartUtilities.saveChartAsPNG(new File(outputdir + "plots/" + filename + ".png"), jChart, 900, 500);
}

From source file:ffx.ui.MainPanel.java

private void initAbout() {
    aboutTextArea = new JTextArea();
    Font font = Font.decode(Font.MONOSPACED);
    aboutTextArea.setFont(font);/*ww  w .  j  a v  a  2s . c  o m*/
    aboutTextArea.setText(aboutString);
    aboutTextArea.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
    aboutTextArea.setEditable(false);
}

From source file:org.panbox.desktop.common.gui.PanboxClientGUI.java

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.//from w  ww .j a v a2s .  c  o  m
 */
// <editor-fold defaultstate="collapsed"
// <editor-fold defaultstate="collapsed"
// desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

    mainTabbedPane = new javax.swing.JTabbedPane();
    shareListTabPanel = new javax.swing.JPanel();
    shareListPanel = new javax.swing.JPanel();
    shareListScrollPane = new javax.swing.JScrollPane();
    shareList = new javax.swing.JList<PanboxShare>();
    removeShare = new javax.swing.JButton();
    addShare = new javax.swing.JButton();
    restoreRevButton = new javax.swing.JButton();
    sharePropertiesPanel = new javax.swing.JPanel();
    sharePropertiesLabel = new javax.swing.JLabel();
    usersLabel = new javax.swing.JLabel();
    usersListScrollPane = new javax.swing.JScrollPane();
    usersList = new javax.swing.JList<PanboxSharePermission>();
    permissionsLabel = new javax.swing.JLabel();
    urlLabel = new javax.swing.JLabel();
    syncStatusLabel = new javax.swing.JLabel();
    ownerTextField = new javax.swing.JTextField();
    urlTextField = new javax.swing.JTextField();
    syncStatusTextField = new javax.swing.JTextField();
    removeDeviceContactShareButton = new javax.swing.JButton();
    addDeviceContactShareButton = new javax.swing.JButton();
    addressbookTabPanel = new javax.swing.JPanel();
    addressbookPanel = new javax.swing.JPanel();
    addressbookListScrollPane = new javax.swing.JScrollPane();
    addressbookList = new javax.swing.JList<PanboxGUIContact>();
    exportContactButton = new javax.swing.JButton();
    removeContactButton = new javax.swing.JButton();
    importContactButton = new javax.swing.JButton();
    publishContactButton = new javax.swing.JButton();
    contactPropertiesPanell = new javax.swing.JPanel();
    contactPropertiesLabel = new javax.swing.JLabel();
    firstNameLabel = new javax.swing.JLabel();
    removeCSPInfoButton = new javax.swing.JButton();
    addCSPInfoButton = new javax.swing.JButton();
    lastNameLabel = new javax.swing.JLabel();
    emailLabel = new javax.swing.JLabel();
    cspAccountsLabel = new javax.swing.JLabel();
    firstNameTextField = new javax.swing.JTextField();
    lastNameTextField = new javax.swing.JTextField();
    emailTextField = new javax.swing.JTextField();
    cspInfoTableScrollPanel = new javax.swing.JScrollPane();
    cspInfoTable = new javax.swing.JTable();
    expertModeContactPanel = new javax.swing.JPanel();
    encKeyFprintLabel = new javax.swing.JLabel();
    encKeyFprintTextField = new javax.swing.JTextField();
    signKeyFprintLabel = new javax.swing.JLabel();
    signKeyFprintTextField = new javax.swing.JTextField();
    validFromUntilLabel = new javax.swing.JLabel();
    contactApplyButton = new javax.swing.JButton();
    contactDiscardButton = new javax.swing.JButton();
    contactVerificationStatusCheckBox = new javax.swing.JCheckBox();
    devicesTabPanel = new javax.swing.JPanel();
    deviceListPanel = new javax.swing.JPanel();
    deviceListScrollPane = new javax.swing.JScrollPane();
    deviceList = new javax.swing.JList<PanboxDevice>();
    addDeviceButton = new javax.swing.JButton();
    removeDeviceButton = new javax.swing.JButton();
    devicePropertiesPanel = new javax.swing.JPanel();
    devicePropertiesLabel = new javax.swing.JLabel();
    expertModeDevicePanel = new javax.swing.JPanel();
    deviceKeyFprintLabel = new javax.swing.JLabel();
    deviceKeyFprintTextField = new javax.swing.JTextField();
    jLabel1 = new javax.swing.JLabel();
    usersListScrollPane1 = new javax.swing.JScrollPane();
    deviceShareList = new javax.swing.JList<PanboxShare>();
    settingsTabPanel = new javax.swing.JPanel();
    languageLabel = new javax.swing.JLabel();
    languageComboBox = new javax.swing.JComboBox<SupportedLanguage>();
    settingsFolderLabel = new javax.swing.JLabel();
    settingsFolderTextField = new javax.swing.JTextField();
    settingsFolderChooseButton = new javax.swing.JButton();
    panboxFolderLabel = new javax.swing.JLabel();
    panboxFolderTextField = new javax.swing.JTextField();
    panboxFolderChooseButton = new javax.swing.JButton();
    settingsApplyButton = new javax.swing.JButton();
    settingsRevertButton = new javax.swing.JButton();
    expertModeCheckBox = new javax.swing.JCheckBox();
    networkDevicePairingPanel = new javax.swing.JPanel();
    networkDevicePairingLabel = new javax.swing.JLabel();
    networkInterfaceLabel = new javax.swing.JLabel();
    networkInterfaceComboBox = new javax.swing.JComboBox<Object>();
    networkAddressLabel = new javax.swing.JLabel();
    networkAddressComboBox = new javax.swing.JComboBox<Object>();
    cspSettingsPanel = new javax.swing.JPanel();
    selectedCSPLabel = new javax.swing.JLabel();
    cspSelectionComboBox = new javax.swing.JComboBox<String>();
    selectedCSPContentPanel = new javax.swing.JPanel();
    uriHandlerCheckbox = new javax.swing.JCheckBox();
    mailtoSchemeCheckbox = new javax.swing.JCheckBox();
    clipboardHandlerCheckbox = new javax.swing.JCheckBox();

    setTitle(bundle.getString("PanboxClientGUI.title")); // NOI18N
    setMinimumSize(new java.awt.Dimension(800, 600));
    setResizable(false);

    mainTabbedPane.setPreferredSize(new java.awt.Dimension(813, 609));

    shareListTabPanel.setLayout(new java.awt.GridLayout(1, 2, 10, 10));

    shareList.setModel(shareModel);
    shareList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    shareList.setCellRenderer(new ShareListCellRenderer());
    shareList.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            shareListMouseClicked(evt);
        }
    });
    shareList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
        public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
            shareListValueChanged(evt);
        }
    });
    shareListScrollPane.setViewportView(shareList);

    removeShare.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/removebutton.png"))); // NOI18N
    removeShare.setToolTipText(bundle.getString("client.shareList.removeShareToolTip")); // NOI18N
    removeShare.setEnabled(false);
    removeShare.setPreferredSize(new java.awt.Dimension(28, 28));
    removeShare.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeShareActionPerformed(evt);
        }
    });

    addShare.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/addbutton.png"))); // NOI18N
    addShare.setToolTipText(bundle.getString("client.shareList.addShareToolTip")); // NOI18N
    addShare.setPreferredSize(new java.awt.Dimension(28, 28));
    addShare.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addShareActionPerformed(evt);
        }
    });

    restoreRevButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/restorebutton.png"))); // NOI18N
    restoreRevButton.setToolTipText(bundle.getString("PanboxClientGUI.restoreRevButton.tooltip")); // NOI18N
    restoreRevButton.setEnabled(false);
    restoreRevButton.setPreferredSize(new java.awt.Dimension(28, 28));
    restoreRevButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            restoreRevButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout shareListPanelLayout = new javax.swing.GroupLayout(shareListPanel);
    shareListPanel.setLayout(shareListPanelLayout);
    shareListPanelLayout.setHorizontalGroup(shareListPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(shareListPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(shareListPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(shareListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 371,
                                    Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, shareListPanelLayout
                                    .createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                                    .addComponent(restoreRevButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(addShare, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(removeShare, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap()));
    shareListPanelLayout.setVerticalGroup(
            shareListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(shareListPanelLayout.createSequentialGroup().addContainerGap()
                            .addComponent(shareListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 594,
                                    Short.MAX_VALUE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(shareListPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(removeShare, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(addShare, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(restoreRevButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap()));

    shareListTabPanel.add(shareListPanel);

    sharePropertiesLabel.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
    sharePropertiesLabel.setText(bundle.getString("client.shareList.shareProperties")); // NOI18N

    usersLabel.setText(bundle.getString("PanboxClientGUI.usersLabel.text")); // NOI18N

    usersList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    usersList.setCellRenderer(new ShareParticipantListCellRenderer());
    usersList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
        public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
            usersListValueChanged(evt);
        }
    });
    usersListScrollPane.setViewportView(usersList);

    permissionsLabel.setText(bundle.getString("client.shareList.permissions")); // NOI18N

    urlLabel.setText(bundle.getString("client.shareList.url")); // NOI18N

    syncStatusLabel.setText(bundle.getString("client.shareList.syncStatus")); // NOI18N

    ownerTextField.setEnabled(false);

    urlTextField.setEnabled(false);

    syncStatusTextField.setEnabled(false);

    removeDeviceContactShareButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/removebutton.png"))); // NOI18N
    removeDeviceContactShareButton
            .setToolTipText(bundle.getString("client.shareList.removeUserDeviceFromShareToolTip")); // NOI18N
    removeDeviceContactShareButton.setEnabled(false);
    removeDeviceContactShareButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeDeviceContactShareButtonActionPerformed(evt);
        }
    });

    addDeviceContactShareButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/addbutton.png"))); // NOI18N
    addDeviceContactShareButton
            .setToolTipText(bundle.getString("client.shareList.addUserDeviceToShareToolTip")); // NOI18N
    addDeviceContactShareButton.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mousePressed(java.awt.event.MouseEvent evt) {
            addDeviceContactShareButtonMousePressed(evt);
        }
    });

    javax.swing.GroupLayout sharePropertiesPanelLayout = new javax.swing.GroupLayout(sharePropertiesPanel);
    sharePropertiesPanel.setLayout(sharePropertiesPanelLayout);
    sharePropertiesPanelLayout.setHorizontalGroup(sharePropertiesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(sharePropertiesPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(sharePropertiesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(syncStatusLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(permissionsLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(usersListScrollPane)
                            .addGroup(sharePropertiesPanelLayout.createSequentialGroup().addGap(10, 10, 10)
                                    .addGroup(sharePropertiesPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(urlTextField).addComponent(syncStatusTextField)
                                            .addComponent(ownerTextField)))
                            .addComponent(usersLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(urlLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                    sharePropertiesPanelLayout.createSequentialGroup()
                                            .addGap(0, 283, Short.MAX_VALUE)
                                            .addComponent(addDeviceContactShareButton)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(removeDeviceContactShareButton))
                            .addGroup(sharePropertiesPanelLayout.createSequentialGroup()
                                    .addComponent(sharePropertiesLabel).addGap(0, 44, Short.MAX_VALUE)))
                    .addContainerGap()));
    sharePropertiesPanelLayout.setVerticalGroup(sharePropertiesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(sharePropertiesPanelLayout.createSequentialGroup().addContainerGap()
                    .addComponent(sharePropertiesLabel).addGap(18, 18, 18).addComponent(usersLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(usersListScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 148,
                            javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(sharePropertiesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(removeDeviceContactShareButton)
                            .addComponent(addDeviceContactShareButton))
                    .addGap(18, 18, 18).addComponent(permissionsLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(ownerTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(urlLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(urlTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(syncStatusLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(syncStatusTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(165, Short.MAX_VALUE)));

    sharePropertiesLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.shareList.shareProperties")); // NOI18N
    usersLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.shareList.usersDevices")); // NOI18N
    permissionsLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.shareList.permissions")); // NOI18N
    urlLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.shareList.url")); // NOI18N
    syncStatusLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.shareList.syncStatus")); // NOI18N

    shareListTabPanel.add(sharePropertiesPanel);

    mainTabbedPane.addTab(bundle.getString("client.shareList.tabTitle"), shareListTabPanel); // NOI18N
    shareListTabPanel.getAccessibleContext().setAccessibleName(bundle.getString("client.shareList.tabTitle")); // NOI18N

    addressbookTabPanel.setLayout(new java.awt.GridLayout(1, 2, 10, 10));

    addressbookList.setModel(contactModel);
    addressbookList.setCellRenderer(new ContactListCellRenderer());
    addressbookListScrollPane.setViewportView(addressbookList);

    exportContactButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/savebutton.png"))); // NOI18N
    exportContactButton.setToolTipText(bundle.getString("client.addressList.exportContact")); // NOI18N
    exportContactButton.setPreferredSize(new java.awt.Dimension(28, 28));
    exportContactButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            exportContactButtonActionPerformed(evt);
        }
    });

    removeContactButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/removebutton.png"))); // NOI18N
    removeContactButton.setToolTipText(bundle.getString("client.addressList.removeContact")); // NOI18N
    removeContactButton.setPreferredSize(new java.awt.Dimension(28, 28));
    removeContactButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeContactButtonActionPerformed(evt);
        }
    });

    importContactButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/addbutton.png"))); // NOI18N
    importContactButton.setToolTipText(bundle.getString("client.addressList.importContact")); // NOI18N
    importContactButton.setPreferredSize(new java.awt.Dimension(28, 28));
    importContactButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            importContactButtonActionPerformed(evt);
        }
    });

    publishContactButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/publishbutton.png"))); // NOI18N
    publishContactButton.setToolTipText(bundle.getString("PanboxClientGUI.publishContactButton.toolTipText")); // NOI18N
    publishContactButton.setPreferredSize(new java.awt.Dimension(28, 28));
    publishContactButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            publishContactButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout addressbookPanelLayout = new javax.swing.GroupLayout(addressbookPanel);
    addressbookPanel.setLayout(addressbookPanelLayout);
    addressbookPanelLayout.setHorizontalGroup(addressbookPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addressbookPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(addressbookPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(addressbookListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 375,
                                    Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addressbookPanelLayout
                                    .createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                                    .addComponent(importContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(removeContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(exportContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(publishContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap()));
    addressbookPanelLayout.setVerticalGroup(
            addressbookPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addressbookPanelLayout.createSequentialGroup().addContainerGap()
                            .addComponent(addressbookListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 594,
                                    Short.MAX_VALUE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(addressbookPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(exportContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(removeContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(importContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(publishContactButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap()));

    exportContactButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.addressList.exportContact")); // NOI18N
    removeContactButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.addressList.removeContact")); // NOI18N
    importContactButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.addressList.importContact")); // NOI18N

    addressbookTabPanel.add(addressbookPanel);

    contactPropertiesLabel.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
    contactPropertiesLabel.setText(bundle.getString("client.addressList.properties")); // NOI18N

    firstNameLabel.setText(bundle.getString("client.addressList.firstName")); // NOI18N

    removeCSPInfoButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/removebutton.png"))); // NOI18N
    removeCSPInfoButton.setToolTipText(bundle.getString("client.addressList.cspRemoveAccount")); // NOI18N
    removeCSPInfoButton.setEnabled(false);
    removeCSPInfoButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeCSPInfoButtonActionPerformed(evt);
        }
    });

    addCSPInfoButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/addbutton.png"))); // NOI18N
    addCSPInfoButton.setToolTipText(bundle.getString("client.addressList.cspAddAccount")); // NOI18N
    addCSPInfoButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addCSPInfoButtonActionPerformed(evt);
        }
    });

    lastNameLabel.setText(bundle.getString("client.addressList.lastName")); // NOI18N

    emailLabel.setText(bundle.getString("client.addressList.email")); // NOI18N

    cspAccountsLabel.setText(bundle.getString("client.addressList.cspAccounts")); // NOI18N

    emailTextField.setEditable(false);

    cspInfoTable.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

    }, new String[] { "Cloud Storage Provider", "Useraccount" }));
    cspInfoTable.setRowHeight(20);
    cspInfoTableScrollPanel.setViewportView(cspInfoTable);

    encKeyFprintLabel.setText(bundle.getString("client.addressList.fprintEnc")); // NOI18N

    encKeyFprintTextField.setEnabled(false);
    encKeyFprintTextField.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 9));

    signKeyFprintLabel.setText(bundle.getString("client.addressList.fprintSign")); // NOI18N

    signKeyFprintTextField.setEnabled(false);
    signKeyFprintTextField.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 9));

    validFromUntilLabel.setText("null");

    javax.swing.GroupLayout expertModeContactPanelLayout = new javax.swing.GroupLayout(expertModeContactPanel);
    expertModeContactPanel.setLayout(expertModeContactPanelLayout);
    expertModeContactPanelLayout.setHorizontalGroup(expertModeContactPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(validFromUntilLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
            .addComponent(signKeyFprintLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(encKeyFprintLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(expertModeContactPanelLayout.createSequentialGroup().addGap(12, 12, 12)
                    .addGroup(expertModeContactPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(encKeyFprintTextField).addComponent(signKeyFprintTextField))));
    expertModeContactPanelLayout.setVerticalGroup(expertModeContactPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(expertModeContactPanelLayout.createSequentialGroup()
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(encKeyFprintLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(encKeyFprintTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(signKeyFprintLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(signKeyFprintTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(validFromUntilLabel)));

    encKeyFprintLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.addressList.fprintEnc")); // NOI18N
    signKeyFprintLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.addressList.fprintSign")); // NOI18N

    contactApplyButton.setText(bundle.getString("client.apply")); // NOI18N
    contactApplyButton.setEnabled(false);
    contactApplyButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            contactApplyButtonActionPerformed(evt);
        }
    });

    contactDiscardButton.setText(bundle.getString("client.discard")); // NOI18N
    contactDiscardButton.setEnabled(false);
    contactDiscardButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            contactDiscardButtonActionPerformed(evt);
        }
    });

    contactVerificationStatusCheckBox
            .setText(bundle.getString("PanboxClientGUI.contactVerificationStatusCheckBox.text")); // NOI18N
    contactVerificationStatusCheckBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            contactVerificationStatusCheckBoxActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout contactPropertiesPanellLayout = new javax.swing.GroupLayout(
            contactPropertiesPanell);
    contactPropertiesPanell.setLayout(contactPropertiesPanellLayout);
    contactPropertiesPanellLayout.setHorizontalGroup(contactPropertiesPanellLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(contactPropertiesPanellLayout.createSequentialGroup().addContainerGap()
                    .addGroup(contactPropertiesPanellLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(expertModeContactPanel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(cspInfoTableScrollPanel)
                            .addComponent(lastNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(emailLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(firstNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(contactPropertiesPanellLayout.createSequentialGroup().addGap(10, 10, 10)
                                    .addGroup(contactPropertiesPanellLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(lastNameTextField).addComponent(emailTextField)
                                            .addComponent(firstNameTextField)))
                            .addComponent(cspAccountsLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(contactPropertiesPanellLayout.createSequentialGroup()
                                    .addComponent(contactPropertiesLabel).addGap(0, 0, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                    contactPropertiesPanellLayout.createSequentialGroup()
                                            .addGap(0, 0, Short.MAX_VALUE).addComponent(contactDiscardButton)
                                            .addPreferredGap(
                                                    javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                            .addComponent(contactApplyButton))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                    contactPropertiesPanellLayout.createSequentialGroup().addGap(12, 12, 12)
                                            .addComponent(contactVerificationStatusCheckBox,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addGap(18, 18, 18).addComponent(addCSPInfoButton)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(removeCSPInfoButton)))
                    .addContainerGap()));
    contactPropertiesPanellLayout.setVerticalGroup(contactPropertiesPanellLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(contactPropertiesPanellLayout.createSequentialGroup().addContainerGap()
                    .addComponent(contactPropertiesLabel).addGap(18, 18, 18).addComponent(firstNameLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(firstNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(lastNameLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(lastNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(emailLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(emailTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(cspAccountsLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(cspInfoTableScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 80,
                            javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(contactPropertiesPanellLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(removeCSPInfoButton).addComponent(addCSPInfoButton)
                            .addComponent(contactVerificationStatusCheckBox))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(expertModeContactPanel, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(contactPropertiesPanellLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(contactApplyButton).addComponent(contactDiscardButton))
                    .addContainerGap()));

    contactPropertiesLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.addressList.properties")); // NOI18N
    firstNameLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.addressList.firstName")); // NOI18N
    removeCSPInfoButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.addressList.cspRemoveAccount")); // NOI18N
    addCSPInfoButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.addressList.cspAddAccount")); // NOI18N
    lastNameLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.addressList.lastName")); // NOI18N
    emailLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.addressList.email")); // NOI18N
    cspAccountsLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.addressList.cspAccounts")); // NOI18N
    emailTextField.setBackground(Color.WHITE);
    contactApplyButton.getAccessibleContext().setAccessibleName(bundle.getString("client.apply")); // NOI18N
    contactDiscardButton.getAccessibleContext().setAccessibleName(bundle.getString("client.discard")); // NOI18N

    addressbookTabPanel.add(contactPropertiesPanell);

    mainTabbedPane.addTab(bundle.getString("client.addressList.tabTitle"), addressbookTabPanel); // NOI18N

    devicesTabPanel.setLayout(new java.awt.GridLayout(1, 2, 10, 10));

    deviceList.setModel(deviceModel);
    deviceList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    deviceList.setCellRenderer(new DeviceListCellRenderer());
    deviceListScrollPane.setViewportView(deviceList);

    addDeviceButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/panbox/desktop/common/gui/addbutton.png"))); // NOI18N
    addDeviceButton.setToolTipText(bundle.getString("client.deviceList.addDevice")); // NOI18N
    addDeviceButton.setPreferredSize(new java.awt.Dimension(28, 28));

    removeDeviceButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/panbox/desktop/common/gui/removebutton.png"))); // NOI18N
    removeDeviceButton.setToolTipText(bundle.getString("client.deviceList.removeDevice")); // NOI18N
    removeDeviceButton.setEnabled(false);
    removeDeviceButton.setPreferredSize(new java.awt.Dimension(28, 28));
    removeDeviceButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeDeviceButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout deviceListPanelLayout = new javax.swing.GroupLayout(deviceListPanel);
    deviceListPanel.setLayout(deviceListPanelLayout);
    deviceListPanelLayout.setHorizontalGroup(deviceListPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(deviceListPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(deviceListPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(deviceListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 362,
                                    Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, deviceListPanelLayout
                                    .createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                                    .addComponent(addDeviceButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(removeDeviceButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap()));
    deviceListPanelLayout.setVerticalGroup(
            deviceListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(deviceListPanelLayout.createSequentialGroup().addContainerGap()
                            .addComponent(deviceListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 594,
                                    Short.MAX_VALUE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(deviceListPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(addDeviceButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(removeDeviceButton, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap()));

    addDeviceButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.deviceList.addDevice")); // NOI18N
    removeDeviceButton.getAccessibleContext()
            .setAccessibleDescription(bundle.getString("client.deviceList.removeDevice")); // NOI18N

    devicesTabPanel.add(deviceListPanel);

    devicePropertiesLabel.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
    devicePropertiesLabel.setText(bundle.getString("client.deviceList.properties")); // NOI18N

    deviceKeyFprintLabel.setText(bundle.getString("client.deviceList.fprintDeviceKey")); // NOI18N

    deviceKeyFprintTextField.setEnabled(false);
    deviceKeyFprintTextField.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 9));

    javax.swing.GroupLayout expertModeDevicePanelLayout = new javax.swing.GroupLayout(expertModeDevicePanel);
    expertModeDevicePanel.setLayout(expertModeDevicePanelLayout);
    expertModeDevicePanelLayout.setHorizontalGroup(expertModeDevicePanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(expertModeDevicePanelLayout.createSequentialGroup().addComponent(deviceKeyFprintLabel)
                    .addGap(0, 0, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                    expertModeDevicePanelLayout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                            .addComponent(deviceKeyFprintTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 359,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)));
    expertModeDevicePanelLayout.setVerticalGroup(expertModeDevicePanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(expertModeDevicePanelLayout.createSequentialGroup().addContainerGap()
                    .addComponent(deviceKeyFprintLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(deviceKeyFprintTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    deviceKeyFprintLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.deviceList.fprintDeviceKey")); // NOI18N

    jLabel1.setText(bundle.getString("client.deviceList.shareList")); // NOI18N

    deviceShareList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    deviceShareList.setCellRenderer(new ShareListCellRenderer());
    usersListScrollPane1.setViewportView(deviceShareList);

    javax.swing.GroupLayout devicePropertiesPanelLayout = new javax.swing.GroupLayout(devicePropertiesPanel);
    devicePropertiesPanel.setLayout(devicePropertiesPanelLayout);
    devicePropertiesPanelLayout.setHorizontalGroup(devicePropertiesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(devicePropertiesPanelLayout.createSequentialGroup().addGroup(devicePropertiesPanelLayout
                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(devicePropertiesPanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(devicePropertiesPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(devicePropertiesLabel).addComponent(jLabel1)
                                    .addComponent(expertModeDevicePanel, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGap(0, 20, Short.MAX_VALUE))
                    .addComponent(usersListScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING))
                    .addContainerGap()));
    devicePropertiesPanelLayout.setVerticalGroup(devicePropertiesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(devicePropertiesPanelLayout.createSequentialGroup().addContainerGap()
                    .addComponent(devicePropertiesLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jLabel1)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(usersListScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 150,
                            javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(expertModeDevicePanel, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(299, Short.MAX_VALUE)));

    devicePropertiesLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.deviceList.properties")); // NOI18N
    jLabel1.getAccessibleContext().setAccessibleName(bundle.getString("client.deviceList.shareList")); // NOI18N

    devicesTabPanel.add(devicePropertiesPanel);

    mainTabbedPane.addTab(bundle.getString("client.deviceList.tabTitle"), devicesTabPanel); // NOI18N
    devicesTabPanel.getAccessibleContext().setAccessibleName(bundle.getString("client.deviceList.tabTitle")); // NOI18N

    languageLabel.setText(bundle.getString("client.settings.language")); // NOI18N

    languageComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(SupportedLanguage.values()));
    languageComboBox.setRenderer(new org.panbox.desktop.common.gui.settings.LanguageListCellRenderer());

    settingsFolderLabel.setText(bundle.getString("client.settings.settingsFolder")); // NOI18N

    settingsFolderChooseButton.setText(bundle.getString("client.choose")); // NOI18N
    settingsFolderChooseButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            settingsFolderChooseButtonActionPerformed(evt);
        }
    });

    panboxFolderLabel.setText(bundle.getString("client.settings.panboxFolder")); // NOI18N

    panboxFolderChooseButton.setText(bundle.getString("client.choose")); // NOI18N
    panboxFolderChooseButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            panboxFolderChooseButtonActionPerformed(evt);
        }
    });

    settingsApplyButton.setText(bundle.getString("client.apply")); // NOI18N
    settingsApplyButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            settingsApplyButtonActionPerformed(evt);
        }
    });

    settingsRevertButton.setText(bundle.getString("client.discard")); // NOI18N
    settingsRevertButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            settingsRevertButtonActionPerformed(evt);
        }
    });

    expertModeCheckBox.setText(bundle.getString("client.settings.expertmode")); // NOI18N
    expertModeCheckBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            expertModeCheckBoxActionPerformed(evt);
        }
    });

    networkDevicePairingPanel.setBorder(javax.swing.BorderFactory
            .createTitledBorder(bundle.getString("client.settings.devicePairing.netSettingsTitle"))); // NOI18N

    networkDevicePairingLabel.setText(bundle.getString("client.settings.devicePairingMessage")); // NOI18N

    networkInterfaceLabel.setText(bundle.getString("client.settings.devicePairing.netInterface")); // NOI18N

    networkInterfaceComboBox.setModel(new javax.swing.DefaultComboBoxModel<Object>(new Object[] {}));
    networkInterfaceComboBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            networkInterfaceComboBoxActionPerformed(evt);
        }
    });

    networkAddressLabel.setText(bundle.getString("client.settings.devicePairing.netAddress")); // NOI18N

    networkAddressComboBox.setModel(new javax.swing.DefaultComboBoxModel<Object>(new Object[] {}));
    networkAddressComboBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            networkAddressComboBoxActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout networkDevicePairingPanelLayout = new javax.swing.GroupLayout(
            networkDevicePairingPanel);
    networkDevicePairingPanel.setLayout(networkDevicePairingPanelLayout);
    networkDevicePairingPanelLayout.setHorizontalGroup(networkDevicePairingPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(networkDevicePairingPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(networkDevicePairingPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(networkDevicePairingPanelLayout.createSequentialGroup()
                                    .addComponent(networkDevicePairingLabel).addGap(0, 150, Short.MAX_VALUE))
                            .addGroup(networkDevicePairingPanelLayout.createSequentialGroup()
                                    .addGroup(networkDevicePairingPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(networkInterfaceLabel,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 192,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(networkAddressLabel))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(networkDevicePairingPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(networkInterfaceComboBox, 0,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addComponent(networkAddressComboBox, 0,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                    .addContainerGap()));
    networkDevicePairingPanelLayout.setVerticalGroup(
            networkDevicePairingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(networkDevicePairingPanelLayout.createSequentialGroup().addContainerGap()
                            .addComponent(networkDevicePairingLabel)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addGroup(networkDevicePairingPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(networkInterfaceLabel).addComponent(networkInterfaceComboBox,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addGroup(networkDevicePairingPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(networkAddressLabel).addComponent(networkAddressComboBox,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    cspSettingsPanel.setBorder(javax.swing.BorderFactory
            .createTitledBorder(bundle.getString("PanboxClientGUI.cspSettingsPanel.title"))); // NOI18N
    cspSettingsPanel.setMaximumSize(new java.awt.Dimension(694, 32767));

    selectedCSPLabel.setText(bundle.getString("PanboxClientGUI.selectedCSPLabel.text")); // NOI18N

    cspSelectionComboBox.setModel(generateCSPSelectionModel());
    cspSelectionComboBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            cspSelectionComboBoxActionPerformed(evt);
        }
    });

    selectedCSPContentPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
    selectedCSPContentPanel.setAutoscrolls(true);
    selectedCSPContentPanel.setLayout(new java.awt.GridLayout(0, 1));

    javax.swing.GroupLayout cspSettingsPanelLayout = new javax.swing.GroupLayout(cspSettingsPanel);
    cspSettingsPanel.setLayout(cspSettingsPanelLayout);
    cspSettingsPanelLayout.setHorizontalGroup(cspSettingsPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(cspSettingsPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(cspSettingsPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(selectedCSPContentPanel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(cspSettingsPanelLayout.createSequentialGroup()
                                    .addComponent(selectedCSPLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(cspSelectionComboBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            535, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap()));
    cspSettingsPanelLayout.setVerticalGroup(cspSettingsPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(cspSettingsPanelLayout.createSequentialGroup().addGroup(cspSettingsPanelLayout
                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(selectedCSPLabel).addComponent(cspSelectionComboBox,
                            javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                            javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(selectedCSPContentPanel, javax.swing.GroupLayout.DEFAULT_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    uriHandlerCheckbox.setText(bundle.getString("PanboxClientGUI.uriHandlerCheckbox.text")); // NOI18N
    uriHandlerCheckbox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            uriHandlerCheckboxActionPerformed(evt);
        }
    });

    mailtoSchemeCheckbox.setText(bundle.getString("PanboxClientGUI.mailtoSchemeCheckbox.text")); // NOI18N
    mailtoSchemeCheckbox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            mailtoSchemeCheckboxActionPerformed(evt);
        }
    });

    clipboardHandlerCheckbox.setText(bundle.getString("PanboxClientGUI.clipboardHandlerCheckbox.text")); // NOI18N
    clipboardHandlerCheckbox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            clipboardHandlerCheckboxActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout settingsTabPanelLayout = new javax.swing.GroupLayout(settingsTabPanel);
    settingsTabPanel.setLayout(settingsTabPanelLayout);
    settingsTabPanelLayout.setHorizontalGroup(settingsTabPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, settingsTabPanelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(networkDevicePairingPanel, javax.swing.GroupLayout.Alignment.LEADING,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, settingsTabPanelLayout
                                    .createSequentialGroup()
                                    .addGroup(settingsTabPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                                    false)
                                            .addComponent(panboxFolderLabel,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addComponent(settingsFolderLabel,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
                                            .addComponent(languageLabel, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addGroup(settingsTabPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(languageComboBox, 0,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                                    settingsTabPanelLayout.createSequentialGroup().addGroup(
                                                            settingsTabPanelLayout.createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.TRAILING)
                                                                    .addComponent(panboxFolderTextField,
                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            457, Short.MAX_VALUE)
                                                                    .addComponent(settingsFolderTextField))
                                                            .addPreferredGap(
                                                                    javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                            .addGroup(settingsTabPanelLayout
                                                                    .createParallelGroup(
                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                            false)
                                                                    .addComponent(settingsFolderChooseButton,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            Short.MAX_VALUE)
                                                                    .addComponent(panboxFolderChooseButton,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            Short.MAX_VALUE)))
                                            .addGroup(settingsTabPanelLayout.createSequentialGroup()
                                                    .addGroup(settingsTabPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addComponent(expertModeCheckBox)
                                                            .addComponent(mailtoSchemeCheckbox))
                                                    .addGap(90, 90, 90)
                                                    .addGroup(settingsTabPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addComponent(clipboardHandlerCheckbox)
                                                            .addComponent(uriHandlerCheckbox))
                                                    .addGap(0, 0, Short.MAX_VALUE))))
                            .addGroup(settingsTabPanelLayout.createSequentialGroup()
                                    .addGap(0, 0, Short.MAX_VALUE).addComponent(settingsRevertButton)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(settingsApplyButton))
                            .addComponent(cspSettingsPanel, javax.swing.GroupLayout.Alignment.LEADING,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    Short.MAX_VALUE))
                    .addContainerGap()));
    settingsTabPanelLayout.setVerticalGroup(settingsTabPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(settingsTabPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(languageLabel).addComponent(languageComboBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(settingsFolderLabel)
                            .addComponent(settingsFolderTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(settingsFolderChooseButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(panboxFolderLabel)
                            .addComponent(panboxFolderTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(panboxFolderChooseButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(expertModeCheckBox).addComponent(uriHandlerCheckbox))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(mailtoSchemeCheckbox).addComponent(clipboardHandlerCheckbox))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(networkDevicePairingPanel, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(cspSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 158, Short.MAX_VALUE)
                    .addGroup(settingsTabPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(settingsApplyButton).addComponent(settingsRevertButton))
                    .addContainerGap()));

    languageLabel.getAccessibleContext().setAccessibleName(bundle.getString("client.settings.language")); // NOI18N
    settingsFolderLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.settings.settingsFolder")); // NOI18N
    settingsFolderChooseButton.getAccessibleContext().setAccessibleName(bundle.getString("client.choose")); // NOI18N
    panboxFolderLabel.getAccessibleContext()
            .setAccessibleName(bundle.getString("client.settings.panboxFolder")); // NOI18N
    panboxFolderChooseButton.getAccessibleContext().setAccessibleName(bundle.getString("client.choose")); // NOI18N
    settingsApplyButton.getAccessibleContext().setAccessibleName(bundle.getString("client.apply")); // NOI18N
    settingsRevertButton.getAccessibleContext().setAccessibleName(bundle.getString("client.discard")); // NOI18N
    expertModeCheckBox.getAccessibleContext().setAccessibleName(bundle.getString("client.settings.expertmode")); // NOI18N

    mainTabbedPane.addTab(bundle.getString("client.settings.tabTitle"), settingsTabPanel); // NOI18N

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(mainTabbedPane,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()));
    layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(mainTabbedPane,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()));

    mainTabbedPane.getAccessibleContext().setAccessibleName(
            bundle.getString("PanboxClientGUI.mainTabbedPane.AccessibleContext.accessibleName")); // NOI18N

    pack();
    setLocationRelativeTo(null);
}