diff -r f1112f777ce9 -r 96906a986c3b testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/wizard/TestCasePreviewPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/wizard/TestCasePreviewPage.java Tue Mar 30 14:39:29 2010 +0800 @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2009 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.testfw.codegen.ui.wizard; + +import java.util.Map; + +import org.eclipse.jface.dialogs.IPageChangedListener; +import org.eclipse.jface.dialogs.IPageChangingListener; +import org.eclipse.jface.dialogs.PageChangedEvent; +import org.eclipse.jface.dialogs.PageChangingEvent; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ITreeSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.part.PageBook; + +import com.nokia.testfw.codegen.ChangeFileContent; +import com.nokia.testfw.codegen.ui.util.PathNode; +import com.nokia.testfw.codegen.ui.util.PathNodeConverter; +import com.nokia.testfw.codegen.ui.util.PathNodeTreeContentLabelProvoder; +import com.nokia.testfw.codegen.ui.util.PathNodeTreeViewerComparator; +import com.nokia.testfw.codegen.ui.wizard.preview.ChangeElement; +import com.nokia.testfw.codegen.ui.wizard.preview.ComparePreviewer; + +/** + * Test Case Wizard page for reviewing changes + * + */ +public class TestCasePreviewPage extends WizardPage implements + IPageChangedListener, IPageChangingListener { + + private PageBook previewContainer; + private ComparePreviewer comparePreview; + private TreeViewer iTreeViewer; + + private Map iResultMap; + + Composite container; + + /** + * @param pageName + */ + public TestCasePreviewPage() { + super("SkeletonPreviewPage"); + setTitle("Preview changes"); + setDescription("Click finish to generate test case(s)"); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets + * .Composite) + */ + public void createControl(Composite parent) { + container = new Composite(parent, SWT.NONE); + container.setLayout(new GridLayout(1, true)); + + // table to display all files that are going to be changed + Label label1 = new Label(container, SWT.SINGLE); + label1.setText("Files to be modified"); + + iTreeViewer = new TreeViewer(container, SWT.BORDER | SWT.H_SCROLL + | SWT.V_SCROLL); + iTreeViewer.getTree().setLayoutData( + new GridData(SWT.FILL, SWT.TOP, true, false)); + PathNodeTreeContentLabelProvoder provider = new PathNodeTreeContentLabelProvoder(); + iTreeViewer.setLabelProvider(provider); + iTreeViewer.setContentProvider(provider); + iTreeViewer.setComparator(new PathNodeTreeViewerComparator()); + iTreeViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + ITreeSelection sel = (ITreeSelection) event + .getSelection(); + if (sel != null) { + PathNode node = (PathNode) sel.getFirstElement(); + if (node != null) { + setSelectElement((ChangeElement) node.getData()); + } + } + } + }); + + // UI elements to show the CompareViewerSwitchingPane + SashForm sashForm = new SashForm(container, SWT.VERTICAL); + sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + sashForm.setBackground(new Color(getShell().getDisplay(), 0, 0, 0)); + previewContainer = new PageBook(sashForm, SWT.NONE); + comparePreview = new ComparePreviewer(previewContainer, false, false); + + setSelectElement(null); + setControl(container); + + /** + * We want to be informed about pageChanged event in order to generate + * content. + */ + ((WizardDialog) getContainer()).addPageChangedListener(this); + ((WizardDialog) getContainer()).addPageChangingListener(this); + } + + private void update() { + if (iResultMap != null) { + PathNode root = new PathNode(""); + PathNode targetProject = new PathNode( + ((AbstractTemplateWizard) getWizard()).getProjectName()); + root.addChild(targetProject); + for (String path : iResultMap.keySet()) { + ChangeFileContent lChangeContent = iResultMap.get(path); + if (lChangeContent.getNewContent().equals( + lChangeContent.getOldContent())) { + continue; + } + PathNode node = PathNodeConverter.pathToNode(targetProject, + path); + node.setData(new ChangeElement(lChangeContent)); + } + iTreeViewer.setInput(root); + iTreeViewer.expandAll(); + } + } + + /** + * Sets input to compare preview (called from wizard when page is set to + * visible) + * + * @param changeElement + * to set to the preview + **/ + private void setSelectElement(ChangeElement changeElement) { + comparePreview.setInput(changeElement); + previewContainer.showPage(comparePreview.getControl()); + } + + public void pageChanged(PageChangedEvent event) { + if (event.getSelectedPage() instanceof TestCasePreviewPage) { + iResultMap = ((IPreviewResult) getWizard()).getPreviewResult(); + ((IPreviewResult) getWizard()).setPreviewResult(iResultMap); + update(); + } + } + + public void handlePageChanging(PageChangingEvent event) { + if (event.getCurrentPage() instanceof TestCasePreviewPage) { + ((IPreviewResult) getWizard()).setPreviewResult(null); + } + } +}