View Javadoc

1   package org.catacomb.graph.gui;
2   
3   import org.catacomb.be.Position;
4   import org.catacomb.interlish.structure.ContextMenu;
5   import org.catacomb.interlish.structure.SelectionActor;
6   import org.catacomb.report.E;
7   
8   import javax.swing.JPopupMenu;
9   import javax.swing.JMenuItem;
10  
11  import java.awt.event.ActionEvent;
12  import java.awt.event.ActionListener;
13  
14  
15  public class GraphContextMenu implements ContextMenu {
16  
17      WorldCanvas canvas;
18  
19      JPopupMenu pMenu;
20  
21      SelectionActor handler;
22  
23      int nel = 0;
24  
25      public GraphContextMenu(WorldCanvas wc) {
26          canvas = wc;
27          pMenu = new JPopupMenu();
28      }
29  
30  
31      public void itemSelected(String s) {
32          if (handler == null) {
33              E.warning("no handler for event " + s);
34  
35          } else {
36              handler.selectionAction(this, s);
37          }
38      }
39  
40  
41      public void setContext(String[] options, SelectionActor h) {
42          pMenu.removeAll();
43          nel = 0;
44          handler = h;
45          for (String s : options) {
46              if (s.equals("---")) {
47                  pMenu.addSeparator();
48              } else {
49                  JMenuItem jmi = new JMenuItem(s);
50                  jmi.addActionListener(new GCMHandler(this, s));
51                  pMenu.add(jmi);
52                  nel++;
53              }
54          }
55      }
56  
57  
58      public void showAt(Position pos) {
59          if (nel > 0) {
60              int[] ixy = canvas.getIntPosition(pos);
61              pMenu.show(canvas, ixy[0], ixy[1]);
62          }
63      }
64  
65  
66  
67  
68      class GCMHandler implements ActionListener {
69          GraphContextMenu gcm;
70          String svalue;
71          GCMHandler(GraphContextMenu v, String s) {
72              gcm = v;
73              svalue = s;
74          }
75  
76          public void actionPerformed(ActionEvent e) {
77              gcm.itemSelected(svalue);
78  
79          }
80  
81  
82      }
83  
84  
85  }