/* A basic extension of the java.awt.Dialog class */ import java.awt.*; import twinfeats.io.*; import twinfeats.conf.core.*; import twinfeats.util.*; import java.io.*; import java.awt.event.*; public class VCR extends Dialog { ClientWin clientWin; ReadListener listener; String conf; public VCR(Frame parent, boolean modal, ClientWin cw, String c) { this(parent,modal); conf = c; clientWin = cw; listener = new ReadListener(cw.getComm(),cw.getComm().getName(),ConfBean.VCR,new HandleVCR()); } public VCR(Frame parent, boolean modal) { super(parent, modal); // This code is automatically generated by Visual Cafe when you add // components to the visual environment. It instantiates and initializes // the components. To modify the code, only use code syntax that matches // what Visual Cafe can generate, or Visual Cafe may be unable to back // parse your Java file into its visual environment. //{{INIT_CONTROLS setLayout(null); setSize(insets().left + insets().right + 378,insets().top + insets().bottom + 78); setFont(new Font("SansSerif", Font.PLAIN, 12)); Stop = new java.awt.Button(); Stop.setLabel("Stop"); Stop.setBounds(insets().left + 7,insets().top + 40,86,31); Stop.setFont(new Font("SansSerif", Font.PLAIN, 12)); Stop.setBackground(java.awt.Color.lightGray); add(Stop); Slow = new java.awt.Button(); Slow.setLabel("Slow down"); Slow.setBounds(insets().left + 98,insets().top + 40,86,31); Slow.setFont(new Font("SansSerif", Font.PLAIN, 12)); Slow.setBackground(java.awt.Color.lightGray); add(Slow); Speed = new java.awt.Button(); Speed.setLabel("Speed up"); Speed.setBounds(insets().left + 189,insets().top + 40,86,31); Speed.setFont(new Font("SansSerif", Font.PLAIN, 12)); Speed.setBackground(java.awt.Color.lightGray); add(Speed); Pause = new java.awt.Button(); Pause.setLabel("Pause"); Pause.setBounds(insets().left + 280,insets().top + 40,86,31); Pause.setFont(new Font("SansSerif", Font.PLAIN, 12)); Pause.setBackground(java.awt.Color.lightGray); add(Pause); label1 = new java.awt.Label("Time index",Label.RIGHT); label1.setBounds(insets().left + 177,insets().top + 6,70,28); add(label1); TimeIndex = new java.awt.Label(""); TimeIndex.setBounds(insets().left + 256,insets().top + 4,112,31); add(TimeIndex); Transcripts = new java.awt.Choice(); add(Transcripts); Transcripts.setBounds(insets().left + 8,insets().top + 5,160,30); setTitle("Transcript VCR"); //}} //{{REGISTER_LISTENERS SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); SymAction lSymAction = new SymAction(); Stop.addActionListener(lSymAction); Slow.addActionListener(lSymAction); Speed.addActionListener(lSymAction); Pause.addActionListener(lSymAction); SymItem lSymItem = new SymItem(); Transcripts.addItemListener(lSymItem); //}} } public void addNotify() { // Record the size of the window prior to calling parents addNotify. Dimension d = getSize(); super.addNotify(); if (fComponentsAdjusted) return; // Adjust components according to the insets setSize(insets().left + insets().right + d.width, insets().top + insets().bottom + d.height); Component components[] = getComponents(); for (int i = 0; i < components.length; i++) { Point p = components[i].getLocation(); p.translate(insets().left, insets().top); components[i].setLocation(p); } fComponentsAdjusted = true; } // Used for addNotify check. boolean fComponentsAdjusted = false; public VCR(Frame parent, String title, boolean modal) { this(parent, modal); setTitle(title); } public synchronized void show() { Rectangle bounds = getParent().bounds(); Rectangle abounds = bounds(); move(bounds.x + (bounds.width - abounds.width)/ 2, bounds.y + (bounds.height - abounds.height)/2); super.show(); Rectangle r = clientWin.getWinBounds("VCR"); if (r != null) setBounds(r); } //{{DECLARE_CONTROLS java.awt.Button Stop; java.awt.Button Slow; java.awt.Button Speed; java.awt.Button Pause; java.awt.Label label1; java.awt.Label TimeIndex; java.awt.Choice Transcripts; //}} class SymWindow extends java.awt.event.WindowAdapter { public void windowClosing(java.awt.event.WindowEvent event) { Object object = event.getSource(); if (object == VCR.this) Dialog1_WindowClosing(event); } } void Dialog1_WindowClosing(java.awt.event.WindowEvent event) { Stop_Action(null); clientWin.setWinBounds("VCR",getBounds()); clientWin.writeProperties(); hide(); dispose(); } class SymAction implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent event) { Object object = event.getSource(); if (object == Stop) Stop_Action(event); else if (object == Slow) Slow_Action(event); else if (object == Speed) Speed_Action(event); else if (object == Pause) Pause_Action(event); } } void Stop_Action(java.awt.event.ActionEvent event) { // to do: code goes here. listener.removeListener(); listener = null; CommMessage msg = new CommMessage(clientWin.getComm().getName(),ConfBean.CONFERENCESERVER, ConfBean.VCR,"Stop"); clientWin.getComm().send(msg); clientWin.disposeBeans(); Transcripts.enable(); clientWin.vcr = null; hide(); dispose(); } void Slow_Action(java.awt.event.ActionEvent event) { // to do: code goes here. CommMessage msg = new CommMessage(clientWin.getComm().getName(),ConfBean.CONFERENCESERVER, ConfBean.VCR,"Slow"); clientWin.getComm().send(msg); } void Speed_Action(java.awt.event.ActionEvent event) { // to do: code goes here. CommMessage msg = new CommMessage(clientWin.getComm().getName(),ConfBean.CONFERENCESERVER, ConfBean.VCR,"Speed"); clientWin.getComm().send(msg); } void Pause_Action(java.awt.event.ActionEvent event) { // to do: code goes here. CommMessage msg; msg = new CommMessage(clientWin.getComm().getName(),ConfBean.CONFERENCESERVER, ConfBean.VCR,Pause.getLabel()); clientWin.getComm().send(msg); if (Pause.getLabel().equals("Pause")) Pause.setLabel("Resume"); else Pause.setLabel("Pause"); } class HandleVCR implements GenericMessageListener { HandleVCR() { } /** * CommMessageListener: A message has been received */ public void message(CommMessageEvent cme) { CommMessage msg = cme.getCommMessage(); if (msg.getBody() instanceof String) { TimeIndex.setText((String)msg.getBody()); return; } Long stamp = (Long)msg.getBody(); long v = (stamp.longValue())/1000; int h = (int)(v/3600); int m = (int)((v-h*3600)/60); int s = (int)(v%60); StringBuffer sb = new StringBuffer(); if (h < 10) sb.append("0"); sb.append(h); sb.append(":"); if (m < 10) sb.append("0"); sb.append(m); sb.append(":"); if (s < 10) sb.append("0"); sb.append(s); TimeIndex.setText(sb.toString()); } } class SymItem implements java.awt.event.ItemListener { public void itemStateChanged(java.awt.event.ItemEvent event) { Object object = event.getSource(); if (object == Transcripts) Transcripts_ItemStateChanged(event); } } void Transcripts_ItemStateChanged(java.awt.event.ItemEvent event) { // to do: code goes here. if (event.getStateChange() == ItemEvent.SELECTED) { // clientWin.makeBeans(conf); CommMessage msg = new CommMessage(clientWin.comm.getName(),ConfBean.CONFERENCESERVER, ConfBean.VIEWTRANSCRIPT,new MsgViewTranscript(conf,Transcripts.getSelectedItem(),clientWin.comm.getName())); clientWin.comm.send(msg); Transcripts.disable(); } } }