001: /*
002: * To change this template, choose Tools | Templates
003: * and open the template in the editor.
004: */
005: package org.netbeans.modules.bpel.design;
006:
007: import java.awt.Graphics2D;
008: import java.util.ArrayList;
009: import java.util.Iterator;
010: import java.util.List;
011: import org.netbeans.modules.bpel.design.DesignView;
012: import org.netbeans.modules.bpel.design.geometry.FBounds;
013: import org.netbeans.modules.bpel.design.model.connections.MessageConnection;
014: import org.netbeans.modules.bpel.design.model.elements.VisualElement;
015: import org.netbeans.modules.bpel.design.model.patterns.CompositePattern;
016: import org.netbeans.modules.bpel.design.model.patterns.PartnerLinksPattern;
017: import org.netbeans.modules.bpel.design.model.patterns.Pattern;
018: import org.netbeans.modules.bpel.design.selection.PlaceHolder;
019: import org.netbeans.modules.bpel.core.helper.api.CoreUtil;
020:
021: /**
022: *
023: * @author Alexey
024: */
025: public class ProcessView extends DiagramView {
026:
027: public ProcessView(DesignView designView) {
028: super (designView);
029:
030: // vlv: print
031: putClientProperty(java.awt.print.Printable.class, CoreUtil
032: .getProcessName(designView.getBPELModel()));
033: putClientProperty(java.lang.Integer.class, new Integer(1));
034: }
035:
036: @Override
037: /**
038: * Ignores the content of PLs pattern;
039: *
040: */
041: protected void paintPattern(Graphics2D g2, Graphics2D g2bw,
042: Pattern pattern, FBounds clipBounds, boolean printMode) {
043: if (pattern instanceof PartnerLinksPattern) {
044: return;
045: }
046: MessageConnection.resetRoutingInfo();
047: super .paintPattern(g2, g2bw, pattern, clipBounds, printMode);
048: }
049:
050: public FBounds getContentSize() {
051: Pattern rp = getDesignView().getModel().getRootPattern();
052: return (rp != null) ? rp.getBounds() : new FBounds(0, 0);
053: }
054:
055: @Override
056: public Iterator<Pattern> getPatterns() {
057: return new ListBuilder().getList();
058:
059: }
060:
061: class ListBuilder {
062:
063: private ArrayList<Pattern> list;
064:
065: public Iterator<Pattern> getList() {
066: list = new ArrayList<Pattern>();
067: buildList(getDesignView().getModel().getRootPattern());
068: return list.iterator();
069: }
070:
071: private void buildList(Pattern pattern) {
072: if (pattern instanceof PartnerLinksPattern) {
073: return;
074: }
075:
076: list.add(pattern);
077:
078: if (pattern instanceof CompositePattern) {
079: for (Pattern p : ((CompositePattern) pattern)
080: .getNestedPatterns()) {
081: buildList(p);
082: }
083: }
084:
085: }
086: }
087:
088: @Override
089: public void getPlaceholders(Pattern draggedPattern,
090: List<PlaceHolder> placeHolders) {
091: //EMPTY. This view does not provide any additional placeholders
092: }
093:
094: @Override
095: public VisualElement findElement(double x, double y) {
096: Pattern root = getDesignView().getModel().getRootPattern();
097: return findElement(root, x, y);
098: }
099:
100: private VisualElement findElement(Pattern pattern, double x,
101: double y) {
102: if (pattern instanceof PartnerLinksPattern) {
103: return null;
104: }
105:
106: if (pattern instanceof CompositePattern) {
107: for (Pattern p : ((CompositePattern) pattern)
108: .getNestedPatterns()) {
109: VisualElement e = findElement(p, x, y);
110: if (e != null) {
111: return e;
112: }
113: }
114: }
115: return findElementInPattern(pattern, x, y);
116: }
117: }
|