001    //Copyright (C) 2006  A. Nelson
002    //
003    //This program is free software; you can redistribute it and/or
004    //modify it under the terms of the GNU General Public License
005    //as published by the Free Software Foundation; either version 2
006    //of the License, or (at your option) any later version.
007    //
008    //This program is distributed in the hope that it will be useful,
009    //but WITHOUT ANY WARRANTY; without even the implied warranty of
010    //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
011    //GNU General Public License for more details.
012    //
013    //You should have received a copy of the GNU General Public License
014    //along with this program; if not, write to the Free Software
015    //Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
016    
017    package pluginCore;
018    
019    /**
020     * The base object for communication between plugins.
021     */
022    public class Message {
023    
024            /**
025             * Communication protocol A.
026             */
027            public static final int PROTOCOL_A = 1344;
028    
029            /**
030             * Communication protocol B.
031             */
032            public static final int PROTOCOL_B = 1345;
033    
034            /**
035             * Communication protocol C.
036             */
037            public static final int PROTOCOL_C = 1346;
038    
039            /**
040             * The id of the plug-in that sent this message.
041             */
042            public int sourceID;
043    
044            /**
045             * The id of the plug-in that is to receive this message.
046             */
047            public int destID;
048    
049            /**
050             * The protocol that is being used for this communication.
051             */
052            public int protocol;
053    
054            /**
055             * The integer value of a message in the protocol defined by 'protocol'.
056             */
057            public int intMessage;
058    
059            /**
060             * An object that is to be sent to another plug-in.
061             */
062            public Object anObject;
063    
064            /**
065             * Used when plug-ins wish to store linked lists of messages.
066             */
067            public Message next;
068    
069            /**
070             * Blank constructor, ever value is set to 0.
071             */
072            public Message() {
073    
074                    sourceID = 0;
075                    destID = 0;
076                    protocol = 0;
077                    intMessage = 0;
078                    anObject = null;
079            }
080    
081            /**
082             * Constructor for regular Message.
083             * 
084             * @param srcID
085             *            The id of the originating plug-in.
086             * @param deID
087             *            The id of the destination plug-in.
088             * @param proto
089             *            The protocol with which this message is communicating.
090             * @param msg
091             *            The integer value of the message.
092             */
093            public Message(int srcID, int deID, int proto, int msg) {
094    
095                    sourceID = srcID;
096                    destID = deID;
097                    protocol = proto;
098                    intMessage = msg;
099                    anObject = null;
100            }
101    
102            /**
103             * Constructor for regular Message with object parameters.
104             * 
105             * @param srcID
106             *            The id of the originating plug-in.
107             * @param destID
108             *            The id of the destination plug-in.
109             * @param proto
110             *            The protocol with which this message is communicating.
111             * @param msg
112             *            The integer value of the message.
113             * @param par
114             *            The Object payload of the message.
115             */
116            public Message(int srcID, int destID, int proto, int msg, Object par) {
117    
118                    sourceID = srcID;
119                    this.destID = destID;
120                    protocol = proto;
121                    intMessage = msg;
122                    anObject = par;
123            }
124    
125            /**
126             * Sets the destination plug-in Id.
127             * 
128             * @param newDest
129             *            The destination plug-in Id.
130             */
131            public void setDest(int newDest) {
132    
133                    destID = newDest;
134            }
135    
136            /**
137             * Gets the destination plug-in Id.
138             * 
139             * @return The destination plug-in Id.
140             */
141            public int getDest() {
142    
143                    return destID;
144            }
145    
146            /**
147             * Sets the source plug-in Id.
148             * 
149             * @param newSource
150             *            The source plug-in Id.
151             */
152            public void setSource(int newSource) {
153    
154                    sourceID = newSource;
155            }
156    
157            /**
158             * Gets the source plug-in Id.
159             * 
160             * @return The source plug-in Id.
161             */
162            public int getSource() {
163    
164                    return sourceID;
165            }
166    
167            /**
168             * Sets the Object array that will be carried by the Message.
169             * 
170             * @param objIn
171             *            An array of objects to be sent with the Message.
172             */
173            public void setAnObject(Object objIn) {
174    
175                    anObject = objIn;
176            }
177    
178            /**
179             * Gets the Object that was carried by the Message.
180             * 
181             * @return An object sent with the Message or null.
182             */
183            public Object getAnObject() {
184    
185                    return anObject;
186            }
187    
188            /**
189             * Sets the integer message.
190             * 
191             * @param msgIn
192             *            The integer message.
193             */
194            public void setIntMessage(int msgIn) {
195    
196                    intMessage = msgIn;
197            }
198    
199            /**
200             * Gets the integer message.
201             * 
202             * @return The integer message.
203             */
204            public int getIntMessage() {
205    
206                    return intMessage;
207            }
208    
209            /**
210             * Sets the message protocol.
211             * 
212             * @param proto
213             *            The message protocol.
214             */
215            public void setProtocol(int proto) {
216    
217                    protocol = proto;
218            }
219    
220            /**
221             * Gets the message protocol.
222             * 
223             * @return The message protocol.
224             */
225            public int getProtocol() {
226    
227                    return protocol;
228            }
229    
230            /**
231             * Sets the next Message.
232             * 
233             * @param messIn
234             *            The next message in the linked list.
235             */
236            public void setNextMessage(Message messIn) {
237    
238                    next = messIn;
239            }
240    
241            /**
242             * Gets the next Message.
243             * 
244             * @return The next message in the linked list.
245             */
246            public Message getNextMessage() {
247    
248                    return next;
249            }
250    
251            /**
252             * Returns a String representation of this object.
253             */
254            public String toString() {
255    
256                    String myString;
257    
258                    myString = "Source id = " + sourceID;
259                    myString += "\nDest id = " + destID;
260                    if( anObject != null ) {
261                            
262                            myString += anObject.toString();
263                    }
264                    myString += "\n";
265                    return myString;
266            }
267    }