001 /* PAVLOV -- Multiple Choice Study System
002 * Copyright (C) 2000 - 2004 T.J. Willis
003 *
004 * This program is free software; you can redistribute it and/or
005 * modify it under the terms of the GNU General Public License
006 * as published by the Free Software Foundation; either version 2
007 * of the License, or (at your option) any later version.
008 *
009 * This program is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012 * GNU General Public License for more details.
013 *
014 * You should have received a copy of the GNU General Public License
015 * along with this program; if not, write to the Free Software
016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
017 *
018 * $Header: /cvsroot/pavlov/net/sourceforge/pavlov/pluglets/feedback/velocity/VelocityPluglet.java,v 1.2 2004/05/13 06:07:08 tj_willis Exp $
019 */
020 package net.sourceforge.pavlov.pluglets.feedback.velocity;
021
022 import java.awt.event.*;
023 import java.io.File;
024 import java.net.URL;
025 import javax.swing.*;
026 import net.sourceforge.pavlov.event.*;
027 import net.sourceforge.pavlov.pluglets.*;
028 import net.sourceforge.sillyview.*;
029
030
031 /**
032 * A base class for Pavlov feedback pluglets.
033 *
034 * @author <a href="mailto:"></a>
035 * @version 1.0
036 */
037 public class VelocityPluglet
038 extends JFrameView
039 implements ActionListener, AnswerListener, Pluglet
040 {
041 public static final String ANSWER_EVENT = "ANSWER_EVENT";
042 public static final String QUIZ_DATA = "QUIZ_DATA";
043 private String name;
044 private URL baseURL;
045
046 /**
047 * Creates a new <code>VelocityPluglet</code> instance.
048 *
049 */
050 public VelocityPluglet(VelocityModel mod,File directory)
051 throws Exception
052 {
053 super(mod, JPanelView.JEDITORPANE);
054 // confirm directory is a directory, readable
055 name = directory.getName();
056 baseURL = directory.toURL();
057 setToken("BASE_URL",baseURL);
058 setTitle(getName());
059 pack();
060 setDefaultLookAndFeelDecorated(true);
061 init();
062 }
063
064 public String getBaseURL() { return baseURL.toString(); }
065
066 public void setName(String name) {
067 this.name = name;
068 }
069
070 public String getName() { return name; }
071
072 // FIXME: where to get descriptions?
073 public String getDescription() { return "Velocity Pluglet"; }
074
075 /**
076 * Called when the pluglet is loaded.
077 *
078 */
079 public void init(){};
080 /**
081 * Called when the pluglet is opened/started by the user.
082 *
083 */
084 public void start(){};
085 /**
086 * Called when the pluglet is closed/stopped by the user.
087 *
088 */
089 public void stop(){};
090
091 /**
092 * Describe <code>actionPerformed</code> method here.
093 *
094 * @param e an <code>ActionEvent</code> value
095 */
096 public void actionPerformed(ActionEvent e)
097 {
098 JCheckBoxMenuItem mi = (JCheckBoxMenuItem)e.getSource();
099 if(mi.getState())
100 {
101 start();
102 setVisible(true);
103 }
104 else
105 {
106 setVisible(false);
107 stop();
108 }
109 }
110
111 /**
112 * Called when the user answers a question.
113 *
114 * @param e an <code>AnswerEvent</code> value
115 */
116 public void answerEvent(AnswerEvent e){
117 //setToken(ANSWER_EVENT,e);
118 //setToken(QUIZ_DATA,e.getQuizData());
119 //setToken("right",e.isCorrect());
120
121 }
122
123 }