📄 videotool.java
字号:
state.player.first();
}
protected boolean checkErrorMsg(Performative msg, String message) {
String type = msg.getType();
if ( type.equals("failure") || type.equals("not-understood") ||
type.equals("refuse") ) {
JOptionPane.showMessageDialog(this, message, "Error",
JOptionPane.ERROR_MESSAGE);
return true;
}
return false;
}
public void db_sessions(Performative msg) {
if ( checkErrorMsg(msg,"Cannot list sessions") ) return;
if ( msg.getType().equals("inform") ) {
String sessionType = this.getClass().getName();
String agent = msg.getSender();
StringTokenizer st = new StringTokenizer(msg.getContent());
while( st.hasMoreTokens() )
model.addDbSession(sessionType,agent,st.nextToken());
}
}
public void db_delete(Performative msg) {
checkErrorMsg(msg,"Cannot delete database session");
}
public void db_purge(Performative msg) {
checkErrorMsg(msg,"Cannot purge database");
}
public void db_close(Performative msg) {
checkErrorMsg(msg,"Cannot close database");
}
public void db_save(Performative msg) {
if ( checkErrorMsg(msg,"Cannot save item") )
Close();
}
protected boolean record_item(Performative msg) {
if ( state.mode != ONLINE || !state.saving || state.errored )
return false;
String s = msg.getSender();
String r = msg.getReceiver();
if ( (s.equals(context.whoami()) && r.equals(state.proxy)) ||
(r.equals(context.whoami()) && s.equals(state.proxy)) )
return false;
request("db_save " + state.key + " " + msg, state.proxy, "db_save");
return true;
}
public void db_create(Performative msg) {
state.errored = checkErrorMsg(msg,
"Cannot create database session.\nClosing link.");
if ( state.errored ) {
setMode(ONLINE);
state.mode = ONLINE;
state.saving = false;
state.errored = false;
}
else
state.saving = true;
}
public void db_prior(Performative msg) {
if ( checkErrorMsg(msg,"End of file reached") )
state.player.setCommand(Player.READY);
else {
Performative imsg = ZeusParser.performative(msg.getContent());
visualiseVideoData(BACKWARD,imsg);
}
}
public void db_next(Performative msg) {
if ( checkErrorMsg(msg,"End of file reached") )
state.player.setCommand(Player.READY);
else {
Performative imsg = ZeusParser.performative(msg.getContent());
visualiseVideoData(FORWARD,imsg);
}
}
public void db_first(Performative msg) {
if ( checkErrorMsg(msg,"End of file reached") )
state.player.setCommand(Player.READY);
}
public void db_last(Performative msg) {
if ( checkErrorMsg(msg,"End of file reached") )
state.player.setCommand(Player.READY);
}
public void db_open(Performative msg) {
if ( checkErrorMsg(msg,"Cannot open database") ) {
state.key = null;
Close();
return;
}
// db_open acknowledged; send LIST cmd
state.player.setCommand(Player.LIST);
query("db_list " + state.key, state.proxy, "db_list");
}
public void db_list(Performative msg) {
if ( checkErrorMsg(msg,"Cannot obtain list of agents") ) {
Close();
return;
}
// db_list replied to; process list; cmd = COUNT
StringTokenizer st = new StringTokenizer(msg.getContent());
Vector info = new Vector();
while( st.hasMoreTokens() )
info.addElement(st.nextToken());
registerListOfPlaybackAgents(info);
state.player.setCommand(Player.COUNT);
query("db_count " + state.key, state.proxy, "db_count");
}
public void db_count(Performative msg) {
if ( checkErrorMsg(msg,"Cannot obtain count of itens") ) {
Close();
return;
}
// count replied to; intialize player; cmd = REDAY
int max_count = Integer.parseInt(msg.getContent());
state.player.setCount(max_count);
state.player.setCommand(Player.READY);
}
void doPlayerCommand(String cmd) {
query(cmd + " " + state.key, state.proxy, cmd);
}
public void PlayerSpeed() {
long speed;
speed = (state != null && state.player != null)
? state.player.getSpeed()
: Player.getDefaultSpeed();
if ( number_dialog == null ) {
number_dialog = new NumberDialog(this,"Set Player Speed",
"Enter speed:");
number_dialog.setLocationRelativeTo(this);
}
number_dialog.setValue(speed);
Long speedValue = number_dialog.getValue();
if (speedValue != null) {
if ( state != null && state.player != null)
state.player.setSpeed(speedValue.longValue());
else
Player.setDefaultSpeed(speedValue.longValue());
}
}
protected abstract void registerListOfPlaybackAgents(Vector info);
protected abstract void visualiseVideoData(int dir, Performative msg);
protected abstract void setMode(int mode);
protected class VideoToolBar extends JToolBar implements ActionListener {
protected JButton firstBtn, fastRewindBtn;
protected JButton rewindBtn, stepRewindBtn;
protected JButton stopBtn, stepForwardBtn;
protected JButton forwardBtn, fastForwardBtn;
protected JButton lastBtn, recordBtn;
public VideoToolBar() {
setFloatable(false);
String sep = System.getProperty("file.separator");
String path = SystemProps.getProperty("gif.dir") + sep +
"visualiser" + sep;
// Last Button
firstBtn = new JButton(new ImageIcon(path + "first.gif"));
add(firstBtn);
firstBtn.setPreferredSize(new Dimension(24,24));
firstBtn.setToolTipText("First");
firstBtn.setMargin(new Insets(0,0,0,0));
// Fast Rewind Button
fastRewindBtn = new JButton(new ImageIcon(path + "fbwd.gif"));
add(fastRewindBtn);
fastRewindBtn.setPreferredSize(new Dimension(24,24));
fastRewindBtn.setToolTipText("Fast Rewind");
fastRewindBtn.setMargin(new Insets(0,0,0,0));
// Rewind Button
rewindBtn = new JButton(new ImageIcon(path + "bwd.gif"));
add(rewindBtn);
rewindBtn.setPreferredSize(new Dimension(24,24));
rewindBtn.setToolTipText("Rewind");
rewindBtn.setMargin(new Insets(0,0,0,0));
// Step Rewind Button
stepRewindBtn = new JButton(new ImageIcon(path + "prior.gif"));
add(stepRewindBtn);
stepRewindBtn.setPreferredSize(new Dimension(24,24));
stepRewindBtn.setToolTipText("Prior");
stepRewindBtn.setMargin(new Insets(0,0,0,0));
addSeparator();
// Stop Button
stopBtn = new JButton(new ImageIcon(path + "stop.gif"));
add(stopBtn);
stopBtn.setPreferredSize(new Dimension(24,24));
stopBtn.setToolTipText("Stop");
stopBtn.setMargin(new Insets(0,0,0,0));
addSeparator();
// Step Forward Button
stepForwardBtn = new JButton(new ImageIcon(path + "next.gif"));
add(stepForwardBtn);
stepForwardBtn.setPreferredSize(new Dimension(24,24));
stepForwardBtn.setToolTipText("Next");
stepForwardBtn.setMargin(new Insets(0,0,0,0));
// Forward Button
forwardBtn = new JButton(new ImageIcon(path + "fwd.gif"));
add(forwardBtn);
forwardBtn.setPreferredSize(new Dimension(24,24));
forwardBtn.setToolTipText("Play");
forwardBtn.setMargin(new Insets(0,0,0,0));
// Fast Forward Button
fastForwardBtn = new JButton(new ImageIcon(path + "ffwd.gif"));
add(fastForwardBtn);
fastForwardBtn.setPreferredSize(new Dimension(24,24));
fastForwardBtn.setToolTipText("Fast Forward");
fastForwardBtn.setMargin(new Insets(0,0,0,0));
// Last Button
lastBtn = new JButton(new ImageIcon(path + "last.gif"));
add(lastBtn);
lastBtn.setPreferredSize(new Dimension(24,24));
lastBtn.setToolTipText("Last");
lastBtn.setMargin(new Insets(0,0,0,0));
addSeparator();
// Record Button
recordBtn = new JButton(new ImageIcon(path + "rec.gif"));
add(recordBtn);
recordBtn.setPreferredSize(new Dimension(24,24));
recordBtn.setToolTipText("Record");
recordBtn.setMargin(new Insets(0,0,0,0));
firstBtn.addActionListener(this);
fastRewindBtn.addActionListener(this);
rewindBtn.addActionListener(this);
stepRewindBtn.addActionListener(this);
stopBtn.addActionListener(this);
stepForwardBtn.addActionListener(this);
forwardBtn.addActionListener(this);
fastForwardBtn.addActionListener(this);
lastBtn.addActionListener(this);
recordBtn.addActionListener(this);
setPreferredSize(new Dimension(300,32));
}
public void setStatus(boolean b) {
firstBtn.setEnabled(b);
fastRewindBtn.setEnabled(b);
rewindBtn.setEnabled(b);
stepRewindBtn.setEnabled(b);
stopBtn.setEnabled(b);
stepForwardBtn.setEnabled(b);
forwardBtn.setEnabled(b);
fastForwardBtn.setEnabled(b);
lastBtn.setEnabled(b);
recordBtn.setEnabled(!b);
}
public void actionPerformed(ActionEvent evt) {
Object src = evt.getSource();
if ( src == firstBtn )
RewindBegin();
else if ( src == fastRewindBtn )
FRewind();
else if ( src == rewindBtn )
Rewind();
else if ( src == stepRewindBtn )
StepRewind();
else if ( src == stopBtn )
Stop();
else if ( src == stepForwardBtn )
StepForward();
else if ( src == forwardBtn )
Forward();
else if ( src == fastForwardBtn )
FForward();
else if ( src == lastBtn )
ForwardEnd();
else if ( src == recordBtn )
Record();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -