1
14 package gate.gui.wordnet;
15
16 import java.awt.*;
17 import java.awt.event.ActionEvent;
18 import java.awt.event.ActionListener;
19 import java.net.URL;
20
21 import javax.swing.*;
22
23 import gate.Gate;
24 import gate.creole.AbstractVisualResource;
25 import gate.wordnet.*;
26
27 public class WordNetViewer extends AbstractVisualResource
28 implements ActionListener{
29
30 protected JLabel searchLabel = new JLabel();
31 protected JTextField searchWordTextField = new JTextField();
32 protected JButton searchButton = new JButton();
33 protected JTextPane resultPane = new JTextPane();
34 protected JLabel searchLabel2 = new JLabel();
35 protected JButton nounButton = new JButton();
36 protected JButton verbButton = new JButton();
37 protected JButton adjectiveButton = new JButton();
38 protected JButton adverbButton = new JButton();
39 protected JScrollPane scrollPane = new JScrollPane();
40 protected GridBagLayout gridBagLayout1 = new GridBagLayout();
41
42 protected JPopupMenu nounPopup;
43 protected JPopupMenu verbPopup;
44 protected JPopupMenu adjectivePopup;
45 protected JPopupMenu adverbPopup;
46
47 private static final String propertiesFile = "file://D:/Gate/temp/file_properties.xml";
48 private WordNet wnMain = null;
49
50 private boolean senatnceFrames = false;
51 public final static int SENTANCE_FAMES = 33001;
52
53 public WordNetViewer(){
54 jbInit();
55 }
57
58 private void initResources(){
59 try {
60 Gate.init();
61 wnMain = new IndexFileWordNetImpl();
62 wnMain.setPropertyUrl(new URL(propertiesFile));
63 wnMain.init();
64 } catch (Exception e){
65 e.printStackTrace();
66 }
67 }
68
69 void jbInit(){
70 searchLabel.setText("Search Word:");
71 this.setLayout(gridBagLayout1);
72 searchButton.setText("Search");
73 searchButton.addActionListener(new java.awt.event.ActionListener() {
74 public void actionPerformed(ActionEvent e) {
75 searchButton_actionPerformed(e);
76 }
77 });
78 searchWordTextField.addActionListener(new java.awt.event.ActionListener() {
79 public void actionPerformed(ActionEvent e) {
80 searchWordTextField_actionPerformed(e);
81 }
82 });
83 searchLabel2.setText("Searches for ... :");
84 nounButton.setText("Noun");
85 verbButton.setText("Verb");
86 adjectiveButton.setText("Adjective");
87 adverbButton.setText("Adverb");
88
89 nounButton.addActionListener(new java.awt.event.ActionListener() {
90 public void actionPerformed(ActionEvent e) {
91 nounButton_actionPerformed(e);
92 }
93 });
94 verbButton.addActionListener(new java.awt.event.ActionListener() {
95 public void actionPerformed(ActionEvent e) {
96 verbButton_actionPerformed(e);
97 }
98 });
99 adjectiveButton.addActionListener(new java.awt.event.ActionListener() {
100 public void actionPerformed(ActionEvent e) {
101 adjectiveButton_actionPerformed(e);
102 }
103 });
104 adverbButton.addActionListener(new java.awt.event.ActionListener() {
105 public void actionPerformed(ActionEvent e) {
106 adverbButton_actionPerformed(e);
107 }
108 });
109 nounButton.setEnabled(false);
110 verbButton.setEnabled(false);
111 adjectiveButton.setEnabled(false);
112 adverbButton.setEnabled(false);
113
114 resultPane.setEditable(false);
115 scrollPane.getViewport().add(resultPane);
116
117 this.add(searchLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
118 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
119 this.add(searchWordTextField, new GridBagConstraints(1, 0, 5, 1, 1.0, 0.0
120 ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
121 this.add(scrollPane, new GridBagConstraints(0, 2, 7, 1, 1.0, 1.0
122 ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
123 this.add(searchLabel2, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0
124 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
125 this.add(searchButton, new GridBagConstraints(6, 0, 1, 1, 0.0, 0.0
126 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
127 this.add(adjectiveButton, new GridBagConstraints(4, 1, 1, 1, 0.0, 0.0
128 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
129 this.add(verbButton, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0
130 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
131 this.add(nounButton, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0
132 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
133 this.add(adverbButton, new GridBagConstraints(5, 1, 1, 1, 0.0, 0.0
134 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
135 }
136
137 private void searchButton_actionPerformed(ActionEvent e) {
138 actionSearch();
139 }
140
141 private void searchWordTextField_actionPerformed(ActionEvent e) {
142 actionSearch();
143 }
144
145 private void actionSearch(){
146 String text = searchWordTextField.getText().trim();
147 text = text.replace(' ','_');
148 searchLabel2.setText("Searches for " + text + ":");
149
150 nounButton.setEnabled(false);
151 verbButton.setEnabled(false);
152 adjectiveButton.setEnabled(false);
153 adverbButton.setEnabled(false);
154
155 nounPopup = new JPopupMenu();
156 verbPopup = new JPopupMenu();
157 adjectivePopup = new JPopupMenu();
158 adverbPopup = new JPopupMenu();
159
160 StringBuffer display = new StringBuffer("");
161
162 addToResult(display, text, WordNet.POS_NOUN);
163 addToResult(display, text, WordNet.POS_VERB);
164 addToResult(display, text, WordNet.POS_ADJECTIVE);
165 addToResult(display, text, WordNet.POS_ADVERB);
166
167 resultPane.setText(display.toString());
168
169 }
170
171 private void addToResult(StringBuffer display, String text, int wordType) {
172 java.util.List senses = null;
173 try {
174 wnMain.cleanup();
175 senses = wnMain.lookupWord(text, wordType);
176 } catch (WordNetException wne) {
177 wne.printStackTrace();
178 }
179
180 if ( senses!=null && senses.size()>0){
181
182 String wordIdentifier = "";
183 switch (wordType){
184 case WordNet.POS_NOUN:
185 wordIdentifier = "noun";
186 nounButton.setEnabled(true);
187 break;
188 case WordNet.POS_VERB:
189 wordIdentifier = "verb";
190 verbButton.setEnabled(true);
191 break;
192 case WordNet.POS_ADJECTIVE:
193 wordIdentifier = "adjective";
194 adjectiveButton.setEnabled(true);
195 break;
196 case WordNet.POS_ADVERB:
197 wordIdentifier = "adverb";
198 adverbButton.setEnabled(true);
199 break;
200 }
201
202 display.append("\n");
203 display.append("The ");
204 display.append(wordIdentifier);
205 display.append(" ");
206 display.append(text);
207 display.append(" has ");
208 display.append(senses.size());
209 display.append(" senses:");
210 display.append("\n\n");
211 for (int i=0; i< senses.size(); i++) {
212 WordSense currSense = (WordSense) senses.get(i);
213 Synset currSynset = currSense.getSynset();
214 addToPopupMenu(currSense, currSynset, wordType, senses);
215 java.util.List words = currSynset.getWordSenses();
216 String wordsString = getWords(words);
217
218 display.append(" " + (i+1) + ". " + wordsString + " -- " + currSynset.getGloss());
219 display.append("\n");
220 }
221 }
222 }
223
224 private void addToPopupMenu(WordSense wordSense, Synset synset, int wordType, java.util.List senses){
225 java.util.List semRelations = null;
226 try {
227 semRelations = synset.getSemanticRelations();
228 } catch (Exception e){
229 e.printStackTrace();
230 }
231
232 java.util.List lexRelations = null;
233 try {
234 lexRelations = wordSense.getLexicalRelations();
235 } catch (Exception e){
236 e.printStackTrace();
237 }
238
239 for (int i=0; i<(semRelations.size()+lexRelations.size()); i++) {
240 Relation relation;
241 if (i<semRelations.size()){
242 relation = (SemanticRelation) semRelations.get(i);
243 } else {
244 relation = (LexicalRelation) lexRelations.get(i-semRelations.size());
245 }
246
247 switch (wordType) {
248 case WordNet.POS_NOUN:
249 if (false == existInPopup(nounPopup, getLabel(relation)) ){
250 nounPopup.add(new RelationItem(getLabel(relation), relation.getType(), senses));
251 }
252 break;
253 case WordNet.POS_VERB:
254 if (!senatnceFrames){
256 verbPopup.add(new RelationItem("Senatnce Frames", SENTANCE_FAMES, senses));
257 senatnceFrames = true;
258 }
259 if (false == existInPopup(verbPopup, getLabel(relation)) ){
260 verbPopup.add(new RelationItem(getLabel(relation), relation.getType(), senses));
261 }
262 break;
263 case WordNet.POS_ADJECTIVE:
264 if (false == existInPopup(adjectivePopup, getLabel(relation)) ){
265 adjectivePopup.add(new RelationItem(getLabel(relation), relation.getType(), senses));
266 }
267 break;
268 case WordNet.POS_ADVERB:
269 if (false == existInPopup(adverbPopup, getLabel(relation)) ){
270 adverbPopup.add(new RelationItem(getLabel(relation), relation.getType(), senses));
271 }
272 break;
273 }
274 }
275 }
276
277 private boolean existInPopup(JPopupMenu menu, String name){
278 boolean result = false;
279 for (int i=0; i<menu.getComponents().length; i++){
280 if ( menu.getComponents()[i].getName().equals(name)){
281 result = true;
282 break;
283 }
284 }
285 return result;
286 }
287
288 void nounButton_actionPerformed(ActionEvent e) {
289 nounPopup.show(nounButton, 0, nounButton.getHeight());
290 }
291
292 void verbButton_actionPerformed(ActionEvent e) {
293 verbPopup.show(verbButton, 0, verbButton.getHeight());
294 }
295
296 void adjectiveButton_actionPerformed(ActionEvent e) {
297 adjectivePopup.show(adjectiveButton, 0, adjectiveButton.getHeight());
298 }
299
300 void adverbButton_actionPerformed(ActionEvent e) {
301 if (adverbPopup.getComponentCount()>0){
302 adverbPopup.show(adverbButton, 0, adverbButton.getHeight());
303 }
304 }
305
306 public void actionPerformed(ActionEvent e){
307 RelationItem ri = (RelationItem) e.getSource();
308 switch (ri.getRelationType()){
309 case Relation.REL_ANTONYM:
310 relAntonymSeeAlso(ri.getSenses(), Relation.REL_ANTONYM,"=> ");
311 break;
312 case Relation.REL_ATTRIBUTE:
313 relAtributeSimilarTo(ri.getSenses(), Relation.REL_ATTRIBUTE, "=> ");
314 break;
315 case Relation.REL_CAUSE:
316 relHoloMeroHypo(ri.getSenses(), Relation.REL_CAUSE, "=> ");
317 break;
318 case Relation.REL_DERIVED_FROM_ADJECTIVE:
319 relAntonymSeeAlso(ri.getSenses(), Relation.REL_DERIVED_FROM_ADJECTIVE,"=> ");
320 break;
321 case Relation.REL_ENTAILMENT:
322 relHoloMeroHypo(ri.getSenses(), Relation.REL_ENTAILMENT, "=> ");
323 break;
324 case Relation.REL_HYPERNYM:
325 relHypernym(ri.getSenses());
326 break;
327 case Relation.REL_HYPONYM:
328 relHoloMeroHypo(ri.getSenses(), Relation.REL_HYPONYM, "=> ");
329 break;
330 case Relation.REL_MEMBER_HOLONYM:
331 relHoloMeroHypo(ri.getSenses(), Relation.REL_MEMBER_HOLONYM,"MEMBER OF: ");
332 break;
333 case Relation.REL_MEMBER_MERONYM:
334 relHoloMeroHypo(ri.getSenses(), Relation.REL_MEMBER_MERONYM, "HAS MEMBER: ");
335 break;
336 case Relation.REL_PARTICIPLE_OF_VERB:
337 relAntonymSeeAlso(ri.getSenses(), Relation.REL_PARTICIPLE_OF_VERB,"=> ");
338 break;
339 case Relation.REL_PART_HOLONYM:
340 relHoloMeroHypo(ri.getSenses(), Relation.REL_PART_HOLONYM, "PART OF: ");
341 break;
342 case Relation.REL_PART_MERONYM:
343 relHoloMeroHypo(ri.getSenses(), Relation.REL_PART_MERONYM, "HAS PART: ");
344 break;
345 case Relation.REL_PERTAINYM:
346 break;
347 case Relation.REL_SEE_ALSO:
348 relAntonymSeeAlso(ri.getSenses(), Relation.REL_SEE_ALSO,"=> ");
349 break;
350 case Relation.REL_SIMILAR_TO:
351 relAtributeSimilarTo(ri.getSenses(), Relation.REL_SIMILAR_TO, "=> ");
352 break;
353 case Relation.REL_SUBSTANCE_HOLONYM:
354 relHoloMeroHypo(ri.getSenses(), Relation.REL_SUBSTANCE_HOLONYM,
355 " SUBSTANCE OF: ");
356 break;
357 case Relation.REL_SUBSTANCE_MERONYM:
358 relHoloMeroHypo(ri.getSenses(), Relation.REL_SUBSTANCE_MERONYM, "HAS SUBSTANCE: ");
359 break;
360 case Relation.REL_VERB_GROUP:
361 relAtributeSimilarTo(ri.getSenses(), Relation.REL_VERB_GROUP, "=> ");
362 break;
363 case SENTANCE_FAMES:
364 sentanceFrames(ri.getSenses());
365 break;
366 }
367 }
368
369 private void relHypernym(java.util.List senses){
370 StringBuffer display = new StringBuffer("");
371 for (int i = 0; i<senses.size(); i++){
372 display.append("\n");
374 display.append("Sense ");
375 display.append(i+1);
376 display.append("\n");
377
378 WordSense currSense = (WordSense) senses.get(i);
379 Synset currSynset = currSense.getSynset();
380 recursiveHypernym(currSynset, display, " =>");
381 }
382
383 resultPane.setText(display.toString());
384 }
385
386 private void recursiveHypernym(Synset synset, StringBuffer display, String prefix){
387 java.util.List words = synset.getWordSenses();
388 String wordsString = getWords(words);
389
390 display.append(prefix);
391 display.append(" ");
392 display.append(wordsString);
393 display.append(" -- ");
394 display.append(synset.getGloss());
395 display.append("\n");
396
397 java.util.List hList = null;
398 try {
399 hList = synset.getSemanticRelations(Relation.REL_HYPERNYM);
400 } catch (Exception e){
401 e.printStackTrace();
402 }
403 if (hList!=null && hList.size()>0){
404 SemanticRelation rel = (SemanticRelation) hList.get(0);
405 prefix = " " + prefix;
406 recursiveHypernym(rel.getTarget(), display, prefix);
407 }
408 }
409
410
411 private void relHoloMeroHypo(java.util.List senses, int relationType,
412 String relRefString){
413 StringBuffer display = new StringBuffer("");
414 for (int i = 0; i<senses.size(); i++){
415 WordSense currSense = (WordSense) senses.get(i);
416 Synset currSynset = currSense.getSynset();
417 try {
418 if (currSynset.getSemanticRelations(relationType).size()>0){
419 display.append("\n");
421 display.append("Sense ");
422 display.append(i+1);
423 display.append("\n");
424 recursiveHoloMeroHypo(currSynset, display, " ", false,
425 relationType, relRefString);
426 }
427 } catch (Exception e){
428 e.printStackTrace();
429 }
430 }
431
432 resultPane.setText(display.toString());
433 }
434
435 private void recursiveHoloMeroHypo(Synset synset, StringBuffer display,
436 String prefix, boolean symbPrefix,
437 int relationType, String relRefString){
438
439 java.util.List words = synset.getWordSenses();
440 String wordsString = getWords(words);
441
442 display.append(prefix);
443 if (symbPrefix) {
444 display.append(relRefString);
445 }
446 display.append(wordsString);
447 display.append(" -- ");
448 display.append(synset.getGloss());
449 display.append("\n");
450
451 java.util.List holoList = null;
452 try {
453 holoList = synset.getSemanticRelations(relationType);
454 } catch (Exception e){
455 e.printStackTrace();
456 }
457 if (holoList!=null && holoList.size()>0){
458 for (int i = 0; i<holoList.size(); i++){
459 SemanticRelation rel = (SemanticRelation) holoList.get(i);
460 prefix = " " + prefix;
461 recursiveHoloMeroHypo(rel.getTarget(), display, prefix, true,
462 relationType, relRefString);
463 prefix = prefix.substring(4, prefix.length());
464 }
465 }
466 }
467
468 private void relAntonymSeeAlso(java.util.List senses,
469 int relType, String relRefString){
470 StringBuffer display = new StringBuffer("");
471 boolean semantic_see_also = true;
472 for (int i = 0; i<senses.size(); i++){
473 WordSense currSense = (WordSense) senses.get(i);
474 Synset currSynset = currSense.getSynset();
475 try {
476 java.util.List antonyms = currSense.getLexicalRelations(relType);
477 if (antonyms!=null && antonyms.size()>0){
478 semantic_see_also = false;
479 display.append("\n");
481 display.append("Sense ");
482 display.append(i+1);
483 display.append("\n ");
484 display.append(getWords(currSynset.getWordSenses()));
485 display.append(" -- ");
486 display.append(currSynset.getGloss());
487 display.append("\n");
488 for (int j=0; j<antonyms.size(); j++){
489 LexicalRelation rel = (LexicalRelation) antonyms.get(j);
490 WordSense word = rel.getTarget();
491 display.append(" ");
492 display.append(relRefString);
493 display.append(word.getWord().getLemma());
494 display.append(" -- ");
495 display.append(word.getSynset().getGloss());
496 display.append("\n");
497 }
498 display.append("\n");
499 }
500 } catch (Exception e){
501 e.printStackTrace();
502 }
503 }
504
505 resultPane.setText(display.toString());
506 if (semantic_see_also){
507 relAtributeSimilarTo(senses, Relation.REL_SEE_ALSO,"=> ");
508 }
509 }
510
511 private void relAtributeSimilarTo(java.util.List senses, int releationType,
512 String relRefString){
513 StringBuffer display = new StringBuffer("");
514 for (int i = 0; i<senses.size(); i++){
515 WordSense currSense = (WordSense) senses.get(i);
516 Synset currSynset = currSense.getSynset();
517 try {
518 java.util.List atributes = currSynset.getSemanticRelations(releationType);
519 if (atributes!=null && atributes.size()>0){
520 display.append("\n");
522 display.append("Sense ");
523 display.append(i+1);
524 display.append("\n ");
525 display.append(getWords(currSynset.getWordSenses()));
526 display.append(" -- ");
527 display.append(currSynset.getGloss());
528 display.append("\n");
529 for (int j=0; j<atributes.size(); j++){
530 SemanticRelation rel = (SemanticRelation) atributes.get(j);
531 Synset synset = rel.getTarget();
532 display.append(" ");
533 display.append(relRefString);
534 display.append(getWords(synset.getWordSenses()));
535
536 display.append(" -- ");
537 display.append(synset.getGloss());
538 display.append("\n");
539 }
540 display.append("\n");
541 }
542 } catch (Exception e){
543 e.printStackTrace();
544 }
545 }
546
547 resultPane.setText(display.toString());
548 }
549
550
551 private String getWords(java.util.List words){
552 StringBuffer wordsString = new StringBuffer("");
553 for (int j = 0; j<words.size(); j++){
554 WordSense word = (WordSense) words.get(j);
555 wordsString.append(word.getWord().getLemma().replace('_',' '));
556 if (j<(words.size()-1)){
557 wordsString.append(", ");
558 }
559 }
560 return wordsString.toString();
561 }
562
563 private void sentanceFrames(java.util.List senses){
564 StringBuffer display = new StringBuffer("");
565 for (int i=0; i<senses.size(); i++) {
566 WordSense currSense = (WordSense) senses.get(i);
567 Synset currSynset = currSense.getSynset();
568 Verb currVerb = (Verb) currSense;
569 java.util.List frames = currVerb.getVerbFrames();
570
571 display.append("\nSense ");
572 display.append(i+1);
573 display.append("\n ");
574 display.append(getWords(currSynset.getWordSenses()));
575 display.append(" -- ");
576 display.append(currSynset.getGloss());
577 display.append("\n");
578
579 for (int j=0; j<frames.size(); j++){
580 display.append(" *> ");
581 display.append(((VerbFrame) frames.get(j)).getFrame());
582 display.append("\n");
583 }
584 }
585 resultPane.setText(display.toString());
586 }
587
588
589 public String getLabel(Relation r){
590
591 String result = "";
592 switch (r.getType()){
593 case Relation.REL_ANTONYM:
594 result = "Antonym";
595 break;
596 case Relation.REL_ATTRIBUTE:
597 result = "Attribute";
598 break;
599 case Relation.REL_CAUSE:
600 result = "Cause";
601 break;
602 case Relation.REL_DERIVED_FROM_ADJECTIVE:
603 result = "Derived From Adjective";
604 break;
605 case Relation.REL_ENTAILMENT:
606 result = "Entailment";
607 break;
608 case Relation.REL_HYPERNYM:
609 result = "Hypernym";
610 break;
611 case Relation.REL_HYPONYM:
612 result = "Hyponym";
613 break;
614 case Relation.REL_MEMBER_HOLONYM:
615 result = "Member Holonym";
616 break;
617 case Relation.REL_MEMBER_MERONYM:
618 result = "Member Meronym";
619 break;
620 case Relation.REL_PARTICIPLE_OF_VERB:
621 result = "Participle Of Verb";
622 break;
623 case Relation.REL_PART_HOLONYM:
624 result = "Holonym";
625 break;
626 case Relation.REL_PART_MERONYM:
627 result = "Meronym";
628 break;
629 case Relation.REL_PERTAINYM:
630 result = "Pertainym";
631 break;
632 case Relation.REL_SEE_ALSO:
633 result = "See Also";
634 break;
635 case Relation.REL_SIMILAR_TO:
636 result = "Similar To";
637 break;
638 case Relation.REL_SUBSTANCE_HOLONYM:
639 result = "Substance Holonym";
640 break;
641 case Relation.REL_SUBSTANCE_MERONYM:
642 result = "Substance Meronym";
643 break;
644 case Relation.REL_VERB_GROUP:
645 result = "Verb Group";
646 break;
647 }
648 return result;
649 }
650
651 public String getDescription(int rel){
652
653 String result = "";
654 switch (rel){
655 case Relation.REL_ANTONYM:
656 result = "Antonyms:";
657 break;
658 case Relation.REL_ATTRIBUTE:
659 result = "Attributes:";
660 break;
661 case Relation.REL_CAUSE:
662 result = "Cause:";
663 break;
664 case Relation.REL_DERIVED_FROM_ADJECTIVE:
665 result = "Derived From Adjective:";
666 break;
667 case Relation.REL_ENTAILMENT:
668 result = "Entailments:";
669 break;
670 case Relation.REL_HYPERNYM:
671 result = "Hypernyms:";
672 break;
673 case Relation.REL_HYPONYM:
674 result = "Hyponyms:";
675 break;
676 case Relation.REL_MEMBER_HOLONYM:
677 result = "Member Holonyms:";
678 break;
679 case Relation.REL_MEMBER_MERONYM:
680 result = "Member Meronyms:";
681 break;
682 case Relation.REL_PARTICIPLE_OF_VERB:
683 result = "Participle Of Verb:";
684 break;
685 case Relation.REL_PART_HOLONYM:
686 result = "Holonyms:";
687 break;
688 case Relation.REL_PART_MERONYM:
689 result = "Meronyms:";
690 break;
691 case Relation.REL_PERTAINYM:
692 result = "Pertainyms:";
693 break;
694 case Relation.REL_SEE_ALSO:
695 result = "See Also:";
696 break;
697 case Relation.REL_SIMILAR_TO:
698 result = "Similar To:";
699 break;
700 case Relation.REL_SUBSTANCE_HOLONYM:
701 result = "Substance Holonyms:";
702 break;
703 case Relation.REL_SUBSTANCE_MERONYM:
704 result = "Substance Meronyms:";
705 break;
706 case Relation.REL_VERB_GROUP:
707 result = "Verb Group:";
708 break;
709 }
710 return result;
711 }
712
713
714
720 public void setTarget(Object target){
721
722 if (false == target instanceof WordNet) {
723 throw new IllegalArgumentException();
724 }
725
726 this.wnMain = (WordNet)target;
727 }
728
729 private class RelationItem extends JMenuItem{
730
731 int relType;
732 java.util.List senses;
733
734 public RelationItem(String name, int type, java.util.List sen) {
735 super(name);
736 this.addActionListener(WordNetViewer.this);
737 relType = type;
738 senses = sen;
739 setName(name);
740 }
741
742 public int getRelationType() {
743 return relType;
744 }
745
746 public java.util.List getSenses(){
747 return senses;
748 }
749
750 }
751
752 }