<!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.6.0_14) on Wed Apr 07 07:58:04 BST 2010 -->
<TITLE>
EditResourcesManager
</TITLE>

<META NAME="date" CONTENT="2010-04-07">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="EditResourcesManager";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

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


<!-- ========= 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=2 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/EditResourcesManager.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/FileUtils.html" title="class in org.eclipse.jst.ws.jaxws.utils.resources"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../../../index.html?org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="EditResourcesManager.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.jst.ws.jaxws.utils.resources</FONT>
<BR>
Class EditResourcesManager</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.jst.ws.jaxws.utils.resources.EditResourcesManager</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>EditResourcesManager</B><DT>extends java.lang.Object</DL>
</PRE>

<P>
This is an utility class which is meant to provide common functionality to save and modify resources. It is a wrapper of the eclipse API and
 workarounds some DTR issues. Until DTR colleagues fix their coding, this manager must be used on each file modification occasion
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Danail Branekov</DD>
</DL>
<HR>

<P>

<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#EditResourcesManager()">EditResourcesManager</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">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileContents(org.eclipse.core.resources.IFile, java.lang.String, boolean, boolean, org.eclipse.core.runtime.IProgressMonitor)">setFileContents</A></B>(org.eclipse.core.resources.IFile&nbsp;file,
                java.lang.String&nbsp;content,
                boolean&nbsp;force,
                boolean&nbsp;keepHistory,
                org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the content of a file.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileContents(org.eclipse.core.resources.IFile, java.lang.String, int, org.eclipse.core.runtime.IProgressMonitor)">setFileContents</A></B>(org.eclipse.core.resources.IFile&nbsp;file,
                java.lang.String&nbsp;content,
                int&nbsp;updateFlags,
                org.eclipse.core.runtime.IProgressMonitor&nbsp;progressMonitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the content of a file</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileEditable(org.eclipse.core.resources.IFile)">setFileEditable</A></B>(org.eclipse.core.resources.IFile&nbsp;file)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets editablility of a file.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileEditable(org.eclipse.core.resources.IFile, java.lang.Object)">setFileEditable</A></B>(org.eclipse.core.resources.IFile&nbsp;file,
                java.lang.Object&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets editability of a file.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFilesEditable(org.eclipse.core.resources.IFile[])">setFilesEditable</A></B>(org.eclipse.core.resources.IFile[]&nbsp;files)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets editablility of an array of files.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.eclipse.core.runtime.IStatus</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFilesEditable(org.eclipse.core.resources.IFile[], java.lang.Object)">setFilesEditable</A></B>(org.eclipse.core.resources.IFile[]&nbsp;files,
                 java.lang.Object&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets editablility of an array of files.</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">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

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

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

<A NAME="EditResourcesManager()"><!-- --></A><H3>
EditResourcesManager</H3>
<PRE>
public <B>EditResourcesManager</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">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="setFileEditable(org.eclipse.core.resources.IFile, java.lang.Object)"><!-- --></A><H3>
setFileEditable</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFileEditable</B>(org.eclipse.core.resources.IFile&nbsp;file,
                                                        java.lang.Object&nbsp;context)</PRE>
<DL>
<DD>Sets editability of a file. In case the file specified is already writable, <code>Status.OK_STATUS</code> is returned
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - The file to be set editable<DD><CODE>context</CODE> - either <CODE>IWorkspace.VALIDATE_PROMPT</CODE>, or the <code>org.eclipse.swt.widgets.Shell</code> that is to be used to parent any
            dialogs with the user, or <code>null</code> if there is no UI context (declared as an <code>Object</code> to avoid any direct
            references on the SWT component)
<DT><B>Returns:</B><DD>the status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - when the file specified is null<DT><B>See Also:</B><DD><CODE>IWorkspace.VALIDATE_PROMPT</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setFileEditable(org.eclipse.core.resources.IFile)"><!-- --></A><H3>
setFileEditable</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFileEditable</B>(org.eclipse.core.resources.IFile&nbsp;file)</PRE>
<DL>
<DD>Sets editablility of a file. This is a convenience method equivalent to invoking
 <code>setFileEditable(file, IWorkspace.VALIDATE_PROMPT)</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - The file to be set editable
<DT><B>Returns:</B><DD>the status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - when the file specified is null<DT><B>See Also:</B><DD><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileEditable(org.eclipse.core.resources.IFile, java.lang.Object)"><CODE>setFileEditable(IFile, Object)</CODE></A>, 
<CODE>IWorkspace.VALIDATE_PROMPT</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setFilesEditable(org.eclipse.core.resources.IFile[], java.lang.Object)"><!-- --></A><H3>
setFilesEditable</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFilesEditable</B>(org.eclipse.core.resources.IFile[]&nbsp;files,
                                                         java.lang.Object&nbsp;context)</PRE>
<DL>
<DD>Sets editablility of an array of files. In case all files specified are already writable, <code>Status.OK_STATUS</code> is returned
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>files</CODE> - The array of files to be set editable<DD><CODE>context</CODE> - either <CODE>IWorkspace.VALIDATE_PROMPT</CODE>, or the <code>org.eclipse.swt.widgets.Shell</code> that is to be used to parent any
            dialogs with the user, or <code>null</code> if there is no UI context (declared as an <code>Object</code> to avoid any direct
            references on the SWT component)
<DT><B>Returns:</B><DD>the status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - when the array is empty or null</DL>
</DD>
</DL>
<HR>

<A NAME="setFilesEditable(org.eclipse.core.resources.IFile[])"><!-- --></A><H3>
setFilesEditable</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFilesEditable</B>(org.eclipse.core.resources.IFile[]&nbsp;files)</PRE>
<DL>
<DD>Sets editablility of an array of files. This is a convenience method equivalent to invoking
 <code>setFilesEditable(files, IWorkspace.VALIDATE_PROMPT)</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>files</CODE> - The array of files to be set editable
<DT><B>Returns:</B><DD>the status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - when the array is empty or null<DT><B>See Also:</B><DD><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFilesEditable(org.eclipse.core.resources.IFile[], java.lang.Object)"><CODE>setFilesEditable(IFile[], Object)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setFileContents(org.eclipse.core.resources.IFile, java.lang.String, int, org.eclipse.core.runtime.IProgressMonitor)"><!-- --></A><H3>
setFileContents</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFileContents</B>(org.eclipse.core.resources.IFile&nbsp;file,
                                                        java.lang.String&nbsp;content,
                                                        int&nbsp;updateFlags,
                                                        org.eclipse.core.runtime.IProgressMonitor&nbsp;progressMonitor)</PRE>
<DL>
<DD>Sets the content of a file
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - the file to be set<DD><CODE>content</CODE> - the content to be set<DD><CODE>updateFlags</CODE> - update flags.<DD><CODE>progressMonitor</CODE> - a progress monitor, or <code>null</code> if progress reporting is not desired
<DT><B>Returns:</B><DD>status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - when <code>file</code> or <code>content</code> is null<DT><B>See Also:</B><DD><CODE>IFile.setContents(java.io.InputStream, int, IProgressMonitor)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setFileContents(org.eclipse.core.resources.IFile, java.lang.String, boolean, boolean, org.eclipse.core.runtime.IProgressMonitor)"><!-- --></A><H3>
setFileContents</H3>
<PRE>
public org.eclipse.core.runtime.IStatus <B>setFileContents</B>(org.eclipse.core.resources.IFile&nbsp;file,
                                                        java.lang.String&nbsp;content,
                                                        boolean&nbsp;force,
                                                        boolean&nbsp;keepHistory,
                                                        org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</PRE>
<DL>
<DD>Sets the content of a file. This method is equivalent of invoking
 <code>setFileContens(IFile file, String content, (keepHistory ? IFile.KEEP_HISTORY : IResource.NONE) | (force ? IFile.FORCE : IResource.NONE), IProgressMonitor monitor)</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - the file to be set<DD><CODE>content</CODE> - the content to be set<DD><CODE>force</CODE> - a flag controlling how to deal with resources that are not in sync with the local file system<DD><CODE>keepHistory</CODE> - a flag indicating whether or not store the current contents in the local history<DD><CODE>monitor</CODE> - a progress monitor, or <code>null</code> if progress reporting is not desired
<DT><B>Returns:</B><DD>status of the operation
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - when <code>file</code> or <code>content</code> is null<DT><B>See Also:</B><DD><A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html#setFileContents(org.eclipse.core.resources.IFile, java.lang.String, int, org.eclipse.core.runtime.IProgressMonitor)"><CODE>setFileContents(IFile, String, int, IProgressMonitor)</CODE></A></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=2 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/EditResourcesManager.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../../../../org/eclipse/jst/ws/jaxws/utils/resources/FileUtils.html" title="class in org.eclipse.jst.ws.jaxws.utils.resources"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../../../index.html?org/eclipse/jst/ws/jaxws/utils/resources/EditResourcesManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="EditResourcesManager.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>
