Source:
<code>public void refresh() { if (getManagedForm() == null || getManagedForm().getForm().isDisposed()) { return; } try { showEditorBusy(true); boolean hasIncoming = false; if (getTask() != null) { hasIncoming = getTask().getSynchronizationState().isIncoming(); } if (model != null) { doSave(new NullProgressMonitor()); refreshInput(); } else { initModel(getTaskEditor().getTaskEditorInput()); } if (taskData != null) { try { setReflow(false); Menu menu = editorComposite.getMenu(); CommonUiUtil.setMenu(editorComposite, null); if (!shouldAutoRefresh) { for (Control control : editorComposite.getChildren()) { control.dispose(); } } else { for (AbstractAttributeEditor editor : attributeEditors.values()) { TaskAttribute attribute = editor.getTaskAttribute(); if (taskData.getRoot().getAttribute(attribute.getId()) == null) { continue; } String updatedvalue = taskData.getRoot().getAttribute(attribute.getId()).getValue(); if (!attribute.getValue().equals(updatedvalue) && editor.shouldAutoRefresh()) { <START> attribute.setValue(updatedvalue); <END> editor.refresh(); } } } if (focusTracker != null) { focusTracker.reset(); } lastSelection = null; if (!shouldAutoRefresh) { for (IFormPart part : getManagedForm().getParts()) { part.dispose(); getManagedForm().removePart(part); } } editorComposite.setMenu(menu); if (!shouldAutoRefresh) { createFormContentInternal(); } getTaskEditor().setMessage(null, 0); if (hasIncoming) { getTaskEditor().setActivePage(getId()); } setSubmitEnabled(true); } finally { setReflow(true); } } updateOutlinePage(); updateHeaderMessage(); getManagedForm().dirtyStateChanged(); getTaskEditor().updateHeaderToolBar(); } finally { showEditorBusy(false); } reflow(); }</code><technical_language>I copying values new task data old. want do is editors new attributes. bug "Add API AbstractAttributeEditor for swapping out TaskAttribute TaskDataModel." refresh update attribute editor a new TaskAttribute TaskDataModel. I if enough override modelRefreshed in AbstractAttributeEditor.modelListener do: taskAttribute = dataModel.getTaskData().getRoot().getAttribute(taskAttribute.getId()); refresh();</technical_language>

Target:
public void refresh() { if (getManagedForm() == null || getManagedForm().getForm().isDisposed()) { return; } try { showEditorBusy(true); boolean hasIncoming = false; if (getTask() != null) { hasIncoming = getTask().getSynchronizationState().isIncoming(); } if (model != null) { doSave(new NullProgressMonitor()); refreshInput(); } else { initModel(getTaskEditor().getTaskEditorInput()); } if (taskData != null) { try { setReflow(false); Menu menu = editorComposite.getMenu(); CommonUiUtil.setMenu(editorComposite, null); if (!shouldAutoRefresh) { for (Control control : editorComposite.getChildren()) { control.dispose(); } } else { for (AbstractAttributeEditor editor : attributeEditors.values()) { TaskAttribute attribute = editor.getTaskAttribute(); if (taskData.getRoot().getAttribute(attribute.getId()) == null) { continue; } String updatedvalue = taskData.getRoot().getAttribute(attribute.getId()).getValue(); if (!attribute.getValue().equals(updatedvalue) && editor.shouldAutoRefresh()) { editor.updateAttributeModel(model, taskData.getRoot().getAttribute(attribute.getId())); editor.refresh(); } } } if (focusTracker != null) { focusTracker.reset(); } lastSelection = null; if (!shouldAutoRefresh) { for (IFormPart part : getManagedForm().getParts()) { part.dispose(); getManagedForm().removePart(part); } } editorComposite.setMenu(menu); if (!shouldAutoRefresh) { createFormContentInternal(); } getTaskEditor().setMessage(null, 0); if (hasIncoming) { getTaskEditor().setActivePage(getId()); } setSubmitEnabled(true); } finally { setReflow(true); } } updateOutlinePage(); updateHeaderMessage(); getManagedForm().dirtyStateChanged(); getTaskEditor().updateHeaderToolBar(); } finally { showEditorBusy(false); } reflow(); }