View Javadoc

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      // Everything about the request
17      private JPanel panelRequest;
18      private Jome jomeRequest;
19  
20      // Everything about the result
21      private JPanel panelResult;
22      private Jome jomeResult;
23      
24      // The listeners
25      private Vector listeners = new Vector();
26  
27      /***
28      * The constructor.
29      */
30  	public PanelJomes() {
31  	    super();
32          setBackground(Color.white);
33          
34  	    // On met un BorderLayout.
35  	    // La zone "North" contiendra la requÍte
36  	    // La zone "Center" contiendra le rÈsultat de la requÍte.
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  		// La partie requÍte
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  		// La partie rÈsultat
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  	public Dimension getPreferredSize() {
84  	    return new Dimension(150, 100);
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  	// La partie requÍte de la chose.
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 	// La partie rÈsultat de la chose.
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 }