/*
* File : InformationScreen.java
* Created : 22-dec-2000 13:04
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.activities.panels;
import edu.xtec.jclic.*;
import edu.xtec.jclic.automation.ActiveBagContentKit;
import edu.xtec.jclic.boxes.*;
import edu.xtec.jclic.media.EventSounds;
import edu.xtec.jclic.project.JClicProject;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.08.28
*/
public class InformationScreen extends Activity implements ActiveBagContentKit.Compatible {
/** Creates new InformationScreen */
public InformationScreen(JClicProject project) {
super(project);
abc=new ActiveBagContent[1];
includeInReports=false;
reportActions=false;
}
@Override
public void initNew(){
super.initNew();
abc[0]=ActiveBagContent.initNew(1, 1, 'A');
}
@Override
public org.jdom.Element getJDomElement(){
if(abc[0]==null) return null;
org.jdom.Element e=super.getJDomElement();
e.addContent(abc[0].getJDomElement());
return e;
}
@Override
public void setProperties(org.jdom.Element e, Object aux) throws Exception{
super.setProperties(e, aux);
org.jdom.Element child=e.getChild(ActiveBagContent.ELEMENT_NAME);
if(child!=null){
abc[0]=ActiveBagContent.getActiveBagContent(child, project.mediaBag);
}
if(abc[0]==null)
throw new IllegalArgumentException("InformationScreen without contents");
}
@Override
public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{
super.setProperties(c3a);
abc[0]=c3a.createActiveBagContent(0);
abc[0].setBoxBase(c3a.getBoxBase(0));
bTimeCounter=bScoreCounter=bActionsCounter=false;
includeInReports=false;
reportActions=false;
}
public int getMinNumActions(){
return 0;
}
@Override
public boolean hasRandom(){
return true;
}
public Activity.Panel getActivityPanel(PlayStation ps) {
return new Panel(ps);
}
class Panel extends Activity.Panel {
ActiveBoxBag bg;
protected Panel(PlayStation ps){
super(ps);
bg=null;
}
public void clear(){
if(bg!=null){
bg.end();
bg=null;
}
}
@Override
public void buildVisualComponents() throws Exception{
if(firstRun) super.buildVisualComponents();
clear();
if(abc[0]!=null){
if(acp!=null)
acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, false), ps);
bg=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]);
bg.setContent(abc[0]);
bg.setVisible(true);
invalidate();
}
}
@Override
public void initActivity() throws Exception{
super.initActivity();
if(!firstRun) buildVisualComponents();
else firstRun=false;
setAndPlayMsg(MAIN, EventSounds.START);
//ps.setMsg(messages[MAIN]);
if(bg!=null){
//ps.playMsg();
//if(messages[MAIN]==null || messages[MAIN].mediaContent==null)
// playEvent(EventSounds.START);
playing=true;
}
}
public void render(Graphics2D g2, Rectangle dirtyRegion) {
if(bg!=null)
bg.update(g2, dirtyRegion, this);
}
public Dimension setDimension(Dimension preferredMaxSize){
if(getSize().equals(preferredMaxSize)) return preferredMaxSize;
return BoxBag.layoutSingle(preferredMaxSize, bg, margin);
}
@Override
public void processMouse(MouseEvent e){
ActiveBox bx;
if(playing && e.getID()==MouseEvent.MOUSE_PRESSED){
ps.stopMedia(1);
if((bx=bg.findActiveBox(e.getPoint()))!=null){
if(!bx.playMedia(ps))
playEvent(EventSounds.CLICK);
}
}
}
}
}