1 19 package org.netbeans.modules.xml.retriever.catalog.model.impl; 20 21 import org.netbeans.modules.xml.retriever.catalog.model.NextCatalog; 22 import org.netbeans.modules.xml.xam.ComponentUpdater; 23 import org.netbeans.modules.xml.xam.ComponentUpdater.Operation; 24 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent; 25 import org.netbeans.modules.xml.retriever.catalog.model.Catalog; 26 import org.netbeans.modules.xml.retriever.catalog.model.CatalogComponent; 27 import org.netbeans.modules.xml.retriever.catalog.model.CatalogVisitor; 28 import org.netbeans.modules.xml.retriever.catalog.model.Catalog; 29 30 public class SyncUpdateVisitor extends CatalogVisitor.Default implements ComponentUpdater<CatalogComponent> { 31 private CatalogComponent target; 32 private Operation operation; 33 private int index; 34 35 public SyncUpdateVisitor() { 36 } 37 38 public void update(CatalogComponent target, CatalogComponent child, Operation operation) { 39 update(target, child, -1 , operation); 40 } 41 42 public void update(CatalogComponent target, CatalogComponent child, int index, Operation operation) { 43 assert target != null; 44 assert child != null; 45 this.target = target; 46 this.index = index; 47 this.operation = operation; 48 child.accept(this); 49 } 50 51 private void insert(String propertyName, CatalogComponent component) { 52 ((CatalogComponentImpl)target).insertAtIndex(propertyName, component, index); 53 } 54 55 private void remove(String propertyName, CatalogComponent component) { 56 ((CatalogComponentImpl)target).removeChild(propertyName, component); 57 } 58 59 public void visit(org.netbeans.modules.xml.retriever.catalog.model.System system) { 60 if (target instanceof Catalog) { 61 if (operation == Operation.ADD) { 62 insert(Catalog.SYSTEM_PROP, system); 63 } else { 64 remove(Catalog.SYSTEM_PROP, system); 65 } 66 } 67 } 68 69 public void visit(NextCatalog nextCatalog) { 70 if (target instanceof Catalog) { 71 if (operation == Operation.ADD) { 72 insert(Catalog.NEXTCATALOG_PROP, nextCatalog); 73 } else { 74 remove(Catalog.NEXTCATALOG_PROP, nextCatalog); 75 } 76 } 77 } 78 79 } 80 | Popular Tags |