T-K-O-T

java sozluk kod gui mainentry java

001: /*
002: * MainEntry.java
003: */
004: package GUI;
005:
006: import Kernel.Dictionary;
007: import Kernel.HSQLDB;
008: import Kernel.Constants;
009: import java.awt.event.KeyAdapter;
010: import java.awt.event.KeyEvent;
011: import java.awt.event.KeyListener;
012: import java.util.Locale;
013: import java.util.ArrayList;
014: import javax.swing.DefaultListModel;
015: import javax.swing.JFrame;
016: import javax.swing.event.MenuKeyEvent;
017:
018: /**
019: * Programın görsel arayüzü bu sınıf aracılığı ile çalışır.
020: * Programın ana giriş noktası burasıdır.
021: * @author Çağatay ÇEBİ - http://www.cagataycebi.com
022: */
023: public class MainEntry extends javax.swing.JFrame implements Constants{
024:
025: public static HSQLDB our_database_connection =
026: new HSQLDB("dictionary_db/dictionary_db","SA", "NO_PASSWORD");
027: public static boolean is_license_info_open;
028: public boolean is_auto_complete_active;
029: /**
030: * Programın ilk başlangıç noktasıdır. İngilizce otomatik olarak seçili
031: * gelir.
032: */
033: public MainEntry( ) {
034: initComponents( );
035: eng_to_tur.setSelected( true );
036: tur_to_eng.setSelected( false );
037: is_license_info_open = false;
038: fill_word_list_in_alphabetic_order( MIN_WORD_ID_FOR_EN, (byte) 2 );
039:
040: is_auto_complete_active = true;
041: complete_word.setSelected( true );
042:
043: // JComboBox'ta Enter'a basılıdığında, arama yapılması aşağıdaki
044: // Listener'in eklenmesiyle olmuştur.
045: // NetBeans'in GUI aracı ile KeyListener, eklendiğinde problem çıkıyor.
046: // O yüzden aşağıdaki yapı manuel olarak yazılmıştır.
047: search_box.getEditor( ).getEditorComponent().addKeyListener(
048: new KeyAdapter( ) {
049: public void keyReleased(KeyEvent e) {
050: // Girilen karakterlerle başlayan kelimelere bakıyor.
051: fill_word_list_begins_with_search_chars( );
052: // Enter'a basılıp basılmadığı kontrol ediliyor.
053: if( e.getKeyChar() == KeyEvent.VK_ENTER )
054: find_action( );
055: }});
056: }
057:
058: /**
059: * Arama kutusuna girilen karakterleri alır. Veritabanında bu karakterlerle,
060: * başlayan kelimeleri döndürür.
061: */
062: private void fill_word_list_begins_with_search_chars( )
063: {
064: // Eğer otomatik kelime tamamlama özelliği seçili değilse,
065: // bu fonksiyon herhangi bir işlem yapmadan sonlanır.
066: if( !is_auto_complete_active ) return;
067:
068: //Girilen değer burada word değişkenine atanıyor.
069: String word = search_box.getEditor( ).getItem().toString( ).trim( );
070:
071: byte native_lang_id = -1, foreign_lang_id = -1;
072:
073: // İngilizce'den Türkçe'ye çeviri seçildiyse
074: if( eng_to_tur.isSelected( ) ) {
075: Locale english = new Locale( "en", "English" );
076: native_lang_id = 2;
077: foreign_lang_id = 1;
078: word = word.toLowerCase( english );
079: english = null;
080: }
081: // Türkçe'den İngilizce'ye çeviri seçildiyse
082: else if ( tur_to_eng.isSelected( ) ) {
083: Locale turkish = new Locale( "tr", "Turkish" );
084: native_lang_id = 1;
085: foreign_lang_id = 2;
086: word = word.toLowerCase( turkish );
087: turkish = null;
088: }
089: // Tanımsız bir çeviri durumu yaşanırsa
090: else {
091: System.err.println("ERROR: This translation cannot be done.");
092: return;
093: }
094:
095: DefaultListModel list_model = new DefaultListModel( );
096:
097:
098: ArrayList results =
099: Dictionary.get_words_begin_with(word,native_lang_id,foreign_lang_id);
100: for( int i = 0; i<results.size(); i++ ) {
101: list_model.addElement( results.get( i ) );
102: }
103: word_list.setModel( list_model );
104:
105: results = null;
106: list_model = null;
107: word = null;
108: }
109:
110: /** This method is called from within the constructor to
111: * initialize the form.
112: * WARNING: Do NOT modify this code. The content of this method is
113: * always regenerated by the Form Editor.
114: */
115: // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
116: private void initComponents() {
117: jScrollPane1 = new javax.swing.JScrollPane();
118: word_list = new javax.swing.JList();
119: search_box = new javax.swing.JComboBox();
120: find = new javax.swing.JButton();
121: jScrollPane2 = new javax.swing.JScrollPane();
122: translation_area = new javax.swing.JTextArea();
123: eng_to_tur = new javax.swing.JCheckBox();
124: tur_to_eng = new javax.swing.JCheckBox();
125: complete_word = new javax.swing.JCheckBox();
126: jMenuBar1 = new javax.swing.JMenuBar();
127: Name = new javax.swing.JMenu();
128: jSeparator1 = new javax.swing.JSeparator();
129: exit = new javax.swing.JMenuItem();
130: jMenu1 = new javax.swing.JMenu();
131: about = new javax.swing.JMenuItem();
132:
133: setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
134: setTitle("JavaSu00f6zlu00fck");
135: setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
136: addWindowListener(new java.awt.event.WindowAdapter() {
137: public void windowClosing(java.awt.event.WindowEvent evt) {
138: formWindowClosing(evt);
139: }
140: });
141:
142: jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
143: word_list.setModel(new javax.swing.AbstractListModel() {
144: String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
145: public int getSize() { return strings.length; }
146: public Object getElementAt(int i) { return strings[i]; }
147: });
148: word_list.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
149: word_list.setName("WordList");
150: word_list.addKeyListener(new java.awt.event.KeyAdapter() {
151: public void keyPressed(java.awt.event.KeyEvent evt) {
152: word_listKeyPressed(evt);
153: }
154: });
155: word_list.addMouseListener(new java.awt.event.MouseAdapter() {
156: public void mouseClicked(java.awt.event.MouseEvent evt) {
157: word_listMouseClicked(evt);
158: }
159: });
160:
161: jScrollPane1.setViewportView(word_list);
162:
163: search_box.setEditable(true);
164: search_box.setName("arama_kutusu");
165:
166: find.setText("Bul");
167: find.setName("ara");
168: find.addActionListener(new java.awt.event.ActionListener() {
169: public void actionPerformed(java.awt.event.ActionEvent evt) {
170: findActionPerformed(evt);
171: }
172: });
173:
174: translation_area.setColumns(20);
175: translation_area.setEditable(false);
176: translation_area.setLineWrap(true);
177: translation_area.setRows(5);
178: translation_area.setWrapStyleWord(true);
179: jScrollPane2.setViewportView(translation_area);
180:
181: eng_to_tur.setText("u0130ngilizce >> Tu00fcrku00e7e");
182: eng_to_tur.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
183: eng_to_tur.setMargin(new java.awt.Insets(0, 0, 0, 0));
184: eng_to_tur.setName("ing_to_tur");
185: eng_to_tur.addActionListener(new java.awt.event.ActionListener() {
186: public void actionPerformed(java.awt.event.ActionEvent evt) {
187: eng_to_turActionPerformed(evt);
188: }
189: });
190:
191: tur_to_eng.setText("Tu00fcrku00e7e >> u0130ngilizce");
192: tur_to_eng.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
193: tur_to_eng.setMargin(new java.awt.Insets(0, 0, 0, 0));
194: tur_to_eng.setName("tur_to_ing");
195: tur_to_eng.addActionListener(new java.awt.event.ActionListener() {
196: public void actionPerformed(java.awt.event.ActionEvent evt) {
197: tur_to_engActionPerformed(evt);
198: }
199: });
200:
201: complete_word.setText("Kelime Tamamla");
202: complete_word.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
203: complete_word.setMargin(new java.awt.Insets(0, 0, 0, 0));
204: complete_word.addActionListener(new java.awt.event.ActionListener() {
205: public void actionPerformed(java.awt.event.ActionEvent evt) {
206: complete_wordActionPerformed(evt);
207: }
208: });
209:
210: Name.setText("Menu");
211: Name.add(jSeparator1);
212:
213: exit.setText("Kapat");
214: exit.addActionListener(new java.awt.event.ActionListener() {
215: public void actionPerformed(java.awt.event.ActionEvent evt) {
216: exitActionPerformed(evt);
217: }
218: });
219:
220: Name.add(exit);
221:
222: jMenuBar1.add(Name);
223:
224: jMenu1.setText("Hakku0131nda");
225: about.setText("Hakku0131nda");
226: about.addActionListener(new java.awt.event.ActionListener() {
227: public void actionPerformed(java.awt.event.ActionEvent evt) {
228: aboutActionPerformed(evt);
229: }
230: });
231:
232: jMenu1.add(about);
233:
234: jMenuBar1.add(jMenu1);
235:
236: setJMenuBar(jMenuBar1);
237:
238: org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
239: getContentPane().setLayout(layout);
240: layout.setHorizontalGroup(
241: layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
242: .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
243: .addContainerGap()
244: .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
245: .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 138, Short.MAX_VALUE)
246: .add(complete_word))
247: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
248: .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
249: .add(layout.createSequentialGroup()
250: .add(eng_to_tur)
251: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 43, Short.MAX_VALUE)
252: .add(tur_to_eng))
253: .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
254: .add(search_box, 0, 261, Short.MAX_VALUE)
255: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
256: .add(find)
257: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
258: .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE))
259: .addContainerGap())
260: );
261: layout.setVerticalGroup(
262: layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
263: .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
264: .addContainerGap()
265: .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
266: .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)
267: .add(layout.createSequentialGroup()
268: .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
269: .add(search_box, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
270: .add(find))
271: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
272: .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE)))
273: .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
274: .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
275: .add(eng_to_tur)
276: .add(tur_to_eng)
277: .add(complete_word))
278: .addContainerGap())
279: );
280: pack();
281: }// </editor-fold>//GEN-END:initComponents
282:
283: private void word_listKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_word_listKeyPressed
284: // TODO add your handling code here:
285: if( evt.getKeyCode( ) == java.awt.event.KeyEvent.VK_ENTER ) {
286: String word = word_list.getSelectedValue( ).toString( );
287:
288: // Kelime daha önce arandıysa, tekrar listeye eklenmez.
289: boolean is_recordable = true;
290: for( int i = 0; i < search_box.getItemCount( ); i++ ) {
291: if( search_box.getItemAt( i ).toString( ).equals( word ) ) {
292: is_recordable = false;
293: }
294: }
295:
296: if( is_recordable )
297: search_box.addItem( word );
298:
299: search_box.setSelectedItem( word );
300:
301: //Kelimenin anlamı yazdırılır.
302: find_meaning_of_word( word );
303: }
304:
305: }//GEN-LAST:event_word_listKeyPressed
306:
307: private void complete_wordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_complete_wordActionPerformed
308: if( is_auto_complete_active )
309: is_auto_complete_active = false;
310: else
311: is_auto_complete_active = true;
312: }//GEN-LAST:event_complete_wordActionPerformed
313:
314: /**
315: * Bul düğmesine basıldığı takdirde, aşağıdaki program çalışır.
316: */
317: private void findActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_findActionPerformed
318: //BUL düğmesine basıldığı takdirde.
319: find_action( );
320: }//GEN-LAST:event_findActionPerformed
321:
322:
323: private void aboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutActionPerformed
324: // Lisans penceresini açar. Eğer pencere açıksa, tekrar açmaz.
325: if( !is_license_info_open ) {
326: new LicenseInfo().setVisible( true );
327: is_license_info_open = true;
328: }
329: }//GEN-LAST:event_aboutActionPerformed
330:
331: private void exitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitActionPerformed
332: // Programdan çıkarken yapılması gerekenler.
333: our_database_connection.close_connection( );
334: System.exit( 1 );
335: }//GEN-LAST:event_exitActionPerformed
336:
337: // Solda bulunan listeye tıklandığı takdirde, kelime, arama kutusuna taşınır.
338: private void word_listMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_word_listMouseClicked
339:
340: if( evt.getClickCount() != 2 ) return;
341:
342: String word = word_list.getSelectedValue( ).toString( );
343:
344: // Kelime daha önce arandıysa, tekrar listeye eklenmez.
345: boolean is_recordable = true;
346: for( int i = 0; i < search_box.getItemCount( ); i++ ) {
347: if( search_box.getItemAt( i ).toString( ).equals( word ) ) {
348: is_recordable = false;
349: }
350: }
351:
352: if( is_recordable )
353: search_box.addItem( word );
354:
355: search_box.setSelectedItem( word );
356:
357: //Kelimenin anlamı yazdırılır.
358: find_meaning_of_word( word );
359: }//GEN-LAST:event_word_listMouseClicked
360:
361: /**
362: * Programdan çıkarken yapılması gereken işlemler içindir.
363: * Veritabanı bağlantısını kapatan, fonksiyon çağrılır.
364: */
365: private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
366: // Programdan çıkarken yapılması gerekenler.
367: our_database_connection.close_connection( );
368: System.exit( 1 );
369: }//GEN-LAST:event_formWindowClosing
370:
371: /**
372: * Türkçe'den İngilizce'ye çevirme opsiyonu seçilirse, aşağıdaki
373: * fonksiyon çalışır.
374: */
375: private void tur_to_engActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tur_to_engActionPerformed
376: eng_to_tur.setSelected( false );
377: tur_to_eng.setSelected( true );
378: fill_word_list_in_alphabetic_order( MIN_WORD_ID_FOR_TR, (byte) 1 );
379: }//GEN-LAST:event_tur_to_engActionPerformed
380:
381: /**
382: * İngilizce'den Türkçe'ye çevirme opsiyonu seçilirse, aşağıdaki fonksiyon
383: * çalışır.
384: */
385: private void eng_to_turActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eng_to_turActionPerformed
386: tur_to_eng.setSelected( false );
387: eng_to_tur.setSelected( true );
388: fill_word_list_in_alphabetic_order( MIN_WORD_ID_FOR_EN, (byte) 2 );
389: }//GEN-LAST:event_eng_to_turActionPerformed
390:
391: /**
392: * Bul tuşuna basıldığı takdirde, aşağıdaki fonksiyon çalışır.
393: * Arama kutusuna girilmiş, kelimeyi, dil seçeneğine göre arar.
394: */
395: private void find_action( )
396: {
397: //BURADA 'ARAMA KUTUSUNA' GİRİLEN DEĞER ALINIYOR.
398:
399: //Eğer girilen değer yoksa veya boşsa, herhangi bir işlem yapılmıyor.
400: if( search_box.getSelectedItem() == null ||
401: search_box.getSelectedItem( ).toString( ).trim( ).equals( "" ) )
402: return;
403:
404: //Girilen değer burada word değişkenine atanıyor.
405: String word = search_box.getSelectedItem( ).toString( ).trim( );
406:
407:
408: find_meaning_of_word( word );
409:
410: boolean is_recordable = true;
411: for( int i = 0; i < search_box.getItemCount(); i++ ) {
412: if( search_box.getItemAt( i ).toString( ).equals( word ) ) {
413: is_recordable = false;
414: }
415: }
416:
417: if( is_recordable )
418: search_box.addItem( search_box.getSelectedItem( ) );
419: }
420: /*
421: * Kelimenin anlamını bulur.
422: */
423: private void find_meaning_of_word( String word ) {
424:
425: byte native_lang_id = -1, foreign_lang_id = -1;
426:
427: String title_word;
428:
429: // İngilizce'den Türkçe'ye çeviri seçildiyse
430: if( eng_to_tur.isSelected( ) ) {
431: Locale english = new Locale( "en", "English" );
432: native_lang_id = 2;
433: foreign_lang_id = 1;
434: word = word.toLowerCase( english );
435: title_word = word.toUpperCase( english );
436: english = null;
437: }
438: // Türkçe'den İngilizce'ye çeviri seçildiyse
439: else if ( tur_to_eng.isSelected( ) ) {
440: Locale turkish = new Locale( "tr", "Turkish" );
441: native_lang_id = 1;
442: foreign_lang_id = 2;
443: word = word.toLowerCase( turkish );
444: title_word = word.toUpperCase( turkish );
445: turkish = null;
446: }
447: // Tanımsız bir çeviri durumu yaşanırsa
448: else {
449: System.err.println("ERROR: This translation cannot be done.");
450: return;
451: }
452:
453: if( native_lang_id != -1 && foreign_lang_id != -1) {
454:
455: //Kelimenin ID'si bulunur.
456: int word_id =
457: Dictionary.find_word_id_to_translate( word,
458: native_lang_id, foreign_lang_id );
459:
460: String answers;
461:
462: // Kelimenin ID'si -1 ise, bu kelime veritabanina kayitli degildir
463: // ve SoundEX ile arama devreye girer.
464: if( word_id == -1 ) {
465: answers = " " + title_word + " : nn" +
466: Dictionary.get_similar_words_by_sound_ex(
467: word, native_lang_id, foreign_lang_id );
468: fill_word_list_by_sound_ex( answers );
469: }
470: // Kelimenin anlamları yazdırılır.
471: else {
472: answers = " " + title_word + " : nn" +
473: Dictionary.get_meanings( word_id, native_lang_id,
474: foreign_lang_id );
475: fill_word_list_in_alphabetic_order( word_id, native_lang_id );
476: word_list.setSelectedValue( word, true );
477: }
478: translation_area.setText( answers );
479: translation_area.setCaretPosition( 0 );
480: answers = null;
481: }
482:
483: }
484:
485: /*
486: * Alfabetik olarak soldaki menüye kelimeleri doldurur.
487: */
488: private void fill_word_list_in_alphabetic_order( int word_id,
489: byte language_id ) {
490:
491: ArrayList other_words_in_alphabet =
492: Dictionary.get_words_in_alphabetic_order( word_id, language_id );
493:
494: DefaultListModel list_model = new DefaultListModel( );
495:
496: for( int i = 0; i < other_words_in_alphabet.size( ); i++ )
497: list_model.addElement( (String)other_words_in_alphabet.get( i ) );
498:
499: word_list.setModel( list_model );
500:
501: list_model = null;
502: }
503:
504: /*
505: * SoundEx kullanılarak yapılan karşılaştırma sonucunda benzer sesli
506: * kelimeler çıkmaktadır. Çıkan kelimeler, soldaki menüye, aşağıdaki
507: * metod yardımıyla yazdırılır.
508: */
509: private void fill_word_list_by_sound_ex( String result )
510: {
511: DefaultListModel list_model = new DefaultListModel( );
512:
513: StringBuffer result_set = new StringBuffer( );
514:
515: result_set.append( result.substring(
516: result.indexOf( "birini seçebilirsiniz:nn" ) +
517: "birini seçebilirsiniz:nn".length( ) ) );
518:
519: String word;
520:
521: while( result_set.indexOf(";") > 0 ) {
522: word = result_set.subSequence( 0, result_set.indexOf(";") ).
523: toString( );
524: list_model.addElement( word.trim( ) );
525: result_set.delete( 0, result_set.indexOf(";") + 1 );
526: }
527: list_model.addElement( result_set.toString( ).trim( ) );
528: word_list.setModel( list_model );
529:
530: result_set = null;
531: list_model = null;
532: word = null;
533: }
534:
535: /**
536: * @param args the command line arguments
537: */
538: public static void main(String args[]) {
539: java.awt.EventQueue.invokeLater(new Runnable() {
540: public void run() {
541: new MainEntry().setVisible(true);
542: }
543: });
544: }
545:
546: // Variables declaration - do not modify//GEN-BEGIN:variables
547: private javax.swing.JMenu Name;
548: private javax.swing.JMenuItem about;
549: private javax.swing.JCheckBox complete_word;
550: private javax.swing.JCheckBox eng_to_tur;
551: private javax.swing.JMenuItem exit;
552: private javax.swing.JButton find;
553: private javax.swing.JMenu jMenu1;
554: private javax.swing.JMenuBar jMenuBar1;
555: private javax.swing.JScrollPane jScrollPane1;
556: private javax.swing.JScrollPane jScrollPane2;
557: private javax.swing.JSeparator jSeparator1;
558: private javax.swing.JComboBox search_box;
559: private javax.swing.JTextArea translation_area;
560: private javax.swing.JCheckBox tur_to_eng;
561: private javax.swing.JList word_list;
562: // End of variables declaration//GEN-END:variables
563:
564: }
 
Reklamı Sola Kaydır

Resim Galerisi

Galeri'ye Git

Sosyal Medya'da Biz!

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol