/** * (c) 2000-2011 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved. * Licencia en license.txt / License in license.txt * File created: 02/04/2011 12:21:05 */ package org.f2o.absurdum.puck.gui.dialog; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeSet; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.KeyStroke; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import org.f2o.absurdum.puck.i18n.UIMessages; import eu.irreality.age.windowing.DialogUtils; /** * @author carlos * */ public class VerbListFrame extends JFrame { private Set sourceForms = new TreeSet(); private Object[][] tableData; private Object[] columnNames; private JTable theTable; private static Map instances; public static VerbListFrame getInstance( String languageCode ) { if ( instances == null ) instances = Collections.synchronizedMap ( new HashMap() ); VerbListFrame candidateInstance = (VerbListFrame) instances.get(languageCode); if ( candidateInstance == null ) { candidateInstance = new VerbListFrame(languageCode); instances.put(languageCode,candidateInstance); } return candidateInstance; } private VerbListFrame( String languageCode ) { super(UIMessages.getInstance().getMessage("verblist.frametitle")); setSize(600,600); eu.irreality.age.NaturalLanguage lang = eu.irreality.age.NaturalLanguage.getInstance( languageCode ); sourceForms.addAll ( lang.getVerbForms() ); //to sort them we add them to TreeSet. tableData = new Object[sourceForms.size()][2]; int i = 0; for ( Iterator it = sourceForms.iterator() ; it.hasNext() ; ) { String sourceForm = (String) it.next(); tableData[i][0] = sourceForm; tableData[i][1] = lang.toInfinitive(sourceForm); i++; } columnNames = new Object[2]; columnNames[0] = UIMessages.getInstance().getMessage("verblist.source"); columnNames[1] = UIMessages.getInstance().getMessage("verblist.target"); TableModel tm = new VerbListTableModel(tableData,columnNames); theTable = new JTable(); theTable.setAutoCreateRowSorter(true); theTable.setModel(tm); this.getContentPane().setLayout(new BoxLayout(this.getContentPane(),BoxLayout.PAGE_AXIS)); JScrollPane tableScroll = new JScrollPane(theTable); tableScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); JPanel mainPanel = new JPanel(); mainPanel.setLayout ( new BoxLayout(mainPanel,BoxLayout.PAGE_AXIS) ); mainPanel.add(new JLabel(UIMessages.getInstance().getMessage("verblist.explanation"))); mainPanel.add(Box.createVerticalStrut(10)); mainPanel.add ( tableScroll ); this.getContentPane().add(mainPanel); DialogUtils.registerEscapeAction(this); DialogUtils.registerCloseAction(this,KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); //pack(); setLocationRelativeTo(null); this.setVisible(true); } }