T
- the type of wrapped componentpublic abstract class ComponentWrapper<T extends java.awt.Component>
extends java.lang.Object
ComponentFactory
,
ComponentContext
Constructor and Description |
---|
ComponentWrapper(T activeComponent)
Constructs a ComponentWrapper around the given Component.
|
Modifier and Type | Method and Description |
---|---|
void |
addListener(java.beans.PropertyChangeListener listener)
Registers the given PropertyChangeListener with this Component to be
notifed when the value in the UI is changed.
|
void |
addVetoListener(java.beans.VetoableChangeListener listener)
Registers the given VetoableChangeListener with this Component to be
notifed when the value in the UI is changed.
|
protected boolean |
checkPropertyIsSupported()
Called to determine whether the wrapper property is supported for the
object in the current ComponentContext.
|
protected java.awt.Component |
createComponentForLayout()
Creates the Component that will be added to any layout for the given
active component.
|
protected void |
fireChangeEvent()
Utility method for implementations to create the event to fire to any
registered PropertyChangeListeners.
|
T |
getActiveComponent()
Gets the "active" Component from this wrapper.
|
java.awt.Component |
getCellEditorComponent()
If this ComponentWrapper is used within a JTable to provide edit
capabilities for a cell this method is used to get the editor
component.
|
java.awt.Component |
getComponent()
Gets the "layout" Component from this wrapper.
|
ComponentContext |
getComponentContext()
Gets the context that this ComponentWrapper was initialised with.
|
java.awt.Component |
getDefaultFocusComponent()
Gets the particular Component that is the focus of the property value.
|
protected java.awt.Component |
getDefaultValidationComponent()
By default
setValidationStatus(java.util.Collection<oracle.javatools.db.validators.ValidationException>, oracle.ideimpl.db.validate.DBValidationHandler) will apply a status indication
to the component returned by this component. |
protected java.lang.Object |
getExistingPropertyValue()
Gets the existing property value from the underlying DBObject model
(the updated object).
|
javax.swing.JLabel |
getLabel()
If the Component has a JLabel associated with it this returns the
label.
|
protected java.util.logging.Logger |
getLogger()
Get the Logger to log messages to for this wrapper.
|
protected DBObject |
getOriginalObject()
Gets the original object that is being edited.
|
java.lang.String |
getPropertyDisplayName()
Gets the displayable (translated) name for the property that this
wrapper is editing.
|
protected PropertyHelper |
getPropertyHelper()
Gets a PropertyHelper instance that is cached for this editor.
|
java.lang.String |
getPropertyName()
Gets the name of the property that this wrapper is editing.
|
abstract java.lang.Object |
getPropertyValue()
Gets the value of the property as currently set in the UI Component
e.g.
|
protected DBObjectProvider |
getProvider()
Gets the DBObjectProvider that the object being edited is from/for.
|
protected DBObject |
getUpdatedObject()
Gets the object that is being edited or created.
|
void |
initialise(ComponentContext ctxt)
Called once on create of each ComponentWrapper to initialise the
DBObjectProvider, DBObject etc.
|
protected void |
initialiseComponent()
If any setup of the Component is needed after the provider/object are
known override this method and implement there.
|
protected abstract void |
initialiseComponentListener()
Initialises a listener against the underlying Component that will
call fireChangeEvent whenever the value in the UI is changed by the
user.
|
boolean |
isActive()
Tests whether this ComponentWrapper is active (i.e.
|
boolean |
isSupported()
Is this property supported for the context DB Object
|
boolean |
isVolatile()
Tests whether this ComponentWrapper wrappers a property that is volatile
i.e.
|
void |
processComponent(boolean editable,
boolean allowRecreate)
Processes the underlying component by checking whether the property
is supported and hiding or disabling the wrapped component accordingly.
|
boolean |
refreshObject(DBObject refreshedObject)
Refreshes this ComponentWrapper with a new updatedObject for its
ComponentContext.
|
void |
removeListener(java.beans.PropertyChangeListener listener)
Removes a listener previously registered with
addListener(java.beans.PropertyChangeListener) |
void |
removeVetoListener(java.beans.VetoableChangeListener listener)
Removes a listener previously registered with
addVetoListener(java.beans.VetoableChangeListener) |
void |
resetPropertyValue(java.lang.Object newValue)
Convenience method to set the given value for the property we are
wrapping on both the underlying DBObject, and in the underlying
Component.
|
void |
setActive(boolean active)
Sets whether this ComponentWrapper is active - i.e.
|
protected void |
setActiveImpl(boolean active)
Called when a ComponentWrapper is activated/deactivated - typically onEntry/onExit of the
owning panel.
|
void |
setEnabled(boolean enabled)
Sets the enabled state of the components within the wrapper.
|
void |
setPropertyDisplayName(java.lang.String displayName)
Sets the displayable (translated) name for the property that this
wrapper is editing.
|
abstract void |
setPropertyValue(java.lang.Object val)
Sets the value of the property displayed in the UI.
|
void |
setReadOnly(boolean readOnly)
Sets the component to be read-only, such that any attempt to change
its value will be ignored and reset.
|
protected void |
setUIReadOnly(boolean readOnly)
Subclasses may implement this method to make the UI readonly on request.
|
void |
setValidationStatus(java.util.Collection<ValidationException> ves,
oracle.ideimpl.db.validate.DBValidationHandler handler)
Sets the validation status of the wrapped property value.
|
void |
setVisible(boolean visible)
Sets the visible state of the components within the wrapper.
|
public ComponentWrapper(T activeComponent)
activeComponent
- a Component that shows and edits a property
value.protected java.util.logging.Logger getLogger()
DBLog
framework.public final void initialise(ComponentContext ctxt)
initialiseComponent()
to customise the init behaviour.
An initialised wrapper is not active. You must call
setActive(boolean)
to activate the wrapper and set the
initial property value from the underlying DBObject.
ctxt
- the context containing all the information a wrapper
should need to initialise.public boolean refreshObject(DBObject refreshedObject)
refreshedObject
- the new updatedObject to refresh the wrapper
withpublic final void setActive(boolean active)
active
- whether to active the listenerspublic final boolean isActive()
protected void setActiveImpl(boolean active)
active
- public final boolean isVolatile()
public final T getActiveComponent()
getComponent()
protected java.awt.Component createComponentForLayout()
getComponent()
is
made.public final java.awt.Component getComponent()
getActiveComponent()
then it should contain the active
component (e.g. in a scroll pane, or resizable component).getActiveComponent()
public java.awt.Component getDefaultFocusComponent()
By default this returns the active component.
public void setValidationStatus(java.util.Collection<ValidationException> ves, oracle.ideimpl.db.validate.DBValidationHandler handler)
By default this applys the status highlight to the default validation component.
ves
- what is wrong with the value (can be null or empty to
signify that the value is valid).handler
- the calling handler.getDefaultValidationComponent()
protected java.awt.Component getDefaultValidationComponent()
setValidationStatus(java.util.Collection<oracle.javatools.db.validators.ValidationException>, oracle.ideimpl.db.validate.DBValidationHandler)
will apply a status indication
to the component returned by this component. To customise the status
highlighting beyond a single, simple component override
setValidationStatus(java.util.Collection<oracle.javatools.db.validators.ValidationException>, oracle.ideimpl.db.validate.DBValidationHandler)
directly.
By default this returns the default focus component.
public abstract java.lang.Object getPropertyValue()
public abstract void setPropertyValue(java.lang.Object val)
This does not update the DBObject model, and should only need to be called outside of this class if the DBObject model has been manually updated.
resetPropertyValue(Object)
public final void resetPropertyValue(java.lang.Object newValue)
newValue
- the new property valuesetPropertyValue(Object)
public void setEnabled(boolean enabled)
public void setVisible(boolean visible)
public final java.lang.String getPropertyName()
public javax.swing.JLabel getLabel()
public java.lang.String getPropertyDisplayName()
getPropertyName()
public void setPropertyDisplayName(java.lang.String displayName)
PropertyDisplayRegistry
to determine
an appropriate display name for most properties.getPropertyDisplayName()
protected abstract void initialiseComponentListener()
setActiveImpl(boolean)
.protected void initialiseComponent()
public final void addListener(java.beans.PropertyChangeListener listener)
listener
- the listener to addpublic final void addVetoListener(java.beans.VetoableChangeListener listener)
If a change is vetoed, the PropertyVetoException thrown can optionally contain a message. If the exception contains a message it will cause an error dialog to show displaying the reason (so should be translated).
listener
- the listener to addpublic final void removeListener(java.beans.PropertyChangeListener listener)
addListener(java.beans.PropertyChangeListener)
listener
- the listener to removepublic final void removeVetoListener(java.beans.VetoableChangeListener listener)
addVetoListener(java.beans.VetoableChangeListener)
listener
- the listener to removepublic void processComponent(boolean editable, boolean allowRecreate)
PropertyManager
for the underlying
DBObjectProvider to determine whether the property is supported at all
(if not the Component will be hidden), or just cannot be updated (so
we disable the Component instead).editable
- whether the object is editable at allallowRecreate
- whether to enable components for properties that
will require a drop/create in order to change them.protected boolean checkPropertyIsSupported()
protected final java.lang.Object getExistingPropertyValue()
getUpdatedObject()
,
getPropertyValue()
protected final void fireChangeEvent()
protected final PropertyHelper getPropertyHelper()
protected final DBObjectProvider getProvider()
protected final DBObject getUpdatedObject()
protected final DBObject getOriginalObject()
public final boolean isSupported()
public final ComponentContext getComponentContext()
public java.awt.Component getCellEditorComponent()
getActiveComponent()
,
override to provide custom JTable behaviour.public final void setReadOnly(boolean readOnly)
setUIReadOnly(boolean)
.
NB Typically clients will NOT need to call this as the ComponentWrapper framework will hide or disable components that are not supported, but is provided if there are any special cases where this default behaviour is to be overriden.
readOnly
- whether the component should be made read only.protected void setUIReadOnly(boolean readOnly)
readOnly
- setReadOnly(boolean)