uidesigner/com.nokia.sdt.emf.dm/src/com/nokia/sdt/emf/dm/INode.java
changeset 0 fb279309251b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.sdt.emf.dm/src/com/nokia/sdt/emf/dm/INode.java	Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.sdt.emf.dm;
+
+
+import com.nokia.sdt.component.IComponent;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * @model
+ */
+public interface INode extends EObject{
+	
+		// required key for name property
+	public static final String NAME_PROPERTY = "name";
+	
+	/**
+	 * @model
+	 * @return
+	 */
+	String	getComponentId();
+		
+
+	/**
+	 * Sets the value of the '{@link com.nokia.sdt.emf.dm.INode#getComponentId <em>Component Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Component Id</em>' attribute.
+	 * @see #getComponentId()
+	 * @generated
+	 */
+	void setComponentId(String value);
+
+	IComponent	getComponent();
+	
+	String getName();
+	
+	/**
+	 * Validate a potential new name for the node. The new
+	 * name must be a legal identifier and unique within
+	 * the model. A legal identifier is composed of alphanumeric
+	 * characters
+	 * @param newName the proposed new name
+	 * @return null if name is valid, or a localized error message if not.
+	 */
+	String validateName(String newName);
+	
+	/**
+	 * @model changeable="false" containment="true"
+	 */
+	IPropertyContainer getProperties();
+
+	/**
+	 * @model type="com.nokia.sdt.emf.dm.INode" containment="true"
+	 * @return
+	 */
+	EList getChildren();
+	
+	/**
+	 * Return the topmost INode containing this one
+	 */
+	INode getRootContainer();
+	
+	/**
+	 * Return the IDesignerData for the model
+	 */
+	IDesignerData getDesignerData();
+	
+	/**
+	 * Looks for a node with the given name, by checking this
+	 * node and all its children.
+	 */
+	INode findByNameProperty(String name); 
+	
+	/**
+	 * @model type="com.nokia.sdt.emf.dm.IEventBinding" containment="true"
+	 */
+	EList getEventBindings();
+	
+	/**
+	 * Search for an existing event binding
+	 * @param eventID the event ID
+	 */
+	IEventBinding findBinding(String eventID);
+	
+	/**
+	 * Visit INodes in preorder. Visitors returns can
+	 * terminate traversal by returning a non-null result,
+	 * which is in turn returned by this method. That could
+	 * be a useful value, or a placeholder value like Boolean.TRUE.
+	 * If all visitors returned null then this method returns null.
+	 * @return result of last visitor visited
+	 */
+	Object visitPreorder(INodeVisitor visitor);	
+	
+	/**
+	 * The 'configured' flag is used to mark instances as
+	 * already configured or initialized. This is a hint to code
+	 * listening for model changes that a newly added instance 
+	 * should not be modified, or that the modification code should 
+	 * at least be aware of the difference. Undo, paste, etc will
+	 * first add and object and then configure properties and children.
+	 * 
+	 * Note that isConfigured does not always return true for objects
+	 * in the model. It is set as needed when objects are being added
+	 * into a model but is not generally maintained.
+	 */
+	boolean isConfigured();
+	
+	void setConfigured(boolean configured);
+
+
+}