Differences between revisions 34 and 39 (spanning 5 versions)
Revision 34 as of 2005-04-08 11:44:32
Size: 14841
Editor: dyn-174176
Comment:
Revision 39 as of 2008-10-03 20:19:33
Size: 2488
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
[[Navigation(siblings, 1)]] <<Navigation(siblings, 1)>>
Line 5: Line 5:
[[TableOfContents]] <<TableOfContents>>
Line 11: Line 11:
|| side activities / detailled planning || coming up || coming up || coming up || coming up ||
Line 14: Line 13:
|| main activity || working out one idea to a final concept || coming up || coming up || coming up ||
|| side activities / detailled planning || coming up || coming up || coming up || coming up ||
|| main activity || working out one idea to a final concept || hmmmm || defining criteria for concept / getting acquainted with electronics and JAVA || coming up ||

== planning week 16 ==

Two groups are working parrallel. LaurieScholten and JanvanderAsdonk are working on the soft- and hardware (RutgerMenges can help). LilianAdmiraal and RutgerMenges are working on finishing the concept, formulating the requirements, and the link between color and emotion (the object might show emotion with color)

|| / || Monday || Tuesday || Wednesday || Thursday || Friday ||
|| JanvanderAsdonk and LaurieScholten |||||||| Getting acquainted with the soft- and hardware. Talk with experts about what is possible and how it should be done || '''Deadline''' A simple prototype with in- and output controlled by microcontrollers and JAVA ||
|| LilianAdmiraal and RutgerMenges |||| '''Deadline''' Cearly formulate the Requirements for the concept. Clearly formulate the link between emotions and colors. |||| Work out the final concept in detail || '''deadline''' Worked out concept ||

After this week the concept is clear and JanvanderAsdonk and LaurieScholten know what they can do with the soft- and hardware. At that point we can make a plan to realize our concept in a working prototype
Line 26: Line 34:



= Workshops =

[[Anchor(javaworkshop)]]
== Java D workshop ==
=== Schedule ===
 * April 08, Friday, 9:30am-11:30am HG4.95
 * Topics
   * Distributed Media
   * ITML examples

==== itml example ====
{{{#!VimColor type=smil
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by HU, Jun (TU/e) -->
<itml>
 <head>
  <layout>
   <actor id="rutger" top="0" left="0" width="1024" height="768" fit="fill" address="localhost:7086"/>
  </layout>
 </head>
 <body>
 <par>
     <action id="coldid" src="file:/cold.tmp" actor="rutger" dur="5000s">
         <anchor onevent="coldid.warmest" href="#showgoogle" />
     </action>
 </par>
 <action id="showgoogle" src="http://www.google.com/intl/zh-CN/about.html" actor="rutger" />
 </body>
</itml>

}}}

==== BallListener ====
----
{{{#!java
package nl.tue.id.dps.swing;

/**
 * <p>Title: ITML</p>
 *
 * <p>Description: Distributed Media Extension to X-Smiles</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: ID, TU/e</p>
 *
 * @author HU, Jun
 * @version 1.0
 */
public interface BallListener {
  public void becomeWarm();
  public void becomeCold();
  public void becomeWarmer();
  public void becomeWarmest();
}

}}}

==== BallFrame ====
----
{{{#!java

package nl.tue.id.dps.swing;

import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.util.Vector;
import java.util.Iterator;

/**
 * <p>Title: ITML</p>
 *
 * <p>Description: Distributed Media Extension to X-Smiles</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: ID, TU/e</p>
 *
 * @author HU, Jun
 * @version 1.0
 */
public class BallFrame
    extends JFrame {
  TimeCounter counter = new TimeCounter();
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel ballPanel = new JPanel();
  Vector listeners = new Vector();

  public void addBallListener(BallListener listener){
    listeners.add(listener);
  }

  public void removeBallListener(BallListener listener){
    listeners.remove(listener);
  }

  public static void main(String arg[]){
    BallFrame ball = new BallFrame();
    ball.pack();
    ball.show();
    ball.cold();
  }

  public BallFrame() {
    try {
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
    counter.start();
  }

  private void jbInit() throws Exception {
    getContentPane().setLayout(borderLayout1);
    ballPanel.addMouseListener(new BallFrame_ballPanel_mouseAdapter(this));
    this.getContentPane().add(ballPanel, java.awt.BorderLayout.CENTER);
    ballPanel.setMinimumSize(new Dimension(640, 480));
    ballPanel.setPreferredSize(new Dimension(640, 480));
  }

  public void setBallColor(Color c){
    ballPanel.setBackground(c);
  }

  public void ballPanel_mousePressed(MouseEvent e) {
    counter.startCounting();

  }

  public void ballPanel_mouseReleased(MouseEvent e) {
    counter.stopCounting();
  }

  public void cold(){
    setBallColor(Color.blue);
    Iterator i = listeners.iterator();
    while(i.hasNext()){
      BallListener ballListener = (BallListener)i.next();
      ballListener.becomeCold();
    }
  }

  public void warm(){
    setBallColor(Color.yellow);
    Iterator i = listeners.iterator();
    while(i.hasNext()){
      BallListener ballListener = (BallListener)i.next();
      ballListener.becomeWarm();
    }
  }

  public void warmer(){
    setBallColor(Color.orange);
    Iterator i = listeners.iterator();
    while(i.hasNext()){
      BallListener ballListener = (BallListener)i.next();
      ballListener.becomeWarmer();
    }
  }

  public void warmest(){
    setBallColor(Color.red);
    Iterator i = listeners.iterator();
    while(i.hasNext()){
      BallListener ballListener = (BallListener)i.next();
      ballListener.becomeWarmest();
    }
  }

  class TimeCounter extends Thread {
  boolean counting = false;
  int n = 0;
  public void run(){
    while(true){
      if(counting){
        try {
          sleep(2000);
        }
        catch (InterruptedException ex1) {
        }
        n = n+1;
        if (n == 1){
          warm();
        }
        else if (n== 2){
          warmer();
        }
        else if (n==3){
          warmest();
        }
        else{
          n = 4;
        }

      }
      else{
        try {
          sleep(2000);
        }
        catch (InterruptedException ex1) {
        }
        n = n-1;
        if (n == 3){
          warmest();
        }
        else if (n== 2){
          warmer();
        }
        else if (n==1){
          warm();
        }
        else{
          n = 0;
          cold();
        }

      }
    }

  }
  public void startCounting(){
    counting = true;
  }
  public void stopCounting(){
    counting = false;
  }
}


}


class BallFrame_ballPanel_mouseAdapter
    extends MouseAdapter {
  private BallFrame adaptee;
  BallFrame_ballPanel_mouseAdapter(BallFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void mousePressed(MouseEvent e) {
    adaptee.ballPanel_mousePressed(e);
  }

  public void mouseReleased(MouseEvent e){
    adaptee.ballPanel_mouseReleased(e);
  }
}

}}}

==== TemperatureTimedPresentation ====
----
{{{#!java
package nl.tue.id.dps.swing;

import nl.tue.id.dps.TimedPresentation;
import java.util.Date;
import java.net.URL;
import nl.tue.id.dps.PresentationEvent;

/**
 * <p>Title: ITML</p>
 *
 * <p>Description: Distributed Media Extension to X-Smiles</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: ID, TU/e</p>
 *
 * @author HU, Jun
 * @version 1.0
 */
public class TemperatureTimedPresentation
    extends TimedPresentation implements BallListener {

  static BallFrame ball = new BallFrame();
  String temperature = "cold";

  public TemperatureTimedPresentation() {

  }

  protected void create(URL src) {
    temperature = removeExtension(getFileName(src));
    if(!ball.isVisible()){
      ball.pack();
      ball.cold();
      ball.show();
     }
  }

  protected void destroy() {
  }

  protected void pause() {
  }

  protected void start() {
    ball.addBallListener(this);

    if(temperature.equals("cold")){
      ball.cold();
    }
    else if(temperature.equals("warm")){
      ball.warm();
    }
    else if(temperature.equals("warmer")){
      ball.warmer();
    }
    else if(temperature.equals("warmest")){
      ball.warmest();
    }
  }

  protected void stop() {
    ball.removeBallListener(this);
  }

  protected boolean couldBePaused() {
    return false;
  }

  private String getFileName(final URL url) {
    final String file = url.getFile();
    final int last = file.lastIndexOf("/");
    if (last < 0) {
      return file;
    }
    return file.substring(last + 1);
  }

  private String removeExtension(final String filename) {
    final int index = filename.lastIndexOf('.');

    if ( -1 == index) {
      return filename;
    }
    else {
      return filename.substring(0, index);
    }
  }

  public void becomeWarm() {
    this.fireEvent(new PresentationEvent("temperature","warm"));
  }

  public void becomeCold() {
    this.fireEvent(new PresentationEvent("temperature","cold"));
  }

  public void becomeWarmer() {
    this.fireEvent(new PresentationEvent("temperature","warmer"));
  }

  public void becomeWarmest() {
    this.fireEvent(new PresentationEvent("temperature","warmest"));
  }

}
}}}

==== TPFactoryImpl ====

{{{#!java
package nl.tue.id.dps.swing;

import nl.tue.id.dps.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 *
 * @author not attributable
 * @created March 14, 2003
 * @version 1.0
 */
public class TPFactoryImpl
    extends TPFactoryBasicImpl {

  protected void setTPManifest() {
    addPresentation(new String[] {"temperature"},
                    TemperatureTimedPresentation.class,
                    new String[] {
      "tmp"
    });
    addPresentation(new String[] {"image", "img"},
                    ImageTimedPresentation.class,
                    new String[] {
      "jpg","gif","png"
    });
    addPresentation(new String[]{"jmfvideo", "video"},
                    VideoTimedPresentation.class,
                    new String[] {
      "avi", "mvr","mpg","mov","swf", "spl"
    });
    addPresentation(new String[]{"jmpaudio", "audio"},
                    AudioTimedPresentation.class,
                    new String[] {
      "aif", "aiff","avi","gsm","mid","mp2","mp3","mov","au","wav"
    });
    addPresentation(new String[]{"smil", "itml"},
                    ITMLTimedPresentation.class,
                    new String[] {
      "smi","smil","itm","itml"
    });
    addPresentation(new String[] {"html", "htm"},
                    HTMLTimedPresentation.class,
                    new String[] {
      "htm","html"
    });
    addPresentation(new String[] {"xul"},
                    ThinletTimedPresentation.class,
                    new String[] {
      "xul"
    });
    addPresentation(new String[] {"lirc"},
                    LIRCTimedPresentation.class,
                    new String[] {
      "lirc"
    });
    addPresentation(new String[] {"behavior"},
                    TonyTimedPresentation.class,
                    new String[] {
      "bhv"
    });

  }

}

}}}

== Java C workshop ==
=== Schedule ===
 * March 24, Thursday, 10:30am - 12:30pm, HG4.95
 * Topics
  * Distributed Media
   * ITML
   * An example: distributed presentations.
   * attachment:TOONS.zip

== Java Workshop ==

=== Schedule ===
 * March 17, Thursday, 13:30pm - 16:00pm, HG4.95
 * There will be no powerpoint slide shows, but a projector is necessary.
 * Everybody brings her/his computer to the workshop, with a network cable. We are going to do some hands-on programming.
 * Topics:
  * Object-oriented programming
  * Working with JBuilder - an IDE (integrated development environment)
   * Projects
   * packages
   * uml/refactory
   * help/documentation
   * debug
  * Distributed Media
   * ITML
   * An example: distributed presentations.

=== Preparation ===
 * Please install Borland JBuilder 2005. It is available as [http://w3.tue.nl/en/services/dienst_ict/organisatie/groepen/wins/campus_software/borland_jbuilder/ campus sofware].
 * Make sure your Java Media Framework properly installed.
 * [attachment:itml.zip ITML player source code + libraries]. Please download it, unzip it to anywhere on your harddisk.
  * It is indeed pretty big (80+M), becuase it includes all kinds of libraries, and some MPG movies. Don't worry, you may always remove it from your computer easily by removing entire itml0.91 directory with no harm.

[[Anchor(smilworkshop)]]
== SMIL Workshop ==
 * A introduction on SMIL (JunHu)
 * Hands-on practice: Let's make an interactive movie.
  * [http://www.helio.org/products/smil/tutorial/ SMIL tutorial] by Helio. Download a copy to your hard disk. try to play the smil documents (in chapter8/sources) with X-smiles.
  * [http://ttt.forno.us/en/tutorial/learning_to_smil/ Learning to SMIL]: a SMIL 2.0 tutorial into 10 lessons and provides (minimal) exercises with answers
  * [http://www.geocities.com/ramirez_j2001/smil_intro/smil_intro_direct.smil Intro to SMIL version 1.0], Tutorial on SMIL written in SMIL - pretty cool ! requires !RealNetworks G2, 80KB SMIL 1.0 with !RealText.
  * The example I failed to show you in the workshop is fixed here. It demostrates the user interaction event based synchronization: {{{#!VimColor type=smil
<smil>
 <head>
  <layout>
   <root-layout width="300" height="200" background-color="white" />
   <region id="vim_icon" left="75" top="50" width="32" height="32" />
   <region id="soja_icon" left="150" top="50" width="100" height="30" />
  </layout>
 </head>
 <body>
   <par begin="2s" dur="6s">
      <img id="vim" src="vim32x32.gif" alt="The vim icon"
        region="vim_icon" dur="6s" />
      <img src="madewithsoja.gif" alt="Made with SOJA"
        region="soja_icon" dur="4s" begin="vim.activateEvent" />
   </par>
 </body>
</smil>
}}} After 2 seconds, it shows you a Vim icon. You have 4 seconds chance to click on the icon. If it is clicked (vim.activateEvent), it will show "madewithsoja.gif". To see this SMIL example in action, you should have vim32x32.gif and madewithsoja.gif in the same directory. Try it out. then smile.

=== Preparation ===
 * Everybody should bring her/his laptop to the workshop, with following software installed:
  * [http://java.sun.com/j2se/1.4.2/download.html Java 2 Platform, Standard Edition, v 1.4.2 (J2SE)]
  * [http://java.sun.com/products/java-media/jmf/2.1.1/download.html Java Media Framework]
  * [http://www.xsmiles.org/download.html The complete X-Smiles XML-browser], not only the standalone SMIL player.
  * Prepare some nice JPG pictures, MP3 music and AVI movies.
 * You are going to click a lot, so bring your computer mouse with you - the touch pad will kill you with RSI.

Project

week no.

week 10

week 11

week 12

week 13

main activity

refining research conclusions coming up with concept directions

working out concepts

working out concepts / preparing for interim presentation

interim presentation

week no.

week 14

week 15

week 16

week 17

main activity

working out one idea to a final concept

hmmmm

defining criteria for concept / getting acquainted with electronics and JAVA

coming up

planning week 16

Two groups are working parrallel. LaurieScholten and JanvanderAsdonk are working on the soft- and hardware (RutgerMenges can help). LilianAdmiraal and RutgerMenges are working on finishing the concept, formulating the requirements, and the link between color and emotion (the object might show emotion with color)

/

Monday

Tuesday

Wednesday

Thursday

Friday

JanvanderAsdonk and LaurieScholten

Getting acquainted with the soft- and hardware. Talk with experts about what is possible and how it should be done

Deadline A simple prototype with in- and output controlled by microcontrollers and JAVA

LilianAdmiraal and RutgerMenges

Deadline Cearly formulate the Requirements for the concept. Clearly formulate the link between emotions and colors.

Work out the final concept in detail

deadline Worked out concept

After this week the concept is clear and JanvanderAsdonk and LaurieScholten know what they can do with the soft- and hardware. At that point we can make a plan to realize our concept in a working prototype

planning week 14

monday

tuesday

wednesday

thursday

friday

filter out and combine the best parts of each idea. Add extra components when needed

Work out the concept and show it in scenario's. deadline Final concept clear and worked out.

Finalize scenario's and possibly make some other visualisations

make everythink presentable for coach meeting deadline Final concept totally finished. Show to coaches

JAVA workshop

planning week 11

monday

tuesday

wednesday

thursday

friday

linking research pointing out most important relations

working thowards concepts / (preparation for) workshop with Jun Hu

meeting with Philip Ross / Coaches meeting

JunHu: Dc222Home/ProjectPlan (last edited 2008-10-03 20:19:33 by localhost)