protected void installInnerForm() { if (m_innerForm == null) { return; } m_innerForm.setShowOnStart(false); m_innerForm.setWrapperFieldInternal(this); m_innerForm.getRootGroupBox().setBorderVisible(false); // TODO [5.2] dwi: Only override if different from preferred value // m_innerForm.getRootGroupBox().setScrollable(false); m_innerForm.getRootGroupBox().updateKeyStrokes(); m_innerForm.addPropertyChangeListener(m_innerFormPropertyListener); m_innerForm .getRootGroupBox() .addSubtreePropertyChangeListener(m_innerFormSubtreePropertyListener); m_innerForm.addFormListener(m_innerFormListener); }
protected void uninstallInnerForm() { if (m_innerForm == null) { return; } fireSubtreePropertyChange( new PropertyChangeEvent( m_innerForm.getRootGroupBox(), IFormField.PROP_PARENT_FIELD, null, null)); m_innerForm.removePropertyChangeListener(m_innerFormPropertyListener); m_innerForm .getRootGroupBox() .removeSubtreePropertyChangeListener(m_innerFormSubtreePropertyListener); m_innerForm.removeFormListener(m_innerFormListener); m_innerForm.setWrapperFieldInternal(null); if (m_manageInnerFormLifeCycle && !m_innerForm.isFormClosed()) { m_innerForm.doClose(); } }
@Override public void setInnerForm(FORM form, boolean manageFormLifeCycle) { if (m_innerForm == form) { return; } // TODO [5.2] dwi: Add assertion to ensure Form is not started yet; currently, that cannot be // done because of AbstractPageField. // if (form != null) { // Assertions.assertFalse(form.isFormStarted(), "Inner Form must not be started yet // [wrappedFormField=%s, innerForm=%s]", this, form); // } FORM oldInnerForm = m_innerForm; uninstallInnerForm(); m_innerForm = form; m_manageInnerFormLifeCycle = manageFormLifeCycle; installInnerForm(); propertySupport.setProperty(PROP_INNER_FORM, m_innerForm); calculateVisibleInternal(); if (m_innerForm != null) { fireSubtreePropertyChange( new PropertyChangeEvent( m_innerForm.getRootGroupBox(), IFormField.PROP_PARENT_FIELD, null, null)); if (m_manageInnerFormLifeCycle && !m_innerForm .isFormStarted()) { // TODO [5.2] dwi: Remove 'started check' once assertion is in // place m_innerForm.start(); } } // Inform parent form (update layout etc.) if (getForm() != null) { getForm().structureChanged(this); } interceptInnerFormChanged(oldInnerForm, m_innerForm); }