package org.argeo.cms.ui.eclipse.forms;
/**
* AbstractFormPart implements IFormPart interface and can be used as a
* convenient base class for concrete form parts. If a method contains
* code that must be called, look for instructions to call 'super'
* when overriding.
*
* @see org.eclipse.ui.forms.widgets.Section
* @since 1.0
*/
public abstract class AbstractFormPart implements IFormPart {
private IManagedForm managedForm;
private boolean dirty = false;
private boolean stale = true;
/**
* @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
*/
public void initialize(IManagedForm form) {
this.managedForm = form;
}
/**
* Returns the form that manages this part.
*
* @return the managed form
*/
public IManagedForm getManagedForm() {
return managedForm;
}
/**
* Disposes the part. Subclasses should override to release any system
* resources.
*/
public void dispose() {
}
/**
* Commits the part. Subclasses should call 'super' when overriding.
*
* @param onSave
* true
if the request to commit has arrived as a
* result of the 'save' action.
*/
public void commit(boolean onSave) {
dirty = false;
}
/**
* Sets the overall form input. Subclases may elect to override the method
* and adjust according to the form input.
*
* @param input
* the form input object
* @return false
*/
public boolean setFormInput(Object input) {
return false;
}
/**
* Instructs the part to grab keyboard focus.
*/
public void setFocus() {
}
/**
* Refreshes the section after becoming stale (falling behind data in the
* model). Subclasses must call 'super' when overriding this method.
*/
public void refresh() {
stale = false;
// since we have refreshed, any changes we had in the
// part are gone and we are not dirty
dirty = false;
}
/**
* Marks the part dirty. Subclasses should call this method as a result of
* user interaction with the widgets in the section.
*/
public void markDirty() {
dirty = true;
managedForm.dirtyStateChanged();
}
/**
* Tests whether the part is dirty i.e. its widgets have state that is
* newer than the data in the model.
*
* @return true
if the part is dirty, false
* otherwise.
*/
public boolean isDirty() {
return dirty;
}
/**
* Tests whether the part is stale i.e. its widgets have state that is
* older than the data in the model.
*
* @return true
if the part is stale, false
* otherwise.
*/
public boolean isStale() {
return stale;
}
/**
* Marks the part stale. Subclasses should call this method as a result of
* model notification that indicates that the content of the section is no
* longer in sync with the model.
*/
public void markStale() {
stale = true;
managedForm.staleStateChanged();
}
}