/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.nbstudio.project;
import com.intersys.objects.CacheException;
import com.intersys.objects.CacheQuery;
import com.intersys.objects.Database;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;
import org.openide.WizardDescriptor;
import org.openide.WizardValidationException;
import org.openide.util.Exceptions;
public final class CacheProjectVisualPanel2 extends JPanel implements DocumentListener {
private final CacheProjectWizardPanel2 panel;
private WizardDescriptor wizard;
/**
* Creates new form CacheProjectVisualPanel2
*/
public CacheProjectVisualPanel2(final CacheProjectWizardPanel2 panel) {
initComponents();
this.panel = panel;
((JTextComponent) namespaceComboBox.getEditor().getEditorComponent()).getDocument().addDocumentListener(this);
namespaceComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateProjects();
}
});
}
/**
* 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() {
namespaceComboBox = new javax.swing.JComboBox();
namespaceLabel = new javax.swing.JLabel();
projectComboBox = new javax.swing.JComboBox();
projectLabel = new javax.swing.JLabel();
codepageComboBox = new javax.swing.JComboBox();
codepageLabel = new javax.swing.JLabel();
namespaceLabel.setLabelFor(namespaceComboBox);
org.openide.awt.Mnemonics.setLocalizedText(namespaceLabel, org.openide.util.NbBundle.getMessage(CacheProjectVisualPanel2.class, "CacheProjectVisualPanel2.namespaceLabel.text")); // NOI18N
projectComboBox.setEditable(true);
projectLabel.setLabelFor(projectComboBox);
org.openide.awt.Mnemonics.setLocalizedText(projectLabel, org.openide.util.NbBundle.getMessage(CacheProjectVisualPanel2.class, "CacheProjectVisualPanel2.projectLabel.text")); // NOI18N
codepageComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UTF-8" }));
codepageComboBox.setEnabled(false);
codepageLabel.setLabelFor(codepageComboBox);
org.openide.awt.Mnemonics.setLocalizedText(codepageLabel, org.openide.util.NbBundle.getMessage(CacheProjectVisualPanel2.class, "CacheProjectVisualPanel2.codepageLabel.text")); // NOI18N
codepageLabel.setToolTipText(org.openide.util.NbBundle.getMessage(CacheProjectVisualPanel2.class, "CacheProjectVisualPanel2.codepageLabel.toolTipText")); // NOI18N
codepageLabel.setEnabled(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(namespaceLabel)
.addComponent(projectLabel)
.addComponent(codepageLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(projectComboBox, 0, 278, Short.MAX_VALUE)
.addComponent(namespaceComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(codepageComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(namespaceComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(namespaceLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(projectComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(projectLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(codepageComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(codepageLabel))
.addContainerGap(195, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox codepageComboBox;
private javax.swing.JLabel codepageLabel;
private javax.swing.JComboBox namespaceComboBox;
private javax.swing.JLabel namespaceLabel;
private javax.swing.JComboBox projectComboBox;
private javax.swing.JLabel projectLabel;
// End of variables declaration//GEN-END:variables
boolean valid(WizardDescriptor wizardDescriptor) {
return true;
}
void store(WizardDescriptor d) {
String nsp = (String) namespaceComboBox.getSelectedItem();
d.putProperty("namespace", nsp);
String projectName = (String) projectComboBox.getSelectedItem();
d.putProperty("cacheProjectName", projectName);
}
void read(WizardDescriptor settings) {
wizard = settings;
List<String> nspList = (List<String>) settings.getProperty("WizardPanel_NSPList");
namespaceComboBox.removeAllItems();
for (String nsp : nspList) {
namespaceComboBox.addItem(nsp);
}
String nsp = (String) settings.getProperty("namespace");
if (nsp != null) {
namespaceComboBox.setSelectedItem(nsp);
}
String projectName = (String) settings.getProperty("cacheProjectName");
projectComboBox.setSelectedItem(projectName);
}
void updateProjects() {
String nsp = (String) namespaceComboBox.getSelectedItem();
if (nsp == null) {
return;
}
Database conn = null;
try {
conn = CacheProjectWizardIterator.getConnection(wizard, nsp);
projectComboBox.removeAllItems();
projectComboBox.addItem(null);
CacheQuery query = new CacheQuery(conn, "%Studio.Project", "ProjectList");
ResultSet rs = query.execute();
while (rs.next()) {
String projectName = rs.getString("Name");
projectComboBox.addItem(projectName);
}
} catch (CacheException | SQLException ex) {
Exceptions.printStackTrace(ex);
} finally {
if (conn != null && conn.isOpen()) {
try {
conn.close();
} catch (CacheException ex) {
}
}
}
}
@Override
public void insertUpdate(DocumentEvent e
) {
panel.fireChangeEvent();
}
@Override
public void removeUpdate(DocumentEvent e
) {
panel.fireChangeEvent();
}
@Override
public void changedUpdate(DocumentEvent e
) {
panel.fireChangeEvent();
}
void validate(WizardDescriptor d) throws WizardValidationException {
// nothing to validate
}
}