package com.compomics.util.gui; import com.compomics.util.gui.error_handlers.HelpDialog; import com.compomics.util.gui.export.graphics.ExportGraphicsDialog; import com.compomics.util.preferences.LastSelectedFolder; import java.awt.*; import java.util.*; import javax.swing.*; /** * A dialog for creating and displaying Venn diagrams. (Work in progress...) * * @author Harald Barsnes */ public class VennDiagramDialog extends javax.swing.JDialog { /** * The dialog parent. */ private Frame dialogParent; /** * The last selected folder. */ private LastSelectedFolder lastSelectedFolder; /** * The normal icon for the parent dialog. */ private Image normalIcon; /** * The icon to use when busy. */ private Image waitingIcon; /** * The Venn diagram panel. */ private VennDiagramPanel vennDiagramPanel; /** * Creates a new XYPlottingDialog. * * @param dialogParent the dialog parent * @param modal if the dialog is to be modal or not * @param normalIcon the normal icon for the parent dialog * @param waitingIcon the icon to use when busy */ public VennDiagramDialog(java.awt.Frame dialogParent, Image normalIcon, Image waitingIcon, boolean modal) { super(dialogParent, modal); initComponents(); this.dialogParent = dialogParent; this.normalIcon = normalIcon; this.waitingIcon = waitingIcon; // default dataset colors int alphaLevel = 150; datasetAColorJPanel.setBackground(new java.awt.Color(0, 0, 255, alphaLevel)); datasetBColorJPanel.setBackground(new java.awt.Color(0, 255, 0, alphaLevel)); datasetCColorJPanel.setBackground(new java.awt.Color(255, 255, 0, alphaLevel)); datasetDColorJPanel.setBackground(new java.awt.Color(255, 0, 0, alphaLevel)); setUpGUI(); setLocationRelativeTo(dialogParent); plotLayeredPaneComponentResized(null); setVisible(true); } /** * Main method. For testing purposes only. * * @param args the arguments */ public static void main(String args[]) { // set the look and feel try { UtilitiesGUIDefaults.setLookAndFeel(); } catch (Exception e) { // ignore } new VennDiagramDialog(new JFrame(), null, null, true); } /** * Set up the GUI. */ private void setUpGUI() { ArrayList<String> a = new ArrayList<String>(); ArrayList<String> b = new ArrayList<String>(); ArrayList<String> c = new ArrayList<String>(); ArrayList<String> d = new ArrayList<String>(); String datasetA = datasetATextArea.getText(); if (datasetA.trim().length() > 0) { String[] lines = datasetA.split("\n"); a.addAll(Arrays.asList(lines)); } String datasetB = datasetBTextArea.getText(); if (datasetB.trim().length() > 0) { String[] lines = datasetB.split("\n"); b.addAll(Arrays.asList(lines)); } String datasetC = datasetCTextArea.getText(); if (datasetC.trim().length() > 0) { String[] lines = datasetC.split("\n"); c.addAll(Arrays.asList(lines)); } String datasetD = datasetDTextArea.getText(); if (datasetD.trim().length() > 0) { String[] lines = datasetD.split("\n"); d.addAll(Arrays.asList(lines)); } vennDiagramPanel = new VennDiagramPanel(a, b, c, d, datasetATextField.getText(), datasetBTextField.getText(), datasetCTextField.getText(), datasetDTextField.getText(), datasetAColorJPanel.getBackground(), datasetBColorJPanel.getBackground(), datasetCColorJPanel.getBackground(), datasetDColorJPanel.getBackground()); xyPlotPanel.removeAll(); xyPlotPanel.add(vennDiagramPanel); } /** * 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. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { plotPopupMenu = new javax.swing.JPopupMenu(); exportPlotMenuItem = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); legendCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem(); legendLocationMenuItem = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); fontSizeMenu = new javax.swing.JMenu(); valueFontSizeMenuItem = new javax.swing.JMenuItem(); legendFontSizeMenuItem = new javax.swing.JMenuItem(); backgroundPanel = new javax.swing.JPanel(); plotLayeredPane = new javax.swing.JLayeredPane(); xyPlotPanel = new javax.swing.JPanel(); plotOptionsJButton = new javax.swing.JButton(); plotHelpJButton = new javax.swing.JButton(); contextMenuPlotBackgroundPanel = new javax.swing.JPanel(); dataPanel = new javax.swing.JPanel(); datasetAScrollPane = new javax.swing.JScrollPane(); datasetATextArea = new javax.swing.JTextArea(); datasetBScrollPane = new javax.swing.JScrollPane(); datasetBTextArea = new javax.swing.JTextArea(); datasetCScrollPane = new javax.swing.JScrollPane(); datasetCTextArea = new javax.swing.JTextArea(); datasetDScrollPane = new javax.swing.JScrollPane(); datasetDTextArea = new javax.swing.JTextArea(); datasetATextField = new javax.swing.JTextField(); datasetBTextField = new javax.swing.JTextField(); datasetCTextField = new javax.swing.JTextField(); datasetDTextField = new javax.swing.JTextField(); datasetAColorJPanel = new javax.swing.JPanel(); datasetBColorJPanel = new javax.swing.JPanel(); datasetCColorJPanel = new javax.swing.JPanel(); datasetDColorJPanel = new javax.swing.JPanel(); exportPlotMenuItem.setText("Export"); exportPlotMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exportPlotMenuItemActionPerformed(evt); } }); plotPopupMenu.add(exportPlotMenuItem); plotPopupMenu.add(jSeparator1); legendCheckBoxMenuItem.setSelected(true); legendCheckBoxMenuItem.setText("Show Legend"); legendCheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { legendCheckBoxMenuItemActionPerformed(evt); } }); plotPopupMenu.add(legendCheckBoxMenuItem); legendLocationMenuItem.setText("Legend Location"); legendLocationMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { legendLocationMenuItemActionPerformed(evt); } }); plotPopupMenu.add(legendLocationMenuItem); plotPopupMenu.add(jSeparator2); fontSizeMenu.setText("Font Size"); valueFontSizeMenuItem.setText("Values"); valueFontSizeMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { valueFontSizeMenuItemActionPerformed(evt); } }); fontSizeMenu.add(valueFontSizeMenuItem); legendFontSizeMenuItem.setText("Legend"); legendFontSizeMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { legendFontSizeMenuItemActionPerformed(evt); } }); fontSizeMenu.add(legendFontSizeMenuItem); plotPopupMenu.add(fontSizeMenu); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Statistics"); setModal(true); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); backgroundPanel.setBackground(new java.awt.Color(255, 255, 255)); backgroundPanel.setPreferredSize(new java.awt.Dimension(600, 600)); plotLayeredPane.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentResized(java.awt.event.ComponentEvent evt) { plotLayeredPaneComponentResized(evt); } }); xyPlotPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Venn Diagram")); xyPlotPanel.setOpaque(false); xyPlotPanel.setLayout(new javax.swing.BoxLayout(xyPlotPanel, javax.swing.BoxLayout.Y_AXIS)); plotLayeredPane.add(xyPlotPanel); xyPlotPanel.setBounds(0, 0, 580, 360); plotOptionsJButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/contextual_menu_gray.png"))); // NOI18N plotOptionsJButton.setToolTipText("Plot Options"); plotOptionsJButton.setBorder(null); plotOptionsJButton.setBorderPainted(false); plotOptionsJButton.setContentAreaFilled(false); plotOptionsJButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/contextual_menu_black.png"))); // NOI18N plotOptionsJButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { plotOptionsJButtonMouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { plotOptionsJButtonMouseExited(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { plotOptionsJButtonMouseReleased(evt); } }); plotLayeredPane.add(plotOptionsJButton); plotOptionsJButton.setBounds(550, 5, 10, 19); plotLayeredPane.setLayer(plotOptionsJButton, javax.swing.JLayeredPane.POPUP_LAYER); plotHelpJButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/help_no_frame_grey.png"))); // NOI18N plotHelpJButton.setToolTipText("Help"); plotHelpJButton.setBorder(null); plotHelpJButton.setBorderPainted(false); plotHelpJButton.setContentAreaFilled(false); plotHelpJButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/help_no_frame.png"))); // NOI18N plotHelpJButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { plotHelpJButtonMouseEntered(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { plotHelpJButtonMouseExited(evt); } }); plotHelpJButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { plotHelpJButtonActionPerformed(evt); } }); plotLayeredPane.add(plotHelpJButton); plotHelpJButton.setBounds(570, 0, 10, 19); plotLayeredPane.setLayer(plotHelpJButton, javax.swing.JLayeredPane.POPUP_LAYER); contextMenuPlotBackgroundPanel.setBackground(new java.awt.Color(255, 255, 255)); javax.swing.GroupLayout contextMenuPlotBackgroundPanelLayout = new javax.swing.GroupLayout(contextMenuPlotBackgroundPanel); contextMenuPlotBackgroundPanel.setLayout(contextMenuPlotBackgroundPanelLayout); contextMenuPlotBackgroundPanelLayout.setHorizontalGroup( contextMenuPlotBackgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 30, Short.MAX_VALUE) ); contextMenuPlotBackgroundPanelLayout.setVerticalGroup( contextMenuPlotBackgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 19, Short.MAX_VALUE) ); plotLayeredPane.add(contextMenuPlotBackgroundPanel); contextMenuPlotBackgroundPanel.setBounds(550, 0, 30, 19); plotLayeredPane.setLayer(contextMenuPlotBackgroundPanel, javax.swing.JLayeredPane.POPUP_LAYER); dataPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Data")); dataPanel.setOpaque(false); datasetATextArea.setTabSize(4); datasetATextArea.setText("1\n2\n3\n4\n5"); datasetATextArea.setToolTipText(""); datasetATextArea.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetATextAreaKeyReleased(evt); } }); datasetAScrollPane.setViewportView(datasetATextArea); datasetBTextArea.setTabSize(4); datasetBTextArea.setText("3\n5\n6"); datasetBTextArea.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetBTextAreaKeyReleased(evt); } }); datasetBScrollPane.setViewportView(datasetBTextArea); datasetCTextArea.setColumns(2); datasetCTextArea.setTabSize(4); datasetCTextArea.setText("3\n6\n7"); datasetCTextArea.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetCTextAreaKeyReleased(evt); } }); datasetCScrollPane.setViewportView(datasetCTextArea); datasetDTextArea.setColumns(2); datasetDTextArea.setTabSize(4); datasetDTextArea.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetDTextAreaKeyReleased(evt); } }); datasetDScrollPane.setViewportView(datasetDTextArea); datasetATextField.setText("Dataset A"); datasetATextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetATextFieldKeyReleased(evt); } }); datasetBTextField.setText("Dataset B"); datasetBTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetBTextFieldKeyReleased(evt); } }); datasetCTextField.setText("Dataset C"); datasetCTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetCTextFieldKeyReleased(evt); } }); datasetDTextField.setText("Dataset D"); datasetDTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { datasetDTextFieldKeyReleased(evt); } }); datasetAColorJPanel.setBackground(new java.awt.Color(0, 0, 255)); datasetAColorJPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); datasetAColorJPanel.setToolTipText("The color used for Peptide A"); datasetAColorJPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { datasetAColorJPanelMouseClicked(evt); } }); javax.swing.GroupLayout datasetAColorJPanelLayout = new javax.swing.GroupLayout(datasetAColorJPanel); datasetAColorJPanel.setLayout(datasetAColorJPanelLayout); datasetAColorJPanelLayout.setHorizontalGroup( datasetAColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 13, Short.MAX_VALUE) ); datasetAColorJPanelLayout.setVerticalGroup( datasetAColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 12, Short.MAX_VALUE) ); datasetBColorJPanel.setBackground(new java.awt.Color(0, 255, 0)); datasetBColorJPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); datasetBColorJPanel.setToolTipText("The color used for Peptide A"); datasetBColorJPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { datasetBColorJPanelMouseClicked(evt); } }); javax.swing.GroupLayout datasetBColorJPanelLayout = new javax.swing.GroupLayout(datasetBColorJPanel); datasetBColorJPanel.setLayout(datasetBColorJPanelLayout); datasetBColorJPanelLayout.setHorizontalGroup( datasetBColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 13, Short.MAX_VALUE) ); datasetBColorJPanelLayout.setVerticalGroup( datasetBColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 12, Short.MAX_VALUE) ); datasetCColorJPanel.setBackground(new java.awt.Color(255, 255, 0)); datasetCColorJPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); datasetCColorJPanel.setToolTipText("The color used for Peptide A"); datasetCColorJPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { datasetCColorJPanelMouseClicked(evt); } }); javax.swing.GroupLayout datasetCColorJPanelLayout = new javax.swing.GroupLayout(datasetCColorJPanel); datasetCColorJPanel.setLayout(datasetCColorJPanelLayout); datasetCColorJPanelLayout.setHorizontalGroup( datasetCColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 13, Short.MAX_VALUE) ); datasetCColorJPanelLayout.setVerticalGroup( datasetCColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 12, Short.MAX_VALUE) ); datasetDColorJPanel.setBackground(new java.awt.Color(255, 0, 0)); datasetDColorJPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); datasetDColorJPanel.setToolTipText("The color used for Peptide A"); datasetDColorJPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { datasetDColorJPanelMouseClicked(evt); } }); javax.swing.GroupLayout datasetDColorJPanelLayout = new javax.swing.GroupLayout(datasetDColorJPanel); datasetDColorJPanel.setLayout(datasetDColorJPanelLayout); datasetDColorJPanelLayout.setHorizontalGroup( datasetDColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 13, Short.MAX_VALUE) ); datasetDColorJPanelLayout.setVerticalGroup( datasetDColorJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 12, Short.MAX_VALUE) ); javax.swing.GroupLayout dataPanelLayout = new javax.swing.GroupLayout(dataPanel); dataPanel.setLayout(dataPanelLayout); dataPanelLayout.setHorizontalGroup( dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(dataPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(datasetAScrollPane) .addGroup(dataPanelLayout.createSequentialGroup() .addComponent(datasetATextField) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(datasetAColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(datasetBScrollPane) .addGroup(dataPanelLayout.createSequentialGroup() .addComponent(datasetBTextField) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(datasetBColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(datasetCScrollPane) .addGroup(dataPanelLayout.createSequentialGroup() .addComponent(datasetCTextField) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(datasetCColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(datasetDScrollPane) .addGroup(dataPanelLayout.createSequentialGroup() .addComponent(datasetDTextField) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(datasetDColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); dataPanelLayout.setVerticalGroup( dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(dataPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(datasetATextField) .addComponent(datasetAColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetBTextField) .addComponent(datasetCTextField) .addComponent(datasetDTextField) .addComponent(datasetBColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetCColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetDColorJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(datasetAScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetBScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetCScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(datasetDScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); dataPanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {datasetATextField, datasetBTextField, datasetCTextField, datasetDTextField}); javax.swing.GroupLayout backgroundPanelLayout = new javax.swing.GroupLayout(backgroundPanel); backgroundPanel.setLayout(backgroundPanelLayout); backgroundPanelLayout.setHorizontalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(plotLayeredPane, javax.swing.GroupLayout.DEFAULT_SIZE, 580, Short.MAX_VALUE) .addComponent(dataPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); backgroundPanelLayout.setVerticalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(plotLayeredPane, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dataPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(backgroundPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(backgroundPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, 0)) ); pack(); }// </editor-fold>//GEN-END:initComponents /** * Change the cursor into a hand cursor. * * @param evt */ private void plotOptionsJButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plotOptionsJButtonMouseEntered setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); }//GEN-LAST:event_plotOptionsJButtonMouseEntered /** * Change the cursor back to the default cursor. * * @param evt */ private void plotOptionsJButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plotOptionsJButtonMouseExited setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); }//GEN-LAST:event_plotOptionsJButtonMouseExited /** * Show the options for the plot. * * @param evt */ private void plotOptionsJButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plotOptionsJButtonMouseReleased plotPopupMenu.show(plotOptionsJButton, evt.getX(), evt.getY()); }//GEN-LAST:event_plotOptionsJButtonMouseReleased /** * Export the plot to file. * * @param evt */ private void exportPlotMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportPlotMenuItemActionPerformed new ExportGraphicsDialog(this, getNormalIcon(), getWaitingIcon(), true, vennDiagramPanel.getChartPanel(), lastSelectedFolder); }//GEN-LAST:event_exportPlotMenuItemActionPerformed /** * Change the cursor into a hand cursor. * * @param evt */ private void plotHelpJButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plotHelpJButtonMouseEntered setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); }//GEN-LAST:event_plotHelpJButtonMouseEntered /** * Change the cursor back to the default cursor. * * @param evt */ private void plotHelpJButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plotHelpJButtonMouseExited setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); }//GEN-LAST:event_plotHelpJButtonMouseExited /** * Open the help dialog. * * @param evt */ private void plotHelpJButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_plotHelpJButtonActionPerformed setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR)); new HelpDialog(this, getClass().getResource("/helpFiles/VennDiagramDialog.html"), // @TODO: setup the help page Toolkit.getDefaultToolkit().getImage(getClass().getResource("/icons/help.GIF")), Toolkit.getDefaultToolkit().getImage(getClass().getResource("/icons/help.GIF")), "Statistics - Help"); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); }//GEN-LAST:event_plotHelpJButtonActionPerformed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing System.exit(0); // @TODO: remove method when testing is done! }//GEN-LAST:event_formWindowClosing /** * Resize the layered pane. * * @param evt */ private void plotLayeredPaneComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_plotLayeredPaneComponentResized // resize the layered panels SwingUtilities.invokeLater(new Runnable() { public void run() { // move the icons plotLayeredPane.getComponent(0).setBounds( plotLayeredPane.getWidth() - plotLayeredPane.getComponent(0).getWidth() - 22, -2, plotLayeredPane.getComponent(0).getWidth(), plotLayeredPane.getComponent(0).getHeight()); plotLayeredPane.getComponent(1).setBounds( plotLayeredPane.getWidth() - plotLayeredPane.getComponent(1).getWidth() - 10, -4, plotLayeredPane.getComponent(1).getWidth(), plotLayeredPane.getComponent(1).getHeight()); plotLayeredPane.getComponent(2).setBounds( plotLayeredPane.getWidth() - plotLayeredPane.getComponent(2).getWidth() - 5, -3, plotLayeredPane.getComponent(2).getWidth(), plotLayeredPane.getComponent(2).getHeight()); // resize the plot area plotLayeredPane.getComponent(3).setBounds(0, 0, plotLayeredPane.getWidth(), plotLayeredPane.getHeight()); if (vennDiagramPanel != null) { vennDiagramPanel.resizePlot(plotLayeredPane.getWidth(), plotLayeredPane.getHeight()); } plotLayeredPane.revalidate(); plotLayeredPane.repaint(); } }); }//GEN-LAST:event_plotLayeredPaneComponentResized /** * Update the plot. * * @param evt */ private void datasetATextAreaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetATextAreaKeyReleased setUpGUI(); vennDiagramPanel.updatePlot(); plotLayeredPaneComponentResized(null); }//GEN-LAST:event_datasetATextAreaKeyReleased /** * Update the plot. * * @param evt */ private void datasetCTextAreaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetCTextAreaKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetCTextAreaKeyReleased /** * Update the plot. * * @param evt */ private void datasetDTextAreaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetDTextAreaKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetDTextAreaKeyReleased /** * Update the plot. * * @param evt */ private void datasetATextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetATextFieldKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetATextFieldKeyReleased /** * Update the plot. * * @param evt */ private void datasetBTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetBTextFieldKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetBTextFieldKeyReleased /** * Update the plot. * * @param evt */ private void datasetCTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetCTextFieldKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetCTextFieldKeyReleased /** * Update the plot. * * @param evt */ private void datasetDTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetDTextFieldKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetDTextFieldKeyReleased /** * Change the color of dataset A. * * @param evt */ private void datasetAColorJPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_datasetAColorJPanelMouseClicked Color newColor = JColorChooser.showDialog(this, "Pick a Color", datasetAColorJPanel.getBackground()); if (newColor != null) { datasetAColorJPanel.setBackground(newColor); vennDiagramPanel.updatePlot(); } }//GEN-LAST:event_datasetAColorJPanelMouseClicked /** * Change the color of dataset B. * * @param evt */ private void datasetBColorJPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_datasetBColorJPanelMouseClicked Color newColor = JColorChooser.showDialog(this, "Pick a Color", datasetBColorJPanel.getBackground()); if (newColor != null) { datasetBColorJPanel.setBackground(newColor); vennDiagramPanel.updatePlot(); } }//GEN-LAST:event_datasetBColorJPanelMouseClicked /** * Change the color of dataset C. * * @param evt */ private void datasetCColorJPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_datasetCColorJPanelMouseClicked Color newColor = JColorChooser.showDialog(this, "Pick a Color", datasetCColorJPanel.getBackground()); if (newColor != null) { datasetCColorJPanel.setBackground(newColor); vennDiagramPanel.updatePlot(); } }//GEN-LAST:event_datasetCColorJPanelMouseClicked /** * Change the color of dataset D. * * @param evt */ private void datasetDColorJPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_datasetDColorJPanelMouseClicked Color newColor = JColorChooser.showDialog(this, "Pick a Color", datasetDColorJPanel.getBackground()); if (newColor != null) { datasetDColorJPanel.setBackground(newColor); vennDiagramPanel.updatePlot(); } }//GEN-LAST:event_datasetDColorJPanelMouseClicked /** * Turn the legend on/off. * * @param evt */ private void legendCheckBoxMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_legendCheckBoxMenuItemActionPerformed vennDiagramPanel.setShowLegend(legendCheckBoxMenuItem.isSelected()); vennDiagramPanel.updatePlot(); }//GEN-LAST:event_legendCheckBoxMenuItemActionPerformed /** * Allow the user to change the value font size. * * @param evt */ private void valueFontSizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_valueFontSizeMenuItemActionPerformed String value = JOptionPane.showInputDialog(this, "Values Font Size:", vennDiagramPanel.getFontSize()); if (value != null) { try { vennDiagramPanel.setFontSize(Integer.parseInt(value)); vennDiagramPanel.updatePlot(); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(this, "Font size has to be an integer!", "Font Error", JOptionPane.INFORMATION_MESSAGE); } } }//GEN-LAST:event_valueFontSizeMenuItemActionPerformed /** * Allow the user to change the legend font size. * * @param evt */ private void legendFontSizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_legendFontSizeMenuItemActionPerformed String value = JOptionPane.showInputDialog(this, "Legend Font Size:", vennDiagramPanel.getFontSizeLegend()); if (value != null) { try { vennDiagramPanel.setFontSizeLegend(Integer.parseInt(value)); vennDiagramPanel.updatePlot(); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(this, "Font size has to be an integer!", "Font Error", JOptionPane.INFORMATION_MESSAGE); } } }//GEN-LAST:event_legendFontSizeMenuItemActionPerformed /** * Update the plot. * * @param evt */ private void datasetBTextAreaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datasetBTextAreaKeyReleased datasetATextAreaKeyReleased(null); }//GEN-LAST:event_datasetBTextAreaKeyReleased /** * Open the legend location dialog. * * @param evt */ private void legendLocationMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_legendLocationMenuItemActionPerformed new VennDiagramLegendLocationDialog(this, true); }//GEN-LAST:event_legendLocationMenuItemActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel backgroundPanel; private javax.swing.JPanel contextMenuPlotBackgroundPanel; private javax.swing.JPanel dataPanel; private javax.swing.JPanel datasetAColorJPanel; private javax.swing.JScrollPane datasetAScrollPane; private javax.swing.JTextArea datasetATextArea; private javax.swing.JTextField datasetATextField; private javax.swing.JPanel datasetBColorJPanel; private javax.swing.JScrollPane datasetBScrollPane; private javax.swing.JTextArea datasetBTextArea; private javax.swing.JTextField datasetBTextField; private javax.swing.JPanel datasetCColorJPanel; private javax.swing.JScrollPane datasetCScrollPane; private javax.swing.JTextArea datasetCTextArea; private javax.swing.JTextField datasetCTextField; private javax.swing.JPanel datasetDColorJPanel; private javax.swing.JScrollPane datasetDScrollPane; private javax.swing.JTextArea datasetDTextArea; private javax.swing.JTextField datasetDTextField; private javax.swing.JMenuItem exportPlotMenuItem; private javax.swing.JMenu fontSizeMenu; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JCheckBoxMenuItem legendCheckBoxMenuItem; private javax.swing.JMenuItem legendFontSizeMenuItem; private javax.swing.JMenuItem legendLocationMenuItem; private javax.swing.JButton plotHelpJButton; private javax.swing.JLayeredPane plotLayeredPane; private javax.swing.JButton plotOptionsJButton; private javax.swing.JPopupMenu plotPopupMenu; private javax.swing.JMenuItem valueFontSizeMenuItem; private javax.swing.JPanel xyPlotPanel; // End of variables declaration//GEN-END:variables public void setSelectedExportFolder(LastSelectedFolder selectedFolder) { lastSelectedFolder = selectedFolder; } public LastSelectedFolder getDefaultExportFolder() { return lastSelectedFolder; } public Image getNormalIcon() { return Toolkit.getDefaultToolkit().getImage(getClass().getResource("/icons/compomics-utilities.png")); } public Image getWaitingIcon() { return Toolkit.getDefaultToolkit().getImage(getClass().getResource("/icons/compomics-utilities.png")); } /** * Returns the Venn diagram panel. * * @return the Venn diagram panel */ public VennDiagramPanel getVennDiagramPanel() { return vennDiagramPanel; } }