package mediaverwaltung;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class HoerbuchmedienView extends JPanel {
public HoerbuchmedienView() {
initComponents();
TableSelectionListener listener = new TableSelectionListener();
masterTable.getSelectionModel().addListSelectionListener(listener);
entityManager.getTransaction().begin();
}
/** 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.
*/
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
entityManager = javax.persistence.Persistence.createEntityManagerFactory("medienverwaltungPU").createEntityManager();
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(mediaverwaltung.MediaverwaltungApp.class).getContext().getResourceMap(HoerbuchmedienView.class);
query = entityManager.createQuery(resourceMap.getString("query.query")); // NOI18N
list = org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
hoerbuchmedienQuery = entityManager.createQuery("SELECT h FROM Hoerbuchmedien h");
hoerbuchmedienList = hoerbuchmedienQuery.getResultList();
medientypenQuery = entityManager.createQuery("SELECT m FROM Medientypen m");
medientypenList = medientypenQuery.getResultList();
masterScrollPane = new javax.swing.JScrollPane();
masterTable = new javax.swing.JTable();
titelLabel = new javax.swing.JLabel();
jahrLabel = new javax.swing.JLabel();
medientypLabel = new javax.swing.JLabel();
tonformatLabel = new javax.swing.JLabel();
firmaLabel = new javax.swing.JLabel();
anzahlLabel = new javax.swing.JLabel();
preisLabel = new javax.swing.JLabel();
beschreibungLabel = new javax.swing.JLabel();
titelField = new javax.swing.JTextField();
jahrField = new javax.swing.JTextField();
tonformatField = new javax.swing.JTextField();
firmaField = new javax.swing.JTextField();
anzahlField = new javax.swing.JTextField();
preisField = new javax.swing.JTextField();
beschreibungField = new javax.swing.JTextField();
saveButton = new javax.swing.JButton();
refreshButton = new javax.swing.JButton();
newButton = new javax.swing.JButton();
deleteButton = new javax.swing.JButton();
medientypField = new javax.swing.JTextField();
/*
List medientypen = entityManager.createNativeQuery("select fname from Medientypen").getResultList();
for(int i=0; i < medientypen.size(); i++)
{
medientypen.get(i).toString().replace("[", "");
medientypField.addItem(medientypen.get(i));
}*/
FormListener formListener = new FormListener();
setName("Form"); // NOI18N
masterScrollPane.setName("masterScrollPane"); // NOI18N
masterTable.setName("masterTable"); // NOI18N
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, hoerbuchmedienList, masterTable);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${titel}"));
columnBinding.setColumnName("Titel");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${jahr}"));
columnBinding.setColumnName("Jahr");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${medientyp}"));
columnBinding.setColumnName("Medientyp");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${tonformat}"));
columnBinding.setColumnName("Tonformat");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${firma}"));
columnBinding.setColumnName("Firma");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${anzahl}"));
columnBinding.setColumnName("Anzahl");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${preis}"));
columnBinding.setColumnName("Preis");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${beschreibung}"));
columnBinding.setColumnName("Beschreibung");
columnBinding.setColumnClass(String.class);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
masterScrollPane.setViewportView(masterTable);
titelLabel.setText(resourceMap.getString("titelLabel.text")); // NOI18N
titelLabel.setName("titelLabel"); // NOI18N
jahrLabel.setText(resourceMap.getString("jahrLabel.text")); // NOI18N
jahrLabel.setName("jahrLabel"); // NOI18N
medientypLabel.setText(resourceMap.getString("medientypLabel.text")); // NOI18N
medientypLabel.setName("medientypLabel"); // NOI18N
tonformatLabel.setText(resourceMap.getString("tonformatLabel.text")); // NOI18N
tonformatLabel.setName("tonformatLabel"); // NOI18N
firmaLabel.setText(resourceMap.getString("firmaLabel.text")); // NOI18N
firmaLabel.setName("firmaLabel"); // NOI18N
anzahlLabel.setText(resourceMap.getString("anzahlLabel.text")); // NOI18N
anzahlLabel.setName("anzahlLabel"); // NOI18N
preisLabel.setText(resourceMap.getString("preisLabel.text")); // NOI18N
preisLabel.setName("preisLabel"); // NOI18N
beschreibungLabel.setText(resourceMap.getString("beschreibungLabel.text")); // NOI18N
beschreibungLabel.setName("beschreibungLabel"); // NOI18N
titelField.setName("titelField"); // NOI18N
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.titel}"), titelField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), titelField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
jahrField.setName("jahrField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.jahr}"), jahrField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), jahrField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
tonformatField.setName("tonformatField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.tonformat}"), tonformatField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), tonformatField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
firmaField.setName("firmaField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.firma}"), firmaField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), firmaField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
anzahlField.setName("anzahlField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.anzahl}"), anzahlField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), anzahlField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
preisField.setName("preisField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.preis}"), preisField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), preisField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
beschreibungField.setName("beschreibungField"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.beschreibung}"), beschreibungField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), beschreibungField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
saveButton.setText(resourceMap.getString("saveButton.text")); // NOI18N
saveButton.setName("saveButton"); // NOI18N
saveButton.addActionListener(formListener);
refreshButton.setText(resourceMap.getString("refreshButton.text")); // NOI18N
refreshButton.setName("refreshButton"); // NOI18N
refreshButton.addActionListener(formListener);
newButton.setText(resourceMap.getString("newButton.text")); // NOI18N
newButton.setName("newButton"); // NOI18N
newButton.addActionListener(formListener);
deleteButton.setText(resourceMap.getString("deleteButton.text")); // NOI18N
deleteButton.setEnabled(false);
deleteButton.setName("deleteButton"); // NOI18N
deleteButton.addActionListener(formListener);
medientypField.setName("medientypField"); // 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()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(newButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(deleteButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(refreshButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(saveButton))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(titelLabel)
.addComponent(jahrLabel)
.addComponent(medientypLabel)
.addComponent(tonformatLabel)
.addComponent(firmaLabel)
.addComponent(anzahlLabel)
.addComponent(preisLabel)
.addComponent(beschreibungLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(titelField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(jahrField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(tonformatField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(firmaField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(anzahlField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(preisField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(beschreibungField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.addComponent(medientypField, javax.swing.GroupLayout.Alignment.TRAILING, 0, 315, Short.MAX_VALUE)))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 387, Short.MAX_VALUE)))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(titelLabel)
.addComponent(titelField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jahrLabel)
.addComponent(jahrField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(medientypLabel)
.addComponent(medientypField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tonformatLabel)
.addComponent(tonformatField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(firmaLabel)
.addComponent(firmaField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(anzahlLabel)
.addComponent(anzahlField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(preisLabel)
.addComponent(preisField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(beschreibungLabel)
.addComponent(beschreibungField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(saveButton)
.addComponent(refreshButton)
.addComponent(deleteButton)
.addComponent(newButton))
.addContainerGap())
);
bindingGroup.bind();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == saveButton) {
HoerbuchmedienView.this.saveButtonActionPerformed(evt);
}
else if (evt.getSource() == refreshButton) {
HoerbuchmedienView.this.refreshButtonActionPerformed(evt);
}
else if (evt.getSource() == newButton) {
HoerbuchmedienView.this.newButtonActionPerformed(evt);
}
else if (evt.getSource() == deleteButton) {
HoerbuchmedienView.this.deleteButtonActionPerformed(evt);
}
}
}// </editor-fold>
private class TableSelectionListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
if (e.getSource() == masterTable.getSelectionModel()) {
boolean enabled = (masterTable.getSelectedRow() != -1);
deleteButton.setEnabled(enabled);
}
}
}
private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {
entityManager.getTransaction().rollback();
entityManager.getTransaction().begin();
list.clear();
list.addAll(query.getResultList());
}
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(JOptionPane.showConfirmDialog(null, "Datensatz wirklich löschen?", "Datensatz löschen?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
int[] selected = masterTable.getSelectedRows();
List<mediaverwaltung.Hoerbuchmedien> toRemove = new ArrayList<mediaverwaltung.Hoerbuchmedien>(selected.length);
for (int idx=0; idx<selected.length; idx++) {
mediaverwaltung.Hoerbuchmedien h = list.get(masterTable.convertRowIndexToModel(selected[idx]));
toRemove.add(h);
entityManager.remove(h);
}
list.removeAll(toRemove);
}
}
private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {
mediaverwaltung.Hoerbuchmedien h = new mediaverwaltung.Hoerbuchmedien();
entityManager.persist(h);
list.add(h);
int row = list.size()-1;
masterTable.setRowSelectionInterval(row, row);
masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
}
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(!titelField.getText().equals(""))
{
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
refreshButtonActionPerformed(null);
}
else
{
JOptionPane.showMessageDialog(null, "Titel darf nicht leer sein!" );
}
}
// Variables declaration - do not modify
private javax.swing.JTextField anzahlField;
private javax.swing.JLabel anzahlLabel;
private javax.swing.JTextField beschreibungField;
private javax.swing.JLabel beschreibungLabel;
private javax.swing.JButton deleteButton;
private javax.persistence.EntityManager entityManager;
private javax.swing.JTextField firmaField;
private javax.swing.JLabel firmaLabel;
private java.util.List<mediaverwaltung.Hoerbuchmedien> hoerbuchmedienList;
private javax.persistence.Query hoerbuchmedienQuery;
private javax.swing.JTextField jahrField;
private javax.swing.JLabel jahrLabel;
private java.util.List<mediaverwaltung.Hoerbuchmedien> list;
private javax.swing.JScrollPane masterScrollPane;
private javax.swing.JTable masterTable;
private javax.swing.JTextField medientypField;
private javax.swing.JLabel medientypLabel;
private java.util.List<mediaverwaltung.Medientypen> medientypenList;
private javax.persistence.Query medientypenQuery;
private javax.swing.JButton newButton;
private javax.swing.JTextField preisField;
private javax.swing.JLabel preisLabel;
private javax.persistence.Query query;
private javax.swing.JButton refreshButton;
private javax.swing.JButton saveButton;
private javax.swing.JTextField titelField;
private javax.swing.JLabel titelLabel;
private javax.swing.JTextField tonformatField;
private javax.swing.JLabel tonformatLabel;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
public static void open() {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setContentPane(new HoerbuchmedienView());
frame.setDefaultCloseOperation(frame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setTitle("Hörbücher");
frame.setVisible(true);
}
});
}
}