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.soa.mapper.basicmapper;
021:
022: import java.beans.PropertyChangeListener;
023: import java.util.Vector;
024:
025: import org.netbeans.modules.soa.mapper.basicmapper.util.MapperUtilities;
026: import org.netbeans.modules.soa.mapper.common.IMapperLink;
027: import org.netbeans.modules.soa.mapper.common.IMapperNode;
028:
029: /**
030: * <p>
031: *
032: * Title: BasicLink </p> <p>
033: *
034: * Description: A basic link provides IMapperLink functionalites. </p> <p>
035: *
036: * Copyright: Copyright (c) 2002 </p> <p>
037: *
038: * Company: </p>
039: *
040: * @author Un Seng Leong
041: * @created December 19, 2002
042: * @version 1.0
043: */
044: public class MapperLink implements IMapperLink {
045:
046: /**
047: * the end node of this link
048: */
049: private IMapperNode mEndNode;
050:
051: /**
052: * the storge of PropertyChangeListeners
053: */
054: private Vector mPropertyListeners;
055:
056: /**
057: * the start node of this link
058: */
059: private IMapperNode mStartNode;
060:
061: /**
062: * the user link object.
063: */
064: private Object mLinkObj;
065:
066: /**
067: * Construct an empty link with no start and end node. This constructor
068: * calls another constructor as MapperLink (null, null).
069: */
070: public MapperLink() {
071: this (null, null);
072: }
073:
074: /**
075: * Construct a new link with specified start and end node.
076: *
077: * @param startNode the start node of this link
078: * @param endNode the end node of this link
079: */
080: public MapperLink(IMapperNode startNode, IMapperNode endNode) {
081: mStartNode = startNode;
082: mEndNode = endNode;
083: mPropertyListeners = new Vector();
084: }
085:
086: /**
087: * Return the end node of this link.
088: *
089: * @return the end node of this link
090: */
091: public IMapperNode getEndNode() {
092: return mEndNode;
093: }
094:
095: /**
096: * Return the start node of the link.
097: *
098: * @return the start node of the link.
099: */
100: public IMapperNode getStartNode() {
101: return mStartNode;
102: }
103:
104: /**
105: * Set the end node of this link.
106: *
107: * @param end the end node of this link.
108: */
109: public void setEndNode(IMapperNode end) {
110: IMapperNode oldNode = mEndNode;
111: mEndNode = end;
112: firePropertyChange(SOURCE_CHANGE, end, oldNode);
113: }
114:
115: /**
116: * Set the start node of this link.
117: *
118: * @param start the start node of this link.
119: */
120: public void setStartNode(IMapperNode start) {
121: IMapperNode oldNode = mStartNode;
122: mStartNode = start;
123: firePropertyChange(DESTINATION_CHANGE, start, oldNode);
124: }
125:
126: /**
127: * Set the link user object.
128: *
129: * @param obj The new user object of this link
130: */
131: public void setLinkObject(Object obj) {
132: mLinkObj = obj;
133: }
134:
135: /**
136: * Gets the user object of this link
137: *
138: * @return The user object of this link
139: */
140: public Object getLinkObject() {
141: return mLinkObj;
142: }
143:
144: /**
145: * Adds a PropertyChangeListener to the listener list.
146: *
147: * @param listener the PropertyChangeListener to be added
148: */
149: public void addPropertyChangeListener(
150: PropertyChangeListener listener) {
151: mPropertyListeners.add(listener);
152: }
153:
154: /**
155: * Removes a PropertyChangeListener from the listener list.
156: *
157: * @param listener the PropertyChangeListener to be removed
158: */
159: public void removePropertyChangeListener(
160: PropertyChangeListener listener) {
161: mPropertyListeners.remove(listener);
162: }
163:
164: /**
165: * Fire a specified property change event of this node.
166: *
167: * @param propertyName the name of this property has changed
168: * @param newValue the new value of the property
169: * @param oldValue the old value of the property
170: */
171: protected void firePropertyChange(String propertyName,
172: Object newValue, Object oldValue) {
173:
174: if (mPropertyListeners.size() > 0) {
175: MapperUtilities
176: .firePropertyChanged(
177: (PropertyChangeListener[]) mPropertyListeners
178: .toArray(new PropertyChangeListener[mPropertyListeners
179: .size()]), this,
180: propertyName, newValue, oldValue);
181: }
182: }
183:
184: }
|