Java tutorial
/* * 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: Class for Baseline Editor Dialog * */ package com.nokia.s60tools.compatibilityanalyser.ui.dialogs; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.dialogs.TrayDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.IDocument; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StackLayout; 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.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin; import com.nokia.carbide.cdt.builder.DefaultViewConfiguration; import com.nokia.carbide.cdt.builder.EpocEngineHelper; import com.nokia.carbide.cdt.builder.EpocEnginePathHelper; import com.nokia.carbide.cdt.builder.ICarbideBuildManager; import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration; import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo; import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier; import com.nokia.carbide.cpp.epoc.engine.model.BldInfModelFactory; import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfData; import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfOwnedModel; import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfView; import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExport; import com.nokia.carbide.cpp.project.core.ProjectCorePlugin; import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; import com.nokia.carbide.cpp.sdk.core.ISymbianSDK; import com.nokia.s60tools.compatibilityanalyser.CompatibilityAnalyserPlugin; import com.nokia.s60tools.compatibilityanalyser.data.BaselineProfile; import com.nokia.s60tools.compatibilityanalyser.data.ProductSdkData; import com.nokia.s60tools.compatibilityanalyser.data.SavingUserData; import com.nokia.s60tools.compatibilityanalyser.model.CompatibilityAnalyserEngine; import com.nokia.s60tools.compatibilityanalyser.resources.ImageKeys; import com.nokia.s60tools.compatibilityanalyser.resources.ImageResourceManager; import com.nokia.s60tools.compatibilityanalyser.resources.Messages; import com.nokia.s60tools.compatibilityanalyser.ui.wizards.CompatibilityAnalyserPreferencesConstants; import com.nokia.s60tools.compatibilityanalyser.ui.wizards.FeedbackHandler; import com.nokia.s60tools.compatibilityanalyser.utils.BaselineProfileUtils; import com.nokia.s60tools.compatibilityanalyser.utils.CompatibilityAnalyserUtils; import com.nokia.s60tools.compatibilityanalyser.utils.FileMethods; import com.nokia.s60tools.compatibilityanalyser.utils.GlobalDataReader; import com.nokia.s60tools.compatibilityanalyser.utils.HelpContextIDs; /** * Class for Baseline Editor Dialog */ public class BaselineEditor extends TrayDialog implements SelectionListener, FeedbackHandler, ModifyListener { private Composite shell; //Profile Group private Combo profileCmb; private Combo sdkCmb; private Combo versionCmb; private Label sdkrootLbl; private String[] sdkNames; public ArrayList<BaselineProfile> profileList = null; private ISymbianSDK[] sdkItems; //Current Workspace project Group private Button infCheck; private Combo bldInfPath; //Header Group private Button radio_default_Hdr; private Button radio_Hdr_dir; private List hdr_dir_list; private Button addBtn_hdrGrp; private Button removeBtn_hdrGrp; private Button removeAllBtn_hdrGrp; private Group hdrGrp; //System Includes Group private List list_systemInc; private Button addBtn_sysIncGrp; private Button removeBtn_sysIncGrp; private Button removeAllBtn_sysIncGrp; //Forced Headers Group private Group forcedGrp; //private Button forced_hdrs_check; private List forced_hdrs_list; private Button forced_addBtn; private Button forced_removeBtn; private Button forced_removeAllBtn; //Libraries Group private Group libGrp; private List list_build_Config; private Button radio_build_target; private Button radio_default_build_target; private Button radio_dir_Libs; private TabFolder dllPaths_Folder; private TabItem dsoPaths_tab; private List dso_dir_list; private Button addDsoDir_btn; private Button removeDsoDir_Btn; private Button removeAllDsoDirs_Btn; private TabItem dllPaths_tab; private List dll_dir_list; private Button addDllDir_btn; private Button removeDllDir_btn; private Button removeAllDllDir_Btn; //Baseline Editor Controls private Button saveBtn; private Button deleteBtn; private Button cancelBtn; public SavingUserData prevData = new SavingUserData();; public String selectedProfile; private ShowFilesListDialog addDialog; private String absolutePath; private ArrayList<String> numOfFiles; private ArrayList<String> displayFiles; private Button browseBld; private IProject selectedProj; private String bldPath; private ISymbianSDK selectedSdk; private ArrayList<File> userFiles; private ArrayList<File> systemFiles; private String[] srcRoots; private String projName; private String projLocation; private boolean isCancelled; private boolean projExists; private boolean projDeletionReq; private String targetPath = null; private String targetURL = null; private String downloadStatus; private String[] allSysIncHdrPaths; private ArrayList<String> children; private ArrayList<String> subChildren; private boolean isMonitorCancelled; private ProgressMonitorDialog progDlg; IProgressMonitor addFiles_monitor = null; private Composite hdr_dirs_comp; private Composite adv_options_comp; private Button show_btn; private Button hide_btn; private Composite show_hide_button_comp; private TabFolder tab_control; public BaselineEditor(Shell shell, String selectedProfile) { super(shell); setShellStyle(getShellStyle() | SWT.RESIZE); this.selectedProfile = selectedProfile; } @Override protected Control createContents(Composite parent) { shell = new Composite(parent, SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE); shell.setLayout(new GridLayout(4, false)); shell.setLayoutData(new GridData(GridData.FILL_BOTH)); shell.getShell().setText(Messages.getString("BaselineEditor.BaselineEditor-CreateNew")); Group profileGrp = new Group(shell, SWT.NONE); profileGrp.setText("Profile"); GridData profilegriddataGrp = new GridData(GridData.FILL_HORIZONTAL); profilegriddataGrp.horizontalSpan = 4; profileGrp.setLayoutData(profilegriddataGrp); profileGrp.setLayout(new GridLayout(4, false)); Label profileLbl = new Label(profileGrp, SWT.NONE); profileLbl.setText(Messages.getString("BaselineEditor.ProfileName")); //$NON-NLS-1$ GridData griddatalbl = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); //griddatalbl.horizontalAlignment=GridData.BEGINNING; profileLbl.setLayoutData(griddatalbl); profileCmb = new Combo(profileGrp, SWT.DROP_DOWN); profileCmb.setToolTipText(Messages.getString("BaselineEditor.CreateProfileWithGivenName")); GridData griddataNM = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); griddataNM.horizontalSpan = 3; //griddataNM.horizontalAlignment=GridData.FILL; profileCmb.setLayoutData(griddataNM); profileCmb.addSelectionListener(this); String[] basics = BaselineProfileUtils.getAllBaselinesProfiles(); if (basics != null && basics.length > 0) profileCmb.setItems(basics); else shell.getShell().setText(Messages.getString("BaselineEditor.BaselineEditor-CreateNew")); //$NON-NLS-1$ Label sdkLbl = new Label(profileGrp, SWT.NONE); sdkLbl.setText(Messages.getString("BaselineEditor.SDKName")); //$NON-NLS-1$ GridData griddata = new GridData(GridData.FILL_HORIZONTAL); griddata.widthHint = 150; sdkCmb = new Combo(profileGrp, SWT.READ_ONLY | SWT.DROP_DOWN); sdkCmb.setToolTipText(Messages.getString("BaselineEditor.ReadBaselineFilesFromThisSDK")); //$NON-NLS-1$ sdkCmb.setLayoutData(griddata); sdkCmb.addSelectionListener(this); Label versionLbl = new Label(profileGrp, SWT.NONE); versionLbl.setText(Messages.getString("BaselineEditor.S60VersionNumber")); //$NON-NLS-1$ versionCmb = new Combo(profileGrp, SWT.NONE); versionCmb.setToolTipText(Messages.getString("BaselineEditor.tooltipOfVersionCombo")); GridData gddata = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); gddata.widthHint = 90; versionCmb.setLayoutData(gddata); GlobalDataReader reader = CompatibilityAnalyserUtils.getGlobalDataReader(); if (reader != null) { String[] sVersions = reader.readSupportedSDKVersions(); if (sVersions != null) versionCmb.setItems(sVersions); } versionCmb.addSelectionListener(this); Label sdkRoot = new Label(profileGrp, SWT.NONE); sdkRoot.setText(Messages.getString("BaselineEditor.SDKEpocRootDirectory") + " : "); //$NON-NLS-1$ sdkrootLbl = new Label(profileGrp, SWT.NONE); GridData sdkrootgddata = new GridData(GridData.CENTER); sdkrootgddata.horizontalSpan = 3; sdkrootgddata.horizontalAlignment = GridData.FILL; sdkrootLbl.setLayoutData(sdkrootgddata); sdkItems = CompatibilityAnalyserPlugin.fetchLoadedSdkList().toArray(new ISymbianSDK[0]); if (sdkItems.length == 0 && !BaselineProfileUtils.isPredefinedProfile(profileCmb.getText())) { MessageDialog.openError(Display.getDefault().getActiveShell(), Messages.getString("BaselineEditor.BaselineEditor-SDKError"), //$NON-NLS-1$ Messages.getString("BaselineEditor.NoSDKinstalledinYourPC")); //$NON-NLS-1$ } else { sdkNames = new String[sdkItems.length]; for (int k = 0; k < sdkItems.length; k++) { sdkNames[k] = sdkItems[k].getUniqueId(); } sdkCmb.setItems(sdkNames); } GridData hdrData = new GridData(GridData.FILL_HORIZONTAL); hdrData.horizontalSpan = 4; infCheck = new Button(shell, SWT.CHECK); infCheck.setText("Use includes and forced headers from the selected bld.inf"); infCheck.setToolTipText("Select baseline project to fill all the include paths automatically"); infCheck.setLayoutData(hdrData); infCheck.addSelectionListener(this); hdrData = new GridData(GridData.FILL_HORIZONTAL); hdrData.horizontalSpan = 3; bldInfPath = new Combo(shell, SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER); bldInfPath.setLayoutData(hdrData); bldInfPath.setEnabled(false); SavingUserData userData = new SavingUserData(); String[] infPaths = userData.getPreviousValues(SavingUserData.ValueTypes.BLDINF_PATH); if (infPaths != null && infPaths.length > 0) { bldInfPath.setItems(infPaths); bldInfPath.select(0); } bldInfPath.addSelectionListener(this); browseBld = new Button(shell, SWT.PUSH); browseBld.setText("Browse..."); browseBld.setEnabled(false); browseBld.addSelectionListener(this); tab_control = new TabFolder(shell, SWT.NONE); GridData tabGD = new GridData(GridData.FILL_HORIZONTAL); tabGD.horizontalSpan = 4; tab_control.setLayoutData(tabGD); TabItem headersTab = new TabItem(tab_control, SWT.NONE); headersTab.setText(" Headers "); hdrGrp = new Group(tab_control, SWT.NONE); hdrGrp.setText(Messages.getString("BaselineEditor.Headers")); GridData griddataGrp = new GridData(GridData.FILL_HORIZONTAL); griddataGrp.horizontalSpan = 4; griddataGrp.horizontalAlignment = GridData.FILL; hdrGrp.setLayoutData(griddataGrp); hdrGrp.setLayout(new GridLayout(6, false)); headersTab.setControl(hdrGrp); hdrData = new GridData(GridData.VERTICAL_ALIGN_END); hdrData.horizontalSpan = 6; radio_default_Hdr = new Button(hdrGrp, SWT.RADIO); radio_default_Hdr.setText(Messages.getString("BaselineEditor.UseHeadersUnderInclude")); //$NON-NLS-1$ radio_default_Hdr.setToolTipText(Messages.getString("BaselineEditor.ToolTipForRadioDefaultHdr")); //$NON-NLS-1$ radio_default_Hdr.setLayoutData(hdrData); radio_default_Hdr.setSelection(true); radio_default_Hdr.addSelectionListener(this); radio_Hdr_dir = new Button(hdrGrp, SWT.RADIO); radio_Hdr_dir.setText(Messages.getString("BaselineEditor.UseHeadersUnderDir")); radio_Hdr_dir.setToolTipText(Messages.getString("BaselineEditor.ToolTipForRadioHdrDir")); radio_Hdr_dir.setLayoutData(hdrData); radio_Hdr_dir.setSelection(false); radio_Hdr_dir.addSelectionListener(this); hdr_dirs_comp = new Composite(hdrGrp, SWT.NONE); hdr_dirs_comp.setLayout(new GridLayout(2, false)); hdrData = new GridData(GridData.FILL_HORIZONTAL); hdrData.horizontalSpan = 6; hdr_dirs_comp.setLayoutData(hdrData); hdr_dir_list = new List(hdr_dirs_comp, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); hdr_dir_list.setToolTipText(Messages.getString("BaselineEditor.ToolTipForHdrDirCombo")); GridData hdrListdata = new GridData(GridData.FILL_BOTH); hdrListdata.verticalSpan = 4; hdrListdata.heightHint = 80; hdr_dir_list.setLayoutData(hdrListdata); hdr_dir_list.addSelectionListener(this); hdr_dir_list.setEnabled(false); GridData btnData1 = new GridData(GridData.FILL); btnData1.widthHint = 100; btnData1.verticalIndent = 0; addBtn_hdrGrp = new Button(hdr_dirs_comp, SWT.PUSH); addBtn_hdrGrp.setText(Messages.getString("BaselineEditor.Browse")); addBtn_hdrGrp.setLayoutData(btnData1); addBtn_hdrGrp.setEnabled(false); addBtn_hdrGrp.addSelectionListener(this); removeBtn_hdrGrp = new Button(hdr_dirs_comp, SWT.PUSH); removeBtn_hdrGrp.setText("Remove"); removeBtn_hdrGrp.setLayoutData(btnData1); removeBtn_hdrGrp.setEnabled(false); removeBtn_hdrGrp.addSelectionListener(this); removeAllBtn_hdrGrp = new Button(hdr_dirs_comp, SWT.PUSH); removeAllBtn_hdrGrp.setText("Remove all"); removeAllBtn_hdrGrp.setLayoutData(btnData1); removeAllBtn_hdrGrp.setEnabled(false); removeAllBtn_hdrGrp.addSelectionListener(this); hdrData = new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_END); hdrData.horizontalSpan = 5; Label show_hide_lbl = new Label(hdrGrp, SWT.NONE); show_hide_lbl.setText("Show/Hide options"); show_hide_lbl.setLayoutData(hdrData); show_hide_button_comp = new Composite(hdrGrp, SWT.NONE); show_hide_button_comp.setLayout(new StackLayout()); hdrData = new GridData(GridData.FILL); show_hide_button_comp.setLayoutData(hdrData); show_btn = new Button(show_hide_button_comp, SWT.ARROW | SWT.DOWN); show_btn.addSelectionListener(this); hide_btn = new Button(show_hide_button_comp, SWT.ARROW | SWT.UP); hide_btn.addSelectionListener(this); ((StackLayout) show_hide_button_comp.getLayout()).topControl = hide_btn; show_hide_button_comp.layout(); hdrData = new GridData(GridData.FILL_HORIZONTAL); hdrData.horizontalSpan = 6; adv_options_comp = new Composite(hdrGrp, SWT.NONE); adv_options_comp.setLayout(new GridLayout(1, true)); adv_options_comp.setLayoutData(hdrData); hdrData = new GridData(GridData.FILL_HORIZONTAL); Group innerBtnGrp = new Group(adv_options_comp, SWT.NONE); innerBtnGrp.setText(Messages.getString("BaselineEditor.SystemIncludes")); innerBtnGrp.setLayoutData(hdrData); innerBtnGrp.setLayout(new GridLayout(6, false)); GridData innerData2 = new GridData(GridData.FILL); innerData2.horizontalSpan = 3; innerData2.widthHint = 200; GridData innerData3 = new GridData(GridData.FILL); innerData3.horizontalSpan = 3; innerData3.widthHint = 280; GridData list1data = new GridData(GridData.FILL_BOTH); list1data.verticalSpan = 3; list1data.horizontalSpan = 5; list_systemInc = new List(innerBtnGrp, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); list1data.heightHint = 50; list1data.widthHint = 300; list_systemInc.setLayoutData(list1data); list_systemInc.addSelectionListener(this); GridData btnData = new GridData(GridData.VERTICAL_ALIGN_CENTER); btnData.widthHint = 100; addBtn_sysIncGrp = new Button(innerBtnGrp, SWT.PUSH); addBtn_sysIncGrp.setText(Messages.getString("BaselineEditor.AddIncludes")); addBtn_sysIncGrp.setLayoutData(btnData); addBtn_sysIncGrp.addSelectionListener(this); removeBtn_sysIncGrp = new Button(innerBtnGrp, SWT.PUSH); removeBtn_sysIncGrp.setText(Messages.getString("BaselineEditor.Remove")); removeBtn_sysIncGrp.setLayoutData(btnData); removeBtn_sysIncGrp.setEnabled(false); removeBtn_sysIncGrp.addSelectionListener(this); removeAllBtn_sysIncGrp = new Button(innerBtnGrp, SWT.PUSH); removeAllBtn_sysIncGrp.setText("Remove all"); removeAllBtn_sysIncGrp.setLayoutData(btnData); removeAllBtn_sysIncGrp.setEnabled(false); removeAllBtn_sysIncGrp.addSelectionListener(this); forcedGrp = new Group(adv_options_comp, SWT.NONE); forcedGrp.setText("Forced headers"); hdrData = new GridData(GridData.FILL_HORIZONTAL); forcedGrp.setLayoutData(hdrData); forcedGrp.setLayout(new GridLayout(2, false)); GridData forcedlist1data = new GridData( GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL | GridData.FILL_BOTH); forcedlist1data.verticalSpan = 3; forced_hdrs_list = new List(forcedGrp, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); forcedlist1data.heightHint = 50; forced_hdrs_list.setLayoutData(forcedlist1data); forced_hdrs_list.addSelectionListener(this); GridData forcedbtnData = new GridData(GridData.VERTICAL_ALIGN_CENTER); forcedbtnData.widthHint = 100; forced_addBtn = new Button(forcedGrp, SWT.PUSH); forced_addBtn.setText("Add..."); forced_addBtn.setLayoutData(forcedbtnData); forced_addBtn.addSelectionListener(this); forced_removeBtn = new Button(forcedGrp, SWT.PUSH); forced_removeBtn.setText(Messages.getString("BaselineEditor.Remove")); forced_removeBtn.setLayoutData(forcedbtnData); forced_removeBtn.setEnabled(false); forced_removeBtn.addSelectionListener(this); forced_removeAllBtn = new Button(forcedGrp, SWT.PUSH); forced_removeAllBtn.setText("Remove all"); forced_removeAllBtn.setLayoutData(forcedbtnData); forced_removeAllBtn.setEnabled(false); forced_removeAllBtn.addSelectionListener(this); TabItem librariesTab = new TabItem(tab_control, SWT.NONE); librariesTab.setText(" Libraries "); libGrp = new Group(tab_control, SWT.NONE); libGrp.setText(Messages.getString("BaselineEditor.Libraries")); GridData libdata = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_VERTICAL); libGrp.setLayoutData(libdata); libGrp.setLayout(new GridLayout(1, false)); librariesTab.setControl(libGrp); GridData lib1data = new GridData(GridData.FILL_HORIZONTAL); Label selectBuild = new Label(libGrp, SWT.NONE); selectBuild.setText(Messages.getString("BaselineEditor.SelectBuildConfiguration")); //$NON-NLS-1$ selectBuild.setLayoutData(lib1data); radio_default_build_target = new Button(libGrp, SWT.RADIO); radio_default_build_target.setText(Messages.getString("BaselineEditor.UseLibraryUnderDefaultBuildTarget")); radio_default_build_target .setToolTipText(Messages.getString("BaselineEditor.ToolTipForRadioDefaultBuildTarget")); radio_default_build_target.setLayoutData(lib1data); radio_default_build_target.addSelectionListener(this); radio_default_build_target.setSelection(true); radio_build_target = new Button(libGrp, SWT.RADIO); radio_build_target.setText(Messages.getString("BaselineEditor.UseLibraryUnderBuildConfig")); radio_build_target.setToolTipText(Messages.getString("BaselineEditor.ToolTipForRadioDefaultLibs")); radio_build_target.setLayoutData(lib1data); radio_build_target.addSelectionListener(this); radio_build_target.setSelection(false); list_build_Config = new List(libGrp, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL); GridData lib2data = new GridData(GridData.FILL_HORIZONTAL); lib2data.heightHint = 50; list_build_Config.setLayoutData(lib2data); list_build_Config.addSelectionListener(this); String[] selectedItems = list_build_Config.getSelection(); if (selectedItems != null && selectedItems.length > 0) { if (selectedItems.length == 1) radio_build_target.setText(Messages.getString("BaselineEditor.UseLibrariesUnder") + selectedItems[0] //$NON-NLS-1$ + Messages.getString("BaselineEditor.BuildConfiguration")); //$NON-NLS-1$ else radio_build_target.setText("Use libraries under selected build configurations"); } radio_dir_Libs = new Button(libGrp, SWT.RADIO); radio_dir_Libs.setText(Messages.getString("BaselineEditor.SpecifyTheDirectory")); //$NON-NLS-1$ radio_dir_Libs.setToolTipText(Messages.getString("BaselineEditor.ToolTipForRadioDirLibs")); //$NON-NLS-1$ radio_dir_Libs.setLayoutData(lib1data); radio_dir_Libs.addSelectionListener(this); dllPaths_Folder = new TabFolder(libGrp, SWT.NONE); dllPaths_Folder.setLayout(new GridLayout(2, false)); dllPaths_Folder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); dsoPaths_tab = new TabItem(dllPaths_Folder, SWT.NONE); dsoPaths_tab.setText("DSO Paths"); Composite dsoComposite = new Composite(dllPaths_Folder, SWT.NONE); dsoComposite.setLayout(new GridLayout(2, false)); dsoComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.verticalSpan = 4; gridData.heightHint = 100; dso_dir_list = new List(dsoComposite, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); dso_dir_list.setLayoutData(gridData); dso_dir_list.addSelectionListener(this); GridData libsBtnData = new GridData(GridData.VERTICAL_ALIGN_CENTER); libsBtnData.widthHint = 100; addDsoDir_btn = new Button(dsoComposite, SWT.PUSH); addDsoDir_btn.setText(Messages.getString("BaselineEditor.Browse")); addDsoDir_btn.setLayoutData(libsBtnData); addDsoDir_btn.addSelectionListener(this); removeDsoDir_Btn = new Button(dsoComposite, SWT.PUSH); removeDsoDir_Btn.setText("Remove"); removeDsoDir_Btn.setLayoutData(libsBtnData); removeDsoDir_Btn.setEnabled(false); removeDsoDir_Btn.addSelectionListener(this); removeAllDsoDirs_Btn = new Button(dsoComposite, SWT.PUSH); removeAllDsoDirs_Btn.setText("Remove all"); removeAllDsoDirs_Btn.setLayoutData(libsBtnData); removeAllDsoDirs_Btn.setEnabled(false); removeAllDsoDirs_Btn.addSelectionListener(this); dsoPaths_tab.setControl(dsoComposite); dllPaths_tab = new TabItem(dllPaths_Folder, SWT.NONE); dllPaths_tab.setText("DLL Paths"); Composite dllComposite = new Composite(dllPaths_Folder, SWT.NONE); dllComposite.setLayout(new GridLayout(2, false)); dllComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); dll_dir_list = new List(dllComposite, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); dll_dir_list.setLayoutData(gridData); dll_dir_list.addSelectionListener(this); addDllDir_btn = new Button(dllComposite, SWT.PUSH); addDllDir_btn.setText(Messages.getString("BaselineEditor.Browse")); addDllDir_btn.setLayoutData(libsBtnData); addDllDir_btn.addSelectionListener(this); removeDllDir_btn = new Button(dllComposite, SWT.PUSH); removeDllDir_btn.setText("Remove"); removeDllDir_btn.setLayoutData(libsBtnData); removeDllDir_btn.setEnabled(false); removeDllDir_btn.addSelectionListener(this); removeAllDllDir_Btn = new Button(dllComposite, SWT.PUSH); removeAllDllDir_Btn.setText("Remove all"); removeAllDllDir_Btn.setLayoutData(libsBtnData); removeAllDllDir_Btn.setEnabled(false); removeAllDllDir_Btn.addSelectionListener(this); dllPaths_tab.setControl(dllComposite); //set icon image for the dialog shell.getShell().setImage(ImageResourceManager.getImage(ImageKeys.BASELINE_EDITOR_ICON)); profileCmb.addModifyListener(this); shell.getShell().setSize(550, 700); setDialogHelpAvailable(false); setHelpAvailable(true); setHelp(); return super.createContents(shell); } protected void createButtonsForButtonBar(Composite parent) { saveBtn = this.createButton(parent, IDialogConstants.OK_ID, Messages.getString("BaselineEditor.SaveOK"), //$NON-NLS-1$ true); saveBtn.addSelectionListener(this); deleteBtn = this.createButton(parent, IDialogConstants.IGNORE_ID, Messages.getString("BaselineEditor.Delete"), false); //$NON-NLS-1$ deleteBtn.addSelectionListener(this); cancelBtn = this.createButton(parent, IDialogConstants.CANCEL_ID, Messages.getString("BaselineEditor.Cancel"), false); //$NON-NLS-1$ cancelBtn.addSelectionListener(this); //It shows the information of the profile using the given profile name. //If that profile name is not valid then it is deleted from the list. if (selectedProfile != null) { openBaselineProfileIfExists(selectedProfile); } else { openBaselineProfileIfExists(profileCmb.getText()); } //Exclude hdr directories list GridData d = (GridData) hdr_dirs_comp.getLayoutData(); d.exclude = !radio_Hdr_dir.getSelection(); hdr_dirs_comp.setVisible(radio_Hdr_dir.getSelection()); //Exclude list of build targets for the first time GridData data = (GridData) list_build_Config.getLayoutData(); data.exclude = !radio_build_target.getSelection(); list_build_Config.setVisible(radio_build_target.getSelection()); //Exlude dll/dso path tabs for the first time GridData exData = (GridData) dllPaths_Folder.getLayoutData(); exData.exclude = !radio_dir_Libs.getSelection(); dllPaths_Folder.setVisible(radio_dir_Libs.getSelection()); if (hdrGrp != null && shell != null) { hdrGrp.layout(); shell.layout(); } } protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { setReturnCode(IDialogConstants.OK_ID); } else if (buttonId == IDialogConstants.CANCEL_ID) { setReturnCode(IDialogConstants.CANCEL_ID); } else if (buttonId == IDialogConstants.IGNORE_ID) { //For Delete button, IGNORE_ID is been used. setReturnCode(IDialogConstants.IGNORE_ID); } } public boolean close() { try { if (selectedProj != null && selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } } catch (Exception ex) { ex.printStackTrace(); } return super.close(); } /** * Opens the profile in editor with given profilename. * @param name of the profile * @return true if exists */ public boolean openBaselineProfileIfExists(String name) { boolean val = true; SavingUserData prevData = new SavingUserData(); ; if (name != null && name.length() != 0) { Object obj = BaselineProfileUtils.getBaselineProfileData(name); if (obj != null && obj instanceof BaselineProfile) restoreProfile((BaselineProfile) obj); else prevData.deleteProfile(name); } else { clearAllShowDefaultEditor(); val = false; } return val; } private void clearAllShowDefaultEditor() { //Set empty text profileCmb.setText(""); //Select SDK, version, epoc root if (sdkNames.length != 0) { sdkCmb.select(0); if (versionCmb.indexOf(sdkItems[0].getSDKVersion().toString().substring(0, 3)) != -1) versionCmb.select(versionCmb.indexOf(sdkItems[0].getSDKVersion().toString().substring(0, 3))); else versionCmb.setText(""); sdkrootLbl.setText(sdkItems[0].getEPOCROOT()); } //bld inf option infCheck.setSelection(false); bldInfPath.setText(""); infCheck.notifyListeners(SWT.Selection, new Event()); //Headers tab //Select default header radio option radio_default_Hdr.setSelection(true); radio_default_Hdr.notifyListeners(SWT.Selection, new Event()); hdr_dir_list.removeAll(); radio_Hdr_dir.setSelection(false); radio_Hdr_dir.notifyListeners(SWT.Selection, new Event()); //System includes removeAllBtn_sysIncGrp.notifyListeners(SWT.Selection, new Event()); //Forced headers forced_removeAllBtn.notifyListeners(SWT.Selection, new Event()); //Libraries //build target list (2nd option) String[] targets = CompatibilityAnalyserUtils.getPlatformList(sdkItems[sdkCmb.getSelectionIndex()]); if (targets != null) list_build_Config.setItems(targets); int i = list_build_Config.indexOf(ProductSdkData.DEFAULT_TARGET_PLATFORM); if (i != -1) list_build_Config.select(i); else list_build_Config.select(0); //Clear all DLL & DSO list (3rd option) removeAllDllDir_Btn.notifyListeners(SWT.Selection, new Event()); removeAllDsoDirs_Btn.notifyListeners(SWT.Selection, new Event()); //First option radio_default_build_target.setSelection(true); radio_default_build_target.notifyListeners(SWT.Selection, new Event()); deleteBtn.setEnabled(false); } /** *This displays the details of the given profile object in the editor. */ public void restoreProfile(BaselineProfile profile) { if (profile == null) return; //Clear and show the default values in the editor clearAllShowDefaultEditor(); //Set Profile name profileCmb.setText(profile.getProfileName()); if (profile.isPredefined()) { if (sdkCmb.getItemCount() != 0) sdkCmb.select(0); sdkrootLbl.setText(profile.getSdkEpocRoot()); versionCmb.setText(profile.getS60version()); list_build_Config.removeAll(); list_build_Config.add("armv5"); radio_default_Hdr.setSelection(profile.isRadio_default_hdr()); radio_default_Hdr.notifyListeners(SWT.Selection, new Event()); radio_Hdr_dir.setSelection(!profile.isRadio_default_hdr()); radio_Hdr_dir.notifyListeners(SWT.Selection, new Event()); setEditorEnabled(false); return; } if (sdkCmb.indexOf(profile.getSdkName()) != -1) { sdkCmb.select(sdkCmb.indexOf(profile.getSdkName())); versionCmb.setText(profile.getS60version()); sdkrootLbl.setText(profile.getSdkEpocRoot()); String[] platformsList = CompatibilityAnalyserUtils .getPlatformList(sdkItems[sdkCmb.getSelectionIndex()]); if (platformsList != null) list_build_Config.setItems(platformsList); } radio_default_Hdr.setSelection(profile.isRadio_default_hdr()); radio_default_Hdr.notifyListeners(SWT.Selection, new Event()); radio_Hdr_dir.setSelection(!profile.isRadio_default_hdr()); radio_Hdr_dir.notifyListeners(SWT.Selection, new Event()); hdr_dir_list.setEnabled(!profile.isRadio_default_hdr()); if (hdr_dir_list.getEnabled()) hdr_dir_list.setItems(profile.getHdr_dir_path()); addBtn_hdrGrp.setEnabled(!profile.isRadio_default_hdr()); removeBtn_hdrGrp.setEnabled(!profile.isRadio_default_hdr()); removeAllBtn_hdrGrp.setEnabled(!profile.isRadio_default_hdr()); if (profile.getSystemInc_dirs() != null) { list_systemInc.setItems(profile.getSystemInc_dirs()); list_systemInc.select(0); } if (profile.getForced_headers() != null) { forced_hdrs_list.setItems(profile.getForced_headers()); forced_hdrs_list.select(0); } if (profile.isRadio_default_build_target()) { //Do nothing } else if (profile.isRadio_build_target()) { //set first option to false radio_default_build_target.setSelection(false); radio_default_build_target.notifyListeners(SWT.Selection, new Event()); //Select 2nd option radio_build_target.setSelection(true); radio_build_target.notifyListeners(SWT.Selection, new Event()); //Filter valid targets from previous list of targets ArrayList<Integer> targetIndices = new ArrayList<Integer>(); if (profile.getBuild_config() != null) for (String s : profile.getBuild_config()) { int index = list_build_Config.indexOf(s); if (index != -1) targetIndices.add(index); } //Set the filtered list int[] indices = new int[targetIndices.size()]; for (int i = 0; i < targetIndices.size(); i++) indices[i] = targetIndices.get(i); list_build_Config.select(indices); list_build_Config.notifyListeners(SWT.Selection, new Event()); } else { radio_dir_Libs.setSelection(true); radio_dir_Libs.notifyListeners(SWT.Selection, new Event()); if (profile.getLib_dir() != null) dso_dir_list.setItems(profile.getLib_dir()); if (profile.getDll_dir() != null) dll_dir_list.setItems(profile.getDll_dir()); dso_dir_list.select(0); dll_dir_list.select(0); } updateButtons(); } public void widgetDefaultSelected(SelectionEvent e) { } /** * To check the details entered by the user are correct or not. * @return */ public boolean isProfileDataCorrect() { boolean value = true; if (sdkCmb.getItemCount() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), //$NON-NLS-1$ Messages.getString("BaselineEditor.NOSDKsInstalledError")); //$NON-NLS-1$ value = false; } else if (sdkCmb.getText().length() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), //$NON-NLS-1$ "No SDK selected. Please select a SDK from the list"); //$NON-NLS-1$ value = false; } else if (versionCmb.getText().length() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), Messages.getString("BaselineEditor.SelectS60Version")); value = false; } else if (radio_Hdr_dir.getSelection() == true && hdr_dir_list.getItemCount() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), Messages.getString("BaselineEditor.InvalidHdrDirectory")); value = false; } else if (radio_build_target.getSelection() && list_build_Config.getSelectionCount() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), Messages.getString("BaselineEditor.SelectBuildConfig")); value = false; } else if (radio_dir_Libs.getSelection() == true && dso_dir_list.getItemCount() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), Messages.getString("BaselineEditor.InvalidLibraryDirectory")); value = false; } else if (radio_dir_Libs.getSelection() == true && dll_dir_list.getItemCount() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), Messages.getString("BaselineEditor.InvalidDllDirectory")); value = false; } return value; } /** * To check the given path is valid or not * @param path * @return */ public boolean isCorrectPath(String path) { boolean val = true; Path temp = new Path(path); if (!temp.toFile().isDirectory()) val = false; return val; } /** * It retrieves all the details entered by the user. And stores them in local file system using * seriealization. * */ public void saveProfile() { BaselineProfile profile = new BaselineProfile(); if (profileCmb.getText().length() == 0) { MessageDialog.openWarning(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Warning"), //$NON-NLS-1$ Messages.getString("BaselineEditor.InvalidProfileName")); //$NON-NLS-1$ return; } profile.setProfileName(profileCmb.getText()); profile.setSdkName(sdkCmb.getText()); profile.setS60version(versionCmb.getText()); profile.setSdkEpocRoot(sdkItems[sdkCmb.getSelectionIndex()].getEPOCROOT()); if (radio_default_Hdr.getSelection() == true) { profile.setRadio_default_hdr(radio_default_Hdr.getSelection()); } else { profile.setRadio_default_hdr(false); profile.setRadio_dir_hdr(radio_Hdr_dir.getSelection()); profile.setHdr_dir_path(hdr_dir_list.getItems()); } if (list_systemInc.getItemCount() > 0) profile.setSystemInc_dirs(list_systemInc.getItems()); if (forced_hdrs_list.getItemCount() > 0) profile.setForced_headers(forced_hdrs_list.getItems()); if (radio_default_build_target.getSelection()) { profile.setRadio_default_build_target(true); profile.setRadio_build_target(false); profile.setRadio_dir_libs(false); } else if (radio_build_target.getSelection()) { profile.setRadio_build_target(true); profile.setRadio_default_build_target(false); profile.setRadio_dir_libs(false); int selected_platforms = list_build_Config.getSelectionCount(); if (selected_platforms > 0) { profile.setBuild_config(list_build_Config.getSelection()); ISymbianSDK selectedSdk = CompatibilityAnalyserPlugin.fetchLoadedSdkList() .get(sdkCmb.getSelectionIndex()); String[] lib_dirs = new String[selected_platforms]; String[] dll_dirs = new String[selected_platforms]; for (int i = 0; i < selected_platforms; i++) { lib_dirs[i] = CompatibilityAnalyserEngine.getLibsPathFromPlatform(selectedSdk, profile.getBuild_config()[i]); dll_dirs[i] = CompatibilityAnalyserEngine.getDllPathFromPlatform(selectedSdk, profile.getBuild_config()[i]); } profile.setLib_dir(lib_dirs); profile.setDll_dir(dll_dirs); } } else { profile.setRadio_default_build_target(false); profile.setRadio_build_target(false); profile.setRadio_dir_libs(radio_dir_Libs.getSelection()); profile.setLib_dir(dso_dir_list.getItems()); profile.setDll_dir(dll_dir_list.getItems()); } BaselineProfileUtils.saveProfileOnFileSystem(profile); } public void widgetSelected(SelectionEvent e) { if (e.widget == saveBtn) { if (profileCmb.getText().length() == 0) { MessageDialog.openError(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Error"), //$NON-NLS-1$ Messages.getString("BaselineEditor.ProfileNameMustNotBeEmpty")); //$NON-NLS-1$ return; } String profileName = profileCmb.getText(); Object profile = BaselineProfileUtils.getBaselineProfileData(profileName); if (profile instanceof BaselineProfile && ((BaselineProfile) profile).isPredefined()) { prevData.saveValue(SavingUserData.ValueTypes.PROFILENAME, profileCmb.getText()); shell.getParent().dispose(); return; } if (isProfileDataCorrect()) { if (profileCmb.indexOf(profileCmb.getText()) != -1) { String[] str = { Messages.getString("BaselineEditor.Yes"), //$NON-NLS-1$ Messages.getString("BaselineEditor.69"), Messages.getString("BaselineEditor.No") }; //$NON-NLS-1$ //$NON-NLS-2$ MessageDialog dlg = new MessageDialog(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Confirmation"), null, //$NON-NLS-1$ Messages.getString("BaselineEditor.ThisProfileAlreadyExists"), MessageDialog.QUESTION, //$NON-NLS-1$ str, 0); dlg.create(); int res = dlg.open(); if (res == 0) { saveProfile(); prevData.saveValue(SavingUserData.ValueTypes.PROFILENAME, profileCmb.getText()); } } else { saveProfile(); prevData.saveValue(SavingUserData.ValueTypes.PROFILENAME, profileCmb.getText()); } //Delete the project, if the profile is created by using blf.inf try { if (selectedProj != null) { prevData.saveValue(SavingUserData.ValueTypes.BLDINF_PATH, bldInfPath.getText()); if (selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } } } catch (Exception ex) { ex.printStackTrace(); } shell.getParent().dispose(); } } else if (e.widget == deleteBtn) { String[] str = { Messages.getString("BaselineEditor.Yes"), Messages.getString("BaselineEditor.No2"), Messages.getString("BaselineEditor.Cancel") }; MessageDialog dlg = new MessageDialog(Display.getCurrent().getActiveShell(), Messages.getString("BaselineEditor.Confirmation"), null, Messages.getString("BaselineEditor.DoUWantToDeleteTheProfile") + profileCmb.getText() + "'?", MessageDialog.QUESTION, str, 0); dlg.create(); int res = dlg.open(); if (res == 0) { BaselineProfileUtils.deleteProfile(profileCmb.getText()); shell.getParent().dispose(); } } else if (e.widget == cancelBtn) { try { if (selectedProj != null && selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } } catch (Exception ex) { ex.printStackTrace(); } shell.getParent().dispose(); } else if (e.widget == profileCmb) { Object obj = BaselineProfileUtils.getBaselineProfileData(profileCmb.getText()); if (obj instanceof BaselineProfile) { BaselineProfile pro = (BaselineProfile) obj; if (!pro.isPredefined()) openBaselineProfileIfExists(profileCmb.getText()); else { if (!pro.isUpdated()) { targetPath = "c:\\apps\\ca-baselines\\" + pro.getProfileName(); targetURL = pro.getSdkUrl(); IRunnableWithProgress op = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { if (new File(targetPath).exists()) FileMethods.deleteFolder(targetPath); downloadStatus = CompatibilityAnalyserEngine.downloadAndExtractFileFromWebServer( targetURL, targetPath, CompatibilityAnalyserEngine.ElementTypes.FolderType, "include", monitor); } }; IWorkbench wb = PlatformUI.getWorkbench(); IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); Shell shell = win != null ? win.getShell() : null; try { new ProgressMonitorDialog(shell).run(true, true, op); } catch (InvocationTargetException err) { err.printStackTrace(); } catch (InterruptedException err) { err.printStackTrace(); } if (downloadStatus == null) { File epocRoot = new File(CompatibilityAnalyserEngine.getEpocFolderPath()); BaselineProfile profile = (BaselineProfile) obj; profile.setSdkName(profile.getProfileName()); profile.setRadio_default_hdr(true); profile.setRadio_dir_hdr(false); profile.setRadio_default_build_target(true); profile.setRadio_build_target(false); profile.setRadio_dir_libs(false); profile.setSdkEpocRoot( FileMethods.appendPathSeparator(epocRoot.getParentFile().getAbsolutePath())); profile.setUpdated(true); BaselineProfileUtils.saveProfileOnFileSystem(profile); openBaselineProfileIfExists(profileCmb.getText()); prevData.saveValue(SavingUserData.ValueTypes.PROFILENAME, profile.getProfileName()); } else { openBaselineProfileIfExists(null); MessageDialog.openError(this.getShell(), "Compatibility Analyser", downloadStatus); downloadStatus = null; } } openBaselineProfileIfExists(pro.getProfileName()); } } hdrGrp.layout(); shell.layout(); } else if (e.widget == sdkCmb) { sdkrootLbl.setText(sdkItems[sdkCmb.getSelectionIndex()].getEPOCROOT()); if (versionCmb .indexOf(sdkItems[sdkCmb.getSelectionIndex()].getSDKVersion().toString().substring(0, 3)) != -1) versionCmb.select(versionCmb .indexOf(sdkItems[sdkCmb.getSelectionIndex()].getSDKVersion().toString().substring(0, 3))); else versionCmb.setText(""); //$NON-NLS-1$ String[] platformsList = CompatibilityAnalyserUtils .getPlatformList(sdkItems[sdkCmb.getSelectionIndex()]); if (platformsList != null) list_build_Config.setItems(platformsList); if (list_build_Config.getItemCount() > 0) { int i = list_build_Config.indexOf(Messages.getString("BaselineEditor.armv5")); //$NON-NLS-1$ if (i != -1) list_build_Config.select(i); else list_build_Config.select(0); String selected = list_build_Config.getItem(list_build_Config.getSelectionIndex()); radio_build_target.setText(Messages.getString("BaselineEditor.UseLibrariesUnder") + selected //$NON-NLS-1$ + Messages.getString("BaselineEditor.BuildConfig")); //$NON-NLS-1$ } if (infCheck.getSelection() && bldInfPath.getText().length() != 0) { String bldPath = bldInfPath.getText(); File bldFile = new File(bldPath); File Project = bldFile.getParentFile().getParentFile(); userFiles = new ArrayList<File>(); systemFiles = new ArrayList<File>(); projName = Project.getName(); projLocation = Project.getAbsolutePath(); projExists = false; selectedSdk = sdkItems[sdkCmb.getSelectionIndex()]; IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { try { isCancelled = false; selectedProj = ResourcesPlugin.getWorkspace().getRoot() .getProject("CompatibilityAnalyser_" + projName); if (selectedProj.exists()) { projExists = true; } else { for (IProject wsProj : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { projLocation = FileMethods.convertForwardToBackwardSlashes(projLocation); if (FileMethods.convertForwardToBackwardSlashes(wsProj.getLocation().toString()) .equals(projLocation)) { projExists = true; selectedProj = wsProj; break; } } } java.util.List<ISymbianBuildContext> buildList = selectedSdk .getFilteredBuildConfigurations(); if (projExists) { monitor.beginTask("Reading system includes using selected SDK Configuration ...", 10); selectedProj.open(null); ICarbideBuildManager buildMgr = CarbideBuilderPlugin.getBuildManager(); ICarbideProjectModifier modifier = buildMgr.getProjectModifier(selectedProj); monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; monitor.done(); return; } ICarbideProjectInfo projectInfo = buildMgr.getProjectInfo(selectedProj); ICarbideBuildConfiguration origConf = projectInfo.getDefaultConfiguration(); ICarbideBuildConfiguration configTobeSet = null; configTobeSet = modifier.createNewConfiguration(buildList.get(0), true); configTobeSet.saveConfiguration(false); modifier.setDefaultConfiguration(configTobeSet); modifier.saveChanges(); monitor.worked(5); if (monitor.isCanceled()) { modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); monitor.done(); return; } if (projectInfo != null) { EpocEngineHelper.getProjectIncludePaths(projectInfo, projectInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projectInfo, userFiles); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); } monitor.worked(8); modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); monitor.worked(10); if (monitor.isCanceled()) isCancelled = true; monitor.done(); } else { monitor.beginTask("Getting system includes using selected SDK Configuration...", 10); selectedProj = ProjectCorePlugin.createProject(projName, projLocation); projDeletionReq = true; monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } java.util.List<String> infsList = new ArrayList<String>(); ProjectCorePlugin.postProjectCreatedActions(selectedProj, "group/bld.inf", buildList, infsList, null, null, new NullProgressMonitor()); monitor.worked(5); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } ICarbideProjectInfo projInfo = CarbideBuilderPlugin.getBuildManager() .getProjectInfo(selectedProj); if (projInfo != null) { EpocEngineHelper.getProjectIncludePaths(projInfo, projInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projInfo, userFiles); monitor.worked(7); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); monitor.worked(9); if (monitor.isCanceled()) isCancelled = true; } monitor.done(); } } catch (CoreException ex) { ex.printStackTrace(); try { if (selectedProj != null && selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } return; } catch (Exception e1) { e1.printStackTrace(); } } } }; try { new ProgressMonitorDialog(this.shell.getShell()).run(true, true, runnable); } catch (Exception ex) { ex.printStackTrace(); } String[] sysIncludes = new String[systemFiles.size()]; int s = 0; if (isCancelled) return; for (File f : systemFiles) { sysIncludes[s] = f.toString(); s++; } if (srcRoots != null && srcRoots.length > 0) { forced_hdrs_list.setItems(srcRoots); } if (userFiles.size() > 0) { ArrayList<String> userIncludes = new ArrayList<String>(); for (int i = 0; i < userFiles.size(); i++) { if (userFiles.get(i).exists()) userIncludes .add(FileMethods.convertForwardToBackwardSlashes(userFiles.get(i).toString())); } Event modEvent = new Event(); modEvent.type = SWT.Selection; radio_Hdr_dir.setSelection(true); hdr_dir_list.setItems(userIncludes.toArray(new String[0])); hdr_dir_list.select(0); radio_Hdr_dir.notifyListeners(SWT.Selection, modEvent); } if (sysIncludes.length > 0) { list_systemInc.setItems(sysIncludes); removeBtn_sysIncGrp.setEnabled(true); removeAllBtn_sysIncGrp.setEnabled(true); list_systemInc.select(0); } updateButtons(); return; } } else if (e.widget == addBtn_hdrGrp) { DirectoryDialog dirDlg = new DirectoryDialog(Display.getDefault().getActiveShell()); String dirName = null; if ((dirName = dirDlg.open()) != null) { hdr_dir_list.add(dirName); hdr_dir_list.select(0); updateButtons(); } else return; } else if (e.widget == removeBtn_hdrGrp) { hdr_dir_list.remove(hdr_dir_list.getSelectionIndices()); hdr_dir_list.select(0); updateButtons(); } else if (e.widget == removeAllBtn_hdrGrp) { hdr_dir_list.removeAll(); updateButtons(); } else if (e.widget == addDsoDir_btn) { DirectoryDialog dirDlg = new DirectoryDialog(Display.getDefault().getActiveShell()); String dirName = null; if ((dirName = dirDlg.open()) != null) { dso_dir_list.add(dirName); dso_dir_list.select(0); updateButtons(); } else return; } else if (e.widget == addDllDir_btn) { DirectoryDialog dirDlg = new DirectoryDialog(Display.getDefault().getActiveShell()); String dirName = null; if ((dirName = dirDlg.open()) != null) { dll_dir_list.add(dirName); dll_dir_list.select(0); updateButtons(); } else return; } else if (e.widget == removeDsoDir_Btn) { dso_dir_list.remove(dso_dir_list.getSelectionIndices()); dso_dir_list.select(0); updateButtons(); } else if (e.widget == removeDllDir_btn) { dll_dir_list.remove(dll_dir_list.getSelectionIndices()); dll_dir_list.select(0); updateButtons(); } else if (e.widget == removeAllDsoDirs_Btn) { dso_dir_list.removeAll(); updateButtons(); } else if (e.widget == removeAllDllDir_Btn) { dll_dir_list.removeAll(); updateButtons(); } else if (e.widget == addBtn_sysIncGrp) { DirectoryDialog dirDlg = new DirectoryDialog(Display.getDefault().getActiveShell()); String dirName = null; if ((dirName = dirDlg.open()) != null) { list_systemInc.add(dirName); list_systemInc.select(0); updateButtons(); } else return; } else if (e.widget == removeBtn_sysIncGrp) { list_systemInc.remove(list_systemInc.getSelectionIndices()); list_systemInc.select(0); updateButtons(); } else if (e.widget == radio_Hdr_dir) { GridData d = (GridData) hdr_dirs_comp.getLayoutData(); d.exclude = !radio_Hdr_dir.getSelection(); hdr_dirs_comp.setVisible(radio_Hdr_dir.getSelection()); hdr_dir_list.setEnabled(radio_Hdr_dir.getSelection()); addBtn_hdrGrp.setEnabled(radio_Hdr_dir.getSelection()); updateButtons(); } else if (e.widget == radio_dir_Libs || e.widget == radio_build_target) { //dso_dir_list.setEnabled(radio_dir_Libs.getSelection()); addDsoDir_btn.setEnabled(radio_dir_Libs.getSelection()); addDllDir_btn.setEnabled(radio_dir_Libs.getSelection()); //removeDsoDir_Btn.setEnabled(radio_dir_Libs.getSelection()); //removeAllDsoDirs_Btn.setEnabled(radio_dir_Libs.getSelection()); //list_build_Config.setEnabled(!radio_dir_Libs.getSelection()); GridData data = (GridData) list_build_Config.getLayoutData(); data.exclude = !radio_build_target.getSelection(); list_build_Config.setVisible(radio_build_target.getSelection()); GridData data2 = (GridData) dllPaths_Folder.getLayoutData(); data2.exclude = !radio_dir_Libs.getSelection(); dllPaths_Folder.setVisible(radio_dir_Libs.getSelection()); dllPaths_Folder.getParent().layout(false); updateButtons(); } else if (e.widget == list_build_Config) { if (list_build_Config.getSelectionCount() > 1) radio_build_target.setText("Use libraries under selected build configurations"); else { String selected = list_build_Config.getItem(list_build_Config.getSelectionIndex()); radio_build_target.setText(Messages.getString("BaselineEditor.UseLibrariesUnder") + selected //$NON-NLS-1$ + Messages.getString("BaselineEditor.BuildConfig")); //$NON-NLS-1$ } } else if (e.widget == removeAllBtn_sysIncGrp) { list_systemInc.removeAll(); updateButtons(); } else if (e.widget == browseBld) { FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell()); dialog.setFilterExtensions(new String[] { "*.inf" }); String fileName = null; if ((fileName = dialog.open()) != null) { bldInfPath.add(fileName, 0); bldInfPath.select(0); Event event = new Event(); event.type = SWT.Selection; bldInfPath.notifyListeners(SWT.Selection, event); } } else if (e.widget == infCheck) { projExists = false; if (infCheck.getSelection()) { bldInfPath.setEnabled(true); browseBld.setEnabled(true); if (bldInfPath.getText().length() > 0) { userFiles = new ArrayList<File>(); systemFiles = new ArrayList<File>(); bldPath = bldInfPath.getText(); selectedSdk = sdkItems[sdkCmb.getSelectionIndex()]; File bldFile = new File(bldPath); File Project = bldFile.getParentFile().getParentFile(); if (!bldFile.exists()) { MessageDialog.openInformation(Display.getCurrent().getActiveShell(), Messages.getString("HeaderFilesPage.CompatibilityAnalyser"), "Given Bld.inf does not exist. Please provide a valid path"); return; } projName = Project.getName(); projLocation = Project.getAbsolutePath(); IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { try { isCancelled = false; selectedProj = ResourcesPlugin.getWorkspace().getRoot() .getProject("CompatibilityAnalyser_" + projName); if (selectedProj.exists()) { projExists = true; } else { for (IProject wsProj : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { projLocation = FileMethods.convertForwardToBackwardSlashes(projLocation); if (FileMethods .convertForwardToBackwardSlashes(wsProj.getLocation().toString()) .equals(projLocation)) { projExists = true; selectedProj = wsProj; break; } } } java.util.List<ISymbianBuildContext> buildList = selectedSdk .getFilteredBuildConfigurations(); java.util.List<String> infsList = new ArrayList<String>(); if (!projExists) { monitor.beginTask("Getting Project Info", 10); selectedProj = ProjectCorePlugin .createProject("CompatibilityAnalyser_" + projName, projLocation); projDeletionReq = true; monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } ProjectCorePlugin.postProjectCreatedActions(selectedProj, "group/bld.inf", buildList, infsList, null, null, monitor); monitor.worked(5); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } ICarbideProjectInfo projInfo = CarbideBuilderPlugin.getBuildManager() .getProjectInfo(selectedProj); if (projInfo != null) { EpocEngineHelper.getProjectIncludePaths(projInfo, projInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projInfo, userFiles); monitor.worked(7); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); monitor.worked(9); if (monitor.isCanceled()) isCancelled = true; } monitor.done(); } else { monitor.beginTask("Reading Project Info..", 10); selectedProj.open(null); monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; monitor.done(); return; } ICarbideProjectInfo projInfo = CarbideBuilderPlugin.getBuildManager() .getProjectInfo(selectedProj); ICarbideBuildManager manager = CarbideBuilderPlugin.getBuildManager(); ICarbideProjectModifier modifier = manager.getProjectModifier(selectedProj); ICarbideBuildConfiguration origConf = projInfo.getDefaultConfiguration(); ICarbideBuildConfiguration configTobeSet = null; java.util.List<ISymbianBuildContext> all = selectedSdk .getFilteredBuildConfigurations(); configTobeSet = modifier.createNewConfiguration(all.get(0), true); configTobeSet.saveConfiguration(false); modifier.setDefaultConfiguration(configTobeSet); modifier.saveChanges(); if (monitor.isCanceled()) { isCancelled = true; modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); monitor.done(); return; } monitor.worked(5); if (projInfo != null) { EpocEngineHelper.getProjectIncludePaths(projInfo, projInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projInfo, userFiles); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); } monitor.worked(8); modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); if (monitor.isCanceled()) isCancelled = true; monitor.worked(10); monitor.done(); } } catch (CoreException ex) { ex.printStackTrace(); try { if (selectedProj != null && selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } return; } catch (Exception e1) { e1.printStackTrace(); } } } }; try { new ProgressMonitorDialog(this.shell.getShell()).run(true, true, runnable); } catch (Exception ex) { ex.printStackTrace(); } if (isCancelled) return; if (srcRoots != null && srcRoots.length > 0) { forced_hdrs_list.setItems(srcRoots); } if (systemFiles != null && systemFiles.size() > 0) { String[] sysIncludes = new String[systemFiles.size()]; for (int i = 0; i < systemFiles.size(); i++) sysIncludes[i] = systemFiles.get(i).toString(); list_systemInc.setItems(sysIncludes); list_systemInc.select(0); removeBtn_sysIncGrp.setEnabled(true); removeAllBtn_sysIncGrp.setEnabled(true); } if (userFiles != null && userFiles.size() > 0) { ArrayList<String> userIncludes = new ArrayList<String>(); for (int i = 0; i < userFiles.size(); i++) { if (userFiles.get(i).exists()) userIncludes.add( FileMethods.convertForwardToBackwardSlashes(userFiles.get(i).toString())); } radio_default_Hdr.setSelection(false); radio_Hdr_dir.setSelection(true); hdr_dir_list.setItems(userIncludes.toArray(new String[0])); hdr_dir_list.select(0); Event selEvent = new Event(); selEvent.type = SWT.Selection; radio_Hdr_dir.notifyListeners(SWT.Selection, selEvent); } } } else { bldInfPath.setEnabled(false); browseBld.setEnabled(false); if (bldInfPath.getText().length() > 0) { Event modEvent = new Event(); modEvent.type = SWT.Selection; radio_default_Hdr.setSelection(true); radio_Hdr_dir.setSelection(false); list_systemInc.removeAll(); hdr_dir_list.removeAll(); forced_hdrs_list.removeAll(); radio_default_Hdr.notifyListeners(SWT.Selection, modEvent); } } } else if (e.widget == bldInfPath) { radio_default_Hdr.setSelection(true); radio_Hdr_dir.setSelection(false); list_systemInc.removeAll(); forced_hdrs_list.removeAll(); Event modEvent = new Event(); modEvent.type = SWT.Selection; radio_default_Hdr.notifyListeners(SWT.Selection, modEvent); bldPath = bldInfPath.getText(); selectedSdk = sdkItems[sdkCmb.getSelectionIndex()]; projExists = false; if (bldPath.length() > 0 && infCheck.getSelection()) { userFiles = new ArrayList<File>(); systemFiles = new ArrayList<File>(); File bldFile = new File(bldPath); File Project = bldFile.getParentFile().getParentFile(); if (!bldFile.exists()) { MessageDialog.openInformation(Display.getCurrent().getActiveShell(), Messages.getString("HeaderFilesPage.CompatibilityAnalyser"), "Given Bld.inf does not exist. Please provide a valid path"); return; } if (!bldFile.getName().equalsIgnoreCase("bld.inf")) { return; } projName = Project.getName(); projLocation = Project.getAbsolutePath(); if (selectedProj != null && selectedProj.exists() && projDeletionReq) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } projDeletionReq = false; } IRunnableWithProgress runP = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { try { isCancelled = false; selectedProj = ResourcesPlugin.getWorkspace().getRoot() .getProject("CompatibilityAnalyser_" + projName); if (selectedProj.exists()) { projExists = true; } else { for (IProject wsProj : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { if (FileMethods.convertForwardToBackwardSlashes(wsProj.getLocation().toString()) .equals(FileMethods.convertForwardToBackwardSlashes(projLocation))) { projExists = true; selectedProj = wsProj; break; } } } java.util.List<ISymbianBuildContext> buildList = selectedSdk .getFilteredBuildConfigurations(); java.util.List<String> infsList = new ArrayList<String>(); if (!projExists) { monitor.beginTask("Getting Project Info...", 10); selectedProj = ProjectCorePlugin.createProject("CompatibilityAnalyser_" + projName, projLocation); projDeletionReq = true; monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } ProjectCorePlugin.postProjectCreatedActions(selectedProj, "group/bld.inf", buildList, infsList, null, null, monitor); if (monitor.isCanceled()) { isCancelled = true; if (selectedProj != null && selectedProj.exists()) { try { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); } catch (Exception e1) { e1.printStackTrace(); } } monitor.done(); projDeletionReq = false; return; } monitor.worked(5); ICarbideProjectInfo projInfo = CarbideBuilderPlugin.getBuildManager() .getProjectInfo(selectedProj); if (projInfo != null) { EpocEngineHelper.getProjectIncludePaths(projInfo, projInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projInfo, userFiles); monitor.worked(7); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); monitor.worked(9); if (monitor.isCanceled()) isCancelled = true; } monitor.done(); } else { monitor.beginTask("Reading Project Info..", 10); selectedProj.open(null); monitor.worked(2); if (monitor.isCanceled()) { isCancelled = true; monitor.done(); return; } ICarbideProjectInfo projInfo = CarbideBuilderPlugin.getBuildManager() .getProjectInfo(selectedProj); ICarbideBuildManager manager = CarbideBuilderPlugin.getBuildManager(); ICarbideProjectModifier modifier = manager.getProjectModifier(selectedProj); ICarbideBuildConfiguration origConf = projInfo.getDefaultConfiguration(); ICarbideBuildConfiguration configTobeSet = null; configTobeSet = modifier.createNewConfiguration(buildList.get(0), true); configTobeSet.saveConfiguration(false); modifier.setDefaultConfiguration(configTobeSet); modifier.saveChanges(); if (monitor.isCanceled()) { isCancelled = true; monitor.done(); modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); return; } monitor.worked(5); if (projInfo != null) { EpocEngineHelper.getProjectIncludePaths(projInfo, projInfo.getDefaultConfiguration(), userFiles, systemFiles); getExportPathsAndFiles(projInfo, userFiles); srcRoots = CompatibilityAnalyserEngine.getIncludesFromSrcFiles(selectedProj) .toArray(new String[0]); } if (monitor.isCanceled()) { isCancelled = true; monitor.done(); } monitor.worked(8); modifier.setDefaultConfiguration(origConf); modifier.saveChanges(); monitor.worked(10); monitor.done(); } } catch (CoreException ex) { ex.printStackTrace(); try { if (selectedProj != null && selectedProj.exists() && projDeletionReq) { selectedProj.delete(IResource.NEVER_DELETE_PROJECT_CONTENT, null); projDeletionReq = false; } return; } catch (Exception e1) { e1.printStackTrace(); } } } }; try { new ProgressMonitorDialog(this.shell.getShell()).run(true, true, runP); } catch (Exception ex) { ex.printStackTrace(); } if (isCancelled) return; if (srcRoots != null && srcRoots.length > 0) { Event eve = new Event(); eve.type = SWT.Selection; forced_hdrs_list.setItems(srcRoots); } if (userFiles != null && userFiles.size() > 0) { ArrayList<String> userIncludes = new ArrayList<String>(); for (int i = 0; i < userFiles.size(); i++) { if (userFiles.get(i).exists()) userIncludes .add(FileMethods.convertForwardToBackwardSlashes(userFiles.get(i).toString())); } radio_default_Hdr.setSelection(false); radio_Hdr_dir.setSelection(true); hdr_dir_list.setItems(userIncludes.toArray(new String[0])); hdr_dir_list.select(0); Event selEvent = new Event(); selEvent.type = SWT.Selection; radio_Hdr_dir.notifyListeners(SWT.Selection, selEvent); } if (systemFiles != null && systemFiles.size() > 0) { String[] sysIncludes = new String[systemFiles.size()]; for (int i = 0; i < systemFiles.size(); i++) sysIncludes[i] = systemFiles.get(i).toString(); list_systemInc.setItems(sysIncludes); list_systemInc.select(0); removeBtn_sysIncGrp.setEnabled(true); removeAllBtn_sysIncGrp.setEnabled(true); } } } else if (e.widget == forced_addBtn) { displayFiles = new ArrayList<String>(); numOfFiles = new ArrayList<String>(); children = new ArrayList<String>(); subChildren = new ArrayList<String>(); isMonitorCancelled = false; if (list_systemInc.getItemCount() > 0) { ArrayList<String> paths = new ArrayList<String>(Arrays.asList(list_systemInc.getItems())); paths.add(FileMethods.appendPathSeparator(sdkrootLbl.getText()) + "epoc32" + File.separator + "include" + File.separator); addDialog = new ShowFilesListDialog(Display.getCurrent().getActiveShell(), forced_hdrs_list, this, "", true); allSysIncHdrPaths = paths.toArray(new String[paths.size()]); IRunnableWithProgress op = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { try { int i = 1; for (String path : allSysIncHdrPaths) { absolutePath = FileMethods.convertForwardToBackwardSlashes(path); monitor.beginTask("Getting files from " + absolutePath, allSysIncHdrPaths.length); getFiles(absolutePath, monitor); getFilesFromSubDirs(absolutePath, monitor); monitor.worked(i++); } monitor.done(); } catch (Exception e1) { e1.printStackTrace(); } } }; try { IWorkbench wb = PlatformUI.getWorkbench(); IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); Shell shell = win != null ? win.getShell() : null; progDlg = new ProgressMonitorDialog(shell); progDlg.run(true, true, op); progDlg.setBlockOnOpen(true); } catch (InvocationTargetException err) { err.printStackTrace(); } catch (InterruptedException err) { err.printStackTrace(); } } else { addDialog = new ShowFilesListDialog(Display.getCurrent().getActiveShell(), forced_hdrs_list, this, FileMethods.appendPathSeparator(sdkrootLbl.getText()) + "epoc32" + File.separator + "include" + File.separator, true); absolutePath = FileMethods.appendPathSeparator(sdkrootLbl.getText()) + "epoc32" + File.separator + "include" + File.separator; IRunnableWithProgress op = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { try { addFiles_monitor = monitor; monitor.beginTask("Getting files from " + absolutePath, 10); getFiles(absolutePath, monitor); addFiles_monitor.worked(5); getFilesFromSubDirs(absolutePath, monitor); monitor.done(); } catch (Exception e1) { e1.printStackTrace(); } } }; try { IWorkbench wb = PlatformUI.getWorkbench(); IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); Shell shell = win != null ? win.getShell() : null; progDlg = new ProgressMonitorDialog(shell); progDlg.run(true, true, op); progDlg.setBlockOnOpen(true); } catch (InvocationTargetException err) { err.printStackTrace(); } catch (InterruptedException err) { err.printStackTrace(); } } if (!isMonitorCancelled) { if (numOfFiles.size() != forced_hdrs_list.getItemCount()) for (String name : numOfFiles) if (!isPreviouslySelected(name)) displayFiles.add(name); if (displayFiles.size() != 0) { Collections.sort(displayFiles); addDialog.children = children; addDialog.subChildren = subChildren; addDialog.open(); addDialog.filesList.setItems(displayFiles.toArray(new String[displayFiles.size()])); addDialog.filesList.select(0); } } if (isMonitorCancelled) { } else if (displayFiles.size() == 0 && numOfFiles.size() != 0) { Runnable showMessageRunnable = new Runnable() { public void run() { MessageDialog.openInformation(Display.getCurrent().getActiveShell(), Messages.getString("HeaderFilesPage.CompatibilityAnalyser"), //$NON-NLS-1$ Messages.getString("HeaderFilesPage.hdrsAlreadyExists")); //$NON-NLS-1$ } }; Display.getDefault().asyncExec(showMessageRunnable); } else if (numOfFiles.size() == 0) { Runnable showMessageRunnable = new Runnable() { public void run() { MessageDialog.openInformation(Display.getCurrent().getActiveShell(), Messages.getString("HeaderFilesPage.CompatibilityAnalyser"), //$NON-NLS-1$ Messages.getString("HeaderFilesPage.NoHdrsExists")); //$NON-NLS-1$ } }; Display.getDefault().asyncExec(showMessageRunnable); } else { addDialog.fileNamesList = addDialog.filesList.getItems(); } } else if (e.widget == forced_removeBtn) { forced_hdrs_list.remove(forced_hdrs_list.getSelectionIndices()); forced_hdrs_list.select(0); forced_removeBtn.setEnabled(forced_hdrs_list.getItemCount() > 0); forced_removeAllBtn.setEnabled(forced_hdrs_list.getItemCount() > 0); } else if (e.widget == forced_removeAllBtn) { forced_hdrs_list.removeAll(); forced_removeBtn.setEnabled(false); forced_removeAllBtn.setEnabled(false); } else if (e.widget == show_btn) { GridData data = (GridData) adv_options_comp.getLayoutData(); data.exclude = false; adv_options_comp.setVisible(true); ((StackLayout) show_hide_button_comp.getLayout()).topControl = hide_btn; show_hide_button_comp.layout(); } else if (e.widget == hide_btn) { GridData data = (GridData) adv_options_comp.getLayoutData(); data.exclude = true; adv_options_comp.setVisible(false); ((StackLayout) show_hide_button_comp.getLayout()).topControl = show_btn; show_hide_button_comp.layout(); } if (!shell.isDisposed()) { hdrGrp.layout(); shell.layout(); } } private void updateButtons() { forced_removeBtn.setEnabled(forced_hdrs_list.getItemCount() > 0); forced_removeAllBtn.setEnabled(forced_hdrs_list.getItemCount() > 0); if (radio_Hdr_dir.getSelection()) { removeBtn_hdrGrp.setEnabled(hdr_dir_list.getItemCount() > 0); removeAllBtn_hdrGrp.setEnabled(hdr_dir_list.getItemCount() > 0); } else { removeBtn_hdrGrp.setEnabled(radio_Hdr_dir.getSelection()); removeAllBtn_hdrGrp.setEnabled(radio_Hdr_dir.getSelection()); } removeBtn_sysIncGrp.setEnabled(list_systemInc.getItemCount() > 0); removeAllBtn_sysIncGrp.setEnabled(list_systemInc.getItemCount() > 0); removeDsoDir_Btn.setEnabled(radio_dir_Libs.getSelection() && dso_dir_list.getItemCount() > 0); removeAllDsoDirs_Btn.setEnabled(radio_dir_Libs.getSelection() && dso_dir_list.getItemCount() > 0); removeDllDir_btn.setEnabled(radio_dir_Libs.getSelection() && dll_dir_list.getItemCount() > 0); removeAllDllDir_Btn.setEnabled(radio_dir_Libs.getSelection() && dll_dir_list.getItemCount() > 0); } private boolean isPreviouslySelected(String fileName) { for (String item : forced_hdrs_list.getItems()) { if (item.equalsIgnoreCase(fileName)) return true; } return false; } public void setHelp() { PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, HelpContextIDs.BASELINE_EDITOR_HELP); } public void UpdateFilesList() { } public void UpdatePage() { updateButtons(); } public void modifyText(ModifyEvent e) { if (e.widget == profileCmb) { Object obj = (BaselineProfile) BaselineProfileUtils.getBaselineProfileData(profileCmb.getText()); if (obj instanceof BaselineProfile && ((BaselineProfile) obj).isPredefined()) { shell.getShell().setText(Messages.getString("BaselineEditor.BaselineEditor-") + profileCmb.getText() + " (Read-only)"); setEditorEnabled(false); } else { shell.getShell() .setText(Messages.getString("BaselineEditor.BaselineEditor-") + profileCmb.getText()); setEditorEnabled(true); } } } public void setEditorEnabled(boolean flag) { sdkCmb.setEnabled(flag); versionCmb.setEnabled(flag); infCheck.setEnabled(flag); bldInfPath.setEnabled(infCheck.getEnabled() && infCheck.getSelection()); browseBld.setEnabled(bldInfPath.getEnabled()); hdrGrp.setEnabled(flag); libGrp.setEnabled(flag); forcedGrp.setEnabled(flag); deleteBtn.setEnabled(flag); } public boolean isMetadataFileUpdated() { IPreferenceStore prefStore = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore(); String currentURL = prefStore.getString(CompatibilityAnalyserPreferencesConstants.BASELINES_URL); String prevURL = prefStore.getString(CompatibilityAnalyserPreferencesConstants.PREVIOUS_BASELINE_URL); Long lastModified_metadata = prefStore .getLong(CompatibilityAnalyserPreferencesConstants.LASTMODIFIED_DATE_METADATA); if (!prevURL.equals("") && prevURL.equals(currentURL)) { try { URL url = new URL(currentURL); URLConnection connection = url.openConnection(); Long webServerModTime = connection.getLastModified(); if (webServerModTime <= lastModified_metadata) return false; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return true; } /** * @param path * @param monitor */ private void getFiles(String path, IProgressMonitor monitor) { File rootDir = new File(path); if (rootDir.isDirectory()) { String[] fileNames = rootDir.list(new FilenameFilter() { public boolean accept(File file, String name) { File temp = new File(FileMethods.appendPathSeparator(file.getAbsolutePath()) + name); if (temp.isFile() && CompatibilityAnalyserEngine.isSupportedType(name)) return true; return false; } }); if (fileNames == null) return; for (String name : fileNames) { if (monitor != null && monitor.isCanceled()) { isMonitorCancelled = true; displayFiles.clear(); children.clear(); subChildren.clear(); monitor.done(); return; } if (!numOfFiles.contains(name)) numOfFiles.add(name); if (path.equalsIgnoreCase(absolutePath)) { children.add(name); } else subChildren.add(name); } } } /** * * @param path * @param monitor */ private void getFilesFromSubDirs(String path, IProgressMonitor monitor) { File rootDir = new File(path); if (rootDir.isDirectory()) { String[] dirNames = rootDir.list(new FilenameFilter() { public boolean accept(File file, String name) { File temp = new File(FileMethods.appendPathSeparator(file.getAbsolutePath()) + name); if (temp.isDirectory()) return true; return false; } }); if (dirNames != null) { for (String name : dirNames) { getFiles(FileMethods.appendPathSeparator(path) + name, monitor); if (monitor != null && monitor.isCanceled()) { isMonitorCancelled = true; displayFiles.clear(); children.clear(); subChildren.clear(); monitor.done(); return; } } for (String name : dirNames) { getFilesFromSubDirs(FileMethods.appendPathSeparator(path) + name, monitor); } } } } /** * This will add exported paths of the given project to the given list. * @param prjInfo * @param usrIncList */ private static void getExportPathsAndFiles(ICarbideProjectInfo prjInfo, ArrayList<File> usrIncList) { DefaultViewConfiguration viewConfig = new DefaultViewConfiguration(prjInfo); EpocEnginePathHelper pathHelper = new EpocEnginePathHelper(prjInfo.getProject()); IDocument doc = viewConfig.getViewParserConfiguration().getModelDocumentProvider() .getDocument(prjInfo.getAbsoluteBldInfPath().toFile()); BldInfModelFactory factory = new BldInfModelFactory(); IPath wsPath = prjInfo.getAbsoluteBldInfPath(); IBldInfOwnedModel bldInfModel = factory.createModel(wsPath, doc); bldInfModel.parse(); IBldInfView view = bldInfModel.createView(viewConfig); IBldInfData data = view.getData(); java.util.List<IExport> exports = data.getExports(); for (IExport xport : exports) { IPath exportPath = pathHelper.convertToFilesystem(xport.getSourcePath()); File parentFolder = exportPath.toFile().getParentFile(); if (!usrIncList.contains(parentFolder)) usrIncList.add(parentFolder); } } }