/* * FileWizard.java * * Created on 26. Juli 2006, 19:44 */ package ui.core; import java.awt.AWTEvent; import java.awt.Component; import java.awt.event.KeyEvent; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListModel; import javax.swing.JLabel; import javax.swing.JList; import languages.Language; import languages.LanguageFactory; /** * * @author bmeurer */ public class FileWizard extends javax.swing.JDialog { // // Inner classes // /** * List cell renderer for the JList with the {@link Language}s. */ private static class LanguagesListCellRender extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); Language language = (Language)value; label.setText(language.getName() + " (" + language.getTitle() + ")"); return label; } } // // Constructor // /** * Allocates a new <code>FileWizard</code> instance. * * @param parent the parent frame. * @param model <code>true</code> to display the wizard modal * for the <code>parent</code>. */ public FileWizard(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); // determine the list of available languages LanguageFactory factory = LanguageFactory.newInstance(); Language[] available = factory.getAvailableLanguages(); // setup the list model with the available languages DefaultListModel languagesModel = new DefaultListModel(); for (Language language : available) { languagesModel.addElement(language); } this.languagesList.setModel(languagesModel); // setup the list cell renderer for the languages this.languagesList.setCellRenderer(new LanguagesListCellRender()); } /** 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() { javax.swing.JPanel bodyPanel; javax.swing.JPanel buttonsPanel; javax.swing.JButton cancelButton; javax.swing.JLabel descriptionLabel; javax.swing.JScrollPane descriptionScrollPane; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel headerImageLabel; javax.swing.JPanel headerPanel; javax.swing.JSeparator headerSeparator; javax.swing.JLabel headerSubTitleLabel; javax.swing.JLabel headerTitleLabel; javax.swing.JLabel languagesLabel; javax.swing.JScrollPane languagesScrollPane; headerPanel = new javax.swing.JPanel(); headerTitleLabel = new javax.swing.JLabel(); headerSubTitleLabel = new javax.swing.JLabel(); headerSeparator = new javax.swing.JSeparator(); headerImageLabel = new javax.swing.JLabel(); bodyPanel = new javax.swing.JPanel(); languagesScrollPane = new javax.swing.JScrollPane(); languagesList = new javax.swing.JList(); descriptionScrollPane = new javax.swing.JScrollPane(); descriptionTextArea = new javax.swing.JTextArea(); descriptionLabel = new javax.swing.JLabel(); languagesLabel = new javax.swing.JLabel(); buttonsPanel = new javax.swing.JPanel(); cancelButton = new javax.swing.JButton(); okButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("New File..."); setName("fileWizard"); headerPanel.setLayout(new java.awt.GridBagLayout()); headerPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("window")); headerTitleLabel.setFont(new java.awt.Font("Dialog", 1, 24)); headerTitleLabel.setText("New File..."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 5, 10); headerPanel.add(headerTitleLabel, gridBagConstraints); headerSubTitleLabel.setText("Create an empty source file for a language"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 10, 5, 10); headerPanel.add(headerSubTitleLabel, gridBagConstraints); headerSeparator.setForeground(javax.swing.UIManager.getDefaults().getColor("windowBorder")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.ipadx = 400; gridBagConstraints.weightx = 1.0; headerPanel.add(headerSeparator, gridBagConstraints); headerImageLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ui/core/icons/new24.gif"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridheight = 2; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); headerPanel.add(headerImageLabel, gridBagConstraints); getContentPane().add(headerPanel, java.awt.BorderLayout.NORTH); bodyPanel.setLayout(new java.awt.GridBagLayout()); languagesList.setModel(new javax.swing.AbstractListModel() { String[] strings = { "L0 (Pure untyped \u03bb calculus)", "L1 (Simply typed \u03bb calculus)" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); languagesList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); languagesList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { languagesListValueChanged(evt); } }); languagesScrollPane.setViewportView(languagesList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(5, 10, 0, 10); bodyPanel.add(languagesScrollPane, gridBagConstraints); descriptionTextArea.setColumns(20); descriptionTextArea.setLineWrap(true); descriptionTextArea.setRows(5); descriptionTextArea.setWrapStyleWord(true); descriptionScrollPane.setViewportView(descriptionTextArea); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10); bodyPanel.add(descriptionScrollPane, gridBagConstraints); descriptionLabel.setText("Description:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); bodyPanel.add(descriptionLabel, gridBagConstraints); languagesLabel.setText("Available languages:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); bodyPanel.add(languagesLabel, gridBagConstraints); getContentPane().add(bodyPanel, java.awt.BorderLayout.CENTER); buttonsPanel.setLayout(new java.awt.GridBagLayout()); cancelButton.setMnemonic('C'); 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 = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); buttonsPanel.add(cancelButton, gridBagConstraints); okButton.setMnemonic('O'); okButton.setText("Ok"); okButton.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); buttonsPanel.add(okButton, gridBagConstraints); getContentPane().add(buttonsPanel, java.awt.BorderLayout.SOUTH); pack(); }// </editor-fold>//GEN-END:initComponents private void languagesListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_languagesListValueChanged Language language = (Language)this.languagesList.getSelectedValue(); if (language != null) { this.descriptionTextArea.setText(language.getDescription()); this.okButton.setEnabled(true); } else { this.descriptionTextArea.setText(""); this.okButton.setEnabled(false); } }//GEN-LAST:event_languagesListValueChanged private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed dispose(); }//GEN-LAST:event_cancelButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextArea descriptionTextArea; private javax.swing.JList languagesList; private javax.swing.JButton okButton; // End of variables declaration//GEN-END:variables }