create a folder to store customized icons,becase Windows is not case
sensitive,once the customized icon name as same as default,the icon will
miss in left tree
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractSiteGenerator.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractSiteGenerator.java
index 504804f..b0926cb 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractSiteGenerator.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractSiteGenerator.java
@@ -32,6 +32,7 @@
 
 	private static final String WEB_INF_PATH = "docroot/WEB-INF"; //$NON-NLS-1$
 	private static final String WEB_INF_DIR = "WEB-INF"; //$NON-NLS-1$
+	public static final String customizedName = "customized"; //$NON-NLS-1$
 	
 	protected String pubDir;
 	protected PublishHTMLOptions options;
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
index 987a70f..7610add 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/AbstractViewBuilder.java
@@ -295,21 +295,31 @@
 	protected void elementPublished(IElementLayout layout, String htmlfile) {
 	}
 
-	private void copyNodeIcon(File source) {
+	private String copyNodeIcon(File source,boolean isCustomized) {
 		String name = source.getName();
 
-		File dest = new File(siteGenerator.getNodeIconPath(), name);
+		File dest = null;
+		if(isCustomized){
+			dest = new File(siteGenerator.getCustomizedNodeIconPath(), name);
+		}else{
+			dest = new File(siteGenerator.getNodeIconPath(), name);
+		}
 		if (FileUtil.copyFile(source, dest) == false) {
 			getHtmlBuilder().getValidator().logWarning(
 					NLS.bind(PublishingResources.copyFileWarning_msg, source
 							.getAbsolutePath(), dest.getAbsolutePath()));
 		}
 
+		if(isCustomized){
+			name = AbstractSiteGenerator.customizedName + "/" + name; 
+		}
+		return name;
 	}
 
 	protected String getNodeIconName(Object obj) {
 		File iconFile = null;
 		String iconName = null;
+		boolean isCustomized = true;
 
 		if (obj instanceof DescribableElement) {
 			URI uri = ((DescribableElement) obj).getNodeicon();
@@ -358,6 +368,7 @@
 		}
 
 		if (iconFile == null) {
+			isCustomized = false;
 			// get the default icon name
 			if (obj instanceof MethodElement) {
 				String type = ((MethodElement) obj).getType().getName()
@@ -436,8 +447,7 @@
 				}
 			}
 
-			copyNodeIcon(iconFile);
-			iconName = iconFile.getName();
+			iconName = copyNodeIcon(iconFile,isCustomized);
 		}
 
 		if (iconName == null || iconName.length() == 0) {
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
index 262a57c..825a171 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/DefaultSiteGenerator.java
@@ -18,7 +18,6 @@
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.epf.common.utils.FileUtil;
-import org.eclipse.epf.common.utils.StrUtil;
 import org.eclipse.epf.library.layout.Bookmark;
 import org.eclipse.epf.library.layout.BookmarkList;
 import org.eclipse.epf.library.layout.HtmlBuilder;
@@ -67,18 +66,24 @@
 	private static final String APPLET_PATH = "applet" + File.separatorChar; //$NON-NLS-1$
 	private static final String NO_APPLET_PATH = "noapplet" + File.separatorChar; //$NON-NLS-1$
 	private static final String ICON_PATH = "images" + File.separatorChar; //$NON-NLS-1$
+	private static final String CUSTOMIZED_ICON_PATH = ICON_PATH + AbstractSiteGenerator.customizedName + File.separatorChar; //$NON-NLS-1$
 	
 	private static final String SERVER_SEARCH_PATH = "docroot/server_search"; //$NON-NLS-1$	
 	
 	private static final String DEFAULT_BANNER_FILE = "EPFC_banner.jpg"; //$NON-NLS-1$
 
 	protected File iconPath;
+	
+	protected File customizedIconPath;
 
 	public DefaultSiteGenerator(HtmlBuilder builder, PublishHTMLOptions options) {
 		super(builder, options);
-
+		
 		iconPath = new File(pubDir, (options.isPublishDynamicWebApp() ) ? NO_APPLET_PATH  + ICON_PATH 
 				: APPLET_PATH + ICON_PATH);
+		
+		customizedIconPath = new File(pubDir, (options.isPublishDynamicWebApp() ) ? NO_APPLET_PATH  + CUSTOMIZED_ICON_PATH 
+				: APPLET_PATH + CUSTOMIZED_ICON_PATH);
 	}
 	
 	public HtmlBuilder getHtmlBuilder() {
@@ -93,6 +98,10 @@
 		return iconPath.getAbsolutePath();
 	}
 	
+	public String getCustomizedNodeIconPath() {
+		return customizedIconPath.getAbsolutePath();
+	}
+
 	public String getDefaultBannerImageFile() {
 		//return "banner.gif"; //$NON-NLS-1$
 		return DEFAULT_BANNER_FILE;
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
index 826de16..956e62a 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ISiteGenerator.java
@@ -34,6 +34,7 @@
 	public PublishOptions getPublishOptions();
 	public String getIndexFilePath();
 	public String getNodeIconPath(); 
+	public String getCustomizedNodeIconPath();
 	public void dispose();
 	
 }