001: /*
002: * The contents of this file are subject to the terms of the Common Development
003: * and Distribution License (the License). You may not use this file except in
004: * compliance with the License.
005: *
006: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
007: * or http://www.netbeans.org/cddl.txt.
008: *
009: * When distributing Covered Code, include this CDDL Header Notice in each file
010: * and include the License file at http://www.netbeans.org/cddl.txt.
011: * If applicable, add the following below the CDDL Header, with the fields
012: * enclosed by brackets [] replaced by your own identifying information:
013: * "Portions Copyrighted [year] [name of copyright owner]"
014: *
015: * The Original Software is NetBeans. The Initial Developer of the Original
016: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
017: * Microsystems, Inc. All Rights Reserved.
018: */
019:
020: package org.netbeans.modules.bpel.design.model.patterns;
021:
022: import java.util.Collection;
023: import org.netbeans.modules.bpel.design.geometry.FBounds;
024: import org.netbeans.modules.bpel.design.geometry.FDimension;
025: import org.netbeans.modules.bpel.editors.api.nodes.NodeType;
026: import org.netbeans.modules.bpel.design.selection.PlaceHolder;
027: import org.netbeans.modules.bpel.model.api.Activity;
028: import org.netbeans.modules.bpel.model.api.BpelEntity;
029: import org.netbeans.modules.bpel.model.api.Else;
030: import org.netbeans.modules.bpel.design.layout.LayoutManager;
031: import org.netbeans.modules.bpel.design.model.DiagramModel;
032: import org.netbeans.modules.bpel.design.model.elements.PlaceHolderElement;
033: import org.netbeans.modules.bpel.design.model.elements.VisualElement;
034:
035: public class ElsePattern extends CompositePattern {
036:
037: private PlaceHolderElement placeHolder;
038:
039: public ElsePattern(DiagramModel model) {
040: super (model);
041: }
042:
043: public boolean isSelectable() {
044: return false;
045: }
046:
047: protected void onAppendPattern(Pattern nestedPattern) {
048: removeElement(placeHolder);
049: }
050:
051: protected void onRemovePattern(Pattern nestedPattern) {
052: appendElement(placeHolder);
053: }
054:
055: public VisualElement getFirstElement() {
056: Pattern p = getNestedPattern();
057: return (p != null) ? p.getFirstElement() : placeHolder;
058: }
059:
060: public VisualElement getLastElement() {
061: Pattern p = getNestedPattern();
062: return (p != null) ? p.getLastElement() : placeHolder;
063: }
064:
065: public FBounds layoutPattern(LayoutManager manager) {
066: Pattern p = getNestedPattern();
067:
068: double width;
069: double height;
070:
071: if (p != null) {
072: FBounds bounds = p.getBounds();
073: width = bounds.width;
074: height = bounds.height;
075: manager.setPatternPosition(p, 0, 0);
076: } else {
077: width = placeHolder.getWidth();
078: height = placeHolder.getHeight();
079: placeHolder.setLocation(0, 0);
080: }
081:
082: return null; //manager.setBorderBounds(getBorder(), 0, 0, width, height);
083: }
084:
085: protected void createElementsImpl() {
086: //setBorder(new GroupBorder());
087: //setBorder(new ElseIfBorder());
088:
089: placeHolder = new PlaceHolderElement();
090: appendElement(placeHolder);
091:
092: BpelEntity activity = ((Else) getOMReference()).getActivity();
093: if (activity != null) {
094: getModel().createPattern(activity).setParent(this );
095: }
096: }
097:
098: public void createPlaceholders(Pattern draggedPattern,
099: Collection<PlaceHolder> placeHolders) {
100: if (!(draggedPattern.getOMReference() instanceof Activity))
101: return;
102: if (((Else) getOMReference()).getActivity() != null)
103: return;
104:
105: placeHolders.add(new InnerPlaceHolder(draggedPattern));
106: }
107:
108: public NodeType getNodeType() {
109: return NodeType.ELSE;
110: }
111:
112: class InnerPlaceHolder extends PlaceHolder {
113: public InnerPlaceHolder(Pattern draggedPattern) {
114: super (ElsePattern.this , draggedPattern, placeHolder
115: .getCenterX(), placeHolder.getCenterY());
116: }
117:
118: public void drop() {
119: ((Else) getOMReference())
120: .setActivity((Activity) getDraggedPattern()
121: .getOMReference());
122: }
123: }
124: }
|