001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.uml.ui.controls.projecttree;
043:
044: import org.netbeans.modules.uml.core.metamodel.core.foundation.IElement;
045: import org.netbeans.modules.uml.core.metamodel.core.foundation.IElementImport;
046: import org.netbeans.modules.uml.core.metamodel.core.foundation.IPackageImport;
047: import org.netbeans.modules.uml.core.metamodel.core.foundation.IProxyElement;
048: import org.netbeans.modules.uml.core.metamodel.diagrams.IProxyDiagram;
049: import org.netbeans.modules.uml.core.metamodel.structure.IProject;
050: import org.netbeans.modules.uml.ui.support.projecttreesupport.ITreeItem;
051: import javax.swing.Action;
052: import org.openide.nodes.Node;
053:
054: /**
055: * Represents a node in the tree. It has a model element, data element, description and a
056: * path that specifies the location of the item in the tree.
057: *
058: * @author Trey Spiva
059: */
060: public interface IProjectTreeItem extends Node.Cookie {
061: /** The model element associated with this item in the tree, as a proxy */
062: public IProxyElement getProxyElement();
063:
064: /**
065: * Retrieve the path to the project tree item. The is specified
066: * by an array of item in the tree. The element in the array are
067: * ordered such that the first element is the root element and the
068: * last element is the IProjectTreeItem.
069: *
070: * @return The path.
071: */
072: ITreeItem[] getPath();
073:
074: /**
075: * Set the path to the to the project tree item. The is specified
076: * by an array of item in the tree. The element in the array are
077: * ordered such that the first element is the root element and the
078: * last element is the IProjectTreeItem.
079: *
080: * @param path The location of the item.
081: */
082: public void setPath(ITreeItem[] path);
083:
084: /**
085: * The model element associated with this item in the tree
086: */
087: public IElement getModelElement();
088:
089: /**
090: * The XMI ID represented of the model element.
091: *
092: * @return The id of the model element.
093: */
094: public String getModelElementXMIID();
095:
096: /**
097: * The XMI ID of the top element of the model element.
098: *
099: * @return The id of the top model element.
100: */
101: public String getTopLevelXMIID();
102:
103: /**
104: * Set the model element assocated with the project tree element.
105: * Once a model element is assocated with the project tree element
106: * then isModelElement will return true.
107: *
108: * @param element
109: */
110: public void setModelElement(IElement element);
111:
112: /**
113: * Does this tree item represent a model element?
114: */
115: public boolean isModelElement();
116:
117: /**
118: * Is this item the same as the passed in one.
119: */
120: public boolean isSameModelElement(IElement pQueryItem);
121:
122: /**
123: * Does this tree item represent an imported element?
124: */
125: public boolean isImportedModelElement();
126:
127: /**
128: * Retrieves the imported model element.
129: *
130: * @return The imported element. <code>null</code> will be
131: * returned if the project tree item is not an imported
132: * element.
133: * @see isImportedModelElement
134: */
135: public IElementImport getImportedModelElement();
136:
137: /**
138: * Does this tree item represent an imported package?
139: */
140: public boolean isImportedPackage();
141:
142: /**
143: * Retrieves the imported package.
144: *
145: * @return The imported package. <code>null</code> will be
146: * returned if the project tree item is not an imported
147: * package.
148: * @see isImportedPackage
149: */
150: public IPackageImport getImportedPackage();
151:
152: /**
153: * The model element metatype associated with this item in the tree
154: */
155: public String getModelElementMetaType();
156:
157: /**
158: * Sets the model element metatype associated with this item in the tree
159: */
160: public void setModelElementMetaType(String value);
161:
162: /**
163: * The Object that is the data of the tree item.
164: */
165: public Object getData();
166:
167: /**
168: * The model element tree data can have an Object associated with it. This
169: * routine allows you to set the additional data Object.
170: *
171: * @param data The additional data.
172: */
173: public void setData(Object value);
174:
175: /**
176: * A description of the node
177: */
178: public String getDescription();
179:
180: /**
181: * A description of the node
182: */
183: public void setDescription(String value);
184:
185: /**
186: * A secondary description of the node
187: */
188: public String getSecondaryDescription();
189:
190: /**
191: * A secondary description of the node
192: */
193: public void setSecondaryDescription(String value);
194:
195: /**
196: * Is this item the same as the passed in one.
197: */
198: public boolean isSame(IProjectTreeItem pQueryItem);
199:
200: /**
201: * How this item should be sorted in the tree. 1 = top of the list..
202: */
203: public long getSortPriority();
204:
205: /**
206: * How this item should be sorted in the tree. 1 = top of the list..
207: */
208: public void setSortPriority(long value);
209:
210: /**
211: * Does this tree item represent a diagram? This is based on
212: * if the description field is a .etl file.
213: */
214: public boolean isDiagram();
215:
216: /**
217: * Retrieve the diagram proxy for that is represented by the
218: * project tree item.
219: *
220: * @return The diagram proxy. <code>null</code> will be
221: * returned if the project tree item is not a diagram.
222: * @see isDiagram
223: */
224: public IProxyDiagram getDiagram();
225:
226: /**
227: * Is this item a project.
228: */
229: public boolean isProject();
230:
231: /**
232: * Retrieves the project that is represented by the project
233: * tree item.
234: *
235: * @return The IProject object. <code>null</code> will be
236: * returned if the project tree item is not a project.
237: * @see isProject
238: */
239: public IProject getProject();
240:
241: /**
242: * Is this item a workspace.
243: */
244: public boolean isWorkspace();
245:
246: /**
247: * The current item text of the node
248: */
249: public String getItemText();
250:
251: /**
252: * The current item text of the node
253: */
254: public void setItemText(String value);
255:
256: /**
257: * The project tree support ITreeItem associated with this item in the tree
258: */
259: public ITreeItem getProjectTreeSupportTreeItem();
260:
261: /**
262: * The project tree support ITreeItem associated with this item in the tree
263: */
264: public void setProjectTreeSupportTreeItem(ITreeItem value);
265:
266: public void setAsAddinNode(boolean val);
267:
268: public boolean isAddinNode();
269:
270: public void setActions(Action[] actions);
271:
272: public Action[] getActions();
273:
274: }
|