/*
* @(#)FrameRateAdapter.java 1.8 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.media.controls;
import javax.media.control.FrameRateControl;
import javax.media.Owned;
import com.sun.media.Reparentable;
import com.sun.media.ui.TextComp;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class FrameRateAdapter implements FrameRateControl, ActionListener, Reparentable {
protected float value = 0.0f;
protected float min = 0f;
protected float max = 0f;
protected TextComp textComp = null;
protected boolean settable;
protected Object owner = null;
public FrameRateAdapter(float initialFrameRate, float minFrameRate,
float maxFrameRate, boolean settable) {
value = initialFrameRate;
min = minFrameRate;
max = maxFrameRate;
this.settable = settable;
}
public FrameRateAdapter(Object owner, float initialFrameRate, float minFrameRate,
float maxFrameRate, boolean settable) {
this(initialFrameRate, minFrameRate, maxFrameRate, settable);
this.owner = owner;
}
/**
* Returns the current frame rate. Returns -1 if it is unknown.
* @return the frame rate in frames per second.
*/
public float getFrameRate() {
return value;
}
/**
* Sets the frame rate.
* Returns -1 if it is unknown or it is not controllable.
* @param newFrameRate the requested new frame rate
* @return the actual frame rate in frames per second.
*/
public float setFrameRate(float newFrameRate) {
if (settable) {
if (newFrameRate < min)
newFrameRate = min;
else if (newFrameRate > max)
newFrameRate = max;
// if (newFrameRate != value) {
value = newFrameRate;
if (textComp != null) {
textComp.setValue(Float.toString(value));
}
// }
return value;
} else
return -1;
}
/**
* Returns the maximum frame rate. Returns -1 if it is unknown.
* @return the maximum frame rate in frames per second.
*/
public float getMaxSupportedFrameRate() {
return max;
}
/**
* Returns the default frame rate. Returns -1 if it is unknown.
* @return the default frame rate in frames per second.
*/
public float getPreferredFrameRate() {
return min;
}
protected String getName() {
return "Frame Rate";
}
public void setEnabled(boolean enable) {
if (textComp != null)
textComp.setEnabled(enable);
}
public Component getControlComponent() {
if (textComp == null) {
textComp = new TextComp(getName(), value+"", 2, settable);
textComp.setActionListener(this);
}
return textComp;
}
public void actionPerformed(ActionEvent ae) {
System.out.println("fra:");
float newFrameRate = textComp.getFloatValue();
setFrameRate(newFrameRate);
}
public Object getOwner() {
if (owner == null)
return this;
else
return owner;
}
public void setOwner(Object newOwner) {
owner = newOwner;
}
}
|