Please take time to read the code disclaimer.

<--Go back to Kent's Projects

<--Go back to project post

/**
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * CustomLanguage.java
 *
 * Created on Dec 21, 2011, 4:34:31 PM
 */
package metagui;

import broadscope.*;
import java.util.*;
import javax.swing.*;
import metadatagenerator.*;

/**
 *
 * @author Video
 */
public class CustomLanguage extends javax.swing.JDialog {

  private DefaultListModel tagListModel = new DefaultListModel();
  private LinkedList tags = new LinkedList();
  private ConferenceMDGenerator cmdg;
  private boolean submitted = false;

  /** 
   * Creates new form CustomLanguage 
   * @param parent
   * @param modal
   * @param cmdg  
   */
  public CustomLanguage(java.awt.Frame parent, boolean modal, ConferenceMDGenerator cmdg) {
    super(parent, modal);
    initComponents();
    this.cmdg = cmdg;
    englishNameTextField.requestFocus();
    StaticClass.addPartLogo(getContentPane(), getClass(), true, 40, java.awt.GridBagConstraints.SOUTHEAST, true);
    StaticClass.centerAndPack(this);
    StaticClass.setUnifiedColor(rootPane, java.awt.Color.white);
  }

  /** 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")
    // //GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        infoPanel1 = new javax.swing.JPanel();
        englishNameLabel = new javax.swing.JLabel();
        englishNameTextField = new javax.swing.JTextField();
        nameLabel = new javax.swing.JLabel();
        nameTextField = new javax.swing.JTextField();
        socialMormonSiteLabel = new javax.swing.JLabel();
        socialMormonSiteTextField = new javax.swing.JTextField();
        mormonOrgSiteLabel = new javax.swing.JLabel();
        mormonOrgSiteTextField = new javax.swing.JTextField();
        infoPanel2 = new javax.swing.JPanel();
        genericTagsLabel = new javax.swing.JLabel();
        genericTagsTextField = new javax.swing.JTextField();
        addTagButton = new javax.swing.JButton();
        tagScrollPane = new javax.swing.JScrollPane();
        tagJList = new javax.swing.JList();
        cancelButton = new javax.swing.JButton();
        submitButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Create Custom Language");
        getContentPane().setLayout(new java.awt.GridBagLayout());

        infoPanel1.setLayout(new java.awt.GridBagLayout());

        englishNameLabel.setText("English Name: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(englishNameLabel, gridBagConstraints);

        englishNameTextField.setPreferredSize(new java.awt.Dimension(100, 28));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(englishNameTextField, gridBagConstraints);

        nameLabel.setText("Name: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(nameLabel, gridBagConstraints);

        nameTextField.setPreferredSize(new java.awt.Dimension(100, 28));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(nameTextField, gridBagConstraints);

        socialMormonSiteLabel.setText("Social Mormon Site: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(socialMormonSiteLabel, gridBagConstraints);

        socialMormonSiteTextField.setPreferredSize(new java.awt.Dimension(100, 28));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(socialMormonSiteTextField, gridBagConstraints);

        mormonOrgSiteLabel.setText("Mormon.org Site: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(mormonOrgSiteLabel, gridBagConstraints);

        mormonOrgSiteTextField.setPreferredSize(new java.awt.Dimension(100, 28));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel1.add(mormonOrgSiteTextField, gridBagConstraints);

        getContentPane().add(infoPanel1, new java.awt.GridBagConstraints());

        infoPanel2.setLayout(new java.awt.GridBagLayout());

        genericTagsLabel.setText("Generic Tags: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel2.add(genericTagsLabel, gridBagConstraints);

        genericTagsTextField.setPreferredSize(new java.awt.Dimension(100, 28));
        genericTagsTextField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                genericTagsTextFieldActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel2.add(genericTagsTextField, gridBagConstraints);

        addTagButton.setText("Add Tag");
        addTagButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addTagButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel2.add(addTagButton, gridBagConstraints);

        tagScrollPane.setViewportBorder(javax.swing.BorderFactory.createTitledBorder("Tags"));
        tagScrollPane.setPreferredSize(new java.awt.Dimension(150, 170));

        tagJList.setModel(tagListModel);
        tagJList.setToolTipText("Double-click to remove");
        tagJList.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tagJListMouseClicked(evt);
            }
        });
        tagScrollPane.setViewportView(tagJList);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        infoPanel2.add(tagScrollPane, gridBagConstraints);

        getContentPane().add(infoPanel2, new java.awt.GridBagConstraints());

        cancelButton.setText("Cancel");
        cancelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        getContentPane().add(cancelButton, gridBagConstraints);

        submitButton.setText("Submit");
        submitButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                submitButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        getContentPane().add(submitButton, gridBagConstraints);

        pack();
    }// //GEN-END:initComponents

  private void addTagButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addTagButtonActionPerformed
    addTag();
  }//GEN-LAST:event_addTagButtonActionPerformed

  private void tagJListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tagJListMouseClicked
    if (evt.getClickCount() == 2) {
      tags.remove(getSelectedTag());
      updateList();
    }
  }//GEN-LAST:event_tagJListMouseClicked

  private void genericTagsTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_genericTagsTextFieldActionPerformed
    addTag();
  }//GEN-LAST:event_genericTagsTextFieldActionPerformed

  private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
    this.dispose();
  }//GEN-LAST:event_cancelButtonActionPerformed

  private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_submitButtonActionPerformed
    submit();
    submitted = true;
    this.dispose();
  }//GEN-LAST:event_submitButtonActionPerformed

  /**
   * This method adds the given tag
   */
  public void addTag() {
    if (!genericTagsTextField.getText().isEmpty()) {
      tags.add(genericTagsTextField.getText());
      updateList();
      genericTagsTextField.setText("");
      genericTagsTextField.requestFocus();
    }
  }

  /**
   * This method submits the new language
   */
  public void submit() {
    LanguageType newLanguageType = new LanguageType();
    newLanguageType.setEnglishName(englishNameTextField.getText());
    newLanguageType.setName(nameTextField.getText());
    newLanguageType.setSocialSite(socialMormonSiteTextField.getText());
    newLanguageType.setMormonSite(mormonOrgSiteTextField.getText());
    newLanguageType.setGenericTagList(tags);
    newLanguageType.setSelected(true);
    newLanguageType.resetMormonSite();
    cmdg.getAllLanguageTypesList().add(newLanguageType);
  }

  /**
   * This method updates the tags list
   */
  public void updateList() {
    tagListModel.clear();
    for (String tag : tags) {
      tagListModel.addElement(tag);
    }
  }

  /**
   * This method gets the selected tag
   * @return selectedTag
   */
  public String getSelectedTag() {
    String tag = "";
    if (tagJList.getSelectedIndex() != -1) {
      tag = tags.get(tagJList.getSelectedIndex());
    }
    return tag;
  }

  //
  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    /** Set the Nimbus look and feel */
    //
        /** If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
        }
      }
    } catch (ClassNotFoundException ex) {
      java.util.logging.Logger.getLogger(CustomLanguage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
      java.util.logging.Logger.getLogger(CustomLanguage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
      java.util.logging.Logger.getLogger(CustomLanguage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
      java.util.logging.Logger.getLogger(CustomLanguage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //

    /** Create and display the dialog */
    java.awt.EventQueue.invokeLater(new Runnable() {

      public void run() {
        CustomLanguage dialog = new CustomLanguage(new javax.swing.JFrame(), true, new ConferenceMDGenerator(new DescriptionFrame()));
        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 addTagButton;
    private javax.swing.JButton cancelButton;
    private javax.swing.JLabel englishNameLabel;
    private javax.swing.JTextField englishNameTextField;
    private javax.swing.JLabel genericTagsLabel;
    private javax.swing.JTextField genericTagsTextField;
    private javax.swing.JPanel infoPanel1;
    private javax.swing.JPanel infoPanel2;
    private javax.swing.JLabel mormonOrgSiteLabel;
    private javax.swing.JTextField mormonOrgSiteTextField;
    private javax.swing.JLabel nameLabel;
    private javax.swing.JTextField nameTextField;
    private javax.swing.JLabel socialMormonSiteLabel;
    private javax.swing.JTextField socialMormonSiteTextField;
    private javax.swing.JButton submitButton;
    private javax.swing.JList tagJList;
    private javax.swing.JScrollPane tagScrollPane;
    // End of variables declaration//GEN-END:variables
  //

  /**
   * @return the submitted
   */
  public boolean isSubmitted() {
    return submitted;
  }

  /**
   * @param submitted the submitted to set
   */
  public void setSubmitted(boolean submitted) {
    this.submitted = submitted;
  }
}