[289739, 323933, 335892] WCAG 2.0/JIS support (Level A/AA), UI enhancements
diff --git a/plugins/org.eclipse.actf.visualization.blind/plugin.properties b/plugins/org.eclipse.actf.visualization.blind/plugin.properties
index 6030f4e..5998689 100644
--- a/plugins/org.eclipse.actf.visualization.blind/plugin.properties
+++ b/plugins/org.eclipse.actf.visualization.blind/plugin.properties
@@ -11,4 +11,4 @@
 actf.blind.view.title=Blind
 actf.action.visualize=Visualize Blind Usability
 actf.visualization.actionset=ACTF Visualization 
-actf.visualization.menu=Visualize
\ No newline at end of file
+actf.visualization.menu=Visuali&ze
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.blind/plugin_ja.properties b/plugins/org.eclipse.actf.visualization.blind/plugin_ja.properties
index 5a44d80..723d2cd 100644
--- a/plugins/org.eclipse.actf.visualization.blind/plugin_ja.properties
+++ b/plugins/org.eclipse.actf.visualization.blind/plugin_ja.properties
@@ -9,6 +9,6 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 actf.blind.view.title=\u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3
-actf.action.visualize=\u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3\u8996\u899a\u5316
+actf.action.visualize=\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u691c\u8a3c\u30fb\u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3\u8996\u899a\u5316
 actf.visualization.actionset=ACTF\u8996\u899a\u5316 
-actf.visualization.menu=\u8996\u899a\u5316
\ No newline at end of file
+actf.visualization.menu=\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u691c\u8a3c\u30fb\u8996\u899a\u5316(&Z)
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/BlindVisualizerBase.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/BlindVisualizerBase.java
index cd03ff5..bc7c00e 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/BlindVisualizerBase.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/BlindVisualizerBase.java
@@ -68,6 +68,9 @@
 
 		modelService = targetModel;
 		targetUrl = targetModel.getURL();
+		if(targetUrl==null){
+			targetUrl="";
+		}
 		return true;
 	}
 
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/actions/BlindSaveAction.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/actions/BlindSaveAction.java
index 71edc5b..347bea9 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/actions/BlindSaveAction.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/actions/BlindSaveAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and Others
+ * Copyright (c) 2005, 2010 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,20 +15,57 @@
 import org.eclipse.actf.visualization.blind.ui.internal.PartControlBlind;
 import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
 import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuCreator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
 
 public class BlindSaveAction extends Action {
-	PartControlBlind prb;
+	private PartControlBlind pcb;
+	private boolean saveReport = false;
 
 	public BlindSaveAction(PartControlBlind prb) {
-		setToolTipText(Messages.Tooltip_Save); 
+		super(Messages.MenuConst_Save,
+				AS_DROP_DOWN_MENU);
+		this.pcb = prb;
+
+		setToolTipText(Messages.Tooltip_Save);
 		setImageDescriptor(BlindVizResourceUtil
 				.getImageDescriptor("icons/ButtonSave.png")); //$NON-NLS-1$
-		setText(Messages.MenuConst_Save); 
-		this.prb = prb;
+
+		setMenuCreator(new IMenuCreator() {
+
+			public void dispose() {
+			}
+
+			public Menu getMenu(Control parent) {
+				Menu menu = new Menu(parent);
+				MenuItem item1 = new MenuItem(menu, SWT.CHECK);
+				item1.setText(org.eclipse.actf.visualization.blind.ui.internal.Messages.Report);
+				item1.setSelection(saveReport);
+				item1.addSelectionListener(new SelectionListener() {
+					public void widgetSelected(SelectionEvent e) {
+						saveReport = !saveReport;
+					}
+
+					public void widgetDefaultSelected(SelectionEvent e) {
+					}
+				});
+				return menu;
+			}
+
+			public Menu getMenu(Menu parent) {
+				return null;
+			}
+		});
+
 	}
 
 	public void run() {
-		prb.doSave();
+		pcb.doSave(saveReport);
 	}
 
 }
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/BlindVisualizationBrowser.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/BlindVisualizationBrowser.java
index b995c07..7198990 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/BlindVisualizationBrowser.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/BlindVisualizationBrowser.java
@@ -124,7 +124,13 @@
             Variant[] rgvarg = new Variant[1];
             rgvarg[0] = new Variant(str);
 
-            ieWindowAutomation.invoke(id_exec_script, rgvarg);
+            if(ieWindowAutomation.invoke(id_exec_script, rgvarg)==null){
+            	//try again
+            	ieWindowAutomation = null;
+            	if(initWindowAutomation()){
+            		ieWindowAutomation.invoke(id_exec_script, rgvarg);
+            	}
+            }
         }
     }
 
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/Messages.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/Messages.java
index ff546ad..f1fbda3 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/Messages.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/Messages.java
@@ -30,6 +30,7 @@
 	public static String BlindView_Visualize_4;
 	public static String BlindVisualizationAction_0;
 	public static String Visualization_Error;
+	public static String Report;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
index 0b1f59e..a59b1a0 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
@@ -10,7 +10,11 @@
  *******************************************************************************/
 package org.eclipse.actf.visualization.blind.ui.internal;
 
+import java.io.BufferedOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -37,8 +41,8 @@
 import org.eclipse.actf.visualization.eval.html.statistics.PageData;
 import org.eclipse.actf.visualization.eval.problem.HighlightTargetId;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
+import org.eclipse.actf.visualization.eval.problem.ReportUtil;
 import org.eclipse.actf.visualization.ui.IVisualizationView;
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
@@ -79,26 +83,59 @@
 		this.vizView = vizView;
 		this._shell = parent.getShell();
 
-		//new BlindToolBar(parent, SWT.NONE, this);
+		// new BlindToolBar(parent, SWT.NONE, this);
 
 		this._blindBrowser = new BlindVisualizationBrowser(parent);
 		this._blindBrowser.setBrowserSilent();
 	}
 
-	public void doSave() {
-		String saveFile = DialogSave.open(_shell, DialogSave.HTML, targetUrl,
-				"_blind.htm"); //$NON-NLS-1$
+	public void doSave(boolean withReport) {
+		String saveFile = DialogSave.open(_shell, DialogSave.CSV, targetUrl,
+				".csv"); //$NON-NLS-1$
 
-		if (null == this.resultDoc || null == saveFile) {
-			return;
+		if (saveFile != null) {
+
+			// final IViewPart curView =
+			// PlatformUIUtil.showView(IVisualizationView.ID_BLINDVIEW);
+			// TODO
+			IEvaluationResult result = (IEvaluationResult) Mediator
+					.getInstance().getReport(vizView);
+			if (result != null) {
+				try {
+					OutputStreamWriter osw = new OutputStreamWriter(
+							new BufferedOutputStream(new FileOutputStream(saveFile)),
+							// "UTF-8");
+							"Shift_JIS"); // TODO
+					PrintWriter reportPW = new PrintWriter(osw);
+					ReportUtil reportUtil = new ReportUtil();
+					reportUtil.setPrintWriter(reportPW);
+					reportUtil.writeFirstLine();
+					result.accept(reportUtil);
+					reportPW.flush();
+					reportPW.close();
+				
+				} catch (Exception e) {
+				}
+			}
+
+			if (withReport) {
+				if (null == this.resultDoc || null == saveFile) {
+					return;
+				}
+
+				if (saveFile.toLowerCase().endsWith(".csv")) {
+					saveFile = saveFile.substring(0, saveFile.length() - 3);
+				}
+				saveFile = saveFile.concat(".html");
+
+				String imageBriefDir = saveFile.substring(saveFile
+						.lastIndexOf("\\") + 1, saveFile.lastIndexOf(".")) //$NON-NLS-1$ //$NON-NLS-2$
+						+ "/"; //$NON-NLS-1$
+				// 2007.09.25 remove space character to include JavaScript files
+				imageBriefDir = imageBriefDir.replace(' ', '_');
+				saveReportFile(saveFile, imageBriefDir, true);
+			}
 		}
-
-		String imageBriefDir = saveFile.substring(
-				saveFile.lastIndexOf("\\") + 1, saveFile.lastIndexOf(".")) //$NON-NLS-1$ //$NON-NLS-2$
-				+ "/"; //$NON-NLS-1$
-		// 2007.09.25 remove space character to include JavaScript files
-		imageBriefDir = imageBriefDir.replace(' ', '_');
-		saveReportFile(saveFile, imageBriefDir, true);
 	}
 
 	public int doVisualize() {
@@ -291,4 +328,21 @@
 
 		}
 	}
+
+	public boolean isBrowserModeSupported(IModelServiceHolder msh) {
+		if (msh != null) {
+			for (IBlindVisualizer bvh : blindVizualizers) {
+				if (bvh.setModelService(msh.getModelService())) {
+					// TODO add method into interface
+					if (bvh.getClass()
+							.getName()
+							.startsWith("org.eclipse.actf.visualization.blind.")) {
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
index b6e2a60..cc58e50 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
@@ -51,7 +51,7 @@
 	private static final String SRC = "src";
 
 	private static final String[] ICON_NAMES = { "Err.png", "Warn.png",
-			"Info.png" };
+			"Conf.png", "Info.png" };
 
 	// moved from PartRightBlind
 	// TODO renew
@@ -67,17 +67,17 @@
 
 			IEvaluationResult evalResult = (IEvaluationResult) checkResult;
 
-			String saveDir = sFileName.substring(0, sFileName
-					.lastIndexOf(File.separator) + 1);
+			String saveDir = sFileName.substring(0,
+					sFileName.lastIndexOf(File.separator) + 1);
 			String imageDir = saveDir + imageBriefDir;
 			File fDir = new File(imageDir);
 			if ((!fDir.isDirectory() || !fDir.canWrite()) && !fDir.mkdirs()) {
 				System.err.println("can't create image dir:" + imageDir);
 			}
 
-			String preName = sFileName.substring(sFileName
-					.lastIndexOf(File.separator) + 1, sFileName
-					.lastIndexOf("."));
+			String preName = sFileName.substring(
+					sFileName.lastIndexOf(File.separator) + 1,
+					sFileName.lastIndexOf("."));
 			String scriptVariantName = preName + "_variant.js";
 			String reportImgSaveName = preName + ".png";
 
@@ -114,9 +114,10 @@
 					// e.printStackTrace();
 				}
 
-				FileUtils.copyFile(new File(BlindVizResourceUtil
-						.getTempDirectory(), "pagerating.png"), imageDir
-						+ reportImgSaveName, true);
+				FileUtils.copyFile(
+						new File(BlindVizResourceUtil.getTempDirectory(),
+								"pagerating.png"),
+						imageDir + reportImgSaveName, true);
 
 			}
 
@@ -154,18 +155,16 @@
 
 				Element newEle = result.createElement("script");
 				StringBuffer buffer = new StringBuffer();
-				buffer
-						.append(FileUtils.LINE_SEP
-								+ "if(navigator.appName.toLowerCase().indexOf(\"microsoft\")>=0){"
-								+ FileUtils.LINE_SEP);
+				buffer.append(FileUtils.LINE_SEP
+						+ "if(navigator.appName.toLowerCase().indexOf(\"microsoft\")>=0){"
+						+ FileUtils.LINE_SEP);
 				buffer.append("jsFile=\"highlight.js\";" + FileUtils.LINE_SEP);
 				buffer.append("}else{" + FileUtils.LINE_SEP);
 				buffer.append("jsFile=\"highlight_moz.js\";"
 						+ FileUtils.LINE_SEP);
 				buffer.append("}" + FileUtils.LINE_SEP);
-				buffer
-						.append("document.write(\"<script src=\"+acc_imageDir+jsFile+\"></script>\");"
-								+ FileUtils.LINE_SEP);
+				buffer.append("document.write(\"<script src=\"+acc_imageDir+jsFile+\"></script>\");"
+						+ FileUtils.LINE_SEP);
 				newEle.appendChild(result.createComment(buffer.toString()));
 				el.appendChild(newEle);
 			}
@@ -421,8 +420,10 @@
 			return ICON_NAMES[0];
 		case IEvaluationItem.SEV_WARNING:
 			return ICON_NAMES[1];
-		case IEvaluationItem.SEV_INFO:
+		case IEvaluationItem.SEV_USER:
 			return ICON_NAMES[2];
+		case IEvaluationItem.SEV_INFO:
+			return ICON_NAMES[3];
 		default:
 			return NULL_STRING;
 		}
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages.properties b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages.properties
index d33f0e7..86e3eb3 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages.properties
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages.properties
@@ -23,6 +23,7 @@
 #
 BlindView_Visualize_4 = Visualize blind usability
 BlindVisualizationAction_0 = Visualize
+Report = Save HTML Report
 #
 # Others
 #
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages_ja.properties b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages_ja.properties
index 46805c7..af50ab0 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages_ja.properties
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/messages_ja.properties
@@ -21,8 +21,9 @@
 #
 # Actions
 #
-BlindView_Visualize_4 = \u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3\u8996\u899a\u5316\u5b9f\u884c
+BlindView_Visualize_4 = \u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u691c\u8a3c\u30fb\u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3\u8996\u899a\u5316\u5b9f\u884c
 BlindVisualizationAction_0 = \u8996\u899a\u5316\u5b9f\u884c
+Report = HTML\u5f62\u5f0f\u306e\u30ec\u30dd\u30fc\u30c8\u3082\u4fdd\u5b58
 #
 # Others
 #
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
index 3fdf14e..42dd425 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
@@ -23,6 +23,7 @@
 import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.ElementViewerManagerFactory;
 import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager;
 import org.eclipse.actf.visualization.engines.blind.ui.actions.BlindSettingAction;
+import org.eclipse.actf.visualization.engines.blind.ui.actions.BlindVisualizationBrowserModeAction;
 import org.eclipse.actf.visualization.ui.IVisualizationView;
 import org.eclipse.actf.visualization.ui.VisualizationStatusLineContributionItem;
 import org.eclipse.actf.visualization.ui.report.table.ResultTableLabelProvider;
@@ -55,6 +56,8 @@
 	private PartControlBlind partRightBlind;
 
 	private HashSet<IWorkbenchPage> pageSet = new HashSet<IWorkbenchPage>();
+	
+	private BlindVisualizationBrowserModeAction browserVisualizaton;
 
 	public BlindView() {
 		super();
@@ -85,8 +88,11 @@
 		IActionBars bars = getViewSite().getActionBars();
 		// IMenuManager menuManager = bars.getMenuManager();
 		IToolBarManager toolbarManager = bars.getToolBarManager();
+
+		browserVisualizaton = new BlindVisualizationBrowserModeAction();
 		
 		toolbarManager.add(new BlindVisualizationAction(partRightBlind));
+		toolbarManager.add(browserVisualizaton); 
 		toolbarManager.add(new BlindSettingAction());
 		toolbarManager.add(new BlindSaveAction(partRightBlind));
 		toolbarManager.add(new BlindOpenIdCssAction());
@@ -192,7 +198,11 @@
 	}
 
 	public void modelserviceChanged(MediatorEvent event) {
-		// do nothing
+		if(partRightBlind.isBrowserModeSupported(event.getModelServiceHolder())){
+			browserVisualizaton.setEnabled(true);
+		}else{
+			browserVisualizaton.setEnabled(false);			
+		}
 	}
 
 	public void modelserviceInputChanged(MediatorEvent event) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
index 48a7369..3fa474d 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
@@ -284,6 +284,7 @@
 			DocumentCleaner.removeEmbed(result);
 			DocumentCleaner.removeApplet(result);
 			DocumentCleaner.removeBase(result);
+			DocumentCleaner.removePI(result);
 
 			VisualizationResultCleaner.clean(result, targetUrl);
 
@@ -308,7 +309,8 @@
 			VisualizeStyleInfoManager.getInstance()
 					.fireVisualizeStyleInfoUpdate(styleInfo);
 
-			if (curParamBlind.visualizeMode == ParamBlind.BLIND_BROWSER_MODE) {
+			if (curParamBlind.visualizeMode
+					.equals(ParamBlind.BLIND_BROWSER_MODE)) {
 				VisualizeViewUtil.returnTextView(result, allPc, baseUrl);
 				return;
 			} else {
@@ -380,21 +382,24 @@
 				title = titleNode.getNodeValue();
 			} else {
 				error = true;
-				title = "untitled";
+				title = "";
 			}
 
-			title.trim();
 			if (remove) {
-				if (title.length() > 0) {
-					div.appendChild(doc.createTextNode("[Internal frame:"
-							+ title + "]"));
-				}
 				div.setAttribute("width", iframe.getAttribute("width"));
 				div.setAttribute("height", iframe.getAttribute("height"));
 				if (error) {
+					div.appendChild(doc
+							.createTextNode("[iframe: (without title)]"));
 					div.setAttribute("style", errorStyle);
 				} else {
-					div.setAttribute("style", iframe.getAttribute("style"));
+					div.appendChild(doc.createTextNode("[iframe: title=\""
+							+ title + "\"]"));
+					if (title.matches("^[\\s\u3000]*$")) {
+						div.setAttribute("style", errorStyle);
+					} else {
+						div.setAttribute("style", iframe.getAttribute("style"));
+					}
 				}
 				Node parent = iframe.getParentNode();
 				parent.insertBefore(div, iframe);
@@ -413,7 +418,7 @@
 			if (typeS.equalsIgnoreCase("image")) {
 
 				input.setAttribute("type", "button");
-				//				
+				//
 				NamedNodeMap map = input.getAttributes();
 				int mapSize = map.getLength();
 				Node altNode = null;
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HtmlErrorLogListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HtmlErrorLogListener.java
index 176cf88..b80434e 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HtmlErrorLogListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HtmlErrorLogListener.java
@@ -64,7 +64,7 @@
 					orgDoctype = orgDoctype.substring(0, orgDoctype
 							.indexOf("\""));
 					if (orgDoctype
-							.matches("-//W3C//DTD XHTML ((1.0 (Strict|Transitional|Frameset))|1.1|Basic 1.0)//EN")) {
+							.matches("-//W3C//DTD XHTML ((1.0 (Strict|Transitional|Frameset))|1.1|Basic 1.0|Basic 1.1)//EN")) {
 						orgDoctype = "";
 					} else {
 						isInvalidDoctype = true;
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
index b06d519..fb566b9 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
@@ -23,6 +23,7 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
+import org.w3c.dom.ProcessingInstruction;
 
 @SuppressWarnings("nls")
 public class DocumentCleaner {
@@ -355,5 +356,15 @@
 
 		}
 	}
+	
+	public static void removePI(Document doc){
+		NodeList nl = doc.getChildNodes();
+		for(int i=nl.getLength()-1;i>-1;i--){
+			Node n = nl.item(i);
+			if(n instanceof ProcessingInstruction){
+				doc.removeChild(n);
+			}
+		}
+	}
 
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
index 65721df..a5b516a 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
@@ -128,8 +128,10 @@
 					if (!areaE.hasAttribute(ALT)) {
 						if (areaE.hasAttribute("href")) {
 							prob = new BlindProblem(IBlindProblem.NO_ALT_AREA,
-									mapEl.getAttribute("name") + " , href=\""
-											+ areaE.getAttribute("href") + "\"");
+									"map name=\"" + mapEl.getAttribute("name")
+											+ "\", href=\""
+											+ areaE.getAttribute("href")
+											+ "\".");
 							prob.setTargetNode(mapData.getOrigNode(areaE));
 						}
 					} else {
@@ -174,8 +176,8 @@
 						if (checkItems[prob.getSubType()]) {
 							Element errorImg = doc.createElement("img");
 							errorImg.setAttribute(ALT, "error icon");
-							errorImg.setAttribute("title", prob
-									.getDescription());
+							errorImg.setAttribute("title",
+									prob.getDescription());
 							if (idObj != null) {
 								errorImg.setAttribute("onmouseover",
 										"updateBaloon('id" + idObj + "');");
@@ -196,6 +198,7 @@
 	}
 
 	private String checkAlt(Element img) {
+		// check_H67(img); // For new JIS
 
 		boolean noAltError = false;
 		String altS = ""; //$NON-NLS-1$
@@ -203,17 +206,19 @@
 		BlindProblem prob = null;
 
 		if (!img.hasAttribute(ALT)) {
-			prob = new BlindProblem(IBlindProblem.NO_ALT_IMG, img
-					.getAttribute(SRC));
+			prob = new BlindProblem(IBlindProblem.NO_ALT_IMG,
+					img.getAttribute(SRC));
 			noAltError = true;
 		} else {
 			altS = img.getAttribute(ALT);
 			if (altS.length() > 0) {
 				if (textChecker.isInappropriateAlt(altS)) {
-					prob = new BlindProblem(IBlindProblem.WRONG_ALT_IMG, altS);
+					// prob = new BlindProblem(IBlindProblem.WRONG_ALT_IMG,
+					// altS);
+					prob = new BlindProblem(IBlindProblem.ALERT_WRONG_ALT, altS);
 				} else if (textChecker.isSeparatedJapaneseChars(altS)) {
-					prob = new BlindProblem(IBlindProblem.SEPARATE_DBCS_ALT_IMG,
-							altS);
+					prob = new BlindProblem(
+							IBlindProblem.SEPARATE_DBCS_ALT_IMG, altS);
 				} else {
 					switch (textChecker.checkInappropriateAlt(altS)) {
 					case 3:
@@ -221,8 +226,10 @@
 								altS);
 						break;
 					case 2:
-						prob = new BlindProblem(IBlindProblem.WRONG_ALT_IMG,
+						prob = new BlindProblem(IBlindProblem.ALERT_WRONG_ALT,
 								altS);
+						// prob = new BlindProblem(IBlindProblem.WRONG_ALT_IMG,
+						// altS);
 						break;
 					case 1:
 						prob = new BlindProblem(IBlindProblem.ALERT_WRONG_ALT,
@@ -260,4 +267,42 @@
 		}
 		return (imgText);
 	}
+
+	/**
+	 * For new JIS
+	 * 
+	 * @param img
+	 */
+	private void check_H67(Element img) {
+		System.out.println("----");
+		System.out.println("check_H67");
+		String src = img.getAttribute(SRC);
+		System.out.println("src = " + src + ", alt = [" + img.getAttribute(ALT)
+				+ "]");
+		System.out.println(isIgnoredByAT(img));
+
+		if (isIgnoredByAT(img)) {
+			String alt = img.getAttribute(ALT); // it must exist
+			if (alt.matches("[ ]+"))
+				System.out.println("warning: alt=\"\" is recommended");
+			if (alt.matches("(\\u00A0)+"))
+				System.out
+						.println("error: &nbsp; cannot be used for null ALT purpose");
+			if (img.hasAttribute("title")
+					&& img.getAttribute("title").length() > 0)
+				System.out.println("error: title att exists in ignored img");
+		}
+	}
+
+	/**
+	 * For new JIS
+	 * 
+	 * @param img
+	 * @return
+	 */
+	private boolean isIgnoredByAT(Element img) {
+		String alt = img.getAttribute(ALT);
+		// System.out.println(Integer.toHexString(alt.codePointAt(0)));
+		return img.hasAttribute(ALT) && alt.matches("[ \\u00A0]*");
+	}
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
index 19ca922..85b8d14 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
@@ -83,7 +83,7 @@
 		} else if (tagName.equals("textarea")) {
 			return true;
 		} else if (tagName.equals("input")) {
-			String type = el.getAttribute("type");
+			String type = el.getAttribute("type").toLowerCase();
 			if ((type.length() == 0) | type.equals("text")
 					| type.equals("textarea") | type.equals("radio")
 					| type.equals("checkbox")) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/icons/etool16/wh_16.png b/plugins/org.eclipse.actf.visualization.engines.blind/icons/etool16/wh_16.png
new file mode 100644
index 0000000..db9aaa9
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/icons/etool16/wh_16.png
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
index 0a77297..b5b7875 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
+# Copyright (c) 2006, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -9,31 +9,31 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 #
-AltDialog_TITLE = Edit Inappropriate Alt List
-AltDialog_Column_Name = Inappropreate ALT WORDS
+AltDialog_TITLE = Edit Inappropriate alt attribute List
+AltDialog_Column_Name = Inappropreate alt WORDS
 AltDialog_MSG_No_String = Please input string.
 AltDialog_MSG_Existed = The Word has existed.
 #
 # PageEvaluation
 #
-PageEvaluation_Bad=Unsatisfactory (needs modification)
+PageEvaluation_Bad=Very poor
 PageEvaluation_Excellent=Excellent
 PageEvaluation_Good=Good
-PageEvaluation_Poor=Passes minimum requirements
+PageEvaluation_Poor=Poor
 #
 # SummaryEvaluation
 #
-Eval_redundant_img_alt=Redundant ALT attribute:
-Eval_wrong_img_alt=Image with wrong ALT attribute:
-Eval_no_img_alt=Image without ALT attribute:
+Eval_redundant_img_alt=Redundant alt attribute:
+Eval_wrong_img_alt=Image with wrong alt attribute:
+Eval_no_img_alt=Image without alt attribute:
 Eval_redundant_img_alt_error_msg=If there are alternative text near the image, please use alt="".
-Eval_wrong_img_alt_error_msg=Please do not use unclear ALT, such as "click here" or "image".
+Eval_wrong_img_alt_error_msg=Please do not use unclear alt, such as "click here" or "image".
 Eval_no_img_alt_error_msg=Please provide alternative text for an image (If the image has no information to read out, please provide alt=""
 Eval_navigability_low_score_error_msg=In visualization view, you can confirm that most part of the page are dark-colored.{0}Blind users have to wait too long to visit these fragments.{1}To improve blind users' navigability, please provide more headings(H1,H2,...) or skip-links.
 Eval_navigability_long_time_error_msg=This page has some skip-links or some headings.{0}"However, you can find some dark fragments in visualization view.{1}Blind users have to wait too long to visit these fragments.{2}"To improve blind users' navigability, please provide more headings(H1,H2,...) or skip-links.
-Eval_navigability_good_msg=This page is well structured and might be easy for blind users to navigate.
+Eval_navigability_good_msg=This page is well structured and might be easy for blind users to operate.
 Eval_confirm_errors_detailed_report=Please confirm errors at detailed report tab, then correct them.
-Eval_confirm_alt_attributes_first=At first, please confirm ALT attribute of images.
+Eval_confirm_alt_attributes_first=At first, please confirm alt attribute of images.
 Eval_many_accessibility_issues=This page seems to have many accessibility issues.
 Eval_some_accessibility_issues=This page seems to have some accessibility issues.
 Eval_completely_compliant_with_user_check_items=This page seems completely compliant with guidelines.
@@ -44,7 +44,7 @@
 Eval_some_errors_on_metrics1=({0}: Please confirm them at detailed report tab.)
 Eval_compliant_with_some_other_errors=This page is almost compliant with guidelines, however, there are still some errors.
 Eval_excellent=Excellent!
-Eval_easy_for_blind_user_to_navigate=This page is well structured and might be easy for blind users to navigate.
+Eval_easy_for_blind_user_to_navigate=This page is well structured and might be easy for blind users to operate.
 Eval_page_has_skiplinks_headings=This page has some skip-links or some headings.
 Eval_darkcolored_visualization_view=However, you can find some dark fragments in visualization view. In visualization view, you can confirm that most part of the page are dark-colored.
 #
@@ -66,3 +66,8 @@
 DialogSettingBlind_Input_tags_22 = Input tags:
 DialogSettingBlind_Label_tags_23 = Label tags:
 DialogSettingBlind_Tabel_border_24 = Tabel border:
+#
+#
+#
+VisualizeBrowserMode = Visualize (Voice browser mode)
+VisualizeBrowserModeTooltip = Visualize blind usability (Voice browser mode)
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
index ce59ac2..81e67ef 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
@@ -9,31 +9,31 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 #
-AltDialog_TITLE = \u4e0d\u9069\u5207\u306aALT\u5c5e\u6027\u3092\u8a2d\u5b9a
-AltDialog_Column_Name = \u4e0d\u9069\u5207\u306aALT\u5c5e\u6027
+AltDialog_TITLE = \u4e0d\u9069\u5207\u306aalt\u5c5e\u6027\u3092\u8a2d\u5b9a
+AltDialog_Column_Name = \u4e0d\u9069\u5207\u306aalt\u5c5e\u6027
 AltDialog_MSG_No_String = \u4f55\u3089\u304b\u306e\u6587\u5b57\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044
 AltDialog_MSG_Existed = \u65e2\u306b\u5165\u529b\u3055\u308c\u305f\u5358\u8a9e\u3067\u3059
 #
 # PageEvaluation
 #
-PageEvaluation_Bad=\u8981\u4fee\u6b63
+PageEvaluation_Bad=\u975e\u5e38\u306b\u60aa\u3044
 PageEvaluation_Excellent=\u975e\u5e38\u306b\u826f\u3044
 PageEvaluation_Good=\u826f\u3044
-PageEvaluation_Poor=\u5229\u7528\u56f0\u96e3
+PageEvaluation_Poor=\u60aa\u3044
 #
 # SummaryEvaluation
 #
-Eval_redundant_img_alt=\u7e70\u308a\u8fd4\u3057\u306b\u306a\u308bALT\u5c5e\u6027\u3092\u6301\u3064\u753b\u50cf\u306e\u6570:
-Eval_wrong_img_alt=\u5224\u308a\u306b\u304f\u3044ALT\u5c5e\u6027\u3092\u6301\u3064\u753b\u50cf\u306e\u6570:
-Eval_no_img_alt=ALT\u5c5e\u6027\u306e\u7121\u3044\u753b\u50cf\u306e\u6570:
-Eval_redundant_img_alt_error_msg=\u3082\u3057\u753b\u50cf\u306e\u3059\u3050\u524d\u5f8c\u306b\uff0c\u305d\u306e\u753b\u50cf\u306e\u610f\u5473\u3092\u8868\u3059\u6587\u5b57\u5217\u306a\u3069\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u5834\u5408\u306b\u306f\uff0cALT="" \u3068\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u95b2\u89a7\u3057\u305f\u969b\u306b\uff0c\u540c\u3058\u6587\u7ae0\u3092\u7e70\u308a\u8fd4\u3057\u8aad\u307f\u4e0a\u3052\u3066\u3057\u307e\u3044\u307e\u3059\uff0e\uff09
-Eval_wrong_img_alt_error_msg=\u753b\u50cf\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\uff08ALT\u5c5e\u6027\uff09\u306b\u306f\u610f\u5473\u306e\u3042\u308b\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u300c\u30af\u30ea\u30c3\u30af\u300d\u3084\u300cimage\u300d\u7b49\u3067\u306f\uff0c\u97f3\u58f0\u3067\u8aad\u307f\u4e0a\u3052\u305f\u969b\u306b\u753b\u50cf\u306e\u610f\u5473\u3084\u5f79\u5272\u304c\u4f1d\u308f\u308a\u307e\u305b\u3093\uff0e)
-Eval_no_img_alt_error_msg=\u753b\u50cf\uff08IMG\u30bf\u30b0\uff09\u306b\u306f\uff0c\u305d\u306e\u753b\u50cf\u306e\u610f\u5473\u3084\u5f79\u5272\u3092\u8868\u3059\u6587\u5b57\u5217\u3092ALT\u5c5e\u6027\u3068\u3057\u3066\u4ed8\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u3082\u3057\uff0c\u7a7a\u767d\u753b\u50cf\u306a\u3069\uff0c\u610f\u5473\u306e\u7121\u3044\u753b\u50cf\u306e\u5834\u5408\u306f ALT="" \u3068\u3057\u3066\u304f\u3060\u3055\u3044)
+Eval_redundant_img_alt=\u7e70\u308a\u8fd4\u3057\u306b\u306a\u308balt\u5c5e\u6027\u3092\u6301\u3064\u753b\u50cf\u306e\u6570:
+Eval_wrong_img_alt=\u5224\u308a\u306b\u304f\u3044alt\u5c5e\u6027\u3092\u6301\u3064\u753b\u50cf\u306e\u6570:
+Eval_no_img_alt=alt\u5c5e\u6027\u306e\u7121\u3044\u753b\u50cf\u306e\u6570:
+Eval_redundant_img_alt_error_msg=\u3082\u3057\u753b\u50cf\u306e\u3059\u3050\u524d\u5f8c\u306b\uff0c\u305d\u306e\u753b\u50cf\u306e\u610f\u5473\u3092\u8868\u3059\u6587\u5b57\u5217\u306a\u3069\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u5834\u5408\u306b\u306f\uff0calt="" \u3068\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u95b2\u89a7\u3057\u305f\u969b\u306b\uff0c\u540c\u3058\u6587\u7ae0\u3092\u7e70\u308a\u8fd4\u3057\u8aad\u307f\u4e0a\u3052\u3066\u3057\u307e\u3044\u307e\u3059\uff0e\uff09
+Eval_wrong_img_alt_error_msg=\u753b\u50cf\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\uff08alt\u5c5e\u6027\uff09\u306b\u306f\u610f\u5473\u306e\u3042\u308b\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u300c\u30af\u30ea\u30c3\u30af\u300d\u3084\u300cimage\u300d\u7b49\u3067\u306f\uff0c\u97f3\u58f0\u3067\u8aad\u307f\u4e0a\u3052\u305f\u969b\u306b\u753b\u50cf\u306e\u610f\u5473\u3084\u5f79\u5272\u304c\u4f1d\u308f\u308a\u307e\u305b\u3093\uff0e)
+Eval_no_img_alt_error_msg=\u753b\u50cf\uff08IMG\u30bf\u30b0\uff09\u306b\u306f\uff0c\u305d\u306e\u753b\u50cf\u306e\u610f\u5473\u3084\u5f79\u5272\u3092\u8868\u3059\u6587\u5b57\u5217\u3092alt\u5c5e\u6027\u3068\u3057\u3066\u4ed8\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\uff0e \uff08\u3082\u3057\uff0c\u7a7a\u767d\u753b\u50cf\u306a\u3069\uff0c\u610f\u5473\u306e\u7121\u3044\u753b\u50cf\u306e\u5834\u5408\u306f alt="" \u3068\u3057\u3066\u304f\u3060\u3055\u3044)
 Eval_navigability_low_score_error_msg=\u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u3067\u30da\u30fc\u30b8\u306e\u5927\u90e8\u5206\u304c\u6697\u3044\u8272\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u304b\uff1f{0} \u3053\u306e\u30da\u30fc\u30b8\u306b\u97f3\u58f0\u3067\u30a2\u30af\u30bb\u30b9\u3057\u305f\u5834\u5408\uff0c\u6700\u3082\u6697\u3044\u8272\u306e\u90e8\u5206\u306b\u5230\u9054\u3059\u308b\u306b\u306f90\u79d2\u4ee5\u4e0a\u304b\u304b\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e{1} \u898b\u51fa\u3057\u30bf\u30b0(H1,H2...)\u3084\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u3092\u63d0\u4f9b\u3057\u3066\uff0c\u30da\u30fc\u30b8\u5185\u306e\u5404\u9805\u76ee\u3078\u306e\u79fb\u52d5\u304c\u7c21\u5358\u306b\u306a\u308b\u3088\u3046\u306b\u3057\u3066\u4e0b\u3055\u3044\uff0e{2} \u7d50\u679c\u753b\u9762\u306e\u4e2d\u3067\u306f\uff0c\u898b\u51fa\u3057\u306f\u6c34\u8272\uff0c\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u306f\u77e2\u5370\u3067\u8868\u793a\u3055\u308c\u307e\u3059\uff0e{3} \u307e\u305f\uff0c\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\uff0c\u7d50\u679c\u5168\u4f53\u304c\u660e\u308b\u3044\u8272\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u306e\u3067\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff0e
-Eval_navigability_long_time_error_msg=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\uff0c\u97f3\u58f0\u3067\u306e\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u304c\u96e3\u3057\u3044\u7b87\u6240\u304c\u6b8b\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e{0} \u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u306e\u4e2d\u3067\u6700\u3082\u6697\u3044\u8272\u306e\u90e8\u5206\u306b\u5230\u9054\u3059\u308b\u306b\u306f90\u79d2\u4ee5\u4e0a\u304b\u304b\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e{1} \u3088\u308a\u591a\u304f\u306e\u898b\u51fa\u3057\u30bf\u30b0(H1,H2...)\u3084\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u3092\u63d0\u4f9b\u3057\u3066\uff0c\u30da\u30fc\u30b8\u5185\u306e\u5404\u9805\u76ee\u3078\u7c21\u5358\u306b\u79fb\u52d5\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff0e{2} \u7d50\u679c\u753b\u9762\u306e\u4e2d\u3067\u306f\uff0c\u898b\u51fa\u3057\u306f\u6c34\u8272\uff0c\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u306f\u77e2\u5370\u3067\u8868\u793a\u3055\u308c\u307e\u3059\uff0e{3} \u307e\u305f\uff0c\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\uff0c\u7d50\u679c\u5168\u4f53\u304c\u660e\u308b\u3044\u8272\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u306e\u3067\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff0e
-Eval_navigability_good_msg=\u3053\u306e\u30da\u30fc\u30b8\u306f\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u7c21\u5358\u306b\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u3067\u304d\u308b\u3068\u601d\u308f\u308c\u307e\u3059\uff0e{0} \u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u3067\uff0c\u80cc\u666f\u304c\u6c34\u8272\u306e\u6587\u5b57\u5217\u304c\u898b\u51fa\u3057\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff0e{1} \u307e\u305f\uff0c\u77e2\u5370\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u62bc\u3057\u3066\uff0c\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u306e\u30b8\u30e3\u30f3\u30d7\u5148\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
+Eval_navigability_long_time_error_msg=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\uff0c\u97f3\u58f0\u3067\u306e\u64cd\u4f5c\u304c\u96e3\u3057\u3044\u7b87\u6240\u304c\u6b8b\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e{0} \u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u306e\u4e2d\u3067\u6700\u3082\u6697\u3044\u8272\u306e\u90e8\u5206\u306b\u5230\u9054\u3059\u308b\u306b\u306f90\u79d2\u4ee5\u4e0a\u304b\u304b\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e{1} \u3088\u308a\u591a\u304f\u306e\u898b\u51fa\u3057\u30bf\u30b0(H1,H2...)\u3084\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u3092\u63d0\u4f9b\u3057\u3066\uff0c\u30da\u30fc\u30b8\u5185\u306e\u5404\u9805\u76ee\u3078\u7c21\u5358\u306b\u79fb\u52d5\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff0e{2} \u7d50\u679c\u753b\u9762\u306e\u4e2d\u3067\u306f\uff0c\u898b\u51fa\u3057\u306f\u6c34\u8272\uff0c\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u306f\u77e2\u5370\u3067\u8868\u793a\u3055\u308c\u307e\u3059\uff0e{3} \u307e\u305f\uff0c\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\uff0c\u7d50\u679c\u5168\u4f53\u304c\u660e\u308b\u3044\u8272\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u306e\u3067\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff0e
+Eval_navigability_good_msg=\u3053\u306e\u30da\u30fc\u30b8\u306f\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u7c21\u5358\u306b\u64cd\u4f5c\u3067\u304d\u308b\u3068\u601d\u308f\u308c\u307e\u3059\uff0e{0} \u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u3067\uff0c\u80cc\u666f\u304c\u6c34\u8272\u306e\u6587\u5b57\u5217\u304c\u898b\u51fa\u3057\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff0e{1} \u307e\u305f\uff0c\u77e2\u5370\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u62bc\u3057\u3066\uff0c\u30da\u30fc\u30b8\u5185\u30ea\u30f3\u30af\u306e\u30b8\u30e3\u30f3\u30d7\u5148\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
 Eval_confirm_errors_detailed_report=\u8a73\u7d30\u30ec\u30dd\u30fc\u30c8\u3067\uff0c\u3069\u306e\u3088\u3046\u306a\u554f\u984c\u304c\u3042\u308b\u304b\u78ba\u8a8d\u3057\u3066\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
-Eval_confirm_alt_attributes_first=\u307e\u305a\u306f\uff0c\u30da\u30fc\u30b8\u5185\u306e\u753b\u50cf\u306b\u5bfe\u3057\u3066\uff0c\u305d\u306e\u610f\u5473\u30fb\u5f79\u5272\u3092\u8aac\u660e\u3059\u308b\u6587\u5b57\u5217(ALT\u5c5e\u6027)\u304c\u4ed8\u52a0\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff0e
+Eval_confirm_alt_attributes_first=\u307e\u305a\u306f\uff0c\u30da\u30fc\u30b8\u5185\u306e\u753b\u50cf\u306b\u5bfe\u3057\u3066\uff0c\u305d\u306e\u610f\u5473\u30fb\u5f79\u5272\u3092\u8aac\u660e\u3059\u308b\u6587\u5b57\u5217(alt\u5c5e\u6027)\u304c\u4ed8\u52a0\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff0e
 Eval_many_accessibility_issues=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306b\u95a2\u3059\u308b\u554f\u984c\u304c\u591a\u6570\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\uff0e
 Eval_some_accessibility_issues=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306b\u95a2\u3059\u308b\u554f\u984c\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\uff0e
 Eval_completely_compliant_with_user_check_items=\u3053\u306e\u30da\u30fc\u30b8\u306f\u3053\u306e\u30c4\u30fc\u30eb\u3067\u30c1\u30a7\u30c3\u30af\u53ef\u80fd\u306a\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306e\u9805\u76ee\u5168\u3066\u306b\u6e96\u62e0\u3057\u3066\u3044\u308b\u69d8\u3067\u3059\uff0e
@@ -44,14 +44,14 @@
 Eval_some_errors_on_metrics1=({0}: \u8a73\u7d30\u30ec\u30dd\u30fc\u30c8\u3067\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff0e)
 Eval_compliant_with_some_other_errors=\u3053\u306e\u30da\u30fc\u30b8\u306f\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306b\u307b\u307c\u6e96\u62e0\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u304c\uff0c\u307e\u3060\u3044\u304f\u3064\u304b\u306e\u554f\u984c\u304c\u6b8b\u3063\u3066\u3044\u307e\u3059\uff0e
 Eval_excellent=Excellent!
-Eval_easy_for_blind_user_to_navigate=\u3053\u306e\u30da\u30fc\u30b8\u306f\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u7c21\u5358\u306b\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u3067\u304d\u308b\u3068\u601d\u308f\u308c\u307e\u3059\uff0e
-Eval_page_has_skiplinks_headings=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\uff0c\u97f3\u58f0\u3067\u306e\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u304c\u96e3\u3057\u3044\u7b87\u6240\u304c\u6b8b\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e
+Eval_easy_for_blind_user_to_navigate=\u3053\u306e\u30da\u30fc\u30b8\u306f\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u7c21\u5358\u306b\u64cd\u4f5c\u3067\u304d\u308b\u3068\u601d\u308f\u308c\u307e\u3059\uff0e
+Eval_page_has_skiplinks_headings=\u3053\u306e\u30da\u30fc\u30b8\u306b\u306f\uff0c\u97f3\u58f0\u3067\u306e\u64cd\u4f5c\u304c\u96e3\u3057\u3044\u7b87\u6240\u304c\u6b8b\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e
 Eval_darkcolored_visualization_view=\u53f3\u4e0a\u306e\u7d50\u679c\u753b\u9762\u3067\u30da\u30fc\u30b8\u306e\u5927\u90e8\u5206\u304c\u6697\u3044\u8272\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u304b\uff1f
 #
 # PreferencePage
 #
-DialogSettingBlind_NG_Word___Wrong_Text_5 = \u4e0d\u9069\u5207\u306aALT\u5c5e\u6027
-DialogSettingBlind_NG_Word_Wrong_Text_Edit____25 = \u4e0d\u9069\u5207\u306aALT\u5c5e\u6027\u30ea\u30b9\u30c8\u306e\u7de8\u96c6
+DialogSettingBlind_NG_Word___Wrong_Text_5 = \u4e0d\u9069\u5207\u306aalt\u5c5e\u6027
+DialogSettingBlind_NG_Word_Wrong_Text_Edit____25 = \u4e0d\u9069\u5207\u306aalt\u5c5e\u6027\u30ea\u30b9\u30c8\u306e\u7de8\u96c6
 DialogSettingBlind_Language_4 = \u8a00\u8a9e
 DialogSettingBlind_English_15 = \u82f1\u8a9e
 DialogSettingBlind_Japanese_16 = \u65e5\u672c\u8a9e
@@ -66,3 +66,8 @@
 DialogSettingBlind_Input_tags_22 = \u5165\u529b\u30bf\u30b0 (Input):
 DialogSettingBlind_Label_tags_23 = \u30e9\u30d9\u30eb\u30bf\u30b0 (Label):
 DialogSettingBlind_Tabel_border_24 = \u30c6\u30fc\u30d6\u30eb\u306e\u5883\u754c:
+#
+#
+#
+VisualizeBrowserMode = \u8996\u899a\u5316 (\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u30e2\u30fc\u30c9)
+VisualizeBrowserModeTooltip = \u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u691c\u8a3c\u30fb\u97f3\u58f0\u30e6\u30fc\u30b6\u30d3\u30ea\u30c6\u30a3\u8996\u899a\u5316\u5b9f\u884c (\u97f3\u58f0\u30d6\u30e9\u30a6\u30b6\u30e2\u30fc\u30c9)
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
index 4b65294..c99f531 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
@@ -40,6 +40,8 @@
 				+ "Err.png", true);
 		FileUtils.copyFile(bundleChecker, new Path("icons/Warn.png"), path
 				+ "Warn.png", true);
+		FileUtils.copyFile(bundleChecker, new Path("icons/Conf.png"), path
+				+ "Conf.png", true);
 		FileUtils.copyFile(bundleChecker, new Path("icons/Info.png"), path
 				+ "Info.png", true);
 		FileUtils.copyFile(bundleChecker, new Path("icons/star.gif"), path
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/PageEvaluation.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/PageEvaluation.java
index e4d38e0..541fedd 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/PageEvaluation.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/PageEvaluation.java
@@ -62,9 +62,7 @@
 		hlsl.addTarget(Messages.Eval_some_accessibility_issues, red, SWT.BOLD);
 		hlsl.addTarget(Messages.Eval_easy_for_blind_user_to_navigate, blue,
 				SWT.BOLD);
-		hlsl
-				.addTarget(Messages.Eval_page_has_skiplinks_headings, red,
-						SWT.BOLD);
+		hlsl.addTarget(Messages.Eval_page_has_skiplinks_headings, red, SWT.BOLD);
 		hlsl.addTarget(Messages.Eval_darkcolored_visualization_view, red,
 				SWT.BOLD);
 
@@ -76,6 +74,7 @@
 	private PageData pageData;
 
 	private String[] metrics = guidelineHolder.getMetricsNames();
+	private String[] lMetrics = guidelineHolder.getLocalizedMetricsNames();
 
 	private int metricsSize = metrics.length;
 
@@ -122,8 +121,13 @@
 
 	protected boolean hasComplianceError() {
 		for (int i = 0; i < metricsSize; i++) {
-			if (metrics[i].equalsIgnoreCase("compliance")) { //$NON-NLS-1$
-				return (scores[i] != 100);
+			if (metrics[i].equalsIgnoreCase("perceivable") || //$NON-NLS-1$
+					metrics[i].equalsIgnoreCase("understandable") || //$NON-NLS-1$
+					metrics[i].equalsIgnoreCase("robust") || //$NON-NLS-1$
+					metrics[i].equalsIgnoreCase("operable")) { //$NON-NLS-1$)
+				if (scores[i] != 100) {
+					return (true);
+				}
 			}
 		}
 		return (false);
@@ -143,7 +147,7 @@
 
 		for (int i = 0; i < metricsSize; i++) {
 			if (enabledMetrics[i]) {
-				tmpV.add(metrics[i]);
+				tmpV.add(lMetrics[i]);
 				tmpV.add(String.valueOf(scores[i]));
 			}
 		}
@@ -178,14 +182,13 @@
 
 		String rating = Messages.PageEvaluation_Bad;
 
-		if (!hasComplianceError()) {
-			if (minValue >= 90) {
-				rating = Messages.PageEvaluation_Excellent;
-			} else if (minValue >= 70) {
-				rating = Messages.PageEvaluation_Good;
-			} else if (minValue >= 60) {
-				rating = Messages.PageEvaluation_Poor;
-			}
+		// TODO check compliance / others
+		if (minValue == 100) {
+			rating = Messages.PageEvaluation_Excellent;
+		} else if (minValue >= 75) {
+			rating = Messages.PageEvaluation_Good;
+		} else if (minValue >= 50) {
+			rating = Messages.PageEvaluation_Poor;
 		}
 		return (rating);
 	}
@@ -212,14 +215,14 @@
 
 		String rating = IVisualizationConst.RATING_BAD;
 
-		if (!hasComplianceError()) {
-			if (minValue >= 90) {
-				rating = IVisualizationConst.RATING_V_GOOD;
-			} else if (minValue >= 80) {
-				rating = IVisualizationConst.RATING_GOOD;
-			} else if (minValue >= 60) {
-				rating = IVisualizationConst.RATING_POOR;
-			}
+		// TODO check compliance / others
+
+		if (minValue == 100) {
+			rating = IVisualizationConst.RATING_V_GOOD;
+		} else if (minValue >= 75) {
+			rating = IVisualizationConst.RATING_GOOD;
+		} else if (minValue >= 50) {
+			rating = IVisualizationConst.RATING_POOR;
 		}
 		return (rating);
 	}
@@ -234,7 +237,7 @@
 		this.checkMinus();
 
 		boolean[] enabled = GuidelineHolder.getInstance().getMatchedMetrics();
-		String[] metrics = this.getMetrics();
+		String[] metrics = lMetrics;
 		int[] scores = this.getScores();
 
 		Vector<String> metricsV = new Vector<String>();
@@ -276,6 +279,16 @@
 	}
 
 	/**
+	 * Get evaluation metrics used to evaluate this page 
+	 * 
+	 * @return metrics names (localized)
+	 */
+	public String[] getLocalizedMetrics() {
+		return lMetrics;
+	}
+
+	
+	/**
 	 * Get scores for each metrics
 	 * 
 	 * @return scores
@@ -283,7 +296,7 @@
 	public int[] getScores() {
 		return scores;
 	}
-	
+
 	/**
 	 * Get {@link PageData} used for this evaluation
 	 * 
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/actions/BlindVisualizationBrowserModeAction.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/actions/BlindVisualizationBrowserModeAction.java
new file mode 100644
index 0000000..68a83bd
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/actions/BlindVisualizationBrowserModeAction.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.actf.visualization.engines.blind.ui.actions;
+
+import org.eclipse.actf.ui.util.PlatformUIUtil;
+import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
+import org.eclipse.actf.visualization.engines.blind.ParamBlind;
+import org.eclipse.actf.visualization.engines.blind.ui.preferences.IBlindPreferenceConstants;
+import org.eclipse.actf.visualization.internal.engines.blind.BlindVizEnginePlugin;
+import org.eclipse.actf.visualization.internal.engines.blind.Messages;
+import org.eclipse.actf.visualization.ui.IVisualizationView;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.IViewPart;
+
+public class BlindVisualizationBrowserModeAction extends Action {
+
+	public BlindVisualizationBrowserModeAction() {
+		setToolTipText(Messages.VisualizeBrowserModeTooltip);
+		setImageDescriptor(BlindVizResourceUtil
+				.getImageDescriptor("icons/etool16/wh_16.png")); //$NON-NLS-1$
+		setText(Messages.VisualizeBrowserMode);
+	}
+
+	public void run() {
+		
+		IPreferenceStore ps = BlindVizEnginePlugin.getDefault().getPreferenceStore();
+		ps.setValue(IBlindPreferenceConstants.BLIND_MODE, IBlindPreferenceConstants.BLIND_BROWSER_MODE);
+		ParamBlind.refresh();
+		
+		IViewPart viewPart = PlatformUIUtil
+				.showView(IVisualizationView.ID_BLINDVIEW);
+		if (viewPart instanceof IVisualizationView) {
+			((IVisualizationView) viewPart).doVisualize();
+		}
+		ps.setValue(IBlindPreferenceConstants.BLIND_MODE, IBlindPreferenceConstants.BLIND_LAYOUT_MODE);
+		ParamBlind.refresh();
+	}
+
+}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
index 4ff8f94..97d53cc 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
@@ -20,7 +20,6 @@
 import org.eclipse.actf.visualization.internal.engines.blind.Messages;
 import org.eclipse.jface.preference.ColorFieldEditor;
 import org.eclipse.jface.preference.RadioGroupFieldEditor;
-import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -36,7 +35,7 @@
 
 	public static final String ID = BlindPreferencePage.class.getName();
 
-	private RadioGroupFieldEditor modeRadio;
+//	private RadioGroupFieldEditor modeRadio;
 
 	private Group visualizationSetting;
 
@@ -80,20 +79,20 @@
 
 		Composite parent = getFieldEditorParent();
 
-		modeRadio = new RadioGroupFieldEditor(
-				IBlindPreferenceConstants.BLIND_MODE,
-				Messages.DialogSettingBlind_Visualization_mode_3,
-				1,
-				new String[][] {
-						{
-								Messages.DialogSettingBlind_Layout_mode_9,
-								IBlindPreferenceConstants.BLIND_LAYOUT_MODE },
-						{
-								Messages.DialogSettingBlind_Voice_browser_output_mode_8,
-								IBlindPreferenceConstants.BLIND_BROWSER_MODE } },
-				parent);
-
-		addField(modeRadio);
+//		modeRadio = new RadioGroupFieldEditor(
+//				IBlindPreferenceConstants.BLIND_MODE,
+//				Messages.DialogSettingBlind_Visualization_mode_3,
+//				1,
+//				new String[][] {
+//						{
+//								Messages.DialogSettingBlind_Layout_mode_9,
+//								IBlindPreferenceConstants.BLIND_LAYOUT_MODE },
+//						{
+//								Messages.DialogSettingBlind_Voice_browser_output_mode_8,
+//								IBlindPreferenceConstants.BLIND_BROWSER_MODE } },
+//				parent);
+//
+//		addField(modeRadio);
 
 		visualizationSetting = createFieldGroup(Messages.DialogSettingBlind_LayoutModeSetting);
 
@@ -155,19 +154,19 @@
 		visualizationSetting.setVisible(isLayoutMode);
 	}
 
-	@Override
-	public void propertyChange(PropertyChangeEvent event) {
-		super.propertyChange(event);
-
-		if (event.getSource() == modeRadio) {
-			if (!event.getOldValue().equals(event.getNewValue())) {
-				boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
-						.equals(event.getNewValue());
-				visualizationSetting.setEnabled(isLayoutMode);
-				visualizationSetting.setVisible(isLayoutMode);
-			}
-		}
-	}
+//	@Override
+//	public void propertyChange(PropertyChangeEvent event) {
+//		super.propertyChange(event);
+//
+//		if (event.getSource() == modeRadio) {
+//			if (!event.getOldValue().equals(event.getNewValue())) {
+//				boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
+//						.equals(event.getNewValue());
+//				visualizationSetting.setEnabled(isLayoutMode);
+//				visualizationSetting.setVisible(isLayoutMode);
+//			}
+//		}
+//	}
 
 	@Override
 	public boolean performOk() {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
index 2b30384..3b224a7 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
@@ -68,6 +68,9 @@
 	public static String DialogSettingBlind_Input_tags_22;
 	public static String DialogSettingBlind_Label_tags_23;
 	public static String DialogSettingBlind_Tabel_border_24;
+	
+	public static String VisualizeBrowserMode;
+	public static String VisualizeBrowserModeTooltip;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/SummaryEvaluation.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/SummaryEvaluation.java
index f85f5e1..1c2f82a 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/SummaryEvaluation.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/SummaryEvaluation.java
@@ -53,38 +53,45 @@
 		StringBuffer noGoodMetrics = new StringBuffer();
 
 		boolean hasComp = false;
-		boolean hasNav = false;
+		boolean hasOperable = false;
 		boolean hasOther = false;
 
 		String[] metrics = pe.getMetrics();
+		String[] lMetrics = pe.getLocalizedMetrics();
 		int[] scores = pe.getScores();
 
-		int comp = 100;
-		int nav = 100;
+		int compTotal = 0;
+		int compCount = 0;
+		int operable = 100;
 		int other = 100;
 
 		// boolean[] enabledMetrics = guidelineHolder.getMatchedMetrics();
 
 		for (int i = 0; i < metrics.length; i++) {
 			int score = scores[i];
-			if (metrics[i].equalsIgnoreCase("compliance") //$NON-NLS-1$
+			if ((metrics[i].equalsIgnoreCase("perceivable") //$NON-NLS-1$
+					|| metrics[i].equalsIgnoreCase("understandable") || //$NON-NLS-1$
+					metrics[i].equalsIgnoreCase("robust"))//$NON-NLS-1$
 					&& guidelineHolder.isMatchedMetric(metrics[i])) {
-				comp = score;
+				compTotal += score;
+				compCount++;
 				hasComp = true;
 				if (score != 100) {
-					noGoodMetrics.append(metrics[i] + ","); //$NON-NLS-1$
+					noGoodMetrics.append(lMetrics[i] + ","); //$NON-NLS-1$
 				}
-			} else if (metrics[i].equalsIgnoreCase("navigability") //$NON-NLS-1$
+			} else if (metrics[i].equalsIgnoreCase("operable") //$NON-NLS-1$
 					&& guidelineHolder.isMatchedMetric(metrics[i])) {
-				nav = score;
-				hasNav = true;
+				operable = score;
+				compTotal += score;
+				compCount++;
+				hasOperable = true;
 			} else {
 				hasOther = true;
 				if (other > score) {
 					other = score;
 				}
 				if (score != 100) {
-					noGoodMetrics.append(metrics[i] + ","); //$NON-NLS-1$
+					noGoodMetrics.append(lMetrics[i] + ","); //$NON-NLS-1$
 				}
 			}
 		}
@@ -102,54 +109,13 @@
 
 		boolean isGood = false;
 
-		if (hasComp) {
-			if (comp >= 80) {
-				if (hasError) {
-					aboutComp
-							.append(Messages.Eval_compliant_with_some_other_errors
-									+ FileUtils.LINE_SEP);
-
-					if (totalAltError > 0) {
-						aboutComp
-								.append(Messages.Eval_confirm_alt_attributes_first
-										+ FileUtils.LINE_SEP);
-						aboutComp.append(getImageAltStatistics());
-					} else {
-						aboutComp
-								.append(Messages.Eval_confirm_errors_detailed_report);
-					}
-				} else {
-					if (hasOther && other != 100) {
-						aboutComp.append(Messages.Eval_some_errors_on_metrics
-								+ FileUtils.LINE_SEP
-								+ MessageFormat.format(
-										Messages.Eval_some_errors_on_metrics1,
-										(new String[] { noGoodMetrics
-												.substring(0, noGoodMetrics
-														.length() - 1) })));
-					} else {
-						if (comp == 100) {
-							isGood = true;
-							aboutComp.append(Messages.Eval_completely_compliant
-									+ FileUtils.LINE_SEP
-									+ Messages.Eval_user_check2);
-						} else {
-							isGood = true;
-							aboutComp
-									.append(Messages.Eval_completely_compliant_with_user_check_items
-											+ FileUtils.LINE_SEP
-											+ Messages.Eval_user_check1);
-						}
-					}
-				}
-			} else {
-				if (comp > 50) {
-					aboutComp.append(Messages.Eval_some_accessibility_issues
-							+ FileUtils.LINE_SEP);
-				} else {
-					aboutComp.append(Messages.Eval_many_accessibility_issues
-							+ FileUtils.LINE_SEP);
-				}
+		if(compCount==0){
+			return("");
+		}
+		if (compTotal / compCount >= 75) {
+			if (hasError) { // hasComplianceError
+				aboutComp.append(Messages.Eval_compliant_with_some_other_errors
+						+ FileUtils.LINE_SEP);
 
 				if (totalAltError > 0) {
 					aboutComp.append(Messages.Eval_confirm_alt_attributes_first
@@ -159,12 +125,50 @@
 					aboutComp
 							.append(Messages.Eval_confirm_errors_detailed_report);
 				}
+			} else {
+				if (hasOther && other != 100) {
+					aboutComp.append(Messages.Eval_some_errors_on_metrics
+							+ FileUtils.LINE_SEP
+							+ MessageFormat.format(
+									Messages.Eval_some_errors_on_metrics1,
+									(new String[] { noGoodMetrics.substring(0,
+											noGoodMetrics.length() - 1) })));
+				} else {
+					if (compTotal / compCount == 100) {
+						isGood = true;
+						aboutComp.append(Messages.Eval_completely_compliant
+								+ FileUtils.LINE_SEP
+								+ Messages.Eval_user_check2);
+					} else {
+						isGood = true;
+						aboutComp
+								.append(Messages.Eval_completely_compliant_with_user_check_items
+										+ FileUtils.LINE_SEP
+										+ Messages.Eval_user_check1);
+					}
+				}
+			}
+		} else {
+			if (compTotal / compCount >= 50) {
+				aboutComp.append(Messages.Eval_some_accessibility_issues
+						+ FileUtils.LINE_SEP);
+			} else {
+				aboutComp.append(Messages.Eval_many_accessibility_issues
+						+ FileUtils.LINE_SEP);
+			}
+
+			if (totalAltError > 0) {
+				aboutComp.append(Messages.Eval_confirm_alt_attributes_first
+						+ FileUtils.LINE_SEP);
+				aboutComp.append(getImageAltStatistics());
+			} else {
+				aboutComp.append(Messages.Eval_confirm_errors_detailed_report);
 			}
 		}
 
 		//
-		if (hasNav && guidelineHolder.isEnabledMetric("navigability")) { //$NON-NLS-1$
-			if (nav > 80) {
+		if (hasOperable && guidelineHolder.isEnabledMetric("operable")) { //$NON-NLS-1$
+			if (operable >= 75) {
 				if (pageData.getMaxTime() > 240) {
 					aboutNav.append(MessageFormat.format(
 							Messages.Eval_navigability_long_time_error_msg,
@@ -189,18 +193,18 @@
 			}
 		}
 
-		if ((hasComp || hasNav) && isGood) {
+		if ((hasComp || hasOperable) && isGood) {
 			tmpSB.append(Messages.Eval_excellent + FileUtils.LINE_SEP
 					+ FileUtils.LINE_SEP);
 		}
-		tmpSB.append(aboutNav + FileUtils.LINE_SEP);
-		tmpSB.append(aboutComp);
+		tmpSB.append(aboutComp + FileUtils.LINE_SEP + FileUtils.LINE_SEP);
+		tmpSB.append(aboutNav);
 
 		return (tmpSB.toString());
 	}
 
 	private String getImageAltStatistics() {
-		StringBuffer tmpSB = new StringBuffer();
+		StringBuffer tmpSB = new StringBuffer(FileUtils.LINE_SEP);
 
 		if (noImageAltCount > 0) {
 			tmpSB.append(" -" + Messages.Eval_no_img_alt_error_msg //$NON-NLS-1$
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
index f4784e0..4ab86f0 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
@@ -33,7 +33,7 @@
 var idNumber_Old=0;
 var refresh=false;
 var HIGHLIGHT_BGCOLOR = "#ffdddd";
-var MAX_PROBLEM_SELECTION = 30;
+var MAX_PROBLEM_SELECTION = 250;
 
 // call it like: setHighlight2(new Array(43,47,49), new Array(45,47,50));
 function setHighlight2(firstNodeArray, lastNodeArray) {	
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/messages.properties b/plugins/org.eclipse.actf.visualization.ui.report/src/messages.properties
index 55e1757..4e389a7 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/messages.properties
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/messages.properties
@@ -10,9 +10,9 @@
 ###############################################################################
 #
 ProblemTable_5 = View Source HTML
-ProblemTable_6 = View Problem Description
+ProblemTable_6 = Properties
 ProblemTable_Clear_Selection_15 = Clear Selection
-ProblemTable_View_Guideline_16 = View Guideline
+ProblemTable_View_Guideline_16 = View Success Criterion
 
 DialogTextSearch_0 = Search
 DialogTextSearch_1 = The string to be searched:
@@ -31,5 +31,9 @@
 SrcViewer_9 = &Copy
 SrcViewer_0 = file can't read:
 
-GuidelineSubMenu_0=Guideline help is not available.
+GuidelineSubMenu_0=Help for Success Criterion is not available.
 SrcViewerForPT_0=HTML Source
+
+ViewTechniques=View Techniques
+NoTechniques=Help for Technique is not available.
+Copy = Copy
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/messages_ja.properties b/plugins/org.eclipse.actf.visualization.ui.report/src/messages_ja.properties
index d805e00..8f278d3 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/messages_ja.properties
@@ -10,9 +10,9 @@
 ###############################################################################
 #
 ProblemTable_5 = \u30bd\u30fc\u30b9HTML\u3092\u898b\u308b
-ProblemTable_6 = \u30a8\u30e9\u30fc\u306e\u5185\u5bb9\u3092\u898b\u308b
+ProblemTable_6 = \u30d7\u30ed\u30d1\u30c6\u30a3
 ProblemTable_Clear_Selection_15 = \u9078\u629e\u306e\u89e3\u9664
-ProblemTable_View_Guideline_16 = \u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u898b\u308b
+ProblemTable_View_Guideline_16 = \u9054\u6210\u57fa\u6e96\u3092\u898b\u308b
 
 DialogTextSearch_0 = \u691c\u7d22
 DialogTextSearch_1 = \u691c\u7d22\u3059\u308b\u6587\u5b57\u5217:
@@ -31,5 +31,8 @@
 SrcViewer_9 = \u30b3\u30d4\u30fc\t(&C)
 SrcViewer_0 = \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u51fa\u6765\u307e\u305b\u3093:
 
-GuidelineSubMenu_0=\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306e\u30d8\u30eb\u30d7\u304c\u6709\u308a\u307e\u305b\u3093.
+GuidelineSubMenu_0=\u9054\u6210\u57fa\u6e96\u306e\u30d8\u30eb\u30d7\u304c\u6709\u308a\u307e\u305b\u3093.
 SrcViewerForPT_0=HTML \u30bd\u30fc\u30b9
+Copy = \u30b3\u30d4\u30fc
+ViewTechniques=\u5b9f\u88c5\u65b9\u6cd5\u3092\u898b\u308b
+NoTechniques=\u5b9f\u88c5\u65b9\u6cd5\u306e\u30d8\u30eb\u30d7\u304c\u6709\u308a\u307e\u305b\u3093.
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/Messages.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/Messages.java
index 8d425e4..a9d1822 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/Messages.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/Messages.java
@@ -41,6 +41,11 @@
 	public static String SrcViewer_9;
 	public static String SrcViewer_0;
 	public static String SrcViewerForPT_0;
+	
+	public static String ViewTechniques;
+	public static String NoTechniques;
+	
+	public static String Copy;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ProblemTree.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ProblemTree.java
index 3c227da..9d8fd91 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ProblemTree.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ProblemTree.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and Others
+ * Copyright (c) 2003, 2010 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -43,6 +43,8 @@
 	private TreeItem node1_2;
 
 	private TreeItem node1_3;
+	
+	private TreeItem node1_4;
 
 	private ResultTableViewer _resultTableViewer = null;
 
@@ -77,6 +79,8 @@
 							} else if (item == node1_2) {
 								result = result | IEvaluationItem.SEV_WARNING;
 							} else if (item == node1_3) {
+								result = result | IEvaluationItem.SEV_USER;
+							} else if (item ==node1_4){
 								result = result | IEvaluationItem.SEV_INFO;
 							}
 						}
@@ -106,6 +110,10 @@
 
 		node1_3 = new TreeItem(nodeRoot, SWT.NULL);
 		node1_3.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(
+				EvaluationUtil.PLUGIN_ID, "icons/Conf.png").createImage()); //$NON-NLS-1$
+
+		node1_4 = new TreeItem(nodeRoot, SWT.NULL);
+		node1_4.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(
 				EvaluationUtil.PLUGIN_ID, "icons/Info.png").createImage()); //$NON-NLS-1$
 
 		nodeRoot.setExpanded(true);
@@ -129,6 +137,7 @@
 	public void changeTreeNodeAmount(List<IProblemItem> targetList) {
 
 		int error = 0;
+		int warn = 0;
 		int user = 0;
 		int info = 0;
 
@@ -139,6 +148,9 @@
 					error++;
 					break;
 				case IProblemItem.SEV_WARNING:
+					warn++;
+					break;
+				case IProblemItem.SEV_USER:
 					user++;
 					break;
 				case IProblemItem.SEV_INFO:
@@ -154,8 +166,9 @@
 
 		nodeRoot.setText(IProblemConst.ALL_ERRORS + "  (" + all + ")"); //$NON-NLS-1$ //$NON-NLS-2$
 		node1_1.setText(IProblemConst.ESSENTIAL + "  (" + error + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		node1_2.setText(IProblemConst.USER_CHECK + "  (" + user + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		node1_3.setText(IProblemConst.INFO + " (" + info + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+		node1_2.setText(IProblemConst.WARNING + "  (" + warn + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+		node1_3.setText(IProblemConst.USER_CHECK + " (" + user + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+		node1_4.setText(IProblemConst.INFO + " (" + info + ")"); //$NON-NLS-1$ //$NON-NLS-2$;
 
 	}
 
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ReportMessageDialog.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ReportMessageDialog.java
new file mode 100644
index 0000000..df353d1
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/ReportMessageDialog.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.actf.visualization.internal.ui.report;
+
+import org.eclipse.actf.util.FileUtils;
+import org.eclipse.actf.visualization.eval.guideline.GuidelineHolder;
+import org.eclipse.actf.visualization.eval.guideline.IGuidelineData;
+import org.eclipse.actf.visualization.eval.problem.IProblemConst;
+import org.eclipse.actf.visualization.eval.problem.IProblemItem;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class ReportMessageDialog {
+	public static void openReportMEssageDialog(Shell shell, IProblemItem curItem) {
+		if(shell==null||curItem==null)return;
+		
+		StringBuffer tmpSB = new StringBuffer();
+
+		IGuidelineData[] dataArray = GuidelineHolder.getInstance()
+				.getGuidelineData();
+		for (int i = 0; i < dataArray.length; i++) {
+			if (dataArray[i].isMatched()) {
+				tmpSB.append(dataArray[i].getGuidelineName() + ": "
+						+ curItem.getTableDataGuideline()[i]
+						+ FileUtils.LINE_SEP + FileUtils.LINE_SEP);
+			}
+		}
+		tmpSB.append(IProblemConst.TITLE_TECHNIQUS + ": "
+				+ curItem.getEvaluationItem().getTableDataTechniques()
+				+ FileUtils.LINE_SEP + FileUtils.LINE_SEP);
+		String lineS = curItem.getLineStrMulti();
+		if (lineS != null && lineS.length() > 0) {
+			tmpSB.append(IProblemConst.TITLE_LINE + ": " + lineS
+					+ FileUtils.LINE_SEP + FileUtils.LINE_SEP);
+		}
+		tmpSB.append(IProblemConst.TITLE_DESCRIPTION + ": "
+				+ FileUtils.LINE_SEP + curItem.getDescription());
+
+		switch (curItem.getSeverity()) {
+		case IProblemItem.SEV_ERROR:
+			MessageDialog.openError(shell, IProblemConst.ESSENTIAL,
+					tmpSB.toString());
+			break;
+		case IProblemItem.SEV_WARNING:
+			MessageDialog.openWarning(shell, IProblemConst.WARNING,
+					tmpSB.toString());
+			break;
+		case IProblemItem.SEV_USER:
+			MessageDialog.openInformation(shell, IProblemConst.USER_CHECK,
+					tmpSB.toString());
+			break;
+		case IProblemItem.SEV_INFO:
+			MessageDialog.openInformation(shell, IProblemConst.INFO,
+					tmpSB.toString());
+			break;
+		}
+	}
+}
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java
new file mode 100644
index 0000000..fdd9471
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.actf.visualization.internal.ui.report.action;
+
+import java.util.List;
+
+import org.eclipse.actf.visualization.eval.problem.IProblemItem;
+import org.eclipse.actf.visualization.eval.problem.IProblemItemImage;
+import org.eclipse.actf.visualization.eval.problem.ReportUtil;
+import org.eclipse.actf.visualization.internal.ui.report.Messages;
+import org.eclipse.actf.visualization.internal.ui.report.table.ResultTableViewer;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+public class CopyAction extends Action {
+
+	private TableViewer tableViewer;
+
+	public CopyAction(ResultTableViewer resultTableViewer) {
+		super(Messages.Copy);
+
+		tableViewer = resultTableViewer.getTableViewer();
+		tableViewer
+				.addSelectionChangedListener(new ISelectionChangedListener() {
+					public void selectionChanged(SelectionChangedEvent arg0) {
+						@SuppressWarnings("rawtypes")
+						List tmpList = ((IStructuredSelection) arg0
+								.getSelection()).toList();
+						if (tmpList == null || tmpList.size() == 0) {
+							setIProblemItem(null);
+						} else {
+							try {
+								setIProblemItem((IProblemItem) tmpList.get(0));
+							} catch (Exception e) {
+								setIProblemItem(null);
+							}
+						}
+					}
+				});
+
+		this.setEnabled(false);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.action.Action#run()
+	 */
+	public void run() {
+
+		@SuppressWarnings("unchecked")
+		List<IProblemItem> targetList = ((IStructuredSelection) tableViewer
+				.getSelection()).toList();
+
+		ReportUtil reportUtil = new ReportUtil();
+		StringBuffer tmpSB = new StringBuffer(reportUtil.getFirstLine()
+				+ ReportUtil.LINE_SEP);
+
+		for (IProblemItem tmpItem : targetList) {
+			tmpSB.append(reportUtil.getCSV(tmpItem) + ReportUtil.LINE_SEP);
+		}
+
+		Clipboard clipboard = new Clipboard(tableViewer.getControl()
+				.getDisplay());
+		clipboard.setContents(new Object[] { tmpSB.toString() },
+				new Transfer[] { TextTransfer.getInstance() });
+
+	}
+
+	public void setIProblemItem(IProblemItem target) {
+		if (target == null) {
+			this.setEnabled(false);
+		} else {
+			if (target instanceof IProblemItemImage) {
+				// TODO CSV export function for lv
+				this.setEnabled(false);
+			} else {
+				this.setEnabled(true);
+			}
+		}
+	}
+}
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
index 6f47c03..2329506 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
@@ -12,12 +12,10 @@
 
 import java.util.Arrays;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
 import java.util.TreeSet;
 
 import org.eclipse.actf.visualization.eval.IGuidelineItem;
-import org.eclipse.actf.visualization.eval.guideline.GuidelineHolder;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
 import org.eclipse.actf.visualization.internal.ui.report.Messages;
 import org.eclipse.actf.visualization.internal.ui.report.table.ResultTableViewer;
@@ -36,8 +34,6 @@
 
 	private Action _dummy;
 
-	private GuidelineHolder _guidelineHolder = GuidelineHolder.getInstance();
-
 	public GuidelineSubMenu(ResultTableViewer resultTableViewer) {
 		super(Messages.ProblemTable_View_Guideline_16);
 
@@ -68,20 +64,19 @@
 					}
 				});
 
-		for (Iterator<IProblemItem> i = target.iterator(); i.hasNext();) {
-			IProblemItem tmpItem = i.next();
+		for (IProblemItem tmpItem : target) {
 			tmpSet.addAll(Arrays.asList(tmpItem.getEvaluationItem()
 					.getGuidelines()));
 		}
 
 		this.removeAll();
 
-		for (Iterator<IGuidelineItem> i = tmpSet.iterator(); i.hasNext();) {
-			IGuidelineItem tmpItem = i.next();
+		for (IGuidelineItem tmpItem : tmpSet) {
 			if (tmpItem.getUrl() != null && tmpItem.getUrl().length() != 0) {
 				// Lowvision-> show all
-				if (_resultTableViewer.isShowAllGuidelineItems()
-						|| this._guidelineHolder.isMatchedInTopLevel(tmpItem)) {
+				if (// _resultTableViewer.isShowAllGuidelineItems()
+					// ||
+				tmpItem.isEnabled()) {
 					add(new ShowGuidelineAction(tmpItem));
 				}
 			}
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowDescriptionAction.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowDescriptionAction.java
index 83b69b0..2b9b20e 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowDescriptionAction.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowDescriptionAction.java
@@ -14,14 +14,14 @@
 import java.util.List;
 
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
-import org.eclipse.actf.visualization.eval.problem.IProblemConst;
 import org.eclipse.actf.visualization.internal.ui.report.Messages;
+import org.eclipse.actf.visualization.internal.ui.report.ReportMessageDialog;
 import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.widgets.Shell;
 
 
 public class ShowDescriptionAction extends Action {
@@ -38,9 +38,9 @@
         this.tableViewer = tableViewer;
         
         tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            @SuppressWarnings("unchecked")
-			public void selectionChanged(SelectionChangedEvent arg0) {
-                List tmpList = ((IStructuredSelection) arg0.getSelection()).toList();
+            public void selectionChanged(SelectionChangedEvent arg0) {
+				@SuppressWarnings("rawtypes")
+				List tmpList = ((IStructuredSelection) arg0.getSelection()).toList();
                 if(tmpList==null||tmpList.size()>1||tmpList.size()==0){
                     setIProblemItem(null);
                 }else{
@@ -61,7 +61,8 @@
      * @see org.eclipse.jface.action.Action#run()
      */
     public void run() {
-        MessageDialog.openInformation(tableViewer.getControl().getShell(),IProblemConst.TITLE_DESCRIPTION,curItem.getDescription());
+    	Shell shell = tableViewer.getControl().getShell();
+    	ReportMessageDialog.openReportMEssageDialog(shell, curItem);
     }
     
     public void setIProblemItem(IProblemItem target){
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowTechniquesAction.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowTechniquesAction.java
new file mode 100644
index 0000000..87a8922
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/ShowTechniquesAction.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.actf.visualization.internal.ui.report.action;
+
+import org.eclipse.actf.visualization.eval.ITechniquesItem;
+import org.eclipse.jface.action.Action;
+import org.eclipse.swt.program.Program;
+
+
+
+public class ShowTechniquesAction extends Action {
+
+    private ITechniquesItem targetItem;
+
+    /**
+     * 
+     */
+    public ShowTechniquesAction(ITechniquesItem targetItem) {
+        super(targetItem.getGuidelineName() + ": " + targetItem.getId()); //$NON-NLS-1$
+        this.targetItem = targetItem;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.action.Action#run()
+     */
+    public void run() {
+
+        // launch default web browser
+        Program program = Program.findProgram(".html"); //$NON-NLS-1$
+        if (null != program) {
+            program.execute(targetItem.getUrl());
+        }
+    }
+
+}
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/SrcHighlightAction.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/SrcHighlightAction.java
index 4198005..f5fa990 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/SrcHighlightAction.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/SrcHighlightAction.java
@@ -12,7 +12,6 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.actf.visualization.eval.problem.HighlightTargetSourceInfo;
@@ -24,48 +23,49 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 
-
-
 public class SrcHighlightAction extends Action {
 
-    private ResultTableViewer _resultTableViewer;
-    
-    private TableViewer _tableView;
+	private ResultTableViewer _resultTableViewer;
 
-    private SrcViewerForPT _srcViewer;
+	private TableViewer _tableView;
 
-    public SrcHighlightAction(ResultTableViewer resultTableViewer) {
-        super(Messages.ProblemTable_5);
-        this._resultTableViewer = resultTableViewer;
-        this._tableView = resultTableViewer.getTableViewer();
-        this._srcViewer = SrcViewerForPT.getInstance();
-    }
+	private SrcViewerForPT _srcViewer;
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.Action#run()
-     */
-    @SuppressWarnings("unchecked")
+	public SrcHighlightAction(ResultTableViewer resultTableViewer) {
+		super(Messages.ProblemTable_5);
+		this._resultTableViewer = resultTableViewer;
+		this._tableView = resultTableViewer.getTableViewer();
+		this._srcViewer = SrcViewerForPT.getInstance();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.action.Action#run()
+	 */
 	public void run() {
 
-        if (_srcViewer != null) {
+		if (_srcViewer != null) {
 
-            _srcViewer.openSrcViewer();
+			_srcViewer.openSrcViewer();
 
-            List targetList = ((IStructuredSelection) _tableView.getSelection()).toList();
-            ArrayList<HighlightTargetSourceInfo> srcLineArray = new ArrayList<HighlightTargetSourceInfo>();
+			@SuppressWarnings("unchecked")
+			List<IProblemItem> targetList = ((IStructuredSelection) _tableView
+					.getSelection()).toList();
+			ArrayList<HighlightTargetSourceInfo> srcLineArray = new ArrayList<HighlightTargetSourceInfo>();
 
-            for (Iterator i = targetList.iterator(); i.hasNext();) {
-                IProblemItem tmpItem = (IProblemItem) i.next();
-                srcLineArray.addAll(Arrays.asList(tmpItem.getHighlightTargetSoruceInfo()));
-            }
+			for (IProblemItem tmpItem : targetList) {
+				srcLineArray.addAll(Arrays.asList(tmpItem
+						.getHighlightTargetSoruceInfo()));
+			}
 
-            HighlightTargetSourceInfo[] target = new HighlightTargetSourceInfo[srcLineArray.size()];
-            srcLineArray.toArray(target);
-            _srcViewer.highlightSrcViewer(target, _resultTableViewer.getCurrentSoruceFile());
+			HighlightTargetSourceInfo[] target = new HighlightTargetSourceInfo[srcLineArray
+					.size()];
+			srcLineArray.toArray(target);
+			_srcViewer.highlightSrcViewer(target,
+					_resultTableViewer.getCurrentSoruceFile());
 
-        }
-    }
+		}
+	}
 
 }
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java
new file mode 100644
index 0000000..6994242
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.actf.visualization.internal.ui.report.action;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.TreeSet;
+
+import org.eclipse.actf.visualization.eval.IEvaluationItem;
+import org.eclipse.actf.visualization.eval.IGuidelineItem;
+import org.eclipse.actf.visualization.eval.ITechniquesItem;
+import org.eclipse.actf.visualization.eval.problem.IProblemItem;
+import org.eclipse.actf.visualization.internal.ui.report.Messages;
+import org.eclipse.actf.visualization.internal.ui.report.table.ResultTableViewer;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+
+public class TechniquesSubMenu extends MenuManager {
+
+	private ResultTableViewer _resultTableViewer;
+
+	private TableViewer _tableViewer;
+
+	private Action _dummy;
+
+	public TechniquesSubMenu(ResultTableViewer resultTableViewer) {
+		super(Messages.ViewTechniques);
+
+		this._resultTableViewer = resultTableViewer;
+		this._tableViewer = resultTableViewer.getTableViewer();
+
+		this._tableViewer
+				.addSelectionChangedListener(new ISelectionChangedListener() {
+					@SuppressWarnings("unchecked")
+					public void selectionChanged(SelectionChangedEvent arg0) {
+						List<IProblemItem> tmpList = ((IStructuredSelection) arg0
+								.getSelection()).toList();
+						setTechniques(tmpList);
+					}
+				});
+
+		this._dummy = new Action(Messages.NoTechniques) {
+		};
+		this._dummy.setEnabled(false);
+		add(this._dummy);
+	}
+
+	public void setTechniques(List<IProblemItem> target) {
+		this.removeAll();
+
+		TreeSet<IEvaluationItem> tmpSet = new TreeSet<IEvaluationItem>(
+				new Comparator<IEvaluationItem>() {
+					public int compare(IEvaluationItem o1, IEvaluationItem o2) {
+						return o1.getId().compareTo(o2.getId());
+					}
+				});
+
+		for (Iterator<IProblemItem> i = target.iterator(); i.hasNext();) {
+			IProblemItem tmpItem = i.next();
+			tmpSet.add(tmpItem.getEvaluationItem());
+		}
+
+		TreeSet<ITechniquesItem> techSet = new TreeSet<ITechniquesItem>(
+				new Comparator<ITechniquesItem>() {
+					public int compare(ITechniquesItem o1, ITechniquesItem o2) {
+						int flag = o1.getGuidelineName().compareTo(
+								o2.getGuidelineName());
+						if (flag == 0) {
+							flag = o1.getId().compareTo(o2.getId());
+						}
+						return flag;
+					}
+				});
+
+		for (Iterator<IEvaluationItem> i = tmpSet.iterator(); i.hasNext();) {
+			IEvaluationItem eval = i.next();
+			IGuidelineItem[] guidelines = eval.getGuidelines();
+			ITechniquesItem[][] techs = eval.getTechniques();
+			for (int j = 0; j < guidelines.length; j++) {
+				// Lowvision-> show all
+				if (// _resultTableViewer.isShowAllGuidelineItems()
+					// ||
+				guidelines[j].isEnabled()) {
+					techSet.addAll(Arrays.asList(techs[j]));
+				}
+			}
+		}
+
+		for (Iterator<ITechniquesItem> i = techSet.iterator(); i.hasNext();) {
+			add(new ShowTechniquesAction(i.next()));
+		}
+
+		if (this.getItems().length == 0) {
+			this.add(this._dummy);
+		}
+	}
+
+}
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/srcviewer/SrcViewerForPT.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/srcviewer/SrcViewerForPT.java
index c12f81e..00eaa48 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/srcviewer/SrcViewerForPT.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/srcviewer/SrcViewerForPT.java
@@ -12,7 +12,6 @@
 
 import java.io.File;
 
-import org.eclipse.actf.visualization.eval.EvaluationUtil;
 import org.eclipse.actf.visualization.eval.problem.HighlightTargetSourceInfo;
 import org.eclipse.actf.visualization.internal.ui.report.Messages;
 import org.eclipse.actf.visualization.internal.ui.report.ReportPlugin;
@@ -22,137 +21,142 @@
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 
-
-
-
 public class SrcViewerForPT {
 
-    //TODO viewpart, SourceViewer
-    
-    private static SrcViewerForPT INSTANCE = null;
+	// TODO viewpart, SourceViewer
 
-    private static SrcViewer _srcViewer;
+	private static SrcViewerForPT INSTANCE = null;
 
-    private static Shell _srcViewerShell;
+	private static SrcViewer _srcViewer;
 
-    private Shell _shell = null;
+	private static Shell _srcViewerShell;
 
-    private boolean srcChanged;
-    
-    private File curTarget;
+	private Shell _shell = null;
 
-    /**
-     * @param pt
-     * @param display
-     */
-    private SrcViewerForPT(Shell shell) {
-        super();
-        this._shell = shell;
-        initSrcViewer();
-    }
+	private boolean srcChanged;
 
-    public static SrcViewerForPT initSrcViewerForPT(Shell parent) {
-        if (INSTANCE != null) {
-            // TODO close
-            // INSTANCE.PARENT.removeShellListener();
-        }
+	private File curTarget;
 
-        INSTANCE = new SrcViewerForPT(parent);
-        return (INSTANCE);
-    }
+	/**
+	 * @param pt
+	 * @param display
+	 */
+	private SrcViewerForPT(Shell shell) {
+		super();
+		this._shell = shell;
+		initSrcViewer();
+	}
 
-    public static SrcViewerForPT getInstance() {
-        return (INSTANCE);
-    }
+	public static SrcViewerForPT initSrcViewerForPT(Shell parent) {
+		if (INSTANCE != null) {
+			// TODO close
+			// INSTANCE.PARENT.removeShellListener();
+		}
 
-    private void initSrcViewer() {
-        srcChanged = true;
+		INSTANCE = new SrcViewerForPT(parent);
+		return (INSTANCE);
+	}
 
-        if (_shell != null) {
-            _shell.addShellListener(new ShellAdapter() {
-                public void shellClosed(ShellEvent arg0) {
-                    if (_srcViewerShell != null && !_srcViewerShell.isDisposed()) {
-                        _srcViewerShell.dispose();
-                    }
-                }
-            });
-        }
-    }
+	public static SrcViewerForPT getInstance() {
+		return (INSTANCE);
+	}
 
-    public void openSrcViewer() {
-        if (null == _srcViewerShell || _srcViewerShell.isDisposed()) {
-            Display display = _shell.getDisplay();
-            if (null == display) {
-                display = Display.getDefault();
-            }
-            _srcViewerShell = new Shell(display);
-            _srcViewerShell.setLayout(new FillLayout());
-            _srcViewerShell.setImage(ReportPlugin.imageDescriptorFromPlugin(ReportPlugin.PLUGIN_ID, "icons/excla_squ.png").createImage()); //$NON-NLS-1$
-            _srcViewerShell.setText(Messages.SrcViewerForPT_0);
-            _srcViewer = new SrcViewer(_srcViewerShell);
-            _srcViewerShell.setSize(600, 750);
-            _srcViewerShell.setFocus();
-            _srcViewerShell.open();
+	private void initSrcViewer() {
+		srcChanged = true;
 
-            _srcViewerShell.addShellListener(new ShellAdapter() {
-                public void shellClosed(ShellEvent arg0) {
-                    _srcViewer.closeSearchDlgShell();
-                }
-            });
+		if (_shell != null) {
+			_shell.addShellListener(new ShellAdapter() {
+				public void shellClosed(ShellEvent arg0) {
+					if (_srcViewerShell != null
+							&& !_srcViewerShell.isDisposed()) {
+						_srcViewerShell.dispose();
+					}
+				}
+			});
+		}
+	}
 
-            srcChanged = true;
+	public void openSrcViewer() {
+		if (null == _srcViewerShell || _srcViewerShell.isDisposed()) {
+			Display display = _shell.getDisplay();
+			if (null == display) {
+				display = Display.getDefault();
+			}
+			_srcViewerShell = new Shell(display);
+			_srcViewerShell.setLayout(new FillLayout());
+			_srcViewerShell.setImage(ReportPlugin
+					.imageDescriptorFromPlugin(ReportPlugin.PLUGIN_ID,
+							"icons/excla_squ.png").createImage()); //$NON-NLS-1$
+			_srcViewerShell.setText(Messages.SrcViewerForPT_0);
+			_srcViewer = new SrcViewer(_srcViewerShell);
+			_srcViewerShell.setSize(600, 750);
+			_srcViewerShell.setFocus();
+			_srcViewerShell.open();
 
-        } else if (!_srcViewerShell.isDisposed()) {
-            if (_srcViewerShell.getMinimized()) {
-                _srcViewerShell.setMinimized(false);
-            }
-            _srcViewerShell.forceActive();
-        }
-    }
+			_srcViewerShell.addShellListener(new ShellAdapter() {
+				public void shellClosed(ShellEvent arg0) {
+					_srcViewer.closeSearchDlgShell();
+				}
+			});
 
-    public void highlightSrcViewer(HighlightTargetSourceInfo[] sourceInfos, File target) {
-        if (_srcViewerShell != null && !_srcViewerShell.isDisposed() && EvaluationUtil.isOriginalDOM()) {
+			srcChanged = true;
 
-            if(curTarget!=target || srcChanged){
-                srcChanged =true;
-                updateSrcViewer(target);
-            }
-            
-            //updateSrcViewer(currentLayout);
-            _srcViewer.clearHighlight();
+		} else if (!_srcViewerShell.isDisposed()) {
+			if (_srcViewerShell.getMinimized()) {
+				_srcViewerShell.setMinimized(false);
+			}
+			_srcViewerShell.forceActive();
+		}
+	}
 
-            for (int i = 0; i < sourceInfos.length; i++) {
-                HighlightTargetSourceInfo curInfo = sourceInfos[i];
+	public void highlightSrcViewer(HighlightTargetSourceInfo[] sourceInfos,
+			File target) {
+		if (_srcViewerShell != null && !_srcViewerShell.isDisposed()) {
 
-                if (curInfo.getStartColumn() < 0 || curInfo.getEndColumn() < 0) {
-                    _srcViewer.highlightLines(curInfo.getStartLine(),curInfo.getEndLine());
-                } else {
-                    _srcViewer.highlight(curInfo.getStartLine(),curInfo.getStartColumn(),curInfo.getEndLine(),curInfo.getEndColumn());
-                }
+			if (curTarget != target || srcChanged) {
+				srcChanged = true;
+				updateSrcViewer(target);
+			}
 
-            }
-        }
+			// updateSrcViewer(currentLayout);
+			_srcViewer.clearHighlight();
 
-    }
+			for (int i = 0; i < sourceInfos.length; i++) {
+				HighlightTargetSourceInfo curInfo = sourceInfos[i];
 
-    public void updateSrcViewer(File target) {
-        if (_srcViewerShell != null && !_srcViewerShell.isDisposed() && srcChanged) {
-            try {
-                _srcViewer.openFile(target);
-                curTarget = target;
-            } catch (Exception e) {
-                // e.printStackTrace();
-                _srcViewer.setText(""); //$NON-NLS-1$
-            }
-            srcChanged = false;
-        }
-    }
+				if (curInfo.getStartColumn() < 0 || curInfo.getEndColumn() < 0) {
+					_srcViewer.highlightLines(curInfo.getStartLine(),
+							curInfo.getEndLine());
+				} else {
+					_srcViewer.highlight(curInfo.getStartLine(),
+							curInfo.getStartColumn(), curInfo.getEndLine(),
+							curInfo.getEndColumn());
+				}
 
-    /**
-     * @param srcChanged
-     *            The srcChanged to set.
-     */
-    public void setSrcChanged(boolean srcChanged) {
-        this.srcChanged = srcChanged;
-    }
+			}
+		}
+
+	}
+
+	public void updateSrcViewer(File target) {
+		if (_srcViewerShell != null && !_srcViewerShell.isDisposed()
+				&& srcChanged) {
+			try {
+				_srcViewer.openFile(target);
+				curTarget = target;
+			} catch (Exception e) {
+				// e.printStackTrace();
+				_srcViewer.setText(""); //$NON-NLS-1$
+			}
+			srcChanged = false;
+		}
+	}
+
+	/**
+	 * @param srcChanged
+	 *            The srcChanged to set.
+	 */
+	public void setSrcChanged(boolean srcChanged) {
+		this.srcChanged = srcChanged;
+	}
 }
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/table/ResultTableViewer.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/table/ResultTableViewer.java
index e31b727..3f8e594 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/table/ResultTableViewer.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/table/ResultTableViewer.java
@@ -25,16 +25,21 @@
 import org.eclipse.actf.visualization.eval.problem.HighlightTargetSourceInfo;
 import org.eclipse.actf.visualization.eval.problem.IProblemConst;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
+import org.eclipse.actf.visualization.internal.ui.report.ReportMessageDialog;
 import org.eclipse.actf.visualization.internal.ui.report.action.ClearSelectionAction;
+import org.eclipse.actf.visualization.internal.ui.report.action.CopyAction;
 import org.eclipse.actf.visualization.internal.ui.report.action.GuidelineSubMenu;
 import org.eclipse.actf.visualization.internal.ui.report.action.ShowDescriptionAction;
 import org.eclipse.actf.visualization.internal.ui.report.action.SrcHighlightAction;
+import org.eclipse.actf.visualization.internal.ui.report.action.TechniquesSubMenu;
 import org.eclipse.actf.visualization.internal.ui.report.srcviewer.SrcViewerForPT;
 import org.eclipse.actf.visualization.ui.IVisualizationView;
 import org.eclipse.actf.visualization.ui.report.table.IResultTableSorter;
 import org.eclipse.actf.visualization.ui.report.table.ResultTableSorter;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -45,6 +50,7 @@
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 
@@ -87,9 +93,13 @@
 	private SrcHighlightAction srcHighlightAction;
 
 	private boolean isShowAllGuidelineItems = false;
+	
+	private Shell shell;
 
 	public ResultTableViewer(Composite parent) {
 
+		shell = parent.getShell();
+		
 		tableViewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION
 				| SWT.MULTI);
 		table = tableViewer.getTable();
@@ -109,25 +119,27 @@
 		MenuManager popupMenu = new MenuManager();
 		popupMenu.add(new ClearSelectionAction(tableViewer));
 		popupMenu.add(new GuidelineSubMenu(this));
-		popupMenu.add(new ShowDescriptionAction(tableViewer));
+		popupMenu.add(new TechniquesSubMenu(this));
 		srcHighlightAction = new SrcHighlightAction(this);
 		srcHighlightAction.setEnabled(false);
 		popupMenu.add(srcHighlightAction);
+		popupMenu.add(new CopyAction(this));
+		popupMenu.add(new ShowDescriptionAction(tableViewer));
 		table.setMenu(popupMenu.createContextMenu(table));
 
 		guidelineHolder.addGuidelineSelectionChangedListener(this);
 
 		tableViewer
 				.addSelectionChangedListener(new ISelectionChangedListener() {
-					@SuppressWarnings("unchecked")
 					public void selectionChanged(SelectionChangedEvent event) {
 						ISelection selection = event.getSelection();
 						if (srcViewerForPT != null
 								&& selection instanceof IStructuredSelection) {
 							ArrayList<HighlightTargetSourceInfo> srcLineArray = new ArrayList<HighlightTargetSourceInfo>();
-							for (Iterator i = ((IStructuredSelection) selection)
+							for (@SuppressWarnings("unchecked")
+							Iterator<IProblemItem> i = ((IStructuredSelection) selection)
 									.iterator(); i.hasNext();) {
-								IProblemItem tmpItem = (IProblemItem) i.next();
+								IProblemItem tmpItem = i.next();
 								srcLineArray.addAll(Arrays.asList(tmpItem
 										.getHighlightTargetSoruceInfo()));
 							}
@@ -140,7 +152,19 @@
 						}
 					}
 				});
-
+		tableViewer.addDoubleClickListener(new IDoubleClickListener() {
+			public void doubleClick(DoubleClickEvent event) {
+				ISelection selection = event.getSelection();
+				if (selection instanceof IStructuredSelection) {
+					for (@SuppressWarnings("unchecked")
+					Iterator<IProblemItem> i = ((IStructuredSelection) selection)
+							.iterator(); i.hasNext();) {
+						IProblemItem tmpItem = i.next();
+						ReportMessageDialog.openReportMEssageDialog(shell, tmpItem);
+					}
+				}
+			}
+		});
 	}
 
 	public TableViewer getTableViewer() {
@@ -169,9 +193,9 @@
 	}
 
 	private void initColumns() {
-		int columnSize = 3 + guidelineHolder.getGuidelineData().length
+		int columnSize = 4 + guidelineHolder.getGuidelineData().length
 				+ guidelineHolder.getMetricsNames().length;
-		int lvColumn = 3 + 6 + guidelineHolder.getGuidelineData().length;
+		int lvColumn = 4 + 6 + guidelineHolder.getGuidelineData().length;
 
 		if (lvColumn > columnSize) {
 			columnSize = lvColumn;
@@ -199,7 +223,7 @@
 		columns[curPos].setWidth(25);
 		curPos++;
 
-		String[] tmpSarray = guidelineHolder.getMetricsNames();
+		String[] tmpSarray = guidelineHolder.getLocalizedMetricsNames();
 		boolean[] enabledMetrics = guidelineHolder.getMatchedMetrics();
 		for (int i = 0; i < tmpSarray.length; i++) {
 			columns[curPos].setText(tmpSarray[i]);
@@ -221,7 +245,7 @@
 			 * "icons/IconPink.gif").createImage()); break; default: }
 			 */
 			if (enabledMetrics[i]) {
-				columns[curPos].setWidth(70);
+				columns[curPos].setWidth(55);
 			} else {
 				columns[curPos].setWidth(0);
 				columns[curPos].setResizable(false);
@@ -241,6 +265,10 @@
 			curPos++;
 		}
 
+		columns[curPos].setText(IProblemConst.TITLE_TECHNIQUS);
+		columns[curPos].setWidth(65);
+		curPos++;
+
 		columns[curPos].setText(IProblemConst.TITLE_LINE);
 		columns[curPos].setWidth(60);
 		curPos++;
@@ -273,18 +301,23 @@
 		IGuidelineData[] dataArray = guidelineHolder.getGuidelineData();
 		for (int i = 0; i < dataArray.length; i++) {
 			columns[curPos].setText(dataArray[i].getGuidelineName());
-			columns[curPos].setWidth(70);
+			if (dataArray[i].isMatched()) {
+				columns[curPos].setWidth(70);
+			} else {
+				columns[curPos].setWidth(0);
+				columns[curPos].setResizable(false);
+			}
 			curPos++;
 		}
 
 		columns[curPos].setText(IProblemConst.TITLE_SEVERITY);
-		columns[curPos].setWidth(60);
+		columns[curPos].setWidth(55);
 		curPos++;
 		columns[curPos].setText(IProblemConst.TITLE_FORECOLOR);
-		columns[curPos].setWidth(100);
+		columns[curPos].setWidth(70);
 		curPos++;
 		columns[curPos].setText(IProblemConst.TITLE_BACKCOLOR);
-		columns[curPos].setWidth(100);
+		columns[curPos].setWidth(70);
 		curPos++;
 		columns[curPos].setText(IProblemConst.TITLE_X);
 		columns[curPos].setWidth(50);
@@ -293,7 +326,11 @@
 		columns[curPos].setWidth(50);
 		curPos++;
 		columns[curPos].setText(IProblemConst.TITLE_AREA);
-		columns[curPos].setWidth(70);
+		columns[curPos].setWidth(50);
+		curPos++;
+
+		columns[curPos].setText(IProblemConst.TITLE_TECHNIQUS);
+		columns[curPos].setWidth(60);
 		curPos++;
 
 		columns[curPos].setText(IProblemConst.TITLE_DESCRIPTION);
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProvider.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProvider.java
index 5655123..5f42cc8 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProvider.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProvider.java
@@ -11,6 +11,7 @@
 package org.eclipse.actf.visualization.ui.report.table;
 
 import org.eclipse.actf.visualization.eval.EvaluationUtil;
+import org.eclipse.actf.visualization.eval.IEvaluationItem;
 import org.eclipse.actf.visualization.eval.guideline.GuidelineHolder;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
 import org.eclipse.actf.visualization.internal.ui.report.ReportPlugin;
@@ -32,19 +33,23 @@
 	private int guidelineFinPos = metricsFinPos
 			+ guidelineHolder.getGuidelineData().length;
 
+	private static Image HIGHLIGHT_IMAGE = ReportPlugin
+			.imageDescriptorFromPlugin(EvaluationUtil.PLUGIN_ID,
+					"icons/star.gif") //$NON-NLS-1$
+			.createImage();
+
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
-	 *      int)
+	 * @see
+	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
+	 * .Object, int)
 	 */
 	public Image getColumnImage(Object arg0, int arg1) {
 		IProblemItem tmpItem = (IProblemItem) arg0;
 		if (arg1 == 0) {
 			if (tmpItem.isCanHighlight()) {
-				return (ReportPlugin.imageDescriptorFromPlugin(
-						EvaluationUtil.PLUGIN_ID, "icons/star.gif") //$NON-NLS-1$
-						.createImage());
+				return (HIGHLIGHT_IMAGE);
 			}
 		} else if (arg1 < metricsFinPos) {
 			return (tmpItem.getEvaluationItem().getMetricsIcons()[arg1 - 1]);
@@ -55,28 +60,32 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
-	 *      int)
+	 * @see
+	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
+	 * .Object, int)
 	 */
 	public String getColumnText(Object arg0, int arg1) {
 		IProblemItem tmpItem = (IProblemItem) arg0;
+		IEvaluationItem ei = tmpItem.getEvaluationItem();
 
 		if (arg1 == 0) {
 
 		} else if (arg1 < metricsFinPos) {
-			return (tmpItem.getEvaluationItem().getTableDataMetrics()[arg1 - 1]);
+			return (ei.getTableDataMetrics()[arg1 - 1]);
 		} else if (arg1 < guidelineFinPos) {
-			return (tmpItem.getEvaluationItem().getTableDataGuideline()[arg1
-					- metricsFinPos]);
+			return (ei.getTableDataGuideline()[arg1 - metricsFinPos]);
 		} else {
-			if (arg1 - guidelineFinPos == 0) {
+			switch (arg1 - guidelineFinPos) {
+			case 0:
+				return ei.getTableDataTechniques(); // techniques
+			case 1:
 				return (tmpItem.getLineStrMulti());
-			} else {
+			case 2:
 				return (tmpItem.getDescription());
+			default:
 			}
 		}
 
 		return ""; //$NON-NLS-1$
 	}
-
 }
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProviderLV.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProviderLV.java
index 76c7e93..145902e 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProviderLV.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/ui/report/table/ResultTableLabelProviderLV.java
@@ -39,8 +39,9 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
-	 *      int)
+	 * @see
+	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
+	 * .Object, int)
 	 */
 	public Image getColumnImage(Object arg0, int arg1) {
 		IProblemItemImage tmpItem = (IProblemItemImage) arg0;
@@ -53,20 +54,28 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
-	 *      int)
+	 * @see
+	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
+	 * .Object, int)
 	 */
 	public String getColumnText(Object arg0, int arg1) {
 		IProblemItemImage tmpItem = (IProblemItemImage) arg0;
 
 		if (arg1 == 0) {
-			return(tmpItem.getIconTooltip());			
+			return (tmpItem.getIconTooltip());
 		} else if (arg1 < guidelineFinPos) {
-			return (tmpItem.getEvaluationItem().getTableDataGuideline()[arg1 - 1]);
+			try {
+				return (tmpItem.getEvaluationItem().getTableDataGuideline()[arg1 - 1]);
+			} catch (Exception e) {
+				return ("");
+			}
 		} else {
 			switch (arg1 - guidelineFinPos) {
 			case 0:
-				return (Integer.toString(tmpItem.getSeverityLV()));
+				if(tmpItem.getSeverityLV()>0){
+					return (Integer.toString(tmpItem.getSeverityLV()));
+				}
+				return("-");
 			case 1:
 				return (tmpItem.getForeground());
 			case 2:
@@ -78,6 +87,8 @@
 			case 5:
 				return (Integer.toString(tmpItem.getArea()));
 			case 6:
+				return (tmpItem.getEvaluationItem().getTableDataTechniques());// techniques
+			case 7:
 				return (tmpItem.getDescription());
 			default:
 				return (""); //$NON-NLS-1$