boolean update_flag = true;
volume = float(textfield2.getText());
altitude = float(textfield3.getText());
temperature = float(textfield4.getText());
superheat = float(textfield5.getText());
lift = float(textfield1.getText());
float lift_gas_molar_mass = 0.004;
String lift_gas_name = "";
lift_gas_name = "Helium";
lift_gas_molar_mass = 0.004;
lift_gas_name = "Ballonium";
lift_gas_molar_mass = 0.0041;
lift_gas_name = "Hydrogen";
lift_gas_molar_mass = 0.002;
lift_gas_molar_mass = 0.028949;
lift_gas_name = "Methan";
lift_gas_molar_mass = 0.01604;
lift_gas_name = "Nitrogen";
lift_gas_molar_mass = 0.02802;
float air_molar_mass = 0.028949;
float gas_constant = 8.314;
float pressure = 101.35 * exp(-altitude/7990);
float air_mol_volume = (1 * gas_constant * (temperature+273.15)) / pressure;
float air_density = air_molar_mass / (air_mol_volume*0.001);
float lift_gas_temperature = temperature + superheat;
float lift_gas_mol_volume = (1 * gas_constant * (lift_gas_temperature+273.15)) / pressure;
float lift_gas_density = lift_gas_molar_mass / (lift_gas_mol_volume * 0.001);
if (checkbox7.isSelected()) {
volume = lift / (air_density - lift_gas_density);
textfield2.setText(str(floor(volume)));
lift = (air_density - lift_gas_density) * volume;
textfield1.setText(str(floor(lift)));
textarea1.setText("Pressure[hPa]=;" + nf(pressure*10, 1, 2) + "; Mol Air Volume[l]=;" + nf(air_mol_volume, 1, 2) + ";\nAir Density[kg/m³]=;" + nf(air_density, 1, 2) + ";Mol Gas Volume[l]=;" + nf(lift_gas_mol_volume, 1, 2) + ";\nGas Density[kg/m³]=;" + nf(lift_gas_density, 1, 3) + ";Gas=;"+lift_gas_name + ";\nGas Mol Mass[g/mol]=;"+nf(lift_gas_molar_mass*1000, 1, 2) + ";Lift[g]=;"+nf(lift, 1, 2) + ";\nVolume[l]=;" + nf(volume, 1, 2) + ";Altitude[m]=;" + str(round(altitude)) + ";\nTemperature[°C]=;"+nf(temperature,1,0)+";Superheat[°C]=;"+nf(superheat,1,0));
public void customGUI() {
label1.setFont(new Font("Arial", Font.PLAIN, 28));
label2.setFont(new Font("Arial", Font.PLAIN, 20));
label3.setFont(new Font("Arial", Font.PLAIN, 20));
label4.setFont(new Font("Arial", Font.PLAIN, 20));
label5.setFont(new Font("Arial", Font.PLAIN, 20));
label6.setFont(new Font("Arial", Font.PLAIN, 20));
textfield1.setFont(new Font("Arial", Font.PLAIN, 23));
textfield2.setFont(new Font("Arial", Font.PLAIN, 23));
textfield3.setFont(new Font("Arial", Font.PLAIN, 23));
textfield4.setFont(new Font("Arial", Font.PLAIN, 23));
textfield5.setFont(new Font("Arial", Font.PLAIN, 23));
public void textfield1_change1(GTextField source, GEvent event) {
public void textfield2_change1(GTextField source, GEvent event) {
public void custom_slider1_change1(GCustomSlider source, GEvent event) {
textfield2.setText(str(floor(custom_slider1.getValueF())));
public void textfield3_change1(GTextField source, GEvent event) {
public void custom_slider2_change1(GCustomSlider source, GEvent event) {
textfield3.setText(str(floor(custom_slider2.getValueF())));
public void textfield4_change1(GTextField source, GEvent event) {
public void custom_slider3_change1(GCustomSlider source, GEvent event) {
textfield4.setText(str(floor(custom_slider3.getValueF())));
public void textfield5_change1(GTextField source, GEvent event) {
public void custom_slider4_change1(GCustomSlider source, GEvent event) {
textfield5.setText(str(floor(custom_slider4.getValueF())));
public void checkbox1_clicked1(GCheckbox source, GEvent event) {
if (checkbox1.isSelected()) {
checkbox2.setSelected(false);
checkbox3.setSelected(false);
checkbox4.setSelected(false);
checkbox5.setSelected(false);
checkbox6.setSelected(false);
public void checkbox2_clicked1(GCheckbox source, GEvent event) {
if (checkbox2.isSelected()) {
checkbox1.setSelected(false);
checkbox3.setSelected(false);
checkbox4.setSelected(false);
checkbox5.setSelected(false);
checkbox6.setSelected(false);
public void checkbox3_clicked1(GCheckbox source, GEvent event) {
if (checkbox3.isSelected()) {
checkbox1.setSelected(false);
checkbox2.setSelected(false);
checkbox4.setSelected(false);
checkbox5.setSelected(false);
checkbox6.setSelected(false);
public void checkbox4_clicked1(GCheckbox source, GEvent event) {
if (checkbox4.isSelected()) {
checkbox1.setSelected(false);
checkbox2.setSelected(false);
checkbox3.setSelected(false);
checkbox5.setSelected(false);
checkbox6.setSelected(false);
public void checkbox5_clicked1(GCheckbox source, GEvent event) {
if (checkbox5.isSelected()) {
checkbox1.setSelected(false);
checkbox2.setSelected(false);
checkbox3.setSelected(false);
checkbox4.setSelected(false);
checkbox6.setSelected(false);
public void checkbox6_clicked1(GCheckbox source, GEvent event) {
if (checkbox6.isSelected()) {
checkbox1.setSelected(false);
checkbox2.setSelected(false);
checkbox3.setSelected(false);
checkbox4.setSelected(false);
checkbox5.setSelected(false);
public void textarea1_change1(GTextArea source, GEvent event) {
public void checkbox7_clicked1(GCheckbox source, GEvent event) {
G4P.messagesEnabled(false);
G4P.setGlobalColorScheme(GCScheme.BLUE_SCHEME);
frame.setTitle("Sketch Window");
textfield1 = new GTextField(this, 112, 16, 136, 32, G4P.SCROLLBARS_NONE);
textfield1.setText("102");
textfield1.setOpaque(true);
textfield1.addEventHandler(this, "textfield1_change1");
textfield2 = new GTextField(this, 184, 80, 128, 32, G4P.SCROLLBARS_NONE);
textfield2.setText("100");
textfield2.setOpaque(true);
textfield2.addEventHandler(this, "textfield2_change1");
label1 = new GLabel(this, 8, 16, 136, 32);
label1.setText("Lift [g] = ");
label1.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
label2 = new GLabel(this, 8, 80, 176, 32);
label2.setText("Volume [l]");
label2.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
custom_slider1 = new GCustomSlider(this, 8, 112, 304, 24, "blue18px");
custom_slider1.setLimits(100.0, 0.0, 2000.0);
custom_slider1.setNbrTicks(100);
custom_slider1.setNumberFormat(G4P.INTEGER, 0);
custom_slider1.setOpaque(false);
custom_slider1.addEventHandler(this, "custom_slider1_change1");
label3 = new GLabel(this, 8, 152, 176, 32);
label3.setText("Altitude [m]");
label3.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
textfield3 = new GTextField(this, 184, 152, 128, 32, G4P.SCROLLBARS_NONE);
textfield3.setOpaque(true);
textfield3.addEventHandler(this, "textfield3_change1");
custom_slider2 = new GCustomSlider(this, 8, 184, 304, 24, "blue18px");
custom_slider2.setLimits(0.0, 0.0, 2000.0);
custom_slider2.setNumberFormat(G4P.INTEGER, 0);
custom_slider2.setOpaque(false);
custom_slider2.addEventHandler(this, "custom_slider2_change1");
label4 = new GLabel(this, 8, 224, 176, 32);
label4.setText("Temperature [°C]");
label4.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
textfield4 = new GTextField(this, 184, 224, 128, 32, G4P.SCROLLBARS_NONE);
textfield4.setText("25");
textfield4.setOpaque(true);
textfield4.addEventHandler(this, "textfield4_change1");
custom_slider3 = new GCustomSlider(this, 8, 256, 304, 24, "blue18px");
custom_slider3.setLimits(25.0, -20.0, 50.0);
custom_slider3.setNumberFormat(G4P.INTEGER, 0);
custom_slider3.setOpaque(false);
custom_slider3.addEventHandler(this, "custom_slider3_change1");
textfield5 = new GTextField(this, 184, 296, 128, 32, G4P.SCROLLBARS_NONE);
textfield5.setOpaque(true);
textfield5.addEventHandler(this, "textfield5_change1");
label5 = new GLabel(this, 8, 296, 176, 32);
label5.setText("Superheat [°C]");
label5.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
custom_slider4 = new GCustomSlider(this, 8, 328, 304, 24, "blue18px");
custom_slider4.setLimits(0.0, -10.0, 200.0);
custom_slider4.setNbrTicks(200);
custom_slider4.setNumberFormat(G4P.INTEGER, 0);
custom_slider4.setOpaque(false);
custom_slider4.addEventHandler(this, "custom_slider4_change1");
checkbox1 = new GCheckbox(this, 24, 392, 80, 16);
checkbox1.setText("Helium He");
checkbox1.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox1.setOpaque(false);
checkbox1.addEventHandler(this, "checkbox1_clicked1");
checkbox1.setSelected(true);
checkbox2 = new GCheckbox(this, 24, 408, 80, 24);
checkbox2.setText("Ballonium");
checkbox2.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox2.setOpaque(false);
checkbox2.addEventHandler(this, "checkbox2_clicked1");
checkbox3 = new GCheckbox(this, 120, 392, 96, 16);
checkbox3.setText("Hydrogen H2");
checkbox3.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox3.setOpaque(false);
checkbox3.addEventHandler(this, "checkbox3_clicked1");
checkbox4 = new GCheckbox(this, 120, 408, 56, 24);
checkbox4.setText("Air");
checkbox4.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox4.setOpaque(false);
checkbox4.addEventHandler(this, "checkbox4_clicked1");
label6 = new GLabel(this, 8, 368, 160, 24);
label6.setText("Lifting gas");
label6.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox5 = new GCheckbox(this, 224, 392, 72, 16);
checkbox5.setText("Methan");
checkbox5.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox5.setOpaque(false);
checkbox5.addEventHandler(this, "checkbox5_clicked1");
checkbox6 = new GCheckbox(this, 224, 408, 96, 24);
checkbox6.setText("Nitrogen N2");
checkbox6.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox6.setOpaque(false);
checkbox6.addEventHandler(this, "checkbox6_clicked1");
textarea1 = new GTextArea(this, 8, 432, 304, 104, G4P.SCROLLBARS_NONE);
textarea1.setOpaque(true);
textarea1.addEventHandler(this, "textarea1_change1");
checkbox7 = new GCheckbox(this, 248, 16, 72, 32);
checkbox7.setText("fix vs. Volume");
checkbox7.setTextAlign(GAlign.LEFT, GAlign.MIDDLE);
checkbox7.setOpaque(false);
checkbox7.addEventHandler(this, "checkbox7_clicked1");
GCustomSlider custom_slider1;
GCustomSlider custom_slider2;
GCustomSlider custom_slider3;
GCustomSlider custom_slider4;