diff -r f65f740e69f9 -r 8e12a575a9b5 sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/wizards/CommentsPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/wizards/CommentsPage.java Wed Apr 21 20:01:08 2010 +0300 @@ -0,0 +1,289 @@ +/* +* 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.s60tools.swmtanalyser.wizards; + +import java.io.File; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.PlatformUI; + +import com.nokia.s60tools.swmtanalyser.resources.HelpContextIds; +import com.nokia.s60tools.ui.wizards.S60ToolsWizardPage; +/** + * First page in the Report Generation wizard. i.e. Comments page. + * + */ +public class CommentsPage extends S60ToolsWizardPage implements SelectionListener, ModifyListener { + + //Radio button for creating type1 report + private Button type1_radio; + //Radio button for creating overview type report + private Button type2_radio; + //Save as button to select the pdf file path/name + private Button browse_btn; + //Text box to show the selected path + private Text path_txt; + //Text box to enetr comments + private Text commentsText; + //Label to explain about the selected radio option + private Label info; + + //Temporary variables used + private Tree all_tree_items; + private boolean checked = false; + + /** + * Create a comments page + * @param pageName + * @param all_tree_items + */ + protected CommentsPage(String pageName, Tree all_tree_items) { + super(pageName); + setTitle("Report Options"); + setDescription("Select your options"); + this.all_tree_items = all_tree_items; + } + + /* (non-Javadoc) + * @see com.nokia.s60tools.ui.wizards.S60ToolsWizardPage#recalculateButtonStates() + */ + public void recalculateButtonStates() { + + } + + /* (non-Javadoc) + * @see com.nokia.s60tools.ui.wizards.S60ToolsWizardPage#setInitialFocus() + */ + public void setInitialFocus() { + + } + + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetDefaultSelected(SelectionEvent e) { + + } + + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetSelected(SelectionEvent e) { + if(e.widget == browse_btn) + { + FileDialog dlg = new FileDialog(this.getShell(), SWT.SAVE); + dlg.setFilterExtensions(new String[]{"*.pdf"}); + String path = dlg.open(); + if(path != null) + path_txt.setText(path); + } + else if(e.widget == type1_radio) + { + //If option 1 is selected, explain about that option. + info.setText("This case the report contains only the information about the selected issues.\nAnd graph will be shown for the selected issues."); + } + else if(e.widget == type2_radio) + { + //If option 2 is selected, explain about that option. + info.setText("This case the report contains the overview information of all the type of issues."); + } + + checkForCompletion(); + this.getContainer().updateButtons(); + } + + /* (non-Javadoc) + * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) + */ + public void modifyText(ModifyEvent arg0) { + checkForCompletion(); + this.getContainer().updateButtons(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Composite parentComposite = new Composite(parent, SWT.NONE); + parentComposite.setLayout(new GridLayout(2, false)); + + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + + Label title = new Label(parentComposite, SWT.WRAP); + title.setText("Select type of report to be created:"); + title.setLayoutData(gd); + + type1_radio = new Button(parentComposite, SWT.RADIO); + type1_radio.setText("Create report for the selected issues"); + type1_radio.setLayoutData(gd); + type1_radio.setToolTipText("This case the report contains only the information about the selected issues.\nAnd graph will be shown for the selected issues."); + type1_radio.addSelectionListener(this); + + type2_radio = new Button(parentComposite, SWT.RADIO); + type2_radio.setText("Create overview report"); + type2_radio.setLayoutData(gd); + type2_radio.setToolTipText("This case the report contains the overview information of all the type of issues"); + type2_radio.addSelectionListener(this); + + info=new Label(parentComposite,SWT.WRAP); + info.setText("This case the report contains only the information about the selected issues.\nAnd graph will be shown for the selected issues."); + GridData lblGD=new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1); + lblGD.horizontalSpan = 2; + lblGD.verticalIndent=8; + info.setLayoutData(lblGD); + + Label comments_label = new Label(parentComposite, SWT.WRAP); + comments_label.setText("Enter your comments here:"); + GridData lbl_gd = new GridData(GridData.FILL_HORIZONTAL); + lbl_gd.horizontalSpan = 2; + comments_label.setLayoutData(lbl_gd); + + commentsText = new Text(parentComposite, SWT.BORDER|SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL); + GridData txt_gd = new GridData(GridData.FILL_HORIZONTAL); + txt_gd.heightHint = 100; + txt_gd.horizontalSpan = 2; + commentsText.setLayoutData(txt_gd); + commentsText.addModifyListener(this); + + Label browse_label = new Label(parentComposite, SWT.WRAP); + browse_label.setText("Provide report file path here:"); + browse_label.setLayoutData(lbl_gd); + + path_txt = new Text(parentComposite, SWT.BORDER); + path_txt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + path_txt.addModifyListener(this); + + browse_btn = new Button(parentComposite, SWT.PUSH); + browse_btn.setText("Save as..."); + browse_btn.addSelectionListener(this); + + setHelp(parentComposite); + setControl(parentComposite); + } + + /** + * Check if overview report was selected or not. + * @return true if overview report was selected, false otherwise. + */ + public boolean isOverviewReportSelected() + { + return type2_radio.getSelection(); + } + + /** + * Returns filename with path provided in the text box + * @return file name + */ + public String getFileName() + { + return path_txt.getText(); + } + + /** + * Returns comments provided. + * @return comment text + */ + public String getComments() + { + return commentsText.getText(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() + */ + public boolean canFlipToNextPage() { + checkForCompletion(); + return super.canFlipToNextPage(); + } + + /** + * Checks wizard completion. + * @return true if completed. + */ + public boolean checkForCompletion(){ + setErrorMessage(null); + if(type1_radio.getSelection() && !areItemsChecked()) + { + setErrorMessage("No issues are selected. Please select some issues in the analysis view."); + return false; + } + else if(commentsText.getText()==null || commentsText.getText() == "") + { + setErrorMessage("Enter your comments"); + return false; + } + else if(!(new File(path_txt.getText()).isAbsolute())|| !(new File(path_txt.getText())).getParentFile().exists()) + { + setErrorMessage("Invalid file name"); + return false; + } + return true; + } + + /** + * Checks whether any issues are selected or not. + * @return true if any issue(child) is selected. + */ + private boolean areItemsChecked() { + checked = false; + //To avoid invalid thread access, running in new thread. + Display.getDefault().syncExec(new Runnable() { + public void run() { + for(TreeItem i:all_tree_items.getItems()) + { + if(i.getItemCount() > 0) + { + for(TreeItem child : i.getItems()) + { + if(child.getChecked()) + { + checked = true; + return; + } + } + } + } + }}); + return checked; + } + + /** + * Set context sensitive helps + * @param parentComposite + */ + private void setHelp(Composite parentComposite) + { + PlatformUI.getWorkbench().getHelpSystem().setHelp(parentComposite, + HelpContextIds.SWMT_REPORT_WIZARD_HELP); + + } +}