package com.compomics.software.dialogs;
import com.compomics.software.CompomicsWrapper;
import com.compomics.util.examples.BareBonesBrowserLaunch;
import com.compomics.util.preferences.UtilitiesUserPreferences;
import java.awt.Color;
import java.io.File;
import javax.swing.JDialog;
import javax.swing.JFrame;
import no.uib.jsparklines.renderers.util.Util;
/**
* A dialog for showing Java memory settings.
*
* @author Harald Barsnes
*/
public class JavaSettingsDialog extends javax.swing.JDialog {
/**
* Reference to the JavaHomeOrMemoryDialogParent.
*/
private JavaHomeOrMemoryDialogParent javaHomeOrMemoryDialogParent;
/**
* The frame parent.
*/
private JFrame frameParent;
/**
* The name of the tool, e.g., PeptideShaker.
*/
private String toolName;
/**
* A reference to the Welcome Dialog.
*/
private JDialog welcomeDialog;
/**
* Creates a new JavaSettingsDialog.
*
* @param parent the parent frame
* @param javaHomeOrMemoryDialogParent reference to the
* JavaHomeOrMemoryDialogParent
* @param toolName the name of the tool, e.g., PeptideShaker
* @param welcomeDialog reference to the Welcome Dialog, can be null
* @param modal if the dialog is to be modal or not
*/
public JavaSettingsDialog(JFrame parent, JavaHomeOrMemoryDialogParent javaHomeOrMemoryDialogParent, JDialog welcomeDialog, String toolName, boolean modal) {
super(parent, modal);
this.frameParent = parent;
this.javaHomeOrMemoryDialogParent = javaHomeOrMemoryDialogParent;
this.welcomeDialog = welcomeDialog;
this.toolName = toolName;
initComponents();
setUpGUI();
setLocationRelativeTo(parent);
setVisible(true);
}
/**
* Set up the GUI.
*/
private void setUpGUI() {
String javaHome = System.getProperty("java.home") + File.separator + "bin" + File.separator;
javaHomeLabel.setText("<html>" + javaHome + " <a href>Edit</a></u></html>");
String javaVersion = System.getProperty("java.version");
versionLabel.setText(javaVersion);
if (javaVersion.startsWith("1.5") || javaVersion.startsWith("1.6")) {
versionLabel.setForeground(Color.red);
javaHomeLabel.setForeground(Color.red);
}
if (CompomicsWrapper.is64BitJava()) {
bitLabel.setText("64 Bit Java");
} else {
bitLabel.setText("32 Bit Java");
bitLabel.setForeground(Color.red);
}
try {
UtilitiesUserPreferences utilitiesUserPreferences = UtilitiesUserPreferences.loadUserPreferences();
int maxMemory = utilitiesUserPreferences.getMemoryPreference();
memoryLabel.setText("<html>" + Util.roundDouble(maxMemory * 0.000976563, 1) + " GB " + " <a href>Edit</a></u></html>");
if (maxMemory < 4000) {
memoryLabel.setForeground(Color.red);
}
} catch (Exception e) {
memoryLabel.setText("Error...");
e.printStackTrace();
}
}
/**
* 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() {
backgroundsPanel = new javax.swing.JPanel();
javaHomePanel = new javax.swing.JPanel();
javaHomeLabel = new javax.swing.JLabel();
versionRecommendationLabel1 = new javax.swing.JLabel();
versionPanel = new javax.swing.JPanel();
versionLabel = new javax.swing.JLabel();
versionRecommendationLabel2 = new javax.swing.JLabel();
bitPanel = new javax.swing.JPanel();
bitLabel = new javax.swing.JLabel();
bitRecommendationLabel = new javax.swing.JLabel();
memoryPanel = new javax.swing.JPanel();
memoryLabel = new javax.swing.JLabel();
memoryRecommendationLabel = new javax.swing.JLabel();
javaHelpJLabel = new javax.swing.JLabel();
okButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Java Settings");
setResizable(false);
backgroundsPanel.setBackground(new java.awt.Color(230, 230, 230));
javaHomePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Java Home"));
javaHomePanel.setOpaque(false);
javaHomeLabel.setText("<html>Java Home... <a href>Edit</a></u></html>");
javaHomeLabel.setToolTipText("Edit Java Home");
javaHomeLabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
javaHomeLabelMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
javaHomeLabelMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
javaHomeLabelMouseReleased(evt);
}
});
versionRecommendationLabel1.setFont(versionRecommendationLabel1.getFont().deriveFont((versionRecommendationLabel1.getFont().getStyle() | java.awt.Font.ITALIC)));
versionRecommendationLabel1.setText("Recommended: Java 1.7 or newer");
javax.swing.GroupLayout javaHomePanelLayout = new javax.swing.GroupLayout(javaHomePanel);
javaHomePanel.setLayout(javaHomePanelLayout);
javaHomePanelLayout.setHorizontalGroup(
javaHomePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javaHomePanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(javaHomeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 355, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(versionRecommendationLabel1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javaHomePanelLayout.setVerticalGroup(
javaHomePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javaHomePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(javaHomePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(javaHomeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(versionRecommendationLabel1))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
versionPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Java Version"));
versionPanel.setOpaque(false);
versionLabel.setText("1.7");
versionRecommendationLabel2.setFont(versionRecommendationLabel2.getFont().deriveFont((versionRecommendationLabel2.getFont().getStyle() | java.awt.Font.ITALIC)));
versionRecommendationLabel2.setText("Recommended: Java 1.7 or newer");
javax.swing.GroupLayout versionPanelLayout = new javax.swing.GroupLayout(versionPanel);
versionPanel.setLayout(versionPanelLayout);
versionPanelLayout.setHorizontalGroup(
versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(versionPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(versionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 355, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(versionRecommendationLabel2)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
versionPanelLayout.setVerticalGroup(
versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(versionPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(versionLabel)
.addComponent(versionRecommendationLabel2))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
bitPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("32 Bit or 64 Bit"));
bitPanel.setOpaque(false);
bitLabel.setText("64 Bit Java");
bitRecommendationLabel.setFont(bitRecommendationLabel.getFont().deriveFont((bitRecommendationLabel.getFont().getStyle() | java.awt.Font.ITALIC)));
bitRecommendationLabel.setText("Recommended: 64 Bit Java");
javax.swing.GroupLayout bitPanelLayout = new javax.swing.GroupLayout(bitPanel);
bitPanel.setLayout(bitPanelLayout);
bitPanelLayout.setHorizontalGroup(
bitPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(bitPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(bitLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 390, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(bitRecommendationLabel)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
bitPanelLayout.setVerticalGroup(
bitPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(bitPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(bitPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bitLabel)
.addComponent(bitRecommendationLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
memoryPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Memory"));
memoryPanel.setOpaque(false);
memoryLabel.setText("<html>60 GB <a href>Edit</a></u></html>");
memoryLabel.setToolTipText("Edit memory settings");
memoryLabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
memoryLabelMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
memoryLabelMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
memoryLabelMouseReleased(evt);
}
});
memoryRecommendationLabel.setFont(memoryRecommendationLabel.getFont().deriveFont((memoryRecommendationLabel.getFont().getStyle() | java.awt.Font.ITALIC)));
memoryRecommendationLabel.setText("Recommended: at least 4 GB");
javax.swing.GroupLayout memoryPanelLayout = new javax.swing.GroupLayout(memoryPanel);
memoryPanel.setLayout(memoryPanelLayout);
memoryPanelLayout.setHorizontalGroup(
memoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(memoryPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(memoryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 382, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(memoryRecommendationLabel)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
memoryPanelLayout.setVerticalGroup(
memoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(memoryPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(memoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(memoryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(memoryRecommendationLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javaHelpJLabel.setForeground(new java.awt.Color(0, 0, 255));
javaHelpJLabel.setText("<html><u><i>Java setup help</i></u></html>");
javaHelpJLabel.setToolTipText("Open Java Help");
javaHelpJLabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
javaHelpJLabelMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
javaHelpJLabelMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
javaHelpJLabelMouseReleased(evt);
}
});
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout backgroundsPanelLayout = new javax.swing.GroupLayout(backgroundsPanel);
backgroundsPanel.setLayout(backgroundsPanelLayout);
backgroundsPanelLayout.setHorizontalGroup(
backgroundsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(backgroundsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(backgroundsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(javaHomePanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(memoryPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, backgroundsPanelLayout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(javaHelpJLabel, 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)
.addComponent(okButton))
.addComponent(bitPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(versionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
backgroundsPanelLayout.setVerticalGroup(
backgroundsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(backgroundsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(javaHomePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(versionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bitPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(memoryPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(backgroundsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(okButton)
.addComponent(javaHelpJLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(backgroundsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(backgroundsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* Change the cursor to a hand cursor.
*
* @param evt
*/
private void javaHelpJLabelMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHelpJLabelMouseEntered
this.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
}//GEN-LAST:event_javaHelpJLabelMouseEntered
/**
* Change the cursor back to the default cursor.
*
* @param evt
*/
private void javaHelpJLabelMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHelpJLabelMouseExited
this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_javaHelpJLabelMouseExited
/**
* Open the JavaTroubleShooting web page.
*
* @param evt
*/
private void javaHelpJLabelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHelpJLabelMouseReleased
this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
BareBonesBrowserLaunch.openURL("http://compomics.github.io/compomics-utilities/wiki/javatroubleshooting.html");
this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_javaHelpJLabelMouseReleased
/**
* Close the dialog.
*
* @param evt
*/
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
dispose();
}//GEN-LAST:event_okButtonActionPerformed
/**
* Change the cursor to a hand cursor.
*
* @param evt
*/
private void javaHomeLabelMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHomeLabelMouseEntered
this.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
}//GEN-LAST:event_javaHomeLabelMouseEntered
/**
* Change the cursor back to the default cursor.
*
* @param evt
*/
private void javaHomeLabelMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHomeLabelMouseExited
this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_javaHomeLabelMouseExited
/**
* Open the JavaHomeDialog.
*
* @param evt
*/
private void javaHomeLabelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_javaHomeLabelMouseReleased
new JavaHomeDialog(frameParent, javaHomeOrMemoryDialogParent, welcomeDialog, toolName);
}//GEN-LAST:event_javaHomeLabelMouseReleased
/**
* Change the cursor to a hand cursor.
*
* @param evt
*/
private void memoryLabelMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_memoryLabelMouseEntered
this.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
}//GEN-LAST:event_memoryLabelMouseEntered
/**
* Change the cursor back to the default cursor.
*
* @param evt
*/
private void memoryLabelMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_memoryLabelMouseExited
this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_memoryLabelMouseExited
/**
* Open the JavaMemoryDialog.
*
* @param evt
*/
private void memoryLabelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_memoryLabelMouseReleased
new JavaMemoryDialog(frameParent, javaHomeOrMemoryDialogParent, welcomeDialog, toolName);
}//GEN-LAST:event_memoryLabelMouseReleased
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel backgroundsPanel;
private javax.swing.JLabel bitLabel;
private javax.swing.JPanel bitPanel;
private javax.swing.JLabel bitRecommendationLabel;
private javax.swing.JLabel javaHelpJLabel;
private javax.swing.JLabel javaHomeLabel;
private javax.swing.JPanel javaHomePanel;
private javax.swing.JLabel memoryLabel;
private javax.swing.JPanel memoryPanel;
private javax.swing.JLabel memoryRecommendationLabel;
private javax.swing.JButton okButton;
private javax.swing.JLabel versionLabel;
private javax.swing.JPanel versionPanel;
private javax.swing.JLabel versionRecommendationLabel1;
private javax.swing.JLabel versionRecommendationLabel2;
// End of variables declaration//GEN-END:variables
}