Go to the documentation of this file.00001 package instruction.gui.tab;
00002
00003 import instruction.configuration.ConfigurationManager;
00004
00005 import java.awt.GridBagLayout;
00006 import javax.swing.JPanel;
00007 import javax.swing.JLabel;
00008 import java.awt.GridBagConstraints;
00009 import java.awt.Insets;
00010 import java.util.ArrayList;
00011 import java.util.HashMap;
00012 import java.util.Iterator;
00013 import java.util.List;
00014 import java.util.Map;
00015 import java.util.Set;
00016 import javax.swing.JScrollPane;
00017 import javax.swing.JTable;
00018 import javax.swing.JButton;
00019 import javax.swing.table.AbstractTableModel;
00020 import javax.swing.table.TableModel;
00021
00022 public class CycMappingTab extends JPanel implements DialogTab {
00023
00024 private static final long serialVersionUID = 1L;
00025 private JLabel jLabel = null;
00026 private JPanel jPanel = null;
00027 private JScrollPane jScrollPane = null;
00028 private JTable jTable = null;
00029 private JButton jButton = null;
00030 private JButton jButton1 = null;
00031 private JPanel jPanel1 = null;
00032
00036 public CycMappingTab () {
00037
00038 super();
00039 initialize();
00040 }
00041
00047 private void initialize() {
00048
00049 GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
00050 gridBagConstraints6.gridx = 0;
00051 gridBagConstraints6.insets = new Insets( 5, 5, 5, 5 );
00052 gridBagConstraints6.fill = GridBagConstraints.HORIZONTAL;
00053 gridBagConstraints6.gridy = 3;
00054 GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
00055 gridBagConstraints2.fill = GridBagConstraints.BOTH;
00056 gridBagConstraints2.gridy = 2;
00057 gridBagConstraints2.weightx = 1.0;
00058 gridBagConstraints2.weighty = 1.0;
00059 gridBagConstraints2.gridx = 0;
00060 gridBagConstraints2.insets = new Insets( 5, 5, 5, 5 );
00061 GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
00062 gridBagConstraints1.gridx = 0;
00063 gridBagConstraints1.gridy = 1;
00064 GridBagConstraints gridBagConstraints = new GridBagConstraints();
00065 gridBagConstraints.gridx = 0;
00066 gridBagConstraints.insets = new Insets( 5, 5, 5, 5 );
00067 gridBagConstraints.anchor = GridBagConstraints.WEST;
00068 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
00069 gridBagConstraints.gridy = 0;
00070 jLabel = new JLabel();
00071 jLabel.setText( "The follwing mappings from WordNet Synset-IDs to Cyc concepts are added." );
00072 this.setSize( 510, 349 );
00073 this.setLayout( new GridBagLayout() );
00074 this.add( jLabel, gridBagConstraints );
00075 this.add( getJPanel(), gridBagConstraints1 );
00076 this.add( getJScrollPane(), gridBagConstraints2 );
00077 this.add( getJPanel1(), gridBagConstraints6 );
00078 }
00079
00080 public void onCancel() {
00081
00082 }
00083
00084 public void onOK() {
00085
00086 Map<String, List<String>> newMappings = new HashMap<String, List<String>>();
00087
00088 for ( int i = 0; i < getJTable().getRowCount(); i++ ) {
00089 TableModel model = getJTable().getModel();
00090 String synset = (String) model.getValueAt( i, 0 );
00091 String concept = (String) model.getValueAt( i, 1 );
00092 List<String> concepts = newMappings.get( synset );
00093 if (concepts == null) {
00094 concepts = new ArrayList<String>();
00095 newMappings.put( synset, concepts );
00096 }
00097 concepts.add( concept );
00098
00099 ConfigurationManager.setMappings( newMappings );
00100 }
00101
00102 }
00103
00109 private JPanel getJPanel() {
00110
00111 if ( jPanel == null ) {
00112 jPanel = new JPanel();
00113 jPanel.setLayout( new GridBagLayout() );
00114
00115 }
00116 return jPanel;
00117 }
00118
00124 private JScrollPane getJScrollPane() {
00125
00126 if ( jScrollPane == null ) {
00127 jScrollPane = new JScrollPane();
00128 jScrollPane.setViewportView( getJTable() );
00129 }
00130 return jScrollPane;
00131 }
00132
00138 private JTable getJTable() {
00139
00140 if ( jTable == null ) {
00141
00142 jTable = new JTable( new AbstractTableModel() {
00143 private static final long serialVersionUID = -7702568498509726688L;
00144
00145 String[] columns = {
00146 "Synset-ID", "Cyc concept"
00147 };
00148
00149 List<Object[]> data = new ArrayList<Object[]>();
00150
00151 @Override
00152 public String getColumnName( int column ) {
00153
00154 return columns[column];
00155 }
00156
00157 public int getColumnCount() {
00158
00159 return columns.length;
00160 }
00161
00162 public int getRowCount() {
00163
00164 return data.size();
00165 }
00166
00167 public Object getValueAt( int row, int col ) {
00168
00169 return data.get( row )[col];
00170 }
00171
00172 @Override
00173 public void setValueAt( Object value, int rowIndex, int columnIndex ) {
00174
00175 if ( rowIndex > getRowCount() - 1 ) {
00176 Object[] newData = new Object[columns.length];
00177 newData[columnIndex] = value;
00178 data.add( newData );
00179 }
00180 else {
00181 if ( value == null )
00182 data.remove( rowIndex );
00183 else
00184 data.get( rowIndex )[columnIndex] = value;
00185 }
00186 fireTableDataChanged();
00187 }
00188
00189 @Override
00190 public boolean isCellEditable( int rowIndex, int columnIndex ) {
00191
00192 return true;
00193 }
00194
00195 } );
00196
00197 Map<String, List<String>> mappings = ConfigurationManager.getMappings();
00198 Set<String> synsets = mappings.keySet();
00199 for ( Iterator<String> i = synsets.iterator(); i.hasNext(); ) {
00200 String synset = i.next();
00201 List<String> concepts = mappings.get( synset );
00202 for ( Iterator<String> j = concepts.iterator(); j.hasNext(); ) {
00203 int row = jTable.getRowCount();
00204 jTable.setValueAt( synset, row, 0 );
00205 jTable.setValueAt( j.next(), row, 1 );
00206 }
00207 }
00208 }
00209 return jTable;
00210 }
00211
00217 private JButton getJButton() {
00218
00219 if ( jButton == null ) {
00220 jButton = new JButton();
00221 jButton.setText( "Add Mapping" );
00222 jButton.addActionListener( new java.awt.event.ActionListener() {
00223 public void actionPerformed( java.awt.event.ActionEvent e ) {
00224
00225 int row = getJTable().getModel().getRowCount();
00226 getJTable().getModel().setValueAt( "Synset-ID", row, 0 );
00227 getJTable().getModel().setValueAt( "Concept", row, 1 );
00228 }
00229 } );
00230 }
00231 return jButton;
00232 }
00233
00239 private JButton getJButton1() {
00240
00241 if ( jButton1 == null ) {
00242 jButton1 = new JButton();
00243 jButton1.setText( "Remove" );
00244 jButton1.addActionListener( new java.awt.event.ActionListener() {
00245 public void actionPerformed( java.awt.event.ActionEvent e ) {
00246
00247 int selIndex = getJTable().getSelectedRow();
00248 if ( selIndex >= 0 )
00249 getJTable().getModel().setValueAt( null, selIndex, 0 );
00250 }
00251 } );
00252
00253 }
00254 return jButton1;
00255 }
00256
00262 private JPanel getJPanel1() {
00263
00264 if ( jPanel1 == null ) {
00265 GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
00266 gridBagConstraints4.gridx = 1;
00267 gridBagConstraints4.insets = new Insets( 5, 5, 5, 5 );
00268 gridBagConstraints4.gridy = 0;
00269 GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
00270 gridBagConstraints3.gridx = 0;
00271 gridBagConstraints3.insets = new Insets( 5, 5, 5, 5 );
00272 gridBagConstraints3.gridy = 0;
00273 jPanel1 = new JPanel();
00274 jPanel1.setLayout( new GridBagLayout() );
00275 jPanel1.add( getJButton(), gridBagConstraints3 );
00276 jPanel1.add( getJButton1(), gridBagConstraints4 );
00277 }
00278 return jPanel1;
00279 }
00280
00281 }