|
Java DTV API 1.3 18-Nov-2009 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.dtv.ui.Plane
public abstract class Plane
An instance of the Screen
class represents one
video output signal of a TV device. If a TV device has more than one
independent video output signals, one instance of this class for every signal
will be needed.
A single video output signal is composed out of the contents of several
planes supported by the screen. Any contributing plane is an instance of a
class derived from the Plane
abstract class.
A given Screen
may support any number of these
objects as far as the API is concerned however some form of profiling may
restrict this (e.g. there is usually just one background plane).
Each Plane
can have several variants of
setups in form of instances of PlaneSetup
.
Only one of those setups can be active at any point of time. The currently
valid setup can be determined for any Plane
using the getCurrentSetup
method.
Assuming an application has the sufficient rights to do so, it can also
modify the currently valid setup by using the setCurrentSetup
method.
By creating an instance of PlaneSetupPattern
it is possible to populate criteria for the choice of the
best setup by defining a number of preferences each with a priority. The
implementation then matches this pattern against the range of possible setups,
trying to find one which matches at least all mandatory preferences (priorities
REQUIRED
and REQUIRED_NOT
). If this is not possible, then
the method call shall fail and not return any setup. Other priorities
PREFERRED
and PREFERRED_NOT
are not mandatory, but should
be respected as much as possible.
ScarceResource.reserve(boolean, long, com.sun.dtv.resources.ScarceResourceListener)
,
ScarceResource.release()
Constructor Summary | |
---|---|
protected |
Plane()
For use of specific plane classes subclassing Plane . |
Method Summary | |
---|---|
void |
addPlaneSetupListener(PlaneSetupListener listener)
Add an PlaneSetupListener to
this plane. |
void |
addPlaneSetupListener(PlaneSetupListener listener,
PlaneSetupPattern pattern)
Add an PlaneSetupListener to
this plane. |
static void |
addResourceTypeListener(ResourceTypeListener listener)
Adds a ResourceTypeListener to the implementation. |
void |
addScarceResourceListener(ScarceResourceListener listener)
Register a listener for events about changes in the state of the ownership of this plane. |
PlaneSetup |
getBestSetup(PlaneSetupPattern pattern)
Returns the best possible setup taking into account the criteria defined in this PlaneSetupPattern or null. |
PlaneSetup |
getBestSetup(PlaneSetupPattern[] patterns)
Returns the best possible setup taking into account the criteria defined in one of the PlaneSetupPattern objects within the array argument or null . |
Capabilities |
getCapabilities()
Returns the Capabilities object associated with
this Plane . |
static Plane |
getCurrentPlane()
Returns the Plane the caller
is displayed on. |
PlaneSetup |
getCurrentSetup()
Returns the current PlaneSetup
for this Plane . |
PlaneSetup |
getDefaultSetup()
Returns the default PlaneSetup
associated with this Plane . |
String |
getID()
Returns this Plane's identification string. |
static Plane[] |
getInstances()
Return the list of all existing instances of Plane , whether they are already reserved or not. |
PlaneSetup[] |
getSetups()
Returns all available PlaneSetup objects
associated with this Plane . |
boolean |
isAvailable()
Checks whether the given resource is currently available for reservation. |
void |
release()
Releases this resource. |
void |
removePlaneSetupListener(PlaneSetupListener listener)
Remove an PlaneSetupListener
from this plane. |
static void |
removeResourceTypeListener(ResourceTypeListener listener)
Removes a previously attached listener. |
void |
removeScarceResourceListener(ScarceResourceListener listener)
Remove a listener for events about changes in the state of the ownership of this plane. |
void |
reserve(boolean force,
long timeout,
ScarceResourceListener listener)
Requests reservation of the given scarce resource instance. |
static Plane |
reserveOne(boolean force,
long timeoutms,
ScarceResourceListener listener)
Returns a reserved instance out of the pool of all Plane
instances. |
boolean |
setPlaneSetup(PlaneSetup setup)
Set the setup for this Plane. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected Plane()
Plane
.
Method Detail |
---|
public String getID()
Plane's
identification string.
public PlaneSetup[] getSetups()
PlaneSetup
objects
associated with this Plane
.
Some of these may be valid for this plane only at particular times
or for particular modes of the plane.
PlaneSetup
objectsPlaneSetup
public PlaneSetup getDefaultSetup()
PlaneSetup
associated with this Plane
. There is only
one default setup, this could be e.g. a minimal setup.
PlaneSetup
of this
Plane
PlaneSetup
public PlaneSetup getBestSetup(PlaneSetupPattern pattern)
PlaneSetupPattern
or null.
For details of the algorithm for the selection of a setup, see getBestSetup(PlaneSetupPattern[])
pattern
- - a PlaneSetupPattern
object used to deliver criteria for a valid PlaneSetup
. If this parameter is null the
default setup is choosen.
PlaneSetup
object fulfilling
the criteria as specified in the PlaneSetupPattern
or null if there is none.public PlaneSetup getBestSetup(PlaneSetupPattern[] patterns)
PlaneSetupPattern
objects within the array argument or null
.
The PlaneSetupPattern
objects are considered in the order
they appear in the parameter array.
For details of the algorithm for the selection of a setup, see getBestSetup(PlaneSetupPattern[])
patterns
- the PlaneSetupPattern
array used to deliver criteria for a valid
PlaneSetup
.
PlaneSetup
object
fulfilling the criteria as specified in one of the
PlaneSetupPattern
objects
within the paramter arraypublic PlaneSetup getCurrentSetup()
PlaneSetup
for this Plane
.
PlaneSetup
for this
Plane
.PlaneSetup
public boolean setPlaneSetup(PlaneSetup setup) throws SecurityException, SetupException
As the Plane of a Screen is a ScarceResource, this method can only be called by an application which has reserved this plane before using the appropriate means provided by the ScarceResource mechanism. Calling this method is also subject to the platform's security policy, and the following rules decide about a successful call:
SetupException
to be thrown.
Screen
causes this
setup to be selected.
Screen
not being under control
of the calling application due to platform security policy causes a
SecurityException
to be thrown.
Screen
not being under control
of the calling application due to another application owning the right to
control the other plane and the platform not giving that right to this
application causes a SecurityException
to be thrown.
Screen
being under control
of the calling application due to either this or no application
having reserved the plane, then the setup of the other plane changes
automatically (without any effect to the resource ownership of the other
plane).
Applications can prevent or limit changes to setups of other, not
intended, planes by using constants
PlaneSetupPattern.NO_GRAPHICS_IMPACT
,
PlaneSetupPattern.NO_SUBTITLE_IMPACT
,
PlaneSetupPattern.NO_VIDEO_IMPACT
,
PlaneSetupPattern.NO_STILLVIDEO_IMPACT
and
PlaneSetupPattern.NO_BACKGROUND_IMPACT
in their setup patterns.
If changing the specified setup has been successful, the plane
shall fire at least one PlaneSetupEvents
for all currently registered listeners.
setup
- the PlaneSetup
to which this plane should
be set.
SecurityException
- if the application currently does not have
sufficient rights to change the setup for this plane
SetupException
- if the specified setup is either not a valid one
for this plane, or if it conflicts with other planes' setups and this
conflict cannot be solvedpublic void addPlaneSetupListener(PlaneSetupListener listener)
PlaneSetupListener
to
this plane. This listener will be notifier whenever the plane's setup
will be modified. If one listener has already been added before, further
calls to this method will add further references to the same listener.
As a consequence, these references will then receive multiple copies of
one single event.
listener
- the PlaneSetupListener
to be added to this plane.removePlaneSetupListener(com.sun.dtv.ui.event.PlaneSetupListener)
public void addPlaneSetupListener(PlaneSetupListener listener, PlaneSetupPattern pattern)
PlaneSetupListener
to
this plane. This listener will be notified whenever the plane's setup
will be modified so that it is no longer compatible with the specified
PlaneSetupPattern
.
If one listener has already been added before, further
calls to this method will add further references to the same listener.
As a consequence, these references will then receive multiple copies of
one single event.
Note that if the plane setup does not match the specified pattern, then
the listener should be added and a PlaneSetupEvent
immediately generated
for the specified PlaneSetupListener
.
listener
- the PlaneSetupListener
to be added to this plane.pattern
- the PlaneSetupPattern
which is to be used to determine compatibility with the plane's setup.removePlaneSetupListener(com.sun.dtv.ui.event.PlaneSetupListener)
public void removePlaneSetupListener(PlaneSetupListener listener)
PlaneSetupListener
from this plane. If the specified listener has not been registered
before, the method has no effect.
If multiple references to a single listener have been
registered, any call to this method will only remove one reference.
listener
- the PlaneSetupListener
to be removed from this plane.addPlaneSetupListener(com.sun.dtv.ui.event.PlaneSetupListener)
,
addPlaneSetupListener(com.sun.dtv.ui.event.PlaneSetupListener, com.sun.dtv.ui.PlaneSetupPattern)
public void addScarceResourceListener(ScarceResourceListener listener)
listener
- the object to be informed of state changesremoveScarceResourceListener(com.sun.dtv.resources.ScarceResourceListener)
public void removeScarceResourceListener(ScarceResourceListener listener)
listener
- the object which is no longer interestedaddScarceResourceListener(com.sun.dtv.resources.ScarceResourceListener)
public void reserve(boolean force, long timeout, ScarceResourceListener listener) throws IllegalArgumentException, TimeoutException
First, if there is a security manager, its
checkPermission
method is called with the permission
ScarceResourcePermission(name, "reserve")
. If
force
is moreover set to true
, then
the permission is also checked on ScarceResourcePermission(name,
"force")
.
During the reservation process, if that resource instance is already
allocated, the implementation must notify
the current owner of that resource about the reservation request via
the ScarceResourceListener
interface:
ScarceResourceListener.releaseRequested()
if
force
is false
,ScarceResourceListener.releaseForced()
in the
other case.The listener will be used for such notification only until this resource is released. After releasing, the implementation must not call any of the listener's interface methods.
After that first event, the implementation will proceed accordingly
and release (or not) the requested resource. In case the
implementation releases the resource, it will trigger a
ScarceResourceListener.released()
event to the
original listening owner of the resource to inform him that the
resource does not belong to him anymore.
The application may control the time to wait for such a resource
to be available by setting timeoutms
. In case the
duration of the reservation exceeds the time expressed in
timeoutms
, a TimeoutException
is thrown.
Under normal operation, resources are released using the
release
method. However, in the case where the application
does not release resources when requested or the application is
terminated, the implementation must release
all resources allocated to the application to allow other applications
to be notified of changes in resource allocation and to be able to
reserve them. See the
Resource Cleanup
section of the application lifecycle.
reserve
in interface ScarceResource
force
- If true
, this method will withdraw
the resource from the current owner. If false
, the
implementation will block and wait until the resource is made available
(using release()
) or until timeoutms
.timeout
- A positive amount of time in millisecond until
which this method will wait for the resource to be released by its
current owner. The value of -1
indicates that the
implementation will wait forever.listener
- The listener to be attached to receive
notification about the status of the resource.
IllegalArgumentException
- If listener
is
null
or if the value specified in
timeoutms
is not valid i.e. not either a positive integer
or -1
.
TimeoutException
- If the time specified in
timeoutms
is over and the resource could not be reserved.public static Plane reserveOne(boolean force, long timeoutms, ScarceResourceListener listener) throws IllegalArgumentException, TimeoutException
Plane
instances. This method either returns with the instance or throws an
exception according to the situation.
This method behaves exactly as the reserve()
method.
force
- If true
, this method is allowed to withdraw
any given resource from its current owner. If false
, the
implementation will block and wait until a resource of the given
type
is made available (using release()
) or
until timeoutms
milliseconds.timeoutms
- A positive amount of time in millisecond until
which this method will wait for any resource to be released by its
current owner. The value of -1
indicates that the
implementation will wait forever.listener
- The listener to be attached to receive
notification about the status of the resource.
Plane
that has been
reserved.
IllegalArgumentException
- If listener
is
null
or if the value specified in
timeoutms
is not valid i.e. not either a positive integer
or -1
.
TimeoutException
- If the time specified in
timeoutms
is over and the resource could not be reserved.reserve(boolean, long, com.sun.dtv.resources.ScarceResourceListener)
public void release()
The resource will be made available to another application across
the platform. After calling this method, it is no more possible to
interact with the given resource: calls to critical methods of that
scarce resource must be ignored and may
throw IllegalStateException
. This assertion is valid and
the behavior required for any class implementing the
ScarceResource
interface. In order to interact
again with the given resource, the application must call the
reserve()
method and become the owner again.
The implementation may dispose any system resources that this object is using. After the implementation must not call any of the methods of the listener that was attached at reservation time.
If the resource was already available (i.e. not reserved), this method does nothing.
release
in interface ScarceResource
public boolean isAvailable()
isAvailable
in interface ScarceResource
true
if the given resource is
currently available for reservation.public Capabilities getCapabilities()
Capabilities
object associated with
this Plane
.
Capabilities
object associated with
this Plane
public static Plane getCurrentPlane()
Plane
the caller
is displayed on.
public static Plane[] getInstances()
Plane
, whether they are already reserved or not.
Plane
public static void addResourceTypeListener(ResourceTypeListener listener) throws NullPointerException
ResourceTypeListener
to the implementation.
Whenever a reserve()
or a release()
is
called on any resources of the same type, the implementation will
call the listener's corresponding methods.
listener
- The listener that is triggered for events on resources
of the same type.
NullPointerException
- If listener
is
null
.removeResourceTypeListener(com.sun.dtv.resources.ResourceTypeListener)
public static void removeResourceTypeListener(ResourceTypeListener listener) throws NullPointerException
listener
- The listener that is triggered for events on resources
of the same type.
NullPointerException
- If listener
is
null
.addResourceTypeListener(com.sun.dtv.resources.ResourceTypeListener)
|
Java DTV API 1.3 18-Nov-2009 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |