@Override
 public void modelChanged(IModelChangedEvent event) {
   if ((event.getChangeType() == IModelChangedEvent.REMOVE)
       || (fShowDTD == false)
       || (fDtdSection == null)) {
     return;
   }
   Object[] objects = event.getChangedObjects();
   for (int i = 0; i < objects.length; i++) {
     if (objects[i] instanceof ISchemaCompositor) fDtdSection.updateDTDLabel(objects[i]);
   }
 }
 @Override
 public void selectionChanged(IFormPart part, ISelection selection) {
   if (!(part instanceof ElementSection)) return;
   Object obj = ((IStructuredSelection) selection).getFirstElement();
   if (obj instanceof ISchemaObject) {
     setBlockListeners(true);
     ISchemaObject sObj = (ISchemaObject) obj;
     fSchemaObject = sObj;
     if (fShowDTD && fDtdSection != null) fDtdSection.updateDTDLabel(obj);
     if (fShowDescription && fDescriptionViewer != null) updateDescriptionViewer(sObj);
     updateFields(sObj);
     setBlockListeners(false);
   }
 }