/*
* File : AuthorSettingsDlg.java
* Created : 20-jun-2002 13:23
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic;
import edu.xtec.jclic.bags.MediaBagEditor;
import edu.xtec.util.Messages;
import edu.xtec.util.StrUtils;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.08.29
*/
public class AuthorSettingsDlg extends edu.xtec.util.ExtendedJDialog {
AuthorSettings settings;
public boolean result;
java.awt.Component parent;
Messages msg;
/** Creates new form SettingsDlg */
public AuthorSettingsDlg(AuthorSettings settings, java.awt.Component parent) {
super(parent, "", true);
this.parent=parent;
this.settings=settings;
msg=settings.rb.getOptions().getMessages();
setTitle(msg.get("settings_title"));
result=false;
initComponents();
centerOver(parent);
}
/** 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() {
java.awt.GridBagConstraints gridBagConstraints;
javax.swing.ButtonGroup reportGroup = new javax.swing.ButtonGroup();
javax.swing.ButtonGroup mediaGroup = new javax.swing.ButtonGroup();
javax.swing.JTabbedPane mainPane = new javax.swing.JTabbedPane();
javax.swing.JPanel generalPane = new javax.swing.JPanel();
javax.swing.JLabel lookLb = new javax.swing.JLabel();
lookCombo = new javax.swing.JComboBox(edu.xtec.util.LFUtil.VALUES);
javax.swing.JLabel langLb = new javax.swing.JLabel();
langCombo = new javax.swing.JComboBox(Messages.getDescriptiveLanguageCodes(msg.getLocale()));
javax.swing.JLabel countryLb = new javax.swing.JLabel();
countryField = new javax.swing.JTextField();
javax.swing.JLabel variantLb = new javax.swing.JLabel();
variantField = new javax.swing.JTextField();
javax.swing.JLabel browserLb = new javax.swing.JLabel();
browserField = new javax.swing.JTextField();
imgSizePanel = new javax.swing.JPanel();
javax.swing.JLabel maxImgWidthLb = new javax.swing.JLabel();
maxImgWidthText = new javax.swing.JTextField();
javax.swing.JLabel maxImgHeightLb = new javax.swing.JLabel();
maxImgHeightText = new javax.swing.JTextField();
javax.swing.JPanel mediaPane = new javax.swing.JPanel();
javax.swing.JPanel mediaSystemPanel = new javax.swing.JPanel();
mDefaultBtn = new javax.swing.JRadioButton();
mJMFbtn = new javax.swing.JRadioButton();
mQTbtn = new javax.swing.JRadioButton();
javax.swing.JPanel htmlPane = new javax.swing.JPanel();
javax.swing.JLabel codebaseLb = new javax.swing.JLabel();
codebaseTxt = new javax.swing.JTextField();
javax.swing.JLabel colorLb = new javax.swing.JLabel();
colorButton = new edu.xtec.jclic.beans.ColorButton();
colorButton.setOptions(settings.rb.getOptions());
javax.swing.JLabel widthLb = new javax.swing.JLabel();
widthText = new javax.swing.JTextField();
javax.swing.JLabel heightLb = new javax.swing.JLabel();
heightText = new javax.swing.JTextField();
javax.swing.JLabel JScodebaseLb = new javax.swing.JLabel();
JScodebaseTxt = new javax.swing.JTextField();
javax.swing.JPanel btPanel = new javax.swing.JPanel();
javax.swing.JButton okButton = new javax.swing.JButton();
javax.swing.JButton cancelButton = new javax.swing.JButton();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
mainPane.setToolTipText(msg.get("settings_report_tooltip"));
mainPane.setPreferredSize(new java.awt.Dimension(500, 400));
generalPane.setToolTipText(msg.get("settings_general_tooltip"));
generalPane.setLayout(new java.awt.GridBagLayout());
lookLb.setLabelFor(lookCombo);
lookLb.setText(msg.get("settings_look"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(lookLb, gridBagConstraints);
lookCombo.setSelectedItem(settings.lookAndFeel);
lookCombo.setToolTipText(msg.get("settings_look_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(lookCombo, gridBagConstraints);
langLb.setLabelFor(langCombo);
langLb.setText(msg.get("settings_language"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(langLb, gridBagConstraints);
langCombo.setSelectedItem(Messages.getDescriptiveLanguageCode(settings.language));
langCombo.setToolTipText(msg.get("settings_language_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(langCombo, gridBagConstraints);
countryLb.setLabelFor(countryField);
countryLb.setText(msg.get("settings_country"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(countryLb, gridBagConstraints);
countryField.setText(settings.country);
countryField.setToolTipText(msg.get("settings_country_tooltip"));
countryField.setMinimumSize(new java.awt.Dimension(75, 21));
countryField.setPreferredSize(new java.awt.Dimension(200, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(countryField, gridBagConstraints);
variantLb.setLabelFor(variantField);
variantLb.setText(msg.get("settings_variant"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(variantLb, gridBagConstraints);
variantField.setText(settings.variant);
variantField.setToolTipText(msg.get("settings_variant_tooltip"));
variantField.setMinimumSize(new java.awt.Dimension(75, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(variantField, gridBagConstraints);
browserLb.setText(msg.get("settings_browser"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(browserLb, gridBagConstraints);
browserField.setText(settings.preferredBrowser);
browserField.setToolTipText(msg.get("settings_browser_tooltip"));
browserField.setMinimumSize(new java.awt.Dimension(75, 21));
browserField.setPreferredSize(new java.awt.Dimension(200, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(browserField, gridBagConstraints);
imgSizePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.get("img_max_size")));
imgSizePanel.setLayout(new java.awt.GridBagLayout());
maxImgWidthLb.setLabelFor(maxImgWidthText);
maxImgWidthLb.setText(msg.get("WIDTH"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
imgSizePanel.add(maxImgWidthLb, gridBagConstraints);
maxImgWidthText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
maxImgWidthText.setText(Integer.toString(settings.imgMaxWidth));
maxImgWidthText.setToolTipText(msg.get("img_max_width_tooltip"));
maxImgWidthText.setPreferredSize(new java.awt.Dimension(50, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
imgSizePanel.add(maxImgWidthText, gridBagConstraints);
maxImgHeightLb.setLabelFor(maxImgHeightText);
maxImgHeightLb.setText(msg.get("HEIGHT"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
imgSizePanel.add(maxImgHeightLb, gridBagConstraints);
maxImgHeightText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
maxImgHeightText.setText(Integer.toString(settings.imgMaxHeight));
maxImgHeightText.setToolTipText(msg.get("img_max_height_tooltip"));
maxImgHeightText.setPreferredSize(new java.awt.Dimension(50, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
imgSizePanel.add(maxImgHeightText, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
generalPane.add(imgSizePanel, gridBagConstraints);
mainPane.addTab(msg.get("settings_general"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/settings.gif")), generalPane, ""); // NOI18N
mediaPane.setToolTipText(msg.get("settings_media_tooltip"));
mediaPane.setLayout(new java.awt.GridBagLayout());
mediaSystemPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.get("settings_media_system")));
mediaSystemPanel.setLayout(new java.awt.GridBagLayout());
mediaGroup.add(mDefaultBtn);
mDefaultBtn.setSelected(edu.xtec.jclic.Constants.DEFAULT.equals(settings.mediaSystem));
mDefaultBtn.setText(msg.get("settings_media_default"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
mediaSystemPanel.add(mDefaultBtn, gridBagConstraints);
mediaGroup.add(mJMFbtn);
mJMFbtn.setSelected(edu.xtec.jclic.Constants.JMF.equals(settings.mediaSystem));
mJMFbtn.setText(msg.get("settings_media_jmf"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
mediaSystemPanel.add(mJMFbtn, gridBagConstraints);
mediaGroup.add(mQTbtn);
mQTbtn.setSelected(edu.xtec.jclic.Constants.QT.equals(settings.mediaSystem));
mQTbtn.setText(msg.get("settings_media_qt"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3);
mediaSystemPanel.add(mQTbtn, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mediaPane.add(mediaSystemPanel, gridBagConstraints);
mainPane.addTab(msg.get("settings_media"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/audio_on.gif")), mediaPane, ""); // NOI18N
htmlPane.setToolTipText(msg.get("settings_applet_tooltip"));
htmlPane.setLayout(new java.awt.GridBagLayout());
codebaseLb.setLabelFor(codebaseTxt);
codebaseLb.setText(msg.get("applet_codebase"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(codebaseLb, gridBagConstraints);
codebaseTxt.setText(settings.appletCodeBase);
codebaseTxt.setToolTipText(msg.get("applet_codebase_tooltip"));
codebaseTxt.setPreferredSize(new java.awt.Dimension(300, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(codebaseTxt, gridBagConstraints);
colorLb.setLabelFor(colorButton);
colorLb.setText(msg.get("applet_bgcolor"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(colorLb, gridBagConstraints);
colorButton.setToolTipText(msg.get("applet_bgcolor_tooltip"));
colorButton.setColor(settings.appletBgColor);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(colorButton, gridBagConstraints);
widthLb.setLabelFor(widthText);
widthLb.setText(msg.get("WIDTH"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(widthLb, gridBagConstraints);
widthText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
widthText.setText(settings.appletWidth);
widthText.setToolTipText(msg.get("applet_width_tooltip"));
widthText.setPreferredSize(new java.awt.Dimension(50, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(widthText, gridBagConstraints);
heightLb.setLabelFor(heightText);
heightLb.setText(msg.get("HEIGHT"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(heightLb, gridBagConstraints);
heightText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
heightText.setText(settings.appletHeight);
heightText.setToolTipText(msg.get("applet_height_tooltip"));
heightText.setPreferredSize(new java.awt.Dimension(50, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
htmlPane.add(heightText, gridBagConstraints);
JScodebaseLb.setLabelFor(JScodebaseTxt);
JScodebaseLb.setText(msg.get("js_codebase"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(20, 2, 2, 2);
htmlPane.add(JScodebaseLb, gridBagConstraints);
JScodebaseTxt.setText(settings.jsCodeBase);
JScodebaseTxt.setToolTipText(msg.get("js_codebase_tooltip"));
JScodebaseTxt.setPreferredSize(new java.awt.Dimension(300, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(20, 2, 2, 2);
htmlPane.add(JScodebaseTxt, gridBagConstraints);
mainPane.addTab(msg.get("settings_html"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/html_doc.gif")), htmlPane); // NOI18N
getContentPane().add(mainPane, java.awt.BorderLayout.CENTER);
okButton.setText(msg.get("OK"));
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
btPanel.add(okButton);
cancelButton.setText(msg.get("CANCEL"));
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
btPanel.add(cancelButton);
getContentPane().add(btPanel, java.awt.BorderLayout.SOUTH);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
result=false;
closeDialog(null);
}//GEN-LAST:event_cancelButtonActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
if(accept()){
result=true;
closeDialog(null);
}
// Add your handling code here:
}//GEN-LAST:event_okButtonActionPerformed
public boolean accept(){
String p1=null;
settings.lookAndFeel=(String)lookCombo.getSelectedItem();
settings.preferredBrowser=browserField.getText();
settings.language=Messages.getLanguageFromDescriptive((String)langCombo.getSelectedItem());
settings.country=StrUtils.nullableString(countryField.getText());
settings.variant=StrUtils.nullableString(variantField.getText());
if(mJMFbtn.isSelected())
settings.mediaSystem=edu.xtec.jclic.Constants.JMF;
else if(mQTbtn.isSelected())
settings.mediaSystem=edu.xtec.jclic.Constants.QT;
else
settings.mediaSystem=edu.xtec.jclic.Constants.DEFAULT;
settings.appletCodeBase=StrUtils.secureString(codebaseTxt.getText(), AuthorSettings.DEFAULT_APPLET_CODEBASE);
settings.appletWidth=StrUtils.secureString(widthText.getText(), AuthorSettings.DEFAULT_APPLET_WIDTH);
settings.appletHeight=StrUtils.secureString(heightText.getText(), AuthorSettings.DEFAULT_APPLET_HEIGHT);
settings.appletBgColor=colorButton.getColor();
settings.jsCodeBase=StrUtils.secureString(JScodebaseTxt.getText(), AuthorSettings.DEFAULT_JS_CODEBASE);
settings.imgMaxWidth=Integer.parseInt(StrUtils.secureString(maxImgWidthText.getText(), Integer.toString(MediaBagEditor.DEFAULT_IMG_MAX_WIDTH)));
settings.imgMaxHeight=Integer.parseInt(StrUtils.secureString(maxImgHeightText.getText(), Integer.toString(MediaBagEditor.DEFAULT_IMG_MAX_HEIGHT)));
return true;
}
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
setVisible(false);
dispose();
}//GEN-LAST:event_closeDialog
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField JScodebaseTxt;
private javax.swing.JTextField browserField;
private javax.swing.JTextField codebaseTxt;
private edu.xtec.jclic.beans.ColorButton colorButton;
private javax.swing.JTextField countryField;
private javax.swing.JTextField heightText;
private javax.swing.JPanel imgSizePanel;
private javax.swing.JComboBox langCombo;
private javax.swing.JComboBox lookCombo;
private javax.swing.JRadioButton mDefaultBtn;
private javax.swing.JRadioButton mJMFbtn;
private javax.swing.JRadioButton mQTbtn;
private javax.swing.JTextField maxImgHeightText;
private javax.swing.JTextField maxImgWidthText;
private javax.swing.JTextField variantField;
private javax.swing.JTextField widthText;
// End of variables declaration//GEN-END:variables
}