package org.netbeans.modules.scala.sbt.options;
import static org.netbeans.modules.scala.sbt.console.SBTConsoleSettings.*;
import java.util.prefs.Preferences;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.netbeans.modules.scala.sbt.console.SBTConsoleTopComponent;
final class SbtPanel extends javax.swing.JPanel implements DocumentListener {
private final SbtOptionsPanelController controller;
SbtPanel(SbtOptionsPanelController controller) {
this.controller = controller;
initComponents();
maxHeapField.getDocument().addDocumentListener(this);
initialHeapField.getDocument().addDocumentListener(this);
maxPermGenField.getDocument().addDocumentListener(this);
argumentsField.getDocument().addDocumentListener(this);
}
/**
* 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
maxHeapField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
initialHeapField = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
maxPermGenField = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
argumentsField = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel1.text")); // NOI18N
maxHeapField.setText(org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.maxHeapField.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel2.text")); // NOI18N
initialHeapField.setText(org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.initialHeapField.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel3.text")); // NOI18N
maxPermGenField.setText(org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.maxPermGenField.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel4.text")); // NOI18N
argumentsField.setText(org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.argumentsField.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel5.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel6.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel7, org.openide.util.NbBundle.getMessage(SbtPanel.class, "SbtPanel.jLabel7.text")); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(60, 60, 60)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(jLabel2)
.addComponent(jLabel1))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(maxHeapField, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE)
.addComponent(initialHeapField)
.addComponent(maxPermGenField))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5)
.addComponent(jLabel7)
.addComponent(jLabel6)))
.addGroup(layout.createSequentialGroup()
.addGap(6, 6, 6)
.addComponent(argumentsField, javax.swing.GroupLayout.PREFERRED_SIZE, 382, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(76, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(maxHeapField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(initialHeapField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(maxPermGenField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(argumentsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(73, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
@Override
public void insertUpdate(DocumentEvent e) {
controller.changed();
}
@Override
public void removeUpdate(DocumentEvent e) {
controller.changed();
}
@Override
public void changedUpdate(DocumentEvent e) {
controller.changed();
}
void load() {
final Preferences prefs = Preferences.userNodeForPackage(SBTConsoleTopComponent.class);
maxHeapField.setText(prefs.get(SbtMaxHeapSizeKey(), DefaultMaxHeapSizeMB()));
initialHeapField.setText(prefs.get(SbtInitialHeapSizeKey(), DefaultInitialHeapSizeMB().toString()));
maxPermGenField.setText(prefs.get(SbtMaxPermGenSizeKey(), DefaultMaxPermGenSizeMB().toString()));
argumentsField.setText(prefs.get(SbtAdditionalArgsKey(), DefaultAdditionalArgs()));
}
void store() {
final Preferences prefs = Preferences.userNodeForPackage(SBTConsoleTopComponent.class);
prefs.put(SbtMaxHeapSizeKey(), maxHeapField.getText());
prefs.put(SbtInitialHeapSizeKey(), initialHeapField.getText());
prefs.put(SbtMaxPermGenSizeKey(), maxPermGenField.getText());
prefs.put(SbtAdditionalArgsKey(), argumentsField.getText());
}
boolean numericFieldValid(JTextField target) {
try {
Integer.parseInt(target.getText());
} catch (NumberFormatException nfe) {
return false;
}
return true;
}
boolean valid() {
return numericFieldValid(maxHeapField) && numericFieldValid(initialHeapField) &&
numericFieldValid(maxPermGenField);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField argumentsField;
private javax.swing.JTextField initialHeapField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JTextField maxHeapField;
private javax.swing.JTextField maxPermGenField;
// End of variables declaration//GEN-END:variables
}