<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_07) on Fri Feb 18 00:47:35 EST 2005 -->
<TITLE>
ModuleCoreNature
</TITLE>

<META NAME="keywords" CONTENT="org.eclipse.wst.common.modulecore.ModuleCoreNature class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../apistyles.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="ModuleCoreNature";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ModuleCoreNature.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html" title="class in org.eclipse.wst.common.modulecore"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ModuleCoreNature.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.eclipse.wst.common.modulecore</FONT>
<BR>
Class ModuleCoreNature</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">EditModelNature
      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>org.eclipse.wst.common.modulecore.ModuleCoreNature</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>org.eclipse.wst.common.modulecore.internal.util.IModuleConstants</DD>
</DL>
<HR>
<DL>
<DT>public class <B>ModuleCoreNature</B><DT>extends EditModelNature<DT>implements org.eclipse.wst.common.modulecore.internal.util.IModuleConstants</DL>

<P>
<p>
 Allows projects to support flexible project structures. The ModuleCoreNature manages the
 configuration of a module structural builder that prepares WorkbenchModules for deployment.
 </p>
 <p>
 To determine if a project supports flexible project structures, check for the existence of the
 ModuleCoreNature:
 <p>
 <code>(ModuleCoreNature.getModuleCoreNature(project) != null)</code>
 </p>
 <p>
 If the project has a ModuleCoreNature, then the project supports flexible module structures.
 </p>
 <p>
 In general, clients are expected to use the utility methods available on this class to acquire
 the ModuleCoreNature instance from a given project (<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getModuleCoreNature(IProject)"><CODE>getModuleCoreNature(IProject)</CODE></A>
 &nbsp;or to make a flexible project flexible by adding a ModuleCoreNature (
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#addModuleCoreNatureIfNecessary(IProject, IProgressMonitor)"><CODE>addModuleCoreNatureIfNecessary(IProject, IProgressMonitor)</CODE></A>).
 </p> 
 <a name="model-discussion"/>
 <a name="module-structural-model"/>
 <p>
 Each ModuleCoreNature from a given project can provide access to the
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp; of the project.
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp; is a subclass of
 <CODE>org.eclipse.wst.common.internal.emfworkbench.integration.EditModel</CODE>&nbsp;that manages
 resources associated with the Module Structural Metamodel. As an EditModel, the
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp; references EMF resources,
 that contain EMF models -- in this case, the EMF model of <i>.wtpmodules </i> file.
 </p>
 <p>
 Clients are encouraged to use the Edit Facade pattern (via
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>&nbsp; or one if its relevant subclasses)
 to work directly with the Module Structural Metamodel.
 </p>
 <a name="artifact-editmodel"/>
 <p>
 Each ModuleCoreNature from a given project can also provide access to the
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; for each
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>&nbsp; contained by the project. Like
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>,
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; is a subclass of
 <CODE>org.eclipse.wst.common.internal.emfworkbench.integration.EditModel</CODE>&nbsp; that contains
 EMF resources, which in turn contain the EMF models of module metadata files (such as J2EE
 deployment descriptors).
 </p>
 <p>
 The following diagram highlights the relationships of these subclasses of EditModel, and the
 relationship of the EditModel to the EMF resources. In the diagram, "MetamodelResource" and
 "MetamodelObject" are used as placeholders for the specific subclasses of
 <CODE>org.eclipse.emf.ecore.resource.Resource</CODE>&nbsp;and <CODE>org.eclipse.emf.ecore.EObject</CODE>&nbsp;
 respectively.
 </p>
 <table cellspacing="10" cellpadding="10">
 <tr>
 <td>
 <p>
 <img src="../../../../../overview/metamodel_components.jpg" />
 </p>
 </td>
 </tr>
 <tr>
 <td>
 <p>
 <i>Figure 1: A component diagram of the Module Edit Models. </i>
 </p>
 </td>
 </tr>
 </table>
 <p>
 Clients are encouraged to use the Edit Facade pattern (via
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>&nbsp; or what if its relevant subclasses)
 to work directly with the Module Structural Metamodel.
 </p>
 <a name="accessor-key"/>
 <p>
 All EditModels have a lifecycle that must be enforced to keep the resources loaded that are in
 use, and to unload resources that are not in use. To access an EditModel, clients are required to
 supply an object token referred to as an accessor key. The accessor key allows the framework to
 better track which clients are using the EditModel, and to ensure that only a client which has
 accessed the EditModel with an accessor key may invoke save*()s on that EditModel.
 </p>
 <p>
 The following class is experimental until fully documented.
 </p>
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleCore</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html#getModuleCoreForRead(IProject)"><CODE>ModuleCore.getModuleCoreForRead(IProject)</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html#getModuleCoreForWrite(IProject)"><CODE>ModuleCore.getModuleCoreForWrite(IProject)</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html#getArtifactEditForRead(org.eclipse.wst.common.modulecore.WorkbenchModule)"><CODE>ArtifactEdit.getArtifactEditForRead(WorkbenchModule)</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html#getArtifactEditForWrite(org.eclipse.wst.common.modulecore.WorkbenchModule)"><CODE>ArtifactEdit.getArtifactEditForWrite(WorkbenchModule)</CODE></A>, 
<A HREF="../../../../../serialized-form.html#org.eclipse.wst.common.modulecore.ModuleCoreNature">Serialized Form</A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.eclipse.wst.common.modulecore.internal.util.IModuleConstants"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Fields inherited from interface org.eclipse.wst.common.modulecore.internal.util.IModuleConstants</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>DEPLOYABLE_MODULE_BUILDER_ID, JST_UTILITY_MODULE, JST_WEB_MODULE, LOCAL_DEPENDENCY_RESOLVER_ID, MODULE_NATURE_ID, MODULE_PLUG_IN_ID, WST_WEB_MODULE, WTPMODULE_FILE_NAME</CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#ModuleCoreNature()">ModuleCoreNature</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html" title="class in org.eclipse.wst.common.modulecore">ModuleCoreNature</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#addModuleCoreNatureIfNecessary(IProject, IProgressMonitor)">addModuleCoreNatureIfNecessary</A></B>(IProject&nbsp;aProject,
                               IProgressMonitor&nbsp;aMonitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Adds a ModuleCoreNature to the project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#configure()">configure</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 This method should not be invoked by clients.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore">ArtifactEditModel</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getArtifactEditModelForRead(URI, java.lang.Object)">getArtifactEditModelForRead</A></B>(URI&nbsp;aModuleURI,
                            java.lang.Object&nbsp;anAccessorKey)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Returns an <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; to work with the underlying content of an
 individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>&nbsp; contained in the project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore">ArtifactEditModel</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getArtifactEditModelForWrite(URI, java.lang.Object)">getArtifactEditModelForWrite</A></B>(URI&nbsp;aModuleURI,
                             java.lang.Object&nbsp;anAccessorKey)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Returns an <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; to work with the underlying content of an
 individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>&nbsp; contained in the project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html" title="class in org.eclipse.wst.common.modulecore">ModuleCoreNature</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getModuleCoreNature(IProject)">getModuleCoreNature</A></B>(IProject&nbsp;aProject)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Find and return the ModuleCoreNature of aProject, if available.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore">ModuleStructuralModel</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getModuleStructuralModelForRead(java.lang.Object)">getModuleStructuralModelForRead</A></B>(java.lang.Object&nbsp;anAccessorKey)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Return a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp;for read-only access.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore">ModuleStructuralModel</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getModuleStructuralModelForWrite(java.lang.Object)">getModuleStructuralModelForWrite</A></B>(java.lang.Object&nbsp;anAccessorKey)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Return a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp;for write access.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getNatureID()">getNatureID</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;ResourceSet</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getResourceSet()">getResourceSet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 This method should not be invoked by clients.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#primaryContributeToContext(EMFWorkbenchContextBase)">primaryContributeToContext</A></B>(EMFWorkbenchContextBase&nbsp;aNature)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 This method should not be invoked by clients.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#secondaryContributeToContext(EMFWorkbenchContextBase)">secondaryContributeToContext</A></B>(EMFWorkbenchContextBase&nbsp;aNature)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 This method should not be invoked by clients.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="ModuleCoreNature()"><!-- --></A><H3>
ModuleCoreNature</H3>
<PRE>
public <B>ModuleCoreNature</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getModuleCoreNature(IProject)"><!-- --></A><H3>
getModuleCoreNature</H3>
<PRE>
public static <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html" title="class in org.eclipse.wst.common.modulecore">ModuleCoreNature</A> <B>getModuleCoreNature</B>(IProject&nbsp;aProject)</PRE>
<DL>
<DD><p>
 Find and return the ModuleCoreNature of aProject, if available.
 <p>
 <b>This method may return null. </b>
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>aProject</CODE> - An accessible project
<DT><B>Returns:</B><DD>The ModuleCoreNature of aProject, if it exists</DL>
</DD>
</DL>
<HR>

<A NAME="addModuleCoreNatureIfNecessary(IProject, IProgressMonitor)"><!-- --></A><H3>
addModuleCoreNatureIfNecessary</H3>
<PRE>
public static <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html" title="class in org.eclipse.wst.common.modulecore">ModuleCoreNature</A> <B>addModuleCoreNatureIfNecessary</B>(IProject&nbsp;aProject,
                                                              IProgressMonitor&nbsp;aMonitor)</PRE>
<DL>
<DD><p>
 Adds a ModuleCoreNature to the project.
 </p>
 <p>
 <b>This method may return null. </b>
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>aProject</CODE> - A accessible project.<DD><CODE>aMonitor</CODE> - A progress monitor to track the time to completion
<DT><B>Returns:</B><DD>The ModuleCoreNature of aProject, if it exists</DL>
</DD>
</DL>
<HR>

<A NAME="getModuleStructuralModelForRead(java.lang.Object)"><!-- --></A><H3>
getModuleStructuralModelForRead</H3>
<PRE>
public <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore">ModuleStructuralModel</A> <B>getModuleStructuralModelForRead</B>(java.lang.Object&nbsp;anAccessorKey)</PRE>
<DL>
<DD><p>
 Return a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp;for read-only access.
 </p>
 <p>
 Clients are encouraged to use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html#getModuleCoreForRead(IProject)"><CODE>ModuleCore.getModuleCoreForRead(IProject)</CODE></A>&nbsp;to work
 with the Module Structural Metamodels of flexible projects.
 </p>
 <p>
 See the discussion what a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp; is and <a
 href="#module-structural-model">how it relates to the Module Structural Metamodel </a>.
 </p>
 <p>
 Also see the discussion of <a href="#accessor-key">the purpose of an accessor key </a>.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>anAccessorKey</CODE> - Typically client supplies the object that invoked this method, or a proxy (
            <code>new Object()</code>) in the case of other static methods requesting a
            <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>.
<DT><B>Returns:</B><DD>A <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>for the project of the current nature.</DL>
</DD>
</DL>
<HR>

<A NAME="getModuleStructuralModelForWrite(java.lang.Object)"><!-- --></A><H3>
getModuleStructuralModelForWrite</H3>
<PRE>
public <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore">ModuleStructuralModel</A> <B>getModuleStructuralModelForWrite</B>(java.lang.Object&nbsp;anAccessorKey)</PRE>
<DL>
<DD><p>
 Return a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp;for write access.
 </p>
 <p>
 Clients are encouraged to use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html#getModuleCoreForWrite(IProject)"><CODE>ModuleCore.getModuleCoreForWrite(IProject)</CODE></A>&nbsp;to work
 with the Module Structural Metamodels of flexible projects.
 </p>
 <p>
 See the discussion what a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>&nbsp; is and <a
 href="#module-structural-model">how it relates to the Module Structural Metamodel </a>.
 </p>
 <p>
 Also see the discussion of <a href="#accessor-key">the purpose of an accessor key </a>.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>anAccessorKey</CODE> - Typically client supplies the object that invoked this method, or a proxy (
            <code>new Object()</code>) in the case of other static methods requesting a
            <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>.
<DT><B>Returns:</B><DD>A <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>for the project of the current nature.</DL>
</DD>
</DL>
<HR>

<A NAME="getArtifactEditModelForRead(URI, java.lang.Object)"><!-- --></A><H3>
getArtifactEditModelForRead</H3>
<PRE>
public <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore">ArtifactEditModel</A> <B>getArtifactEditModelForRead</B>(URI&nbsp;aModuleURI,
                                                     java.lang.Object&nbsp;anAccessorKey)</PRE>
<DL>
<DD><p>
 Returns an <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; to work with the underlying content of an
 individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>&nbsp; contained in the project. <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>s
 are used to manipulate the content models for individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>s. In
 general, a content model will contain an EMF representation of the module's relevant
 deployment descriptor, and possibly other EMF resources as well.
 </p>
 <p>
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>s that are returned from this method may not be used to modify and
 persist changes to the underlying Module Content Metamodel. Clients that need to make changes
 to the underlying Module Content Module, and that choose to work directly with the
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; should use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getArtifactEditModelForWrite(URI, java.lang.Object)"><CODE>getArtifactEditModelForWrite(URI, Object)</CODE></A>.
 </p>
 <p>
 Clients are encouraged to use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>&nbsp;or one of its relevant subclasses to
 work with the module content model, instead of working with directly with the EditModel:
 </p>
 <p>
 <code>ArtifactEdit editFacade = ArtifactEdit.getArtifactEditForRead(aWorkbenchModule);</code>
 </p>
 <p>
 When a client is aware of the underlying type of module, more specific Edit Facades may be
 acquired:
 </p>
 <p>
 <code>WebEdit editFacade = WebEdit.getWebEditForRead(aWorkbenchModule);</code>
 </p>
 <p>
 If a particular Edit Facade is not applicable to the supplied <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>, then
 <b>null </b> will be returned.
 </p>
 
 <p>
 See the discussion what a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; is and <a
 href="#artifact-editmodel">how it relates to the Module Content Metamodel </a>.
 </p>
 <p>
 Also see the discussion of <a href="#accessor-key">the purpose of an accessor key </a>.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>aModuleURI</CODE> - A fully qualified URI of the form "module:/resource/ <project-name>/
            <module-deployed-name>"<DD><CODE>anAccessorKey</CODE> - Typically client supplies the object that invoked this method, or a proxy (
            <code>new Object()</code>) in the case of other static methods requesting a
            <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>.
<DT><B>Returns:</B><DD><DT><B>See Also:</B><DD><A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html#getArtifactEditForRead(org.eclipse.wst.common.modulecore.WorkbenchModule)"><CODE>ArtifactEdit.getArtifactEditForRead(WorkbenchModule)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getArtifactEditModelForWrite(URI, java.lang.Object)"><!-- --></A><H3>
getArtifactEditModelForWrite</H3>
<PRE>
public <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore">ArtifactEditModel</A> <B>getArtifactEditModelForWrite</B>(URI&nbsp;aModuleURI,
                                                      java.lang.Object&nbsp;anAccessorKey)</PRE>
<DL>
<DD><p>
 Returns an <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; to work with the underlying content of an
 individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>&nbsp; contained in the project. <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>s
 are used to manipulate the content models for individual <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>s. In
 general, a content model will contain an EMF representation of the module's relevant
 deployment descriptor, and possibly other EMF resources as well.
 </p>
 
 <p>
 <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>s that are returned from this method may be used to modify and
 persist changes to the underlying Module Content Metamodel. For clients that do not expect to
 make modifications are encouraged to use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCoreNature.html#getArtifactEditModelForRead(URI, java.lang.Object)"><CODE>getArtifactEditModelForRead(URI, Object)</CODE></A>
 &nbsp; instead.
 </p>
 <p>
 Clients are encouraged to use <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>&nbsp;or one of its relevant subclasses to
 work with the module content model, instead of working with directly with the EditModel:
 </p>
 <p>
 <code>ArtifactEdit editFacade = ArtifactEdit.getArtifactEditForWrite(aWorkbenchModule);</code>
 </p>
 <p>
 When a client is aware of the underlying type of module, more specific Edit Facades may be
 acquired:
 </p>
 <p>
 <code>WebEdit editFacade = WebEdit.getWebEditForWrite(aWorkbenchModule);</code>
 </p>
 <p>
 If a particular Edit Facade is not applicable to the supplied <A HREF="../../../../../org/eclipse/wst/common/modulecore/WorkbenchModule.html" title="interface in org.eclipse.wst.common.modulecore"><CODE>WorkbenchModule</CODE></A>, then
 <b>null </b> will be returned.
 </p>
 
 <p>
 See the discussion what a <A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEditModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEditModel</CODE></A>&nbsp; is and <a
 href="#artifact-editmodel">how it relates to the Module Content Metamodel </a>.
 </p>
 <p>
 Also see the discussion of <a href="#accessor-key">the purpose of an accessor key </a>.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>aModuleURI</CODE> - A fully qualified URI of the form "module:/resource/ <project-name>/
            <module-deployed-name>"<DD><CODE>anAccessorKey</CODE> - Typically client supplies the object that invoked this method, or a proxy (
            <code>new Object()</code>) in the case of other static methods requesting a
            <A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ModuleStructuralModel</CODE></A>.
<DT><B>Returns:</B><DD><DT><B>See Also:</B><DD><A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html" title="class in org.eclipse.wst.common.modulecore"><CODE>ArtifactEdit</CODE></A>, 
<A HREF="../../../../../org/eclipse/wst/common/modulecore/ArtifactEdit.html#getArtifactEditForRead(org.eclipse.wst.common.modulecore.WorkbenchModule)"><CODE>ArtifactEdit.getArtifactEditForRead(WorkbenchModule)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getNatureID()"><!-- --></A><H3>
getNatureID</H3>
<PRE>
public java.lang.String <B>getNatureID</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="primaryContributeToContext(EMFWorkbenchContextBase)"><!-- --></A><H3>
primaryContributeToContext</H3>
<PRE>
public void <B>primaryContributeToContext</B>(EMFWorkbenchContextBase&nbsp;aNature)</PRE>
<DL>
<DD><p>
 This method should not be invoked by clients.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>com.ibm.wtp.emf.workbench.IEMFContextContributor#primaryContributeToContext(com.ibm.wtp.emf.workbench.EMFWorkbenchContextBase)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getResourceSet()"><!-- --></A><H3>
getResourceSet</H3>
<PRE>
public ResourceSet <B>getResourceSet</B>()</PRE>
<DL>
<DD><p>
 This method should not be invoked by clients.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="secondaryContributeToContext(EMFWorkbenchContextBase)"><!-- --></A><H3>
secondaryContributeToContext</H3>
<PRE>
public void <B>secondaryContributeToContext</B>(EMFWorkbenchContextBase&nbsp;aNature)</PRE>
<DL>
<DD><p>
 This method should not be invoked by clients.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>com.ibm.wtp.emf.workbench.IEMFContextContributor#secondaryContributeToContext(com.ibm.wtp.emf.workbench.EMFWorkbenchContextBase)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="configure()"><!-- --></A><H3>
configure</H3>
<PRE>
public void <B>configure</B>()
               throws CoreException</PRE>
<DL>
<DD><p>
 This method should not be invoked by clients.
 </p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>CoreException</CODE><DT><B>See Also:</B><DD><CODE>com.ibm.wtp.emf.workbench.nature.EMFNature#configure()</CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ModuleCoreNature.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleCore.html" title="class in org.eclipse.wst.common.modulecore"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/wst/common/modulecore/ModuleStructuralModel.html" title="class in org.eclipse.wst.common.modulecore"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ModuleCoreNature.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

</BODY>
</HTML>
