KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > schema > abe > GlobalComplextypeContainerPanel


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.xml.schema.abe;
20
21 import java.awt.Component JavaDoc;
22 import java.awt.dnd.DropTargetDragEvent JavaDoc;
23 import java.awt.dnd.DropTargetDropEvent JavaDoc;
24 import java.awt.dnd.DropTargetEvent JavaDoc;
25 import java.awt.event.MouseAdapter JavaDoc;
26 import java.awt.event.MouseEvent JavaDoc;
27 import java.beans.PropertyChangeEvent JavaDoc;
28 import java.util.ArrayList JavaDoc;
29 import java.util.List JavaDoc;
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 /**
41  *
42  * @author girix
43  */

44 public class GlobalComplextypeContainerPanel extends ElementsContainerPanel{
45     
46     private static final long serialVersionUID = 7526472295622776147L;
47     /** Creates a new instance of GlobalElementsContainerPanel */
48     public GlobalComplextypeContainerPanel(InstanceUIContext context,
49             AXIComponent axiComponent, boolean openByDefault) {
50         super(context, axiComponent, (Component JavaDoc) null, openByDefault);
51         //dont draw annotation
52
setDrawAnnotation(false);
53         initMouseListener();
54     }
55     
56     
57     protected void setupAXIComponentListener() {
58         getAXIParent().addPropertyChangeListener(new ModelEventMediator(this, getAXIParent()) {
59             public void _propertyChange(PropertyChangeEvent JavaDoc evt) {
60                 if(evt.getPropertyName().equals(ContentModel.PROP_CONTENT_MODEL)){
61                     if(context.isUserInducedEventMode()){
62                         addAllChildren();
63                         setVisible(true);
64                     }
65                     //event is for child element
66
if((evt.getOldValue() == null) && (evt.getNewValue() != null)){
67                         //new element added
68
addElement((AXIContainer)evt.getNewValue());
69                     }else if((evt.getNewValue() == null) && (evt.getOldValue() != null)){
70                         //old element removed
71
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 JavaDoc<? extends AXIComponent> getAXIChildren() {
84         ArrayList JavaDoc<ContentModel> list = new ArrayList JavaDoc<ContentModel> (((AXIDocument)
85         getAXIParent()).getContentModels());
86         ArrayList JavaDoc<ContentModel> cloneList = new ArrayList JavaDoc<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 JavaDoc<? extends AXIComponent> getAXIChildrenSorted(List JavaDoc<ContentModel> elementList) {
96         /*Collections.sort(elementList,
97                 new Comparator<ContentModel>() {
98             public int compare(ContentModel e1, ContentModel e2) {
99                 return e1.getName().compareTo(e2.getName());
100             }
101          
102         });*/

103         return elementList;
104     }
105     
106     public void visit(Element element) {
107         //ignore
108
//super.visit(element);
109
}
110     
111     public void visit(ContentModel contentModel) {
112         super.visit(contentModel);
113         //care only abt ContentModel
114
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 JavaDoc 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 JavaDoc 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             //must not happen
157
return;
158         }
159         //index = index/2;
160
AXIModel model = getAXIParent().getModel();
161         model.startTransaction();
162         try{
163             ContentModel cm = model.getComponentFactory().createComplexType();
164             String JavaDoc 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         //just return the namespace panel node
179
return context.getNamespacePanel().getNBNode();
180     }
181     
182     
183     
184     protected void initMouseListener(){
185         addMouseListener(new MouseAdapter JavaDoc() {
186             public void mouseReleased(MouseEvent JavaDoc e) {
187                 mouseClickedActionHandler(e);
188             }
189             public void mouseClicked(MouseEvent JavaDoc e){
190                 mouseClickedActionHandler(e);
191             }
192             
193             public void mousePressed(MouseEvent JavaDoc e) {
194                 mouseClickedActionHandler(e);
195             }
196         });
197     }
198     
199     
200     protected void mouseClickedActionHandler(MouseEvent JavaDoc e){
201         if(e.getClickCount() == 1){
202             if(e.isPopupTrigger()){
203                 context.getMultiComponentActionManager().showPopupMenu(e, this);
204                 return;
205             }
206         }
207         //the tag is selected
208
context.getComponentSelectionManager().setSelectedComponent(this);
209     }
210     
211     
212     public void drop(DropTargetDropEvent JavaDoc event) {
213         context.getNamespacePanel().drop(event);
214     }
215     
216     public void dragExit(DropTargetEvent JavaDoc event) {
217         context.getNamespacePanel().dragExit(event);
218     }
219     
220     public void dragOver(DropTargetDragEvent JavaDoc event) {
221         context.getNamespacePanel().dragOver(event);
222     }
223     
224     public void dragEnter(DropTargetDragEvent JavaDoc event) {
225         context.getNamespacePanel().dragEnter(event);
226     }
227     
228 }
229
Popular Tags