public abstract class ComponentFactory
extends java.lang.Object
ComponentWrapper
objects
that edit properties on a given DBObject. One ComponentFactory is
expected to be used per page in a DBObject editor.
The metadata for a given property is used to select an appropriate ComponentWrapper (e.g. a String property will get a wrapper containing a JTextField).
ComponentWrapper
Constructor and Description |
---|
ComponentFactory(java.lang.String panelName)
Constructs a new ComponentFactory for creating and managing
ComponentWrappers that will edit a particular object.
|
ComponentFactory(java.lang.String panelName,
ComponentFactory parent)
Constructs a new ComponentFactory for creating and managing
ComponentWrappers that will edit a particular object.
|
Modifier and Type | Method and Description |
---|---|
void |
canCommit(DBEditorConfig config)
Tests whether the given changes can be commited.
|
ComponentContext |
createComponentContext(java.lang.String propName,
DBObject originalObject,
DBObject contextObject)
Creates a ComponentContext for creating a ComponentWrapper for the
given property and object.
|
abstract ComponentWrapper |
createWrapper(ComponentContext ctxt)
Creates a new ComponentWrapper using the information in the given
context (e.g.
|
ComponentWrapper |
findComponentWrapper(java.lang.String propPath)
Finds an existing ComponentWrapper that has been created and registered
for the given property.
|
void |
forceProcessComponents()
Processes all components in the factory regardless of any property update.
|
java.lang.String |
getBasePath()
Gets the base property path for this factory.
|
java.util.Collection<ComponentWrapper> |
getComponentWrappers()
Gets a list of all of the ComponentWrappers that have been created and
registered with this factory.
|
protected DBEditorConfig |
getEditorConfig()
Gets the DBEditorConfig that was used to launch the current editor.
|
java.util.Collection<java.lang.String> |
getPaths()
Gets the property paths that have components registered with this
factory.
|
oracle.ideimpl.db.DBUIResourceHelper |
getResourceHelper()
Gets the resource helper used to name components, set mnemonics etc
for this factory.
|
boolean |
isEditable()
Returns true if the entire dialog should appear disabled (not editing).
|
void |
processComponent(java.lang.String propPath)
Enables/disables and hides/shows the given Component according to what the
property manager supports for the property path the Component is registered
against.
|
void |
processComponents()
Called by onEntry to process the components that are registered against
what the provider's PropertyManager can do.
|
void |
refreshComponents(DBObject refreshObject)
Refreshes all the registered ComponentWrappers with a new
updatedObject.
|
void |
registerComponent(javax.swing.AbstractButton button,
java.lang.String buttonText,
java.lang.String propPath)
Registers the given button directly with the ComponentFactory.
|
void |
registerComponent(javax.swing.AbstractButton button,
java.lang.String buttonText,
java.lang.String componentName,
java.lang.String propPath)
Registers the given button directly with the ComponentFactory.
|
void |
registerComponent(java.awt.Component comp,
java.lang.String propPath)
Registers the given Component directly with the ComponentFactory.
|
void |
registerComponent(java.awt.Component comp,
java.lang.String componentName,
java.lang.String propPath)
Registers the given Component directly with the ComponentFactory.
|
void |
registerComponent(javax.swing.JLabel label,
java.awt.Component component,
java.lang.String labelText,
java.lang.String propPath)
Registers the given Component with its JLabel directly with the
ComponentFactory.
|
abstract void |
registerComponent(javax.swing.JLabel label,
java.awt.Component component,
java.lang.String labelText,
java.lang.String componentName,
java.lang.String propPath)
Registers the given Component with its JLabel directly with the
ComponentFactory.
|
void |
registerComponentWrapper(ComponentWrapper wrapper)
Registers the given ComponentWrapper with this factory.
|
void |
removeComponentWrapper(java.lang.String propPath)
Removes the given component wrapper from the map of component
wrappers registered in the factory
|
void |
setActive(boolean active)
Activates or deactivates all of the ComponentWrappers in this factory.
|
void |
setAllowRecreate(boolean allow)
Sets whether this helper will enable components that when changed will need
the object to be dropped and created, or not in which case it will disable
those components.
|
void |
setBasePath(java.lang.String... basePath)
Sets the base property path for this factory.
|
void |
setDataContext(Namespace namespace)
Sets the Namespace that is the "data context" or "traversable context"
of the Traversables that this factory creates components for.
|
void |
setEditable(boolean edit)
Sets wether the dialog's entire contents should be disabled.
|
void |
setEnabled(boolean enabled)
Enables or disables all the ComponentWrappers that have been created
in this factory.
|
public ComponentFactory(java.lang.String panelName)
panelName
- the base name for all Components that will be named
for testability. A Component will be named using the property namepublic ComponentFactory(java.lang.String panelName, ComponentFactory parent)
panelName
- the base name for all Components that will be named
for testability. A Component will be named using the property nameparent
- the parent ComponentFactory. All wrappers registered
with this factory will also be available in the parent factory,
qualified with this factory's base path.public final oracle.ideimpl.db.DBUIResourceHelper getResourceHelper()
public final java.util.Collection<java.lang.String> getPaths()
public final java.util.Collection<ComponentWrapper> getComponentWrappers()
public void setActive(boolean active)
active
- whether the wrappers should be active or notComponentWrapper.setActive(boolean)
public void refreshComponents(DBObject refreshObject)
This method should be low cost if refreshObject is already the updated object of the ComponentContext for the ComponentWrappers.
Only ComponentWrappers registered with this factory are refreshed, any child factories need to be refreshed separately (as their context object is unlikely to be the same).
refreshObject
- the new updatedObject for all registered wrappers
to be refreshed withComponentWrapper.refreshObject(DBObject)
public void setAllowRecreate(boolean allow)
public boolean isEditable()
public void setEditable(boolean edit)
public void setEnabled(boolean enabled)
enabled
- parameter to pass to the wrapperComponentWrapper.setEnabled(boolean)
public java.lang.String getBasePath()
public void setBasePath(java.lang.String... basePath)
public void setDataContext(Namespace namespace)
protected DBEditorConfig getEditorConfig()
public void processComponents()
public void forceProcessComponents()
public void processComponent(java.lang.String propPath)
public void canCommit(DBEditorConfig config) throws TraversalException
config
- the current editor configurationTraversalException
- if the commit can't occur (e.g. user didn't ok
replacing the object).public ComponentWrapper findComponentWrapper(java.lang.String propPath)
propPath
- the property name/path the wrapper was registered forpublic void removeComponentWrapper(java.lang.String propPath)
propPath
- property of wrapper to removepublic void registerComponentWrapper(ComponentWrapper wrapper)
wrapper
- the wrapper to register.public ComponentContext createComponentContext(java.lang.String propName, DBObject originalObject, DBObject contextObject)
propName
- the property name/path to editoriginalObject
- the original object, this can be a child object
or a top level object.contextObject
- the object we're editing, this can be a child
object or a top level object but should be a temporary copy of
originalObject if originalObject is not null.createWrapper(ComponentContext)
public abstract ComponentWrapper createWrapper(ComponentContext ctxt)
ctxt
- the context to create the wrapper forjava.lang.IllegalArgumentException
- if the property name/path in the
given context is unknown, or the property return type is not known.createComponentContext(java.lang.String, oracle.javatools.db.DBObject, oracle.javatools.db.DBObject)
public final void registerComponent(java.awt.Component comp, java.lang.String propPath)
This will also set the propPath as the name of the Component for testability.
comp
- the component to registerpropPath
- the property path to register againstpublic final void registerComponent(java.awt.Component comp, java.lang.String componentName, java.lang.String propPath)
comp
- the component to registercomponentName
- the name to give the Component (for testability)propPath
- the property path to register againstpublic final void registerComponent(javax.swing.AbstractButton button, java.lang.String buttonText, java.lang.String propPath)
This will also set the propPath as the name of the button for testability.
button
- the button to registerbuttonText
- the translated text to set on the buttonpropPath
- the property path to register againstpublic final void registerComponent(javax.swing.AbstractButton button, java.lang.String buttonText, java.lang.String componentName, java.lang.String propPath)
button
- the button to registerbuttonText
- the translated text to set on the buttoncomponentName
- the name to give the Component (for testability)propPath
- the property path to register againstpublic final void registerComponent(javax.swing.JLabel label, java.awt.Component component, java.lang.String labelText, java.lang.String propPath)
This will also set the propPath as the name of the Component for testability.
label
- the label for the componentcomponent
- the component to registerlabelText
- the translated text to set on the labelpropPath
- the property path to register againstpublic abstract void registerComponent(javax.swing.JLabel label, java.awt.Component component, java.lang.String labelText, java.lang.String componentName, java.lang.String propPath)
label
- the label for the componentcomponent
- the component to registerlabelText
- the translated text to set on the labelcomponentName
- the name to give the Component (for testability)propPath
- the property path to register against