1 package fr.ove.openmath.mathematica;
2
3 import javax.swing.*;
4 import javax.swing.event.*;
5 import java.awt.*;
6 import java.awt.event.*;
7 import java.io.*;
8 import java.util.Vector;
9 import fr.ove.openmath.jome.Jome;
10 import fr.ove.openmath.mathematica.*;
11 import fr.ove.openmath.mathematica.events.*;
12
13 public class PanelJomes extends JPanel {
14 private BracketBullet bullet;
15
16
17 private JPanel panelRequest;
18 private Jome jomeRequest;
19
20
21 private JPanel panelResult;
22 private Jome jomeResult;
23
24
25 private Vector listeners = new Vector();
26
27 /***
28 * The constructor.
29 */
30 public PanelJomes() {
31 super();
32 setBackground(Color.white);
33
34
35
36
37 setLayout(new BorderLayout(0, 0));
38
39 JPanel mainPanel = new JPanel();
40 mainPanel.setLayout(new BorderLayout(0, 0));
41 add("Center", mainPanel);
42
43
44 panelRequest = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 4));
45 panelRequest.setBackground(Color.white);
46
47 jomeRequest = new Jome();
48 jomeRequest.setDrawBounds(false);
49 jomeRequest.setFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 18));
50 jomeRequest.setShiftX(0);
51 jomeRequest.setShiftY(0);
52 panelRequest.add(jomeRequest);
53
54
55 panelResult = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
56 panelResult.setBackground(Color.white);
57
58 jomeResult = new Jome();
59 jomeResult.setDrawBounds(false);
60 jomeResult.setShiftX(0);
61 jomeResult.setShiftY(0);
62 jomeResult.setFont(new java.awt.Font("Times New Roman",java.awt.Font.PLAIN,12));
63 panelResult.add(jomeResult);
64
65 mainPanel.add("North", panelRequest);
66 mainPanel.add("Center", panelResult);
67
68 bullet = new BracketBullet(this);
69 add("West", bullet);
70
71 addMouseListener(
72 new MouseAdapter() {
73 public void mousePressed(MouseEvent event) {
74 PanelJomesEvent panelJomesEvent = new PanelJomesEvent(PanelJomes.this);
75 panelJomesEvent.setAction(PanelJomesEvent.UPDATE_SELECTION, null);
76 firePanelJomesEvent(panelJomesEvent);
77 }
78 }
79 );
80 }
81
82
83
84
85
86
87
88 public boolean isSelected() {
89 return bullet.isSelected();
90 }
91
92 public void setSelected(boolean isSelected) {
93 bullet.setSelected(isSelected);
94 }
95
96
97
98 /***
99 * Sets the request. (under its linear form)
100 * @param request the request.
101 */
102 public void setLinearRequest(String request) {
103 if (!request.equals(jomeRequest.getLinear())) {
104 jomeRequest.setLinear(request);
105 panelRequest.validate();
106
107 PanelJomesEvent event = new PanelJomesEvent(this);
108 event.setAction(PanelJomesEvent.UPDATE_REQUEST, null);
109 firePanelJomesEvent(event);
110 }
111 }
112
113 /***
114 * Returns the request. (under its linear form)
115 */
116 public String getLinearRequest() {
117 return jomeRequest.getLinear();
118 }
119
120 /***
121 * Sets the request. (under its OpenMath form)
122 * @param request the request.
123 */
124 public void setOpenMathRequest(String request) {
125 jomeRequest.setOpenMath(request);
126 panelRequest.validate();
127
128 PanelJomesEvent event = new PanelJomesEvent(this);
129 event.setAction(PanelJomesEvent.UPDATE_REQUEST, null);
130 firePanelJomesEvent(event);
131 }
132
133 /***
134 * Returns the request. (under its OpenMath form)
135 */
136 public String getOpenMathRequest() {
137 return jomeRequest.getOpenMath();
138 }
139
140
141
142 /***
143 * Sets the result. (under its linear form)
144 * @param result the result.
145 */
146 public void setLinearResult(String result) {
147 jomeResult.setLinear(result);
148 panelResult.validate();
149
150 PanelJomesEvent event = new PanelJomesEvent(this);
151 event.setAction(PanelJomesEvent.UPDATE_RESULT, null);
152 firePanelJomesEvent(event);
153 }
154
155 /***
156 * Returns the result. (under its linear form)
157 */
158 public String getLinearResult() {
159 return jomeResult.getLinear();
160 }
161
162 public Jome getJomeResult() {
163 return jomeResult;
164 }
165
166 public Jome getJomeRequest() {
167 return jomeRequest;
168 }
169
170 /***
171 * Sets the result. (under its OpenMath form)
172 * @param result the result.
173 */
174 public void setOpenMathResult(String result) {
175 jomeResult.setOpenMath(result);
176 panelResult.validate();
177
178 PanelJomesEvent event = new PanelJomesEvent(this);
179 event.setAction(PanelJomesEvent.UPDATE_RESULT, null);
180 firePanelJomesEvent(event);
181 }
182
183 /***
184 * Returns the result. (under its OpenMath form)
185 */
186 public String getOpenMathResult() {
187 return jomeResult.getOpenMath();
188 }
189
190 /***
191 */
192 public void addPanelJomesListener(PanelJomesListener panelJomesListener) {
193 listeners.addElement(panelJomesListener);
194 }
195
196 /***
197 */
198 public void removePanelJomesListener(PanelJomesListener panelJomesListener) {
199 listeners.removeElement(panelJomesListener);
200 }
201
202 /***
203 */
204 public void removeAllPanelJomesListener() {
205 listeners.setSize(0);
206 }
207
208 /***
209 * Fires a PanelJomesEvent event to registered listeners.
210 * @param panelJomesEvent event encapsulating relevant information.
211 */
212 public void firePanelJomesEvent(PanelJomesEvent panelJomesEvent) {
213 for (int i = 0; i < listeners.size(); i++)
214 ((PanelJomesListener)listeners.elementAt(i)).consumePanelJomesEvent(panelJomesEvent);
215 }
216 }