crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/ui/editors/XmlPage.java
author Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
Tue, 24 Aug 2010 14:01:48 +0300
changeset 16 72f198be1c1d
parent 0 5ad7ad99af01
permissions -rw-r--r--
Crash Analyser Carbide Extension 1.4.0

/*
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

package com.nokia.s60tools.crashanalyser.ui.editors;

import java.io.File;

import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.*;
import org.eclipse.ui.PlatformUI;

import com.nokia.s60tools.crashanalyser.corecomponents.plugin.CrashAnalyserCoreComponentsPlugin;
import com.nokia.s60tools.crashanalyser.files.*;
import com.nokia.s60tools.crashanalyser.model.FileOperations;
import com.nokia.s60tools.crashanalyser.plugin.CrashAnalyserPlugin;
import com.nokia.s60tools.crashanalyser.resources.HelpContextIDs;

/**
 * XML page in Crash Visualiser editor. 
 *
 */
public class XmlPage {

	private static final String CRASHXML_DTD = "MobileCrashXmlSchema.dtd";
	private Browser browserXml;
	private SummaryFile crashFile = null;

	/**
	 * Creates the page
	 * @param parent composite
	 * @param file summary file
	 * @return composite
	 */
	public Composite createPage(Composite parent, SummaryFile file) {
		crashFile = file;
		return doCreatePage(parent);
	}
	
	/**
	 * Creates the page
	 * @param parent composite
	 * @return composite
	 */
	public Composite createPage(Composite parent) {
		return doCreatePage(parent);
	}
	
	/**
	 * Creates all UI elements to the page
	 * @param parent
	 * @return composite
	 */
	Composite doCreatePage(Composite parent) {
		copyDtd();
		GridLayout layout = new GridLayout();
		layout.numColumns = 1;
		parent.setLayout(layout);
		parent.setLayoutData(new GridData(GridData.FILL_BOTH));

		browserXml = new Browser(parent, SWT.NONE);
		if (crashFile != null)
			browserXml.setUrl(crashFile.getFilePath());
		
		browserXml.setLayoutData(new GridData(GridData.FILL_BOTH));
		
		PlatformUI.getWorkbench().getHelpSystem().setHelp(browserXml,
				HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER);	
		
		return parent;
	}
	
	/**
	 * Loads data from given file into UI elements.
	 * @param file crash file
	 */
	public void setFile(CrashFile file) {
		if (file != null) {
			crashFile = file;
			browserXml.setUrl(crashFile.getFilePath());
		}
	}
	
	/**
	 * Copy the DTD file for crashxml. 
	 * Original location is com.nokia.s60tools.crashanalyser.corecomponents\data
	 * and it will be copied to Carbide workspace
	 * .metadata\.plugins\com.nokia.s60tools.crashanalyser\
	 * 
	 */
	private static final void copyDtd() {
		String fileName = FileOperations.addSlashToEnd(CrashAnalyserCoreComponentsPlugin.getDataPath()) +
			CRASHXML_DTD;
		String destinationPath = Platform.getStateLocation(CrashAnalyserPlugin
				.getDefault().getBundle()).toOSString();
 
		FileOperations.copyFile(new File(fileName), destinationPath, false);
	}
	
}