KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > grapheditor > widget > PartnerLinkTypeWidget


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
20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget;
21
22 import java.awt.Color JavaDoc;
23 import java.awt.Dimension JavaDoc;
24 import java.awt.EventQueue JavaDoc;
25 import java.awt.Image JavaDoc;
26 import java.awt.Point JavaDoc;
27 import java.awt.Rectangle JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.ListIterator JavaDoc;
30 import javax.swing.Action JavaDoc;
31 import javax.swing.BorderFactory JavaDoc;
32 import javax.swing.border.EmptyBorder JavaDoc;
33 import org.netbeans.api.visual.action.ActionFactory;
34 import org.netbeans.api.visual.action.TextFieldInplaceEditor;
35 import org.netbeans.api.visual.action.WidgetAction.WidgetDropTargetDragEvent;
36 import org.netbeans.api.visual.action.WidgetAction.WidgetDropTargetDropEvent;
37 import org.netbeans.api.visual.border.Border;
38 import org.netbeans.api.visual.layout.LayoutFactory;
39 import org.netbeans.api.visual.layout.LayoutFactory.SerialAlignment;
40 import org.netbeans.api.visual.model.ObjectState;
41 import org.netbeans.api.visual.widget.Scene;
42 import org.netbeans.api.visual.widget.Widget;
43 import org.netbeans.modules.xml.wsdl.model.extensions.bpel.PartnerLinkType;
44 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.border.GradientFillBorder;
45 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.layout.LeftRightLayout;
46 import org.netbeans.modules.xml.xam.Model;
47 import org.netbeans.modules.xml.xam.ui.XAMUtils;
48 import org.openide.actions.NewAction;
49 import org.openide.util.Lookup;
50 import org.openide.util.Utilities;
51
52 /**
53  * Represents a partner link type WSDL component.
54  */

55 public class PartnerLinkTypeWidget extends AbstractWidget<PartnerLinkType>
56         implements ExpandableWidget, DnDHandler {
57
58     private static final boolean EXPANDED_DEFAULT = true;
59     private final PartnerLinkType mPartnerLinkType;
60     private Widget mLabelWidget;
61
62     private PartnerLinkTypeContentWidget mContentWidget;
63
64     private Widget mHeaderWidget;
65     private ExpanderWidget expander;
66
67     private static final Image JavaDoc IMAGE = Utilities.loadImage("org/netbeans/modules/xml/wsdl/ui/view/treeeditor/extension/bpel/resources/partnerlinktype.png");
68
69     private static final Border JavaDoc HEADER_BORDER = new GradientFillBorder(0, 0, 4, 8,
70             null, WidgetConstants.PARTNERLINKTYPE_GRADIENT_TOP_COLOR, WidgetConstants.PARTNERLINKTYPE_GRADIENT_BOTTOM_COLOR);
71     
72     public PartnerLinkTypeWidget(Scene scene, PartnerLinkType partnerLinkType, Lookup lookup) {
73         super(scene, partnerLinkType, lookup);
74         //mSizeRect = scene.getBounds();
75
assert partnerLinkType != null : "partnerLinkTypeWidget cannot be created";
76         mPartnerLinkType = partnerLinkType;
77         init();
78     }
79
80     private void init() {
81         setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLUE.darker()));
82         setLayout(LayoutFactory.createVerticalLayout());
83         Widget actionsWidget = createActionsWidget();
84         mHeaderWidget = new HeaderWidget(getScene(), expander);
85         mHeaderWidget.setLayout(new LeftRightLayout(32));
86         addChild(mHeaderWidget);
87
88         mLabelWidget = createLabelWidget();
89         mHeaderWidget.setBorder(HEADER_BORDER);
90         mHeaderWidget.addChild(mLabelWidget);
91         
92         
93         mHeaderWidget.addChild(actionsWidget);
94         mHeaderWidget.setOpaque(true);
95         
96         mHeaderWidget.setMinimumSize(new Dimension JavaDoc(0, 30));
97
98         mContentWidget = new PartnerLinkTypeContentWidget(getScene(), mPartnerLinkType);
99         if (ExpanderWidget.isExpanded(this, EXPANDED_DEFAULT)) {
100             addChild(mContentWidget);
101         }
102
103         getActions().addAction(((PartnerScene) getScene()).getDnDAction());
104     }
105
106     private Widget createLabelWidget() {
107         Widget labelWidget = new ImageLabelWidget(getScene(), IMAGE, mPartnerLinkType.getName());
108         labelWidget.setBorder(new EmptyBorder JavaDoc(4, 4, 1, 1));
109         labelWidget.getActions().addAction(ActionFactory.createInplaceEditorAction(
110                 new TextFieldInplaceEditor() {
111
112             public void setText(Widget widget, String JavaDoc text) {
113                 Model model = mPartnerLinkType.getModel();
114                 try {
115                     if (model.startTransaction()) {
116                         mPartnerLinkType.setName(text);
117                     }
118                 } finally {
119                     model.endTransaction();
120                 }
121             }
122
123             public boolean isEnabled(Widget widget) {
124                 if (getWSDLComponent() != null) {
125                     return XAMUtils.isWritable(getWSDLComponent().getModel());
126                 }
127                 return false;
128             }
129
130             public String JavaDoc getText(Widget widget) {
131                 return mPartnerLinkType.getName();
132             }
133
134         }, null));
135         return labelWidget;
136     }
137
138     @Override JavaDoc
139     public void updateContent() {
140         if (mHeaderWidget.getChildren().contains(mLabelWidget)) {
141             mHeaderWidget.removeChild(mLabelWidget);
142         }
143         mLabelWidget = createLabelWidget();
144         mHeaderWidget.addChild(0, mLabelWidget);
145         
146         mContentWidget.updateContent();
147     }
148
149     public void expandWidget(ExpanderWidget expander) {
150         if (mContentWidget.getParentWidget() == null) {
151             addChild(mContentWidget);
152             getScene().revalidate();
153             EventQueue.invokeLater(new Runnable JavaDoc() {
154                 public void run() {
155                     // It is quite likely that this widget just got wider
156
// because of the new children widgets. Save the width
157
// of the parent collaborations widget as its new
158
// minimum size so we do not shrink when we are
159
// collapsed, which would probably annoy the user.
160
Widget parent = getCollaborationWidget();
161                     Rectangle JavaDoc bounds = parent.getBounds();
162                     parent.setMinimumSize(new Dimension JavaDoc(bounds.width, 0));
163                 }
164             });
165         }
166     }
167
168     public void collapseWidget(ExpanderWidget expander) {
169         if (mContentWidget.getParentWidget() != null) {
170             removeChild(mContentWidget);
171             getScene().revalidate();
172         }
173     }
174     
175     public void collapseWidget() {
176         expander.setExpanded(false);
177     }
178     
179     private Widget createActionsWidget() {
180         Widget actionsHolderWidget = new Widget(getScene());
181         actionsHolderWidget.setLayout(LayoutFactory.createHorizontalLayout(SerialAlignment.JUSTIFY, 8));
182 /* ButtonWidget removeButton = new ButtonWidget(getScene(), "LBL_CollaborationsWidget_RemovePartnerLinkType");
183         removeButton.setActionListener(new ActionListener() {
184         
185             public void actionPerformed(ActionEvent e) {
186                 deleteComponent();
187             }
188         
189         });
190         
191         actionsHolderWidget.addChild(removeButton);*/

192         
193         expander = new ExpanderWidget(getScene(), this,
194                 ExpanderWidget.isExpanded(this, EXPANDED_DEFAULT));
195         actionsHolderWidget.addChild(expander);
196
197         return actionsHolderWidget;
198     }
199     
200     
201     @Override JavaDoc
202     protected void notifyStateChanged(ObjectState previousState, ObjectState state) {
203         super.notifyStateChanged(previousState, state);
204         
205         if (state.isSelected()) {
206             CollaborationsWidget collaborationsWidget = getCollaborationWidget();
207             if (collaborationsWidget != null) {
208                 collaborationsWidget.childPartnerLinkTypeSelected(this);
209             }
210         } else {
211             CollaborationsWidget collaborationsWidget = getCollaborationWidget();
212             if (collaborationsWidget != null) {
213                 collaborationsWidget.childPartnerLinkTypeUnSelected(this);
214             }
215         }
216     }
217     
218     private CollaborationsWidget getCollaborationWidget() {
219         for (Widget w = this; w != null; w = w.getParentWidget()) {
220             if (w instanceof CollaborationsWidget) return (CollaborationsWidget) w;
221         }
222         return null;
223     }
224
225     public void dragExit() {
226         
227     }
228
229     public boolean dragOver(Point JavaDoc scenePoint, WidgetDropTargetDragEvent event) {
230         return false;
231     }
232
233     public boolean drop(Point JavaDoc scenePoint, WidgetDropTargetDropEvent event) {
234         return false;
235     }
236
237     public void expandForDragAndDrop() {
238         expander.setExpanded(true);
239     }
240
241     public boolean isCollapsed() {
242         return mContentWidget.getParentWidget() == null;
243     }
244
245     public Object JavaDoc hashKey() {
246         PartnerLinkType comp = getWSDLComponent();
247         return comp != null ? comp.getName() : this;
248     }
249
250     @Override JavaDoc
251     protected void updateActions(List JavaDoc<Action JavaDoc> actions) {
252         super.updateActions(actions);
253         ListIterator JavaDoc<Action JavaDoc> liter = actions.listIterator();
254         while (liter.hasNext()) {
255             Action JavaDoc action = liter.next();
256             if (action instanceof NewAction) {
257                 liter.remove();
258             }
259         }
260     }
261 }
262
Popular Tags