1
2 package hep.wired.heprep.interaction;
3
4 import java.awt.*;
5 import java.awt.event.*;
6 import java.beans.*;
7 import java.util.*;
8 import java.util.List;
9 import javax.swing.*;
10 import javax.swing.border.*;
11 import javax.swing.event.*;
12 import javax.swing.tree.*;
13
14 import org.freehep.application.mdi.PageContext;
15 import org.freehep.swing.layout.TableLayout;
16
17 import hep.graphics.heprep.HepRep;
18 import hep.graphics.heprep.HepRepType;
19 import hep.graphics.heprep.HepRepTypeTree;
20
21 import hep.wired.image.WiredBaseImage;
22 import hep.wired.plot.WiredPlot;
23 import hep.wired.plugin.WiredPage;
24 import hep.wired.services.GraphicsPanel;
25 import hep.wired.services.InteractionHandler;
26 import hep.wired.services.RecordPlot;
27
28 import hep.wired.heprep.plugin.WiredPlugin;
29 import hep.wired.heprep.graphicspanel.ControlPanel;
30 import hep.wired.heprep.graphicspanel.HepRepPanel;
31 import hep.wired.heprep.util.WiredHepRepUtil;
32
33 /***
34 * Interaction Panel.
35 *
36 * @author Mark Donszelmann
37 * @version $Id: InteractionPanel.java 2093 2005-07-22 21:40:49Z duns $
38 */
39 public class InteractionPanel extends ControlPanel {
40
41 private JPanel interaction;
42
43 private ButtonGroup group;
44 private Map
45 private Map
46 private JToggleButton deselect = new JToggleButton("deselect");
47
48 public InteractionPanel() {
49 super("Interaction", "Select Interaction and Visibility", WiredBaseImage.getIcon("Scale%w", 16), null);
50
51 setLayout(new TableLayout());
52
53 interaction = new JPanel();
54 interaction.setLayout(new TableLayout());
55 interaction.setBorder(new TitledBorder(new EtchedBorder(), "Interaction"));
56 add(interaction, "0 * wlt");
57 add(WiredPlugin.getPlugin().getTreePanel(), "0 * whlt");
58
59 group = new ButtonGroup();
60 group.add(deselect);
61 buttonsByName = new HashMap();
62 buttonsByHandler = new HashMap();
63 }
64
65 private JToggleButton getButton(final InteractionHandler h, boolean selected) {
66 final JToggleButton b = new JToggleButton(h.getIcon(16), selected);
67 b.setToolTipText(h.getDescription());
68 b.addActionListener(new ActionListener() {
69 public void actionPerformed(ActionEvent event) {
70 WiredPlugin.getPlugin().setInteractionHandler(h);
71 }
72 });
73 group.add(b);
74 buttonsByName.put(h.getName(), b);
75 buttonsByHandler.put(h, b);
76 return b;
77 }
78
79 public void addInteraction(InteractionHandler h, boolean selected) {
80 if (h != null) {
81 interaction.add(getButton(h, selected), "* * lt");
82 } else {
83 interaction.add(new JLabel(), "* * ltW");
84 }
85 }
86
87 public void setInteractionHandler(InteractionHandler h) {
88 super.setInteractionHandler(h);
89 if (h != null) {
90 JToggleButton b = (JToggleButton)buttonsByName.get(h.getName());
91 if (b != null) b.setSelected(true);
92 }
93 }
94
95 public void update() {
96 PageContext context = WiredPlugin.getPlugin().getCurrentPageContext();
97 if (context == null) return;
98
99 WiredPage page = (WiredPage)context.getPage();
100 RecordPlot plot = page.getRecordPlot();
101
102 for (Iterator i=buttonsByHandler.keySet().iterator(); i.hasNext(); ) {
103 InteractionHandler handler = (InteractionHandler)i.next();
104 JToggleButton button = (JToggleButton)buttonsByHandler.get(handler);
105 button.setEnabled(plot.supports(handler));
106 }
107
108
109 if (!group.getSelection().isEnabled()) deselect.setSelected(true);
110 }
111 }