/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* SnippetDialog.java
*
* Created on 26 févr. 2011, 21:33:48
*/
package feuille.karaoke.dialog;
import java.awt.Frame;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import feuille.karaoke.renderer.snippetTableRenderer;
import feuille.lib.Language;
import feuille.lib.Language.ISO_3166;
import feuille.scripting.ScriptPlugin;
import feuille.scripting.Snippet;
import feuille.scripting.SnippetElement;
import feuille.scripting.XmlSnippetHandler;
import feuille.scripting.XmlSnippetWriter;
/**
* <p>This is a dialog for the choice of snippet.<br />
* C'est une boîte de dialogue pour le choix de snippet.</p>
* @author The Wingate 2940
*/
public class SnippetDialog extends javax.swing.JDialog {
private ButtonPressed bp;
DefaultTableModel dtm;
DefaultComboBoxModel dcbmTranslate;
List<Snippet> listSnippet = new ArrayList<Snippet>();
private Language localeLanguage = feuille.MainFrame.getLanguage();
private Frame frame;
private String message1="Do you really want to do this ?", message2="Select a choice";
/** <p>Creates new form SnippetDialog.<br />
* Crée un nouveau formulaire SnippetDialog.</p> */
public SnippetDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
init();
frame = parent;
dcbmTranslate.setSelectedItem(Language.getDefaultISO_3166());
if(localeLanguage.getValueOf("titleSD")!=null){setTitle(localeLanguage.getValueOf("titleSD"));}
if(localeLanguage.getValueOf("buttonOk")!=null){OK_Button.setText(localeLanguage.getValueOf("buttonOk"));}
if(localeLanguage.getValueOf("buttonCancel")!=null){Cancel_Button.setText(localeLanguage.getValueOf("buttonCancel"));}
if(localeLanguage.getValueOf("labelSnippet")!=null){jLabel1.setText(localeLanguage.getValueOf("labelSnippet"));}
if(localeLanguage.getValueOf("buttonUpdate")!=null){btnUpdate.setText(localeLanguage.getValueOf("buttonUpdate"));}
if(localeLanguage.getValueOf("buttonCreate")!=null){btnCreate.setText(localeLanguage.getValueOf("buttonCreate"));}
if(localeLanguage.getValueOf("buttonDelete")!=null){btnDelete.setText(localeLanguage.getValueOf("buttonDelete"));}
if(localeLanguage.getValueOf("buttonModify")!=null){btnModify.setText(localeLanguage.getValueOf("buttonModify"));}
if(localeLanguage.getValueOf("checkboxSave")!=null){cbSave.setText(localeLanguage.getValueOf("checkboxSave"));}
if(localeLanguage.getValueOf("textboxName")!=null){tfName.setText(localeLanguage.getValueOf("textboxName"));}
if(localeLanguage.getValueOf("textboxAuthor")!=null){tfAuthor.setText(localeLanguage.getValueOf("textboxAuthor"));}
if(localeLanguage.getValueOf("textboxDesc")!=null){tfDesc.setText(localeLanguage.getValueOf("textboxDesc"));}
if(localeLanguage.getValueOf("optpSDConfirmRequest")!=null){message1 = localeLanguage.getValueOf("optpSDConfirmRequest");}
if(localeLanguage.getValueOf("optpSDConfirmChoice")!=null){message2 = localeLanguage.getValueOf("optpSDConfirmChoice");}
TableColumn column;
for (int i = 0; i < 5; i++) {
column = jTable1.getColumnModel().getColumn(i);
switch(i){
case 0:
if(localeLanguage.getValueOf("tableSDType")!=null){
column.setHeaderValue(localeLanguage.getValueOf("tableSDType"));
}
break;
case 1:
if(localeLanguage.getValueOf("tableSDName")!=null){
column.setHeaderValue(localeLanguage.getValueOf("tableSDName"));
}
break;
case 2:
if(localeLanguage.getValueOf("tableSDDescription")!=null){
column.setHeaderValue(localeLanguage.getValueOf("tableSDDescription"));
}
break;
case 3:
if(localeLanguage.getValueOf("tableSDAuthor")!=null){
column.setHeaderValue(localeLanguage.getValueOf("tableSDAuthor"));
}
break;
case 4:
if(localeLanguage.getValueOf("tableSDSnippet")!=null){
column.setHeaderValue(localeLanguage.getValueOf("tableSDSnippet"));
}
break;
}
}
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
bgCode = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
Cancel_Button = new javax.swing.JButton();
OK_Button = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
btnUpdate = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
epSnippet = new javax.swing.JEditorPane();
tbRuby = new javax.swing.JToggleButton();
tbPython = new javax.swing.JToggleButton();
btnCreate = new javax.swing.JButton();
btnDelete = new javax.swing.JButton();
btnModify = new javax.swing.JButton();
cbTranslate = new javax.swing.JComboBox();
tfName = new javax.swing.JTextField();
tfDesc = new javax.swing.JTextField();
tfAuthor = new javax.swing.JTextField();
cbSave = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jLabel1.setText("<html><h2>Choose a snippet in the list below :");
Cancel_Button.setText("Cancel");
Cancel_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Cancel_ButtonActionPerformed(evt);
}
});
OK_Button.setText("OK");
OK_Button.setEnabled(false);
OK_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OK_ButtonActionPerformed(evt);
}
});
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable1);
btnUpdate.setText("Update");
btnUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpdateActionPerformed(evt);
}
});
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane2.setViewportView(epSnippet);
bgCode.add(tbRuby);
tbRuby.setSelected(true);
tbRuby.setText("Ruby");
tbRuby.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbRubyActionPerformed(evt);
}
});
bgCode.add(tbPython);
tbPython.setText("Python");
tbPython.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbPythonActionPerformed(evt);
}
});
btnCreate.setText("Create");
btnCreate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCreateActionPerformed(evt);
}
});
btnDelete.setText("Delete");
btnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDeleteActionPerformed(evt);
}
});
btnModify.setText("Modify");
btnModify.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnModifyActionPerformed(evt);
}
});
cbTranslate.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
tfName.setText("Name");
tfName.setToolTipText("Insert a name");
tfDesc.setText("Description");
tfDesc.setToolTipText("Insert a description");
tfAuthor.setText("Author");
tfAuthor.setToolTipText("Insert an author");
cbSave.setText("Save");
cbSave.setToolTipText("Save snippet list");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane2)
.addComponent(jScrollPane1)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnUpdate, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)
.addComponent(tfName))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnCreate, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)
.addComponent(tfAuthor))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(btnModify, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDelete, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(tfDesc, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tbRuby, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tbPython, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cbSave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(OK_Button, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Cancel_Button, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(cbTranslate, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 319, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cbTranslate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tfName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tfDesc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tfAuthor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Cancel_Button)
.addComponent(OK_Button)
.addComponent(btnUpdate)
.addComponent(btnCreate)
.addComponent(btnDelete)
.addComponent(tbRuby)
.addComponent(tbPython)
.addComponent(btnModify)
.addComponent(cbSave))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void OK_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OK_ButtonActionPerformed
bp = ButtonPressed.OK_BUTTON;
if(cbSave.isSelected()){
saveSnippets(null);
}
dispose();
}//GEN-LAST:event_OK_ButtonActionPerformed
private void Cancel_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Cancel_ButtonActionPerformed
bp = ButtonPressed.CANCEL_BUTTON;
if(cbSave.isSelected()){
saveSnippets(null);
}
dispose();
}//GEN-LAST:event_Cancel_ButtonActionPerformed
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUpdateActionPerformed
loadSnippets(true);
}//GEN-LAST:event_btnUpdateActionPerformed
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
OK_Button.setEnabled(true);
if(jTable1.getSelectedRow()!=-1){
Snippet sni = getSnippet();
SnippetElement se = getSnippetElement();
tfName.setText(sni.getTitle());
tfAuthor.setText(se.getAuthor());
tfDesc.setText(se.getDescription());
epSnippet.setText(se.getCode());
dcbmTranslate.setSelectedItem(se.getLanguage());
if(sni.getType().equalsIgnoreCase("Ruby")){
tbRuby.setSelected(true);
}else{//Python
tbPython.setSelected(true);
}
}
}//GEN-LAST:event_jTable1MouseClicked
private void tbRubyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbRubyActionPerformed
// Select Ruby scripting
epSnippet.setContentType("text/ruby");
}//GEN-LAST:event_tbRubyActionPerformed
private void tbPythonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbPythonActionPerformed
// Select Python scripting
epSnippet.setContentType("text/python");
}//GEN-LAST:event_tbPythonActionPerformed
private void btnCreateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCreateActionPerformed
// Create snippet
boolean isNew = false;
Snippet sni = getSnippetFromCurrentName();
if(sni==null){
sni = new Snippet();
isNew = true;
}
sni.setTitle(tfName.getText());
sni.setType(tbRuby.isSelected()==true ? "Ruby" : "Python");
SnippetElement se = new SnippetElement();
se.setAuthor(tfAuthor.getText());
se.setCode(epSnippet.getText());
se.setDescription(tfDesc.getText());
se.setLanguage((ISO_3166)dcbmTranslate.getSelectedItem());
sni.addSnippetElement(se);
if(isNew==true){
listSnippet.add(sni);
}
refreshSnippets(true);
}//GEN-LAST:event_btnCreateActionPerformed
private void btnModifyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModifyActionPerformed
// Modify snippet
if(jTable1.getSelectedRow()!=-1){
int n = JOptionPane.showConfirmDialog(frame, message1, message2,JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION){
Snippet sni = getSnippet();
sni.setTitle(tfName.getText());
sni.setType(tbRuby.isSelected()==true ? "Ruby" : "Python");
SnippetElement se = getSnippetElement();
se.setAuthor(tfAuthor.getText());
se.setCode(epSnippet.getText());
se.setDescription(tfDesc.getText());
se.setLanguage((ISO_3166)dcbmTranslate.getSelectedItem());
refreshSnippets(true);
}
}
}//GEN-LAST:event_btnModifyActionPerformed
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteActionPerformed
// Delete snippet
if(jTable1.getSelectedRow()!=-1){
int n = JOptionPane.showConfirmDialog(frame, message1, message2,JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION){
Snippet sni = getSnippet();
SnippetElement se = getSnippetElement();
sni.deleteSnippetElement(se);
if(sni.getSnippetElements().isEmpty()){
listSnippet.remove(sni);
}
refreshSnippets(true);
}
}
}//GEN-LAST:event_btnDeleteActionPerformed
public enum ButtonPressed{
NONE, OK_BUTTON, CANCEL_BUTTON;
}
/** <p>Initialize the form.<br />Initialise le formulaire.</p> */
private void init(){
String[] head = new String[]{"Type", "Name", "Description", "Author", "Snippet"};
dtm = new DefaultTableModel(
null,
head
){
Class[] types = new Class [] {
java.lang.Object.class, java.lang.Object.class, java.lang.Object.class,
java.lang.Object.class, java.lang.Object.class};
boolean[] canEdit = new boolean [] {false, false, false, false, false};
@Override
public Class getColumnClass(int columnIndex) {return types [columnIndex];}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {return canEdit [columnIndex];}
};
jTable1.setModel(dtm);
TableColumn column;
for (int i = 0; i < 5; i++) {
column = jTable1.getColumnModel().getColumn(i);
switch(i){
case 0:
column.setPreferredWidth(20);
break; //Type
case 1:
column.setPreferredWidth(200);
break; //Name
case 2:
column.setPreferredWidth(1000);
break; //Description
case 3:
column.setPreferredWidth(200);
break; //Author
case 4:
column.setPreferredWidth(0);//1000
break; //Snippet
}
}
jTable1.setDefaultRenderer(Object.class, new snippetTableRenderer());
dcbmTranslate = new DefaultComboBoxModel();
cbTranslate.setModel(dcbmTranslate);
for(ISO_3166 lg : ISO_3166.values()){
dcbmTranslate.addElement(lg);
}
// Setting up the scripting object to work with
// the opensource project JSyntaxPane - see web site :
// http://code.google.com/p/jsyntaxpane/
jsyntaxpane.DefaultSyntaxKit.initKit();
epSnippet.setContentType("text/ruby");
}
/** <p>Get a snippet.<br />Obtient un snippet.</p> */
public Snippet getSnippet(){
return (Snippet)jTable1.getValueAt(jTable1.getSelectedRow(), 1);
}
public Snippet getSnippetFromCurrentName(){
for (Snippet sni : listSnippet){
if(sni.getTitle().equalsIgnoreCase(tfName.getText())){
return sni;
}
}
return null;
}
public SnippetElement getSnippetElement(){
return (SnippetElement)jTable1.getValueAt(jTable1.getSelectedRow(), 4);
}
private void refreshSnippets(boolean clear){
if (clear == true){
try{
for (int i=dtm.getRowCount()-1;i>=0;i--){
dtm.removeRow(i);
}
}catch(Exception exc){}
}
for(Snippet sni : listSnippet){
URL urlRuby = getClass().getResource("AFM-mRubyScript.png");
URL urlPython = getClass().getResource("AFM-mPythonScript.png");
for(SnippetElement se : sni.getSnippetElements()){
Object[] data = new Object[5];
if(sni.getType().equalsIgnoreCase("Ruby")){
data[0] = urlRuby; //Object
}else{//Python
data[0] = urlPython; //Object
}
data[1] = sni; //String
data[2] = se.getDescription(); //String
data[3] = se.getAuthor(); //String
data[4] = se; //Object
dtm.addRow(data);
}
}
}
/** <p>Get a list of snippet and return :<br />if OK - a snippet<br />
* if Cancel - a null value<br />Obtient une liste de snippet et retourne :<br />
* si OK - un snippet<br />si Annuler - une valeur null.</p> */
public String showDialog(){
loadSnippets(false);
setVisible(true);
if(bp.equals(ButtonPressed.OK_BUTTON)){
return epSnippet.getText();
}else{
return null;
}
}
public void saveSnippets(String path){
if(path==null){
path = ScriptPlugin.getScriptsPath()+"default.sni";
}
XmlSnippetWriter xsw = new XmlSnippetWriter();
xsw.setSnippets(listSnippet);
xsw.createSnippets(path);
}
public void loadSnippets(boolean refresh){
listSnippet.clear();
java.io.File sniFile = new java.io.File(ScriptPlugin.getScriptsPath());
for(java.io.File sFile : sniFile.listFiles()){
if(sFile.getAbsolutePath().endsWith(".sni")){
try {
XmlSnippetHandler xsh = new XmlSnippetHandler(sFile.getAbsolutePath());
List<Snippet> tempList = xsh.getSnippets();
for(Snippet sni : tempList){
listSnippet.add(sni);
}
} catch (ParserConfigurationException ex) {
} catch (SAXException ex) {
} catch (IOException ex) {
}
}
}
refreshSnippets(refresh);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
SnippetDialog dialog = new SnippetDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton Cancel_Button;
private javax.swing.JButton OK_Button;
private javax.swing.ButtonGroup bgCode;
private javax.swing.JButton btnCreate;
private javax.swing.JButton btnDelete;
private javax.swing.JButton btnModify;
private javax.swing.JButton btnUpdate;
private javax.swing.JCheckBox cbSave;
private javax.swing.JComboBox cbTranslate;
private javax.swing.JEditorPane epSnippet;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable1;
private javax.swing.JToggleButton tbPython;
private javax.swing.JToggleButton tbRuby;
private javax.swing.JTextField tfAuthor;
private javax.swing.JTextField tfDesc;
private javax.swing.JTextField tfName;
// End of variables declaration//GEN-END:variables
}