1 19 package org.netbeans.modules.xml.schema.abe; 20 21 import java.awt.Component ; 22 import java.awt.dnd.DropTargetDragEvent ; 23 import java.awt.dnd.DropTargetDropEvent ; 24 import java.awt.dnd.DropTargetEvent ; 25 import java.awt.event.MouseAdapter ; 26 import java.awt.event.MouseEvent ; 27 import java.beans.PropertyChangeEvent ; 28 import java.util.ArrayList ; 29 import java.util.List ; 30 import org.netbeans.modules.xml.axi.AXIComponent; 31 import org.netbeans.modules.xml.axi.AXIContainer; 32 import org.netbeans.modules.xml.axi.AXIDocument; 33 import org.netbeans.modules.xml.axi.AXIModel; 34 import org.netbeans.modules.xml.axi.ContentModel; 35 import org.netbeans.modules.xml.axi.Element; 36 import org.netbeans.modules.xml.schema.abe.nodes.ABEAbstractNode; 37 import org.netbeans.modules.xml.schema.abe.palette.DnDHelper; 38 import org.openide.util.NbBundle; 39 40 44 public class GlobalComplextypeContainerPanel extends ElementsContainerPanel{ 45 46 private static final long serialVersionUID = 7526472295622776147L; 47 48 public GlobalComplextypeContainerPanel(InstanceUIContext context, 49 AXIComponent axiComponent, boolean openByDefault) { 50 super(context, axiComponent, (Component ) null, openByDefault); 51 setDrawAnnotation(false); 53 initMouseListener(); 54 } 55 56 57 protected void setupAXIComponentListener() { 58 getAXIParent().addPropertyChangeListener(new ModelEventMediator(this, getAXIParent()) { 59 public void _propertyChange(PropertyChangeEvent evt) { 60 if(evt.getPropertyName().equals(ContentModel.PROP_CONTENT_MODEL)){ 61 if(context.isUserInducedEventMode()){ 62 addAllChildren(); 63 setVisible(true); 64 } 65 if((evt.getOldValue() == null) && (evt.getNewValue() != null)){ 67 addElement((AXIContainer)evt.getNewValue()); 69 }else if((evt.getNewValue() == null) && (evt.getOldValue() != null)){ 70 removeElement((AXIContainer)evt.getOldValue()); 72 } 73 74 } 75 } 76 }); 77 } 78 79 public int getChildrenIndent(){ 80 return InstanceDesignConstants.GLOBAL_ELEMENT_PANEL_INDENT; 81 } 82 83 public List <? extends AXIComponent> getAXIChildren() { 84 ArrayList <ContentModel> list = new ArrayList <ContentModel> (((AXIDocument) 85 getAXIParent()).getContentModels()); 86 ArrayList <ContentModel> cloneList = new ArrayList <ContentModel>(list); 87 for(ContentModel child: list){ 88 if(child.getType() != ContentModel.ContentModelType.COMPLEX_TYPE) 89 cloneList.remove(child); 90 } 91 return getAXIChildrenSorted(cloneList); 92 } 93 94 95 protected List <? extends AXIComponent> getAXIChildrenSorted(List <ContentModel> elementList) { 96 103 return elementList; 104 } 105 106 public void visit(Element element) { 107 } 110 111 public void visit(ContentModel contentModel) { 112 super.visit(contentModel); 113 if(contentModel.getType() == contentModel.getType().COMPLEX_TYPE) 115 visitorResult = new ContentModelPanel(context, contentModel, this); 116 } 117 118 119 public void tweenerDrop(TweenerPanel tweener, DnDHelper.PaletteItem paletteItem) { 120 super.tweenerDrop(tweener, paletteItem); 121 if(paletteItem == paletteItem.COMPLEXTYPE){ 122 ABEBaseDropPanel comp = null; 123 comp = context.getNamespacePanel(); 124 context.setUserInducedEventMode(true, comp); 125 addNewComplextypeAt(tweener); 126 } 127 } 128 129 public void tweenerDragEntered(TweenerPanel tweener, DnDHelper.PaletteItem paletteItem) { 130 super.tweenerDragEntered(tweener, paletteItem); 131 if(tweenerDragAccept(tweener, paletteItem)){ 132 String locDropMsgAccept = NbBundle.getMessage(GlobalComplextypeContainerPanel.class, 133 "MSG_GCTP_DROP_ACCEPT"); 134 tweener.setDropInfoText(locDropMsgAccept); 135 } 136 } 137 138 public boolean tweenerDragAccept(TweenerPanel tweener, DnDHelper.PaletteItem paletteItem) { 139 if(paletteItem != paletteItem.COMPLEXTYPE){ 140 String locDropMsgAccept = NbBundle.getMessage(GlobalComplextypeContainerPanel.class, 141 "MSG_GCTP_DROP_REJECT"); 142 UIUtilities.showErrorMessageFor(locDropMsgAccept, context, tweener); 143 return false; 144 } 145 return true; 146 } 147 148 public void tweenerDragExited(TweenerPanel tweener) { 149 super.tweenerDragExited(tweener); 150 UIUtilities.hideGlassMessage(); 151 } 152 153 private void addNewComplextypeAt(TweenerPanel tweener) { 154 int index = getChildrenList().indexOf(tweener); 155 if(index == -1){ 156 return; 158 } 159 AXIModel model = getAXIParent().getModel(); 161 model.startTransaction(); 162 try{ 163 ContentModel cm = model.getComponentFactory().createComplexType(); 164 String str = UIUtilities.getUniqueName( 165 InstanceDesignConstants.NEW_COMPLEXTYPE_NAME, getAXIParent()); 166 cm.setName(str); 167 ((AXIDocument)getAXIParent()).addContentModel(cm); 168 }finally{ 169 model.endTransaction(); 170 } 171 } 172 173 public void accept(UIVisitor visitor) { 174 visitor.visit(this); 175 } 176 177 public ABEAbstractNode getNBNode() { 178 return context.getNamespacePanel().getNBNode(); 180 } 181 182 183 184 protected void initMouseListener(){ 185 addMouseListener(new MouseAdapter () { 186 public void mouseReleased(MouseEvent e) { 187 mouseClickedActionHandler(e); 188 } 189 public void mouseClicked(MouseEvent e){ 190 mouseClickedActionHandler(e); 191 } 192 193 public void mousePressed(MouseEvent e) { 194 mouseClickedActionHandler(e); 195 } 196 }); 197 } 198 199 200 protected void mouseClickedActionHandler(MouseEvent e){ 201 if(e.getClickCount() == 1){ 202 if(e.isPopupTrigger()){ 203 context.getMultiComponentActionManager().showPopupMenu(e, this); 204 return; 205 } 206 } 207 context.getComponentSelectionManager().setSelectedComponent(this); 209 } 210 211 212 public void drop(DropTargetDropEvent event) { 213 context.getNamespacePanel().drop(event); 214 } 215 216 public void dragExit(DropTargetEvent event) { 217 context.getNamespacePanel().dragExit(event); 218 } 219 220 public void dragOver(DropTargetDragEvent event) { 221 context.getNamespacePanel().dragOver(event); 222 } 223 224 public void dragEnter(DropTargetDragEvent event) { 225 context.getNamespacePanel().dragEnter(event); 226 } 227 228 } 229 | Popular Tags |