org.eclipse.core.databinding.observable.value
Class DateAndTimeObservableValue
java.lang.Object
org.eclipse.core.databinding.observable.AbstractObservable
org.eclipse.core.databinding.observable.value.AbstractObservableValue
org.eclipse.core.databinding.observable.value.DateAndTimeObservableValue
-
All Implemented Interfaces:
-
IObservable,
IObservableValue
-
public class DateAndTimeObservableValue
- extends
AbstractObservableValue
An
IObservableValue
<
Date
> which supports
scenarios where the date and time are presented as separate elements in the
user interface. This class combines the year, month, and day portion of the
date observable (an
IObservableValue
<
Date
>) and the hour, minute, second, and millisecond portion of the time
observable (also an
IObservableValue
<
Date
>).
This observable's value will be null whenever the date observable's value is
null. Otherwise the value is the combination of the date portion of the date
observable and the time portion of the time observable (a time observable
value of null is treated the same as 0:00:00.000).
When setting the value of this observable, setting a null value will set null
on the date observable, and set a time of 0:00:00.000 on the time observable.
When setting non-null values, the non-applicable fields of each observable
are left intact. That is, the hour, minute, second and millisecond components
of the date observable are preserved, and the year, month and day components
of the time observable are preserved.
The observables used for the date and time component may impose their own
restrictions with regard to supported values. For example some observables do
not allow a null value, because the underlying widget lacks support for a
null value (example: DateTime).
One use for this class is binding a date-and-time value to two separate user
interface elements, one for editing date and one for editing time:
DataBindingContext dbc = new DataBindingContext();
IObservableValue beanValue = BeansObservables.observeValue(...);
IObservableValue dateObservable = WidgetProperties.selection().observe(
dateWidget);
IObservableValue timeObservable = WidgetProperties.selection().observe(
timeWidget);
dbc.bindValue(new DateAndTimeObservableValue(dateObservable, timeObservable),
beanValue);
A second use is editing only the date or time value of a date-and-time value.
This can be accomplished by using a widget-specific observable for the
editable value and a WritableValue as a container for the fixed value. The
example below allows editing the date while preserving the time:
DataBindingContext dbc = new DataBindingContext();
IObservableValue beanValue = BeansObservables.observeValue(...);
IObservableValue dateObservable = WidgetProperties.selection().observe(
dateWidget);
IObservableValue timeObservable = new WritableValue(dateObservable.getRealm(),
beanValue.getValue(), Date.class);
dbc.bindValue(new DateAndTimeObservableValue(dateObservable, timeObservable), beanValue);
-
Since:
- 1.2
DateAndTimeObservableValue
public DateAndTimeObservableValue(
IObservableValue dateObservable,
IObservableValue timeObservable)
- Constructs a DateAndTimeObservableValue with the specified constituent
observables.
-
Parameters:
-
dateObservable
- the observable used for the date component (year, month and
day) of the constructed observable. -
timeObservable
- the observable used for the time component (hour, minute,
second and millisecond) of the constructed observable.
getValueType
public
Object getValueType()
-
Description copied from interface:
IObservableValue
- The value type of this observable value, or
null
if this
observable value is untyped.
-
-
Returns:
- the value type, or
null
firstListenerAdded
protected void firstListenerAdded()
-
-
lastListenerRemoved
protected void lastListenerRemoved()
-
-
doGetValue
protected
Object doGetValue()
-
-
Specified by:
-
doGetValue
in class
AbstractObservableValue
-
doSetValue
protected void doSetValue(
Object value)
-
Description copied from class:
AbstractObservableValue
- Template method for setting the value of the observable. By default the
method throws an
UnsupportedOperationException
.
-
-
Overrides:
-
doSetValue
in class
AbstractObservableValue
-
isStale
public boolean isStale()
-
Description copied from interface:
IObservable
- Returns whether the state of this observable is stale and is expected to
change soon. A non-stale observable that becomes stale will notify its
stale listeners. A stale object that becomes non-stale does so by
changing its state and notifying its change listeners, it does not
notify its stale listeners about becoming non-stale. Clients that do not
expect asynchronous changes may ignore staleness of observable objects.
-
-
Specified by:
-
isStale
in interface
IObservable
-
Overrides:
-
isStale
in class
AbstractObservableValue
-
-
Returns:
- true if this observable's state is stale and will change soon.
dispose
public void dispose()
-
Description copied from interface:
IObservable
- Disposes of this observable object, removing all listeners registered
with this object, and all listeners this object might have registered on
other objects.
-
-
Specified by:
-
dispose
in interface
IObservable
-
Overrides:
-
dispose
in class
AbstractObservable
-
addListener
protected void addListener(
Object listenerType,
IObservablesListener listener)
-
-
Parameters:
-
listenerType
- -
listener
-
removeListener
protected void removeListener(
Object listenerType,
IObservablesListener listener)
-
-
Parameters:
-
listenerType
- -
listener
-
hasListeners
protected boolean hasListeners()
-
fireEvent
protected void fireEvent(
ObservableEvent event)
-
getRealm
public
Realm getRealm()
-
-
Returns:
- Returns the realm.
clone
protected
Object clone()
throws
CloneNotSupportedException
-
-
Overrides:
-
clone
in class
Object
-
-
Throws:
-
CloneNotSupportedException
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.