public void actionPerformed( ActionEvent e )
  {
    // don't handle the keys in other components
    TKeyLock.keys.lock() ;

    TProject project = TGlobal.projects.getCurrentProject() ;
    TProjectData current = project.getProjectData() ;

    // project instance available
    if ( current != null )
    {
      if ( current.hasData() )
      {

        String keyValue = JOptionPane.showInputDialog( "Please input the key",
                                                       "NewEntry" +counter ) ;

        // null meaning the user canceled the input
        if ( keyValue == null )
        {
          return ;
        }

        // key invalid
        if ( keyValue.length() < 1 )
        {
          return ;
        }

        keyValue = Utils.normalizeIT(keyValue,
                                     project.getSettings().getReplaceWhitespace(),
                                     project.getSettings().getReplaceString() ) ;

        TMultiLanguageEntry entry = current.getLanguageEntry( keyValue ) ;

        //  no entry
        if ( entry == null )
        {
          entry = current.addLanguageEntry( keyValue ) ;
          counter++ ;
        }
        else // entry allready defined
        {
          JOptionPane.showMessageDialog( null,
                                         "key already defined, action aborted!",
                                         "warning",
                                         JOptionPane.WARNING_MESSAGE ) ;
        }

        // select the entry
        if ( entry != null )
        {
          int index = current.getLanguageEntryIndex( entry.getKey() ) ;
          //table.selectRow( index, true ) ;
          GUIGlobals.oPanel.selectAndGrabIndex(index);
        }
      }
    }
    // unlock the key's handling of other components
    TKeyLock.keys.unlock() ;
  }