Update of /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4332/src/org/epic/debug Modified Files: LaunchConfigurationDialogCGI.java LaunchConfigurationDelegate.java RunTarget.java DebugTarget.java PerlLaunchConfigurationConstants.java PerlDebugPlugin.java Target.java LaunchConfigurationMainTab.java PerlDB.java ManageBreakpointRulerAction.java Added Files: LaunchConfigurationCGIMainTab.java CGITarget.java LaunchConfigurationCGIBrowserTab.java Log Message: Done some code cleanup and added (draft) CGI debugging features Index: LaunchConfigurationDialogCGI.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/LaunchConfigurationDialogCGI.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- LaunchConfigurationDialogCGI.java 20 Mar 2004 08:15:30 -0000 1.1 +++ LaunchConfigurationDialogCGI.java 12 Apr 2004 17:16:01 -0000 1.2 @@ -30,7 +30,7 @@ ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] { - new LaunchConfigurationMainTab(),new org.eclipse.debug.ui.CommonTab() + new LaunchConfigurationCGIMainTab(),new org.eclipse.debug.ui.CommonTab(), new LaunchConfigurationCGIBrowserTab() }; setTabs(tabs); } Index: LaunchConfigurationMainTab.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/LaunchConfigurationMainTab.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- LaunchConfigurationMainTab.java 31 Mar 2004 19:43:13 -0000 1.4 +++ LaunchConfigurationMainTab.java 12 Apr 2004 17:16:01 -0000 1.5 @@ -53,18 +53,17 @@ import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; import org.eclipse.core.resources.IProject; +public class LaunchConfigurationMainTab extends AbstractLaunchConfigurationTab +{ -public class LaunchConfigurationMainTab - extends AbstractLaunchConfigurationTab { - -/** - * A launch configuration tab that displays and edits project and - * main type name launch configuration attributes. - * <p> - * This class may be instantiated. This class is not intended to be subclassed. - * </p> - * @since 2.0 - */ + /** + * A launch configuration tab that displays and edits project and + * main type name launch configuration attributes. + * <p> + * This class may be instantiated. This class is not intended to be subclassed. + * </p> + * @since 2.0 + */ // Project UI widgets protected Label fProjLabel; @@ -76,26 +75,25 @@ // Main class UI widgets protected Label fMainLabel; protected Combo fMainText; -// protected Button fSearchButton; -// protected Button fSearchExternalJarsCheckButton; -// protected Button fStopInMainCheckButton; + // protected Button fSearchButton; + // protected Button fSearchExternalJarsCheckButton; + // protected Button fStopInMainCheckButton; protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ - + private static final String PERL_NATURE_ID = - "org.epic.perleditor.perlnature"; + "org.epic.perleditor.perlnature"; - - /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(Composite) */ - public void createControl(Composite parent) { + public void createControl(Composite parent) + { Font font = parent.getFont(); Composite comp = new Composite(parent, SWT.NONE); setControl(comp); - + GridLayout topLayout = new GridLayout(); comp.setLayout(topLayout); GridData gd; @@ -118,15 +116,18 @@ gd.horizontalSpan = 2; fProjLabel.setLayoutData(gd); fProjLabel.setFont(font); - + //fParamText = new Text(projComp, SWT.SINGLE | SWT.BORDER); - fProjText = new Combo(projComp, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); + fProjText = + new Combo(projComp, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); gd = new GridData(GridData.FILL_HORIZONTAL); fProjText.setLayoutData(gd); fProjText.setFont(font); fProjText.setItems(getPerlProjects()); - fProjText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent evt) { + fProjText.addModifyListener(new ModifyListener() + { + public void modifyText(ModifyEvent evt) + { updateLaunchConfigurationDialog(); fMainText.setItems(getPerlFiles()); } @@ -160,16 +161,19 @@ fMainLabel.setFont(font); //fMainText = new Text(mainComp, SWT.SINGLE | SWT.BORDER); - fMainText = new Combo(mainComp, SWT.READ_ONLY | SWT.SINGLE | SWT.BORDER); + fMainText = + new Combo(mainComp, SWT.READ_ONLY | SWT.SINGLE | SWT.BORDER); gd = new GridData(GridData.FILL_HORIZONTAL); fMainText.setLayoutData(gd); fMainText.setFont(font); - fMainText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent evt) { + fMainText.addModifyListener(new ModifyListener() + { + public void modifyText(ModifyEvent evt) + { updateLaunchConfigurationDialog(); } }); - + createVerticalSpacer(comp, 2); Composite paramComp = new Composite(comp, SWT.NONE); GridLayout paramLayout = new GridLayout(); @@ -187,142 +191,171 @@ gd.horizontalSpan = 2; fParamLabel.setLayoutData(gd); fParamLabel.setFont(font); - + fParamText = new Text(paramComp, SWT.SINGLE | SWT.BORDER); - + gd = new GridData(GridData.FILL_HORIZONTAL); fParamText.setLayoutData(gd); fParamText.setFont(font); - fParamText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent evt) { - updateLaunchConfigurationDialog(); - } - }); - - /* fSearchButton = createPushButton(mainComp,LauncherMessages.getString("JavaMainTab.Searc&h_5"), null); //$NON-NLS-1$ - fSearchButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent evt) { - handleSearchButtonSelected(); - } - }); - - fSearchExternalJarsCheckButton = new Button(mainComp, SWT.CHECK); - fSearchExternalJarsCheckButton.setText(LauncherMessages.getString("JavaMainTab.E&xt._jars_6")); //$NON-NLS-1$ - fSearchExternalJarsCheckButton.setFont(font); - fSearchExternalJarsCheckButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent evt) { + fParamText.addModifyListener(new ModifyListener() + { + public void modifyText(ModifyEvent evt) + { updateLaunchConfigurationDialog(); } }); - fStopInMainCheckButton = new Button(comp, SWT.CHECK); - fStopInMainCheckButton.setText(LauncherMessages.getString("JavaMainTab.St&op_in_main_1")); //$NON-NLS-1$ - fStopInMainCheckButton.setFont(font); - fStopInMainCheckButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent evt) { - updateLaunchConfigurationDialog(); - } - }); - */ + /* fSearchButton = createPushButton(mainComp,LauncherMessages.getString("JavaMainTab.Searc&h_5"), null); //$NON-NLS-1$ + fSearchButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent evt) { + handleSearchButtonSelected(); + } + }); + + fSearchExternalJarsCheckButton = new Button(mainComp, SWT.CHECK); + fSearchExternalJarsCheckButton.setText(LauncherMessages.getString("JavaMainTab.E&xt._jars_6")); //$NON-NLS-1$ + fSearchExternalJarsCheckButton.setFont(font); + fSearchExternalJarsCheckButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent evt) { + updateLaunchConfigurationDialog(); + } + }); + + fStopInMainCheckButton = new Button(comp, SWT.CHECK); + fStopInMainCheckButton.setText(LauncherMessages.getString("JavaMainTab.St&op_in_main_1")); //$NON-NLS-1$ + fStopInMainCheckButton.setFont(font); + fStopInMainCheckButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent evt) { + updateLaunchConfigurationDialog(); + } + }); + */ } /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(ILaunchConfiguration) */ - public void initializeFrom(ILaunchConfiguration config) { + public void initializeFrom(ILaunchConfiguration config) + { updateProjectFromConfig(config); fMainText.setItems(getPerlFiles()); updateMainTypeFromConfig(config); updateParamsFromConfig(config); } - protected void updateProjectFromConfig(ILaunchConfiguration config) { + protected void updateProjectFromConfig(ILaunchConfiguration config) + { String projectName = ""; //$NON-NLS-1$ - try { - projectName = config.getAttribute(PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, EMPTY_STRING); - } catch (CoreException ce) { + try + { + projectName = + config.getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, + EMPTY_STRING); + } catch (CoreException ce) + { PerlDebugPlugin.log(ce); } fProjText.setText(projectName); } - -protected void updateParamsFromConfig(ILaunchConfiguration config) { + + protected void updateParamsFromConfig(ILaunchConfiguration config) + { String params = ""; //$NON-NLS-1$ - try { - params = config.getAttribute(PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, EMPTY_STRING); - } catch (CoreException ce) { + try + { + params = + config.getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, + EMPTY_STRING); + } catch (CoreException ce) + { PerlDebugPlugin.log(ce); } fParamText.setText(params); } - protected void updateMainTypeFromConfig(ILaunchConfiguration config) { + protected void updateMainTypeFromConfig(ILaunchConfiguration config) + { String mainTypeName = ""; //$NON-NLS-1$ - try { - mainTypeName = config.getAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, EMPTY_STRING); - } catch (CoreException ce) { + try + { + mainTypeName = + config.getAttribute( + PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, + EMPTY_STRING); + } catch (CoreException ce) + { PerlDebugPlugin.log(ce); } fMainText.setText(mainTypeName); } - /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(ILaunchConfigurationWorkingCopy) */ - public void performApply(ILaunchConfigurationWorkingCopy config) { - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, (String)fProjText.getText()); - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, (String)fMainText.getText()); - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, (String)fParamText.getText()); + public void performApply(ILaunchConfigurationWorkingCopy config) + { + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, + (String) fProjText.getText()); + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, + (String) fMainText.getText()); + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, + (String) fParamText.getText()); } /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#dispose() */ - public void dispose() { + public void dispose() + { } /** * Show a dialog that lists all main types */ - protected void handleSearchButtonSelected() { - - /* IJavaProject javaProject = getJavaProject(); - IJavaSearchScope searchScope = null; - if ((javaProject == null) || !javaProject.exists()) { - searchScope = SearchEngine.createWorkspaceScope(); - } else { - searchScope = SearchEngine.createJavaSearchScope(new IJavaElement[] {javaProject}, false); - } - - int constraints = IJavaElementSearchConstants.CONSIDER_BINARIES; - if (fSearchExternalJarsCheckButton.getSelection()) { - constraints |= IJavaElementSearchConstants.CONSIDER_EXTERNAL_JARS; - } - - Shell shell = getShell(); - SelectionDialog dialog = JavaUI.createMainTypeDialog(shell, - getLaunchConfigurationDialog(), - searchScope, - constraints, - false, - fMainText.getText()); - dialog.setTitle(LauncherMessages.getString("JavaMainTab.Choose_Main_Type_11")); //$NON-NLS-1$ - dialog.setMessage(LauncherMessages.getString("JavaMainTab.Choose_a_main_&type_to_launch__12")); //$NON-NLS-1$ - if (dialog.open() == SelectionDialog.CANCEL) { - return; - } + protected void handleSearchButtonSelected() + { - Object[] results = dialog.getResult(); - if ((results == null) || (results.length < 1)) { - return; - } - IType type = (IType)results[0]; - if (type != null) { - fMainText.setText(type.getFullyQualifiedName()); - javaProject = type.getJavaProject(); - fProjText.setText(javaProject.getElementName()); - }*/ + /* IJavaProject javaProject = getJavaProject(); + IJavaSearchScope searchScope = null; + if ((javaProject == null) || !javaProject.exists()) { + searchScope = SearchEngine.createWorkspaceScope(); + } else { + searchScope = SearchEngine.createJavaSearchScope(new IJavaElement[] {javaProject}, false); + } + + int constraints = IJavaElementSearchConstants.CONSIDER_BINARIES; + if (fSearchExternalJarsCheckButton.getSelection()) { + constraints |= IJavaElementSearchConstants.CONSIDER_EXTERNAL_JARS; + } + + Shell shell = getShell(); + SelectionDialog dialog = JavaUI.createMainTypeDialog(shell, + getLaunchConfigurationDialog(), + searchScope, + constraints, + false, + fMainText.getText()); + dialog.setTitle(LauncherMessages.getString("JavaMainTab.Choose_Main_Type_11")); //$NON-NLS-1$ + dialog.setMessage(LauncherMessages.getString("JavaMainTab.Choose_a_main_&type_to_launch__12")); //$NON-NLS-1$ + if (dialog.open() == SelectionDialog.CANCEL) { + return; + } + + Object[] results = dialog.getResult(); + if ((results == null) || (results.length < 1)) { + return; + } + IType type = (IType)results[0]; + if (type != null) { + fMainText.setText(type.getFullyQualifiedName()); + javaProject = type.getJavaProject(); + fProjText.setText(javaProject.getElementName()); + }*/ } /** @@ -330,80 +363,87 @@ * context for the main type, allowing the user to key a main type name, or * constraining the search for main types to the specified project. */ - protected void handleProjectButtonSelected() { - /* IJavaProject project = chooseJavaProject(); - if (project == null) { - return; - } - - String projectName = project.getElementName(); - fProjText.setText(projectName);*/ + protected void handleProjectButtonSelected() + { + /* IJavaProject project = chooseJavaProject(); + if (project == null) { + return; + } + + String projectName = project.getElementName(); + fProjText.setText(projectName);*/ } /** * Realize a Java Project selection dialog and return the first selected project, * or null if there was none. */ - protected IProject choosePerlProject() { + protected IProject choosePerlProject() + { IProject[] projects; - try { - // projects= JavaCore.create(getWorkspaceRoot()).getJavaProjects(); - } catch (Exception e) { + try + { + // projects= JavaCore.create(getWorkspaceRoot()).getJavaProjects(); + } catch (Exception e) + { PerlDebugPlugin.log(e); - // projects= new IJavaProject[0]; - } -/* - ILabelProvider labelProvider= new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); - ElementListSelectionDialog dialog= new ElementListSelectionDialog(getShell(), labelProvider); - dialog.setTitle(LauncherMessages.getString("JavaMainTab.Project_Selection_13")); //$NON-NLS-1$ - dialog.setMessage(LauncherMessages.getString("JavaMainTab.Choose_a_&project_to_constrain_the_search_for_main_types__14")); //$NON-NLS-1$ - dialog.setElements(projects); - - IJavaProject javaProject = getJavaProject(); - if (javaProject != null) { - dialog.setInitialSelections(new Object[] { javaProject }); + // projects= new IJavaProject[0]; } - if (dialog.open() == ElementListSelectionDialog.OK) { - return (IJavaProject) dialog.getFirstResult(); - }*/ + /* + ILabelProvider labelProvider= new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); + ElementListSelectionDialog dialog= new ElementListSelectionDialog(getShell(), labelProvider); + dialog.setTitle(LauncherMessages.getString("JavaMainTab.Project_Selection_13")); //$NON-NLS-1$ + dialog.setMessage(LauncherMessages.getString("JavaMainTab.Choose_a_&project_to_constrain_the_search_for_main_types__14")); //$NON-NLS-1$ + dialog.setElements(projects); + + IJavaProject javaProject = getJavaProject(); + if (javaProject != null) { + dialog.setInitialSelections(new Object[] { javaProject }); + } + if (dialog.open() == ElementListSelectionDialog.OK) { + return (IJavaProject) dialog.getFirstResult(); + }*/ return null; } - - /** * Convenience method to get the workspace root. */ - private IWorkspaceRoot getWorkspaceRoot() { + private IWorkspaceRoot getWorkspaceRoot() + { return ResourcesPlugin.getWorkspace().getRoot(); } - - /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(ILaunchConfiguration) */ - public boolean isValid(ILaunchConfiguration config) { + public boolean isValid(ILaunchConfiguration config) + { setErrorMessage(null); setMessage(null); String name = fProjText.getText().trim(); - if (name.length() > 0) + if (name.length() > 0) + { + if (!ResourcesPlugin + .getWorkspace() + .getRoot() + .getProject(name) + .exists()) { - if (!ResourcesPlugin.getWorkspace().getRoot().getProject(name).exists()) { - setErrorMessage("Project does not exist"); //$NON-NLS-1$ - return false; - } + setErrorMessage("Project does not exist"); //$NON-NLS-1$ + return false; } - else + } else { setErrorMessage("Specify Project"); //$NON-NLS-1$ - return false; + return false; } - + name = fMainText.getText().trim(); - if (name.length() == 0) { + if (name.length() == 0) + { setErrorMessage("Startup File is not specified"); //$NON-NLS-1$ return false; } @@ -414,154 +454,176 @@ /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(ILaunchConfigurationWorkingCopy) */ - public void setDefaults(ILaunchConfigurationWorkingCopy config) { - /* IJavaElement javaElement = getContext(); - if (javaElement != null) { - initializeJavaProject(javaElement, config); - } else {*/ - // We set empty attributes for project & main type so that when one config is - // compared to another, the existence of empty attributes doesn't cause an - // incorrect result (the performApply() method can result in empty values - // for these attributes being set on a config if there is nothing in the - // corresponding text boxes) - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$ - // } - // initializeMainTypeAndName(javaElement, config); - - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, ""); - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, ""); - - + public void setDefaults(ILaunchConfigurationWorkingCopy config) + { + /* IJavaElement javaElement = getContext(); + if (javaElement != null) { + initializeJavaProject(javaElement, config); + } else {*/ + // We set empty attributes for project & main type so that when one config is + // compared to another, the existence of empty attributes doesn't cause an + // incorrect result (the performApply() method can result in empty values + // for these attributes being set on a config if there is nothing in the + // corresponding text boxes) + config.setAttribute(PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$ + // } + // initializeMainTypeAndName(javaElement, config); + + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, + ""); + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, + ""); + } /** * Set the main type & name attributes on the working copy based on the IJavaElement */ -/* protected void initializeMainTypeAndName(IJavaElement javaElement, ILaunchConfigurationWorkingCopy config) { - String name= null; - if (javaElement instanceof IMember) { - IMember member = (IMember)javaElement; - if (member.isBinary()) { - javaElement = member.getClassFile(); - } else { - javaElement = member.getCompilationUnit(); + /* protected void initializeMainTypeAndName(IJavaElement javaElement, ILaunchConfigurationWorkingCopy config) { + String name= null; + if (javaElement instanceof IMember) { + IMember member = (IMember)javaElement; + if (member.isBinary()) { + javaElement = member.getClassFile(); + } else { + javaElement = member.getCompilationUnit(); + } } - } - if (javaElement instanceof ICompilationUnit || javaElement instanceof IClassFile) { - try { - IType[] types = MainMethodFinder.findTargets(new BusyIndicatorRunnableContext(), new Object[] {javaElement}); - if (types != null && (types.length > 0)) { - // Simply grab the first main type found in the searched element - name = types[0].getFullyQualifiedName(); + if (javaElement instanceof ICompilationUnit || javaElement instanceof IClassFile) { + try { + IType[] types = MainMethodFinder.findTargets(new BusyIndicatorRunnableContext(), new Object[] {javaElement}); + if (types != null && (types.length > 0)) { + // Simply grab the first main type found in the searched element + name = types[0].getFullyQualifiedName(); + } + } catch (InterruptedException ie) { + } catch (InvocationTargetException ite) { } - } catch (InterruptedException ie) { - } catch (InvocationTargetException ite) { } - } - if (name == null) { - name= ""; //$NON-NLS-1$ - } - config.setAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, name); - if (name.length() > 0) { - int index = name.lastIndexOf('.'); - if (index > 0) { - name = name.substring(index + 1); + if (name == null) { + name= ""; //$NON-NLS-1$ + } + config.setAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, name); + if (name.length() > 0) { + int index = name.lastIndexOf('.'); + if (index > 0) { + name = name.substring(index + 1); + } + name = getLaunchConfigurationDialog().generateName(name); + config.rename(name); } - name = getLaunchConfigurationDialog().generateName(name); - config.rename(name); } - } -*/ + */ /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName() */ - public String getName() { + public String getName() + { return "Configuration"; //$NON-NLS-1$ } /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage() */ - public Image getImage() { - return( PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( PerlDebugImages.DESC_OBJS_LaunchTabMain)); + public Image getImage() + { + return ( + PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( + PerlDebugImages.DESC_OBJS_LaunchTabMain)); } - + /** * Returns a String array whith all Perl projects * @return Stiring[] List of Perl projects */ - private String[] getPerlProjects() { + private String[] getPerlProjects() + { List projectList = new ArrayList(); IWorkspaceRoot workspaceRoot = PerlDebugPlugin.getWorkspace().getRoot(); - IProject[] projects = workspaceRoot.getProjects(); - for(int i = 0; i < projects.length; i++) { - IProject project = projects[i]; - try { - if (project.exists() && project.hasNature(PERL_NATURE_ID)) { - //System.out.println("Perl Project: " + project.getName()); - projectList.add(project.getName()); - } - } catch (CoreException e) { - e.printStackTrace(); - } - - } - - return (String[]) projectList.toArray(new String[projectList.size()]); + IProject[] projects = workspaceRoot.getProjects(); + for (int i = 0; i < projects.length; i++) + { + IProject project = projects[i]; + try + { + if (project.exists() && project.hasNature(PERL_NATURE_ID)) + { + //System.out.println("Perl Project: " + project.getName()); + projectList.add(project.getName()); + } + } catch (CoreException e) + { + e.printStackTrace(); + } + + } + + return (String[]) projectList.toArray(new String[projectList.size()]); } - - private String[] getPerlFiles() { + + private String[] getPerlFiles() + { String projectName = fProjText.getText(); - - if(projectName == null || projectName.length() == 0) { - return(new String[] {}); + + if (projectName == null || projectName.length() == 0) + { + return (new String[] { + }); } - + IWorkspaceRoot workspaceRoot = PerlDebugPlugin.getWorkspace().getRoot(); - IProject project =workspaceRoot.getProject(projectName); + IProject project = workspaceRoot.getProject(projectName); IResourceVisitor visitor = new PerlProjectVisitor(); - try { + try + { project.accept(visitor); - } catch (CoreException e) { + } catch (CoreException e) + { e.printStackTrace(); } - return ((PerlProjectVisitor)visitor).getList(); + return ((PerlProjectVisitor) visitor).getList(); } - -} -class PerlProjectVisitor implements IResourceVisitor { - private static final String PERL_EDITOR_ID = + class PerlProjectVisitor implements IResourceVisitor + { + private static final String PERL_EDITOR_ID = "org.epic.perleditor.editors.PerlEditor"; private static final String EMB_PERL_FILE_EXTENSION = "epl"; - - private List fileList = new ArrayList(); - /* (non-Javadoc) - * @see org.eclipse.core.resources.IResourceVisitor#visit(org.eclipse.core.resources.IResource) - */ - public boolean visit(IResource resource) throws CoreException { - IEditorDescriptor defaultEditorDescriptor = - PerlDebugPlugin - .getDefault() - .getWorkbench() - .getEditorRegistry() - .getDefaultEditor(resource.getFullPath().toString()); - - - if(defaultEditorDescriptor == null) { + + private List fileList = new ArrayList(); + /* (non-Javadoc) + * @see org.eclipse.core.resources.IResourceVisitor#visit(org.eclipse.core.resources.IResource) + */ + public boolean visit(IResource resource) throws CoreException + { + IEditorDescriptor defaultEditorDescriptor = + PerlDebugPlugin + .getDefault() + .getWorkbench() + .getEditorRegistry() + .getDefaultEditor(resource.getFullPath().toString()); + + if (defaultEditorDescriptor == null) + { + return true; + } + + if (defaultEditorDescriptor.getId().equals(PERL_EDITOR_ID) + && !resource.getFileExtension().equals(EMB_PERL_FILE_EXTENSION)) + { + fileList.add( + resource.getFullPath().removeFirstSegments(1).toString()); + } + return true; } - - if (defaultEditorDescriptor.getId().equals(PERL_EDITOR_ID) - && !resource.getFileExtension().equals(EMB_PERL_FILE_EXTENSION)) { - fileList.add(resource.getFullPath().removeFirstSegments(1).toString()); + + public String[] getList() + { + return (String[]) fileList.toArray(new String[fileList.size()]); } - - return true; - } - public String[] getList() { - return (String[]) fileList.toArray(new String[fileList.size()]); } - -} +} \ No newline at end of file Index: ManageBreakpointRulerAction.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/ManageBreakpointRulerAction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ManageBreakpointRulerAction.java 13 Feb 2004 17:41:50 -0000 1.2 +++ ManageBreakpointRulerAction.java 12 Apr 2004 17:16:01 -0000 1.3 @@ -204,8 +204,8 @@ int line= getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); new PerlLineBreakpoint(getResource(),line+1); - } catch (Throwable e){ - PerlDebugPlugin.errorDialog("ManageBreakpointRulerAction error adding Breakpoint", e); //$NON-NLS-1$ + } catch (Exception e){ + PerlDebugPlugin.getDefault().logError("ManageBreakpointRulerAction error adding Breakpoint", e); //$NON-NLS-1$ } @@ -220,7 +220,7 @@ breakpointManager.removeBreakpoint(breakpoint, true); } } catch (CoreException e) { - PerlDebugPlugin.errorDialog("ManageBreakpointRulerAction.error.removing.message1", e); //$NON-NLS-1$ + PerlDebugPlugin.getDefault().logError("ManageBreakpointRulerAction.error.removing.message1", e); //$NON-NLS-1$ } } Index: LaunchConfigurationDelegate.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/LaunchConfigurationDelegate.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- LaunchConfigurationDelegate.java 29 Mar 2004 18:18:50 -0000 1.4 +++ LaunchConfigurationDelegate.java 12 Apr 2004 17:16:01 -0000 1.5 @@ -17,30 +17,31 @@ * Window>Preferences>Java>Code Generation. */ public class LaunchConfigurationDelegate - implements ILaunchConfigurationDelegate { - + implements ILaunchConfigurationDelegate +{ + private ILaunchConfiguration mLaunchConfiguration; + Target mTarget; + ILaunch mLaunch; /** * Constructor for LaunchConfigurationDelegate. */ - public LaunchConfigurationDelegate() { + public LaunchConfigurationDelegate() + { super(); } - - /** * Convenience method to get the launch manager. * * @return the launch manager */ - protected ILaunchManager getLaunchManager() { + protected ILaunchManager getLaunchManager() + { return DebugPlugin.getDefault().getLaunchManager(); } - - /** * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(ILaunchConfiguration, String, ILaunch, IProgressMonitor) */ @@ -49,26 +50,55 @@ String mode, ILaunch launch, IProgressMonitor monitor) - throws CoreException { - - Target target; + throws CoreException + { + mLaunchConfiguration = configuration; - System.out.println("Launch: "+mLaunchConfiguration.getLocation()); - launch.setSourceLocator(new SourceLocator ()); - if( launch.getLaunchMode().equals(ILaunchManager.DEBUG_MODE) ) + mLaunch = launch; + + System.out.println("Launch: " + mLaunchConfiguration.getLocation()); + + String cgi = launch.getLaunchConfiguration().getAttribute(PerlLaunchConfigurationConstants.ATTR_DEBUG_CGI,((String)null)); + + launch.setSourceLocator(new SourceLocator()); + + if( cgi != null ) { - target =new DebugTarget(launch); - launch.addDebugTarget( target ); - ((DebugTarget)target).getDebuger().generateDebugInitEvent(); + mTarget =new CGITarget(launch); + //target = new CGITarget(launch); + Thread start = + new Thread() + { + public void run() + { + mTarget.start(); + mLaunch.addDebugTarget(mTarget); + ((DebugTarget) mTarget).getDebuger().generateDebugInitEvent(); + }; + }; + + start.start(); + + +// mTarget.start(); +// mLaunch.addDebugTarget(mTarget); + //((DebugTarget) mTarget).getDebuger().generateDebugInitEvent(); } - else + else + if (launch.getLaunchMode().equals(ILaunchManager.DEBUG_MODE)) { - target =new RunTarget(launch); - launch.addDebugTarget( target ); - } - - - + mTarget =new DebugTarget(launch); + //target = new CGITarget(launch); + mTarget.start(); + mLaunch.addDebugTarget(mTarget); + ((DebugTarget) mTarget).getDebuger().generateDebugInitEvent(); + } else + { + mTarget = new RunTarget(launch); + mTarget.start(); + mLaunch.addDebugTarget(mTarget); } + } + } Index: Target.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/Target.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Target.java 3 Apr 2004 20:42:34 -0000 1.3 +++ Target.java 12 Apr 2004 17:16:01 -0000 1.4 @@ -2,13 +2,17 @@ import java.io.File; import java.io.IOException; +import java.net.URL; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Platform; +import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchManager; +import org.eclipse.debug.core.Launch; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.core.DebugPlugin; @@ -24,141 +28,290 @@ * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public abstract class Target implements IDebugTarget { +public abstract class Target implements IDebugTarget +{ - private IPath mWorkinkDir; + private IPath mProjectDir; + private String mStartupFile; + private IPath mWorkingDir; ILaunch mLaunch; - IProcess mProcess; + IProcess mProcess; Process mJavaProcess; - final static String EMPTY_STRING=""; - String mProcessName ; - + final static String EMPTY_STRING = ""; + String mProcessName; /** * Constructor for DebugTarget. */ - public Target() { + public Target() + { super(); } -/** - * Constructor for DebugTarget. - */ - public Target(ILaunch launch) { + /** + * Constructor for DebugTarget. + */ + public Target(ILaunch launch) + { super(); mLaunch = launch; - } + initPath(); + // ((PerlDebugPlugin)PerlDebugPlugin.getDefault()).registerDebugTarget(this); + } /** * @see org.eclipse.debug.core.model.IDebugTarget#getProcess() */ - public IProcess getProcess() { + public IProcess getProcess() + { return mProcess; } - - public void setProcess( IProcess fProcess) + + public void setProcess(IProcess fProcess) { mProcess = fProcess; } - - - - /** * @see org.eclipse.debug.core.model.IDebugTarget#getName() */ - public String getName() throws DebugException { - + public String getName() throws DebugException + { + return (mProcessName); } - /** - * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget() - */ - public IDebugTarget getDebugTarget() { + /** + * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget() + */ + public IDebugTarget getDebugTarget() + { return this; } /** * @see org.eclipse.debug.core.model.IDebugElement#getLaunch() */ - public ILaunch getLaunch() { + public ILaunch getLaunch() + { return mLaunch; } - + public String getPlugInDir() + { + URL installURL = + PerlDebugPlugin.getDefault().getDescriptor().getInstallURL(); + try + { + installURL = Platform.resolve(installURL); + } catch (IOException e) + { + PerlDebugPlugin.getDefault().logError( + "Error retrieving Plugin dir", + e); + } + return (installURL.getPath()); + } + + public String getJavaHome() + { + return (System.getProperty("java.home")); + } + + void initPath() + { + String startfile = null; + String prjName = null; + String progParams = null; + + try + { + startfile = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, + EMPTY_STRING); + prjName = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, + EMPTY_STRING); + + } catch (Exception ce) + { + PerlDebugPlugin.log(ce); + } + IProject prj = + PerlDebugPlugin.getWorkspace().getRoot().getProject(prjName); + + mProjectDir = prj.getLocation(); + IPath path = mProjectDir.append(startfile); + + mWorkingDir = path.removeLastSegments(1); + mStartupFile = path.lastSegment(); + + } Process startPerlProcess() + { + String startfile = null; + String prjName = null; + String progParams = null; + mProcessName = "Perl-Interpreter"; + try + { + startfile = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE, + EMPTY_STRING); + prjName = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, + EMPTY_STRING); + progParams = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS, + EMPTY_STRING); + + } catch (Exception ce) + { + PerlDebugPlugin.log(ce); + } + + IProject prj = + PerlDebugPlugin.getWorkspace().getRoot().getProject(prjName); + + IPath workingDir = getWorkingDir(); + + List fCmdList = null; + try + { + fCmdList = + PerlExecutableUtilities.getPerlExecutableCommandLine(prj); + } catch (Exception e) + { + PerlDebugPlugin.getDefault().logError( + "Could not start Debug Process (Erroror assambling command line !", + e); + } + + if (mLaunch.getLaunchMode().equals(ILaunchManager.DEBUG_MODE)) + { + fCmdList.add("-d"); + mProcessName = "Perl-Debugger"; + } + if (PerlEditorPlugin.getDefault().getWarningsPreference()) + { + fCmdList.add("-w"); + } + + if (PerlEditorPlugin.getDefault().getTaintPreference()) { - String startfile = null; - String prjName = null; - String progParams = null; - mProcessName ="Perl-Interpreter"; - try { - startfile = mLaunch.getLaunchConfiguration().getAttribute(PerlLaunchConfigurationConstants.ATTR_STARTUP_FILE - , EMPTY_STRING); - prjName = mLaunch.getLaunchConfiguration().getAttribute(PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME - , EMPTY_STRING); - progParams = mLaunch.getLaunchConfiguration().getAttribute(PerlLaunchConfigurationConstants.ATTR_PROGRAM_PARAMETERS , EMPTY_STRING); - - } catch (Exception ce) {PerlDebugPlugin.log(ce);} - IProject prj = PerlDebugPlugin.getWorkspace().getRoot().getProject(prjName); - - IPath path = prj.getLocation().append(startfile); - IPath workingDir = path.removeLastSegments(1); - - List fCmdList = null; - try{ - fCmdList=PerlExecutableUtilities.getPerlExecutableCommandLine(prj); - } catch ( Exception e){ System.out.println(e);} - - - if( mLaunch.getLaunchMode().equals(ILaunchManager.DEBUG_MODE) ) - { - fCmdList.add("-d"); - mProcessName = "Perl-Debugger"; - } - if (PerlEditorPlugin.getDefault().getWarningsPreference()) - { - fCmdList.add("-w"); - } - - if (PerlEditorPlugin.getDefault().getTaintPreference()) - { fCmdList.add("-T"); - } - - fCmdList.add(startfile); - if( progParams.length() > 0) - { - ExecutionArguments exArgs = new ExecutionArguments(progParams); - fCmdList.addAll(exArgs.getProgramArgumentsL()); - } - String[] cmdParams = + } + + fCmdList.add(startfile); + if (progParams.length() > 0) + { + ExecutionArguments exArgs = new ExecutionArguments(progParams); + fCmdList.addAll(exArgs.getProgramArgumentsL()); + } + String[] cmdParams = (String[]) fCmdList.toArray(new String[fCmdList.size()]); - mWorkinkDir = workingDir; - try { - mJavaProcess= Runtime.getRuntime().exec( - cmdParams, - PerlDebugPlugin.getDebugEnv(), - new File(workingDir.toString())); - } catch (IOException e1) { - e1.printStackTrace(); - } - - // if( ! isTerminated()) - - - - /**************org***/ - mProcess = DebugPlugin.newProcess(mLaunch,mJavaProcess,mProcessName); - - return(mJavaProcess); + try + { + mJavaProcess = + Runtime.getRuntime().exec( + cmdParams, + PerlDebugPlugin.getDebugEnv(mLaunch), + new File(workingDir.toString())); + } catch (IOException e1) + { + PerlDebugPlugin.getDefault().logError( + "Could not start Debug Process!", + e1); + } + + // if( ! isTerminated()) + + /**************org***/ + mProcess = DebugPlugin.newProcess(mLaunch, mJavaProcess, mProcessName); + + return (mJavaProcess); + + } + + public IPath getWorkingDir() + { + return mWorkingDir; + } + + public IPath getProjectDir() + { + return mProjectDir; + } + public String getStartupFile() + { + return mStartupFile; + } + /** + * Fire a debug event marking the creation of this element. + */ + private void fireCreationEvent() + { + fireEvent(new DebugEvent(this, DebugEvent.CREATE)); + } + + void fireChangeEvent() + { + fireEvent(new DebugEvent(this, DebugEvent.CHANGE)); + } + void fireCreateEvent() + { + fireEvent(new DebugEvent(this, DebugEvent.CREATE)); + } + + /** + * Fire a debug event + */ + private void fireEvent(DebugEvent event) + { + DebugPlugin manager = DebugPlugin.getDefault(); + if (manager != null) + { + manager.fireDebugEventSet(new DebugEvent[] { event }); } - - IPath getWorkingDir() - { return mWorkinkDir;} - - + } + + /** + * Fire a debug event marking the termination of this process. + */ + void fireTerminateEvent() + { + fireEvent(new DebugEvent(this, DebugEvent.TERMINATE)); + } + + public void shutdown() + { + shutdown(true); + } + + public void shutdown(boolean unregister) + { + //((PerlDebugPlugin)PerlDebugPlugin.getDefault()).unregisterDebugTarget(this); + try + { + if (mProcess != null) + mProcess.terminate(); + } catch (DebugException e) + { + PerlDebugPlugin.getDefault().logError( + "Error Termonating " + mProcessName, + e); + } + + fireTerminateEvent(); + } + + public void start() + { + } } \ No newline at end of file Index: PerlDebugPlugin.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlDebugPlugin.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- PerlDebugPlugin.java 3 Apr 2004 20:42:34 -0000 1.9 +++ PerlDebugPlugin.java 12 Apr 2004 17:16:01 -0000 1.10 @@ -8,159 +8,198 @@ import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.swt.widgets.Shell; import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.debug.core.DebugPlugin -; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.core.IDebugEventSetListener; +import org.eclipse.debug.core.ILaunch; import org.epic.debug.util.LogWriter; import org.epic.perleditor.editors.util.PerlExecutableUtilities; - - /** * The main plugin class to be used in the desktop. */ -public class PerlDebugPlugin extends AbstractUIPlugin { - +public class PerlDebugPlugin extends AbstractUIPlugin +{ + final private static int mScreenLogLevel = 0; final private static int mLogLevel = Status.WARNING; - + //The shared instance. private static PerlDebugPlugin plugin; //Resource bundle. private ResourceBundle resourceBundle; - + private static String mSystemEnv[]; - private static String mDebugEnv[]; private static PerlBreakpointManager mBreakPointmanager; private ArrayList mDebugger; - - private static PerlImageDescriptorRegistry defaultPerlImageDescriptorRegistry = new PerlImageDescriptorRegistry(); - private final static String mDebugOptions = "PERLDB_OPTS=RemotePort=localhost:4444 DumpReused ReadLine=0";// frame=2"; + + private static PerlImageDescriptorRegistry defaultPerlImageDescriptorRegistry = + new PerlImageDescriptorRegistry(); + private final static String mDebugOptions = + "PERLDB_OPTS=RemotePort=localhost:4444 DumpReused ReadLine=0"; + + // frame=2"; /** * The constructor. */ - public PerlDebugPlugin(IPluginDescriptor descriptor) { + public PerlDebugPlugin(IPluginDescriptor descriptor) + { super(descriptor); plugin = this; - try { - resourceBundle= ResourceBundle.getBundle("org.epic.debug.DebugPluginResources"); - } catch (MissingResourceException x) { + try + { + resourceBundle = + ResourceBundle.getBundle("org.epic.debug.DebugPluginResources"); + } catch (MissingResourceException x) + { resourceBundle = null; } - createEnvArrays(); - mBreakPointmanager = new PerlBreakpointManager( DebugPlugin.getDefault()); + + mBreakPointmanager = + new PerlBreakpointManager(DebugPlugin.getDefault()); mDebugger = new ArrayList(); - - getLog().addLogListener(new LogWriter( new File(getStateLocation()+File.separator+".log"),mLogLevel)); + + getLog().addLogListener( + new LogWriter( + new File(getStateLocation() + File.separator + ".log"), + mLogLevel)); getLog().addLogListener(new LogWriter(System.err, mScreenLogLevel)); - // log(new Status(IStatus.INFO, getUniqueIdentifier(), 150, "Plugin Started", null)); - // log(new Status(IStatus.WARNING, getUniqueIdentifier(), 150, "Plugin Started", null)); + // log( + // new Status( + // IStatus.INFO, + // getUniqueIdentifier(), + // 150, + // "Plugin Started", + // null)); + // log( + // new Status( + // IStatus.WARNING, + // getUniqueIdentifier(), + // 150, + // "Plugin Started", + // null)); } public void logOK(String fText, Exception fException) { - log(IStatus.OK,fText,fException); + log(IStatus.OK, fText, fException); } - + public void logOK(String fText) { - log(IStatus.OK,fText,null); + log(IStatus.OK, fText, null); } - + public void logInfo(String fText, Exception fException) - { - log(IStatus.INFO,fText,fException); - } - + { + log(IStatus.INFO, fText, fException); + } + public void logInfo(String fText) - { - log(IStatus.INFO,fText,null); - } - - - + { + log(IStatus.INFO, fText, null); + } + public void logWarning(String fText, Exception fException) - { - log(IStatus.WARNING,fText,fException); - } - - public void logWarning(String fText) - { - log(IStatus.WARNING,fText,null); - } - - - + { + log(IStatus.WARNING, fText, fException); + } + + public void logWarning(String fText) + { + log(IStatus.WARNING, fText, null); + } + public void logError(String fText, Exception fException) - { - log(IStatus.ERROR,fText,fException); - } - - public void loglogError(String fText) - { - log(IStatus.ERROR,fText,null); - } - - - - - - + { + log(IStatus.ERROR, fText, fException); + } + + public void logError(String fText) + { + log(IStatus.ERROR, fText, null); + } + private void log(int fSeverity, String fText, Exception fException) { - log(new Status(fSeverity, getUniqueIdentifier(), 0, fText, fException)); + Status status = + new Status(fSeverity, getUniqueIdentifier(), 0, fText, fException); + log(status); + errorDialog(fText, status); } - void createEnvArrays() + static String[] createEnvArrays(ILaunch fLaunch) { Process proc = null; - String env=null; + String env = null; + String[] debugEnv; int count; - try{ - proc = Runtime.getRuntime().exec(PerlExecutableUtilities.getPerlExecPath()+" -e\"while(($k,$v)= each %ENV){ print\\\"$k=$v\\n\\\";}\""); - }catch (Exception e){System.out.println("Failing to create Process !!!");} + try + { + proc = + Runtime.getRuntime().exec( + PerlExecutableUtilities.getPerlExecPath() + + " -e\"while(($k,$v)= each %ENV){ print\\\"$k=$v\\n\\\";}\""); + } catch (Exception e) + { + System.out.println("Failing to create Process !!!"); + } InputStream in = proc.getInputStream(); StringBuffer content = new StringBuffer(); - + byte[] buffer = new byte[1]; - - try{ - while ((count = in.read(buffer)) > 0) { - content.append(new String(buffer)); - } - - env = content.toString(); - in.close(); - } catch(Exception e){}; - - StringTokenizer s = new StringTokenizer(env,"\r\n"); + + try + { + while ((count = in.read(buffer)) > 0) + { + content.append(new String(buffer)); + } + + env = content.toString(); + in.close(); + } catch (Exception e) + { + }; + + StringTokenizer s = new StringTokenizer(env, "\r\n"); count = s.countTokens(); - + mSystemEnv = new String[count]; - mDebugEnv = new String[count+1]; - + debugEnv = new String[count + 1]; + String token; - - for( int x=0; x < count; ++x) - { + + for (int x = 0; x < count; ++x) + { token = s.nextToken(); mSystemEnv[x] = token; - mDebugEnv[x] = token; + debugEnv[x] = token; } - - mDebugEnv[count] = mDebugOptions; + + debugEnv[count] = getPerlDebugEnv(fLaunch); + return debugEnv; //mDebugEnv[count+1] = "PERL5DB=BEGIN {require'perl5db.pl'}"; } + + static String getPerlDebugEnv(ILaunch fLaunch) + { + return mDebugOptions; + } + /** * Returns the shared instance. */ - public static PerlDebugPlugin getDefault() { + public static PerlDebugPlugin getDefault() + { return plugin; } /** * Returns the workspace instance. */ - public static IWorkspace getWorkspace() { + public static IWorkspace getWorkspace() + { return ResourcesPlugin.getWorkspace(); } @@ -168,11 +207,15 @@ * Returns the string from the plugin's resource bundle, * or 'key' if not found. */ - public static String getResourceString(String key) { - ResourceBundle bundle= PerlDebugPlugin.getDefault().getResourceBundle(); - try { + public static String getResourceString(String key) + { + ResourceBundle bundle = + PerlDebugPlugin.getDefault().getResourceBundle(); + try + { return bundle.getString(key); - } catch (MissingResourceException e) { + } catch (MissingResourceException e) + { return key; } } @@ -180,111 +223,151 @@ /** * Returns the plugin's resource bundle, */ - public ResourceBundle getResourceBundle() { + public ResourceBundle getResourceBundle() + { return resourceBundle; } static String getUniqueIdentifier() - { - return("org.epic.debug.perldebugger.perl"); + { + return ("org.epic.debug.perldebugger.perl"); } - + /** * Logs the specified status with this plug-in's log. * * @param status status to log */ - private static void log(IStatus status) { - getDefault().getLog().log(status); - Throwable e = status.getException(); - if(e != null) - e.printStackTrace(); - } - + private static void log(IStatus status) + { + getDefault().getLog().log(status); + Throwable e = status.getException(); + if (e != null) + e.printStackTrace(); + } + /** * Returns the active workbench window * * @return the active workbench window */ - public static IWorkbenchWindow getActiveWorkbenchWindow() { - return getDefault().getWorkbench().getActiveWorkbenchWindow(); - } + public static IWorkbenchWindow getActiveWorkbenchWindow() + { + return getDefault().getWorkbench().getActiveWorkbenchWindow(); + } /** * Returns the active workbench shell or <code>null</code> if none * * @return the active workbench shell or <code>null</code> if none */ - public static Shell getActiveWorkbenchShell() { - IWorkbenchWindow window = getActiveWorkbenchWindow(); - if (window != null) { - return window.getShell(); - } - return null; - } - - public static void log(Throwable e) { - log(new Status(IStatus.ERROR, getUniqueIdentifier(), 0, "Debug Error", e)); //$NON-NLS-1$ - } - - public static void errorDialog(String message, IStatus status) { - log(status); - Shell shell = getActiveWorkbenchShell(); - if (shell != null) { - ErrorDialog.openError(shell, "Error", message, status); //$NON-NLS-1$ - } - } - - /** - * Utility method with conventions - */ - public static void errorDialog(String message, Throwable t) { - log(t); - Shell shell = getActiveWorkbenchShell(); - if (shell != null) { - IStatus status= new Status(IStatus.ERROR, getUniqueIdentifier(), 150, "Error logged from JDT Debug UI: ", t); //$NON-NLS-1$ - ErrorDialog.openError(shell,"Error", message, status); //$NON-NLS-1$ - } - } - - public static PerlImageDescriptorRegistry getDefaultDesciptorImageRegistry() - { - return (defaultPerlImageDescriptorRegistry); - - } - - public static String[] getSystemEnv() - { - return(mSystemEnv); - } - - public static String[] getDebugEnv() + public static Shell getActiveWorkbenchShell() + { + IWorkbenchWindow window = getActiveWorkbenchWindow(); + if (window == null) + window = getDefault().getWorkbench().getWorkbenchWindows()[0]; + if (window != null) { - return(mDebugEnv); + + return window.getShell(); } + return null; + } - public static PerlBreakpointManager getPerlBreakPointmanager() + public static void log(Throwable e) + { + log(new Status(IStatus.ERROR, getUniqueIdentifier(), 0, "Debug Error", e)); //$NON-NLS-1$ + } + + public static void errorDialog(String message) + { + errorDialog(message, null); + } + + public static void errorDialog(String message, IStatus status) + { + + Shell shell = getActiveWorkbenchShell(); + if (shell != null) { - return(mBreakPointmanager); + shell.getDisplay().syncExec(new DisplayErrorThread(shell, message,status)); } + } - public void registerDebugger(PerlDB fDebug) + static class DisplayErrorThread implements Runnable + { + Shell mShell; + String mMessage; + IStatus mStatus; + + public DisplayErrorThread(Shell fShell, String fMessage,IStatus fStatus) + { + mShell = fShell; + mMessage = fMessage; + fStatus = mStatus; + } + + public void run() + { + if (mStatus == null) + MessageDialog.openError(mShell, "EPIG Error", mMessage); + else + ErrorDialog.openError(mShell, "Error", mMessage, mStatus); //$NON-NLS-1$ + + } + } + + + + + public static PerlImageDescriptorRegistry getDefaultDesciptorImageRegistry() + { + return (defaultPerlImageDescriptorRegistry); + + } + + public static String[] getSystemEnv() + { + return (mSystemEnv); + } + + public static String[] getDebugEnv(ILaunch fLaunch) + { + return (createEnvArrays(fLaunch)); + } + + public static PerlBreakpointManager getPerlBreakPointmanager() + { + return (mBreakPointmanager); + } + + public void registerDebugTarget(Target fDebug) { mDebugger.add(fDebug); } - - public void unregisterDebugger(PerlDB fDebug) + + public void unregisterDebugTarget(Target fDebug) { - mDebugger.remove(fDebug); + mDebugger.remove(fDebug); } - + + public void registerDebugEventListener(IDebugEventSetListener fListener) + { + DebugPlugin.getDefault().addDebugEventListener(fListener); + } + + public void unregisterDebugEventListener(IDebugEventSetListener fListener) + { + DebugPlugin.getDefault().removeDebugEventListener(fListener); + } + public void shutdown() { - PerlDB db; - Iterator i= mDebugger.iterator(); - while(i.hasNext()) + Target db; + Iterator i = mDebugger.iterator(); + while (i.hasNext()) { - db = (PerlDB) i.next(); - if( db != null) + db = (Target) i.next(); + if (db != null) db.shutdown(false); } } --- NEW FILE: LaunchConfigurationCGIBrowserTab.java --- /******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ /** * @author ruehl * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.epic.debug; //import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceVisitor; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; //import org.eclipse.jface.viewers.ILabelProvider; 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.events.SelectionAdapter; //import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; 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.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IEditorDescriptor; //import org.eclipse.swt.widgets.Shell; //import org.eclipse.swt.widgets.Text; //import org.eclipse.ui.dialogs.ElementListSelectionDialog; //import org.eclipse.ui.dialogs.SelectionDialog; //import org.eclipse.ui.help.WorkbenchHelp; import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; import org.eclipse.help.internal.HelpPlugin; import org.eclipse.help.internal.browser.BrowserDescriptor; import org.eclipse.help.internal.browser.BrowserManager; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.core.resources.IProject; public class LaunchConfigurationCGIBrowserTab extends AbstractLaunchConfigurationTab { /** * A launch configuration tab that displays and edits project and * main type name launch configuration attributes. * <p> * This class may be instantiated. This class is not intended to be subclassed. * </p> * @since 2.0 */ private Table browsersTable; private Label customBrowserPathLabel; private Text customBrowserPath; private Button customBrowserBrowse; protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ private static final String PERL_NATURE_ID = "org.epic.perleditor.perlnature"; /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(Composite) */ public void createControl(Composite parent) { Font font = parent.getFont(); //noDefaultAndApplyButton(); Composite mainComposite = new Composite(parent, SWT.NULL); setControl(mainComposite); GridData data = new GridData(); data.verticalAlignment = GridData.FILL; data.horizontalAlignment = GridData.FILL; //data.grabExcessHorizontalSpace = true; mainComposite.setLayoutData(data); mainComposite.setFont(font); GridLayout layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; mainComposite.setLayout(layout); Label description = new Label(mainComposite, SWT.NULL); description.setFont(font); description.setText("select_browser"); createSpacer(mainComposite); Label tableDescription = new Label(mainComposite, SWT.NULL); tableDescription.setFont(font); tableDescription.setText("current_browser"); //data = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); //description.setLayoutData(data); browsersTable = new Table(mainComposite, SWT.CHECK | SWT.BORDER); GridData gd = new GridData(GridData.FILL_BOTH); //.heightHint = convertHeightInCharsToPixels(6); browsersTable.setLayoutData(gd); browsersTable.setFont(font); browsersTable.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent selEvent) { if (selEvent.detail == SWT.CHECK) { TableItem item = (TableItem) selEvent.item; if (item.getChecked()) { // Deselect others TableItem[] items = browsersTable.getItems(); for (int i = 0; i < items.length; i++) { if (items[i] == item) continue; else items[i].setChecked(false); } } else { // Do not allow deselection item.setChecked(true); } setEnabledCustomBrowserPath(); } } public void widgetDefaultSelected(SelectionEvent selEvent) { } }); // populate table with browsers BrowserDescriptor[] aDescs = BrowserManager.getInstance().getBrowserDescriptors(); for (int i = 0; i < aDescs.length; i++) { TableItem item = new TableItem(browsersTable, SWT.NONE); item.setText(aDescs[i].getLabel()); if (BrowserManager .getInstance() .getDefaultBrowserID() .equals(aDescs[i].getID())) item.setChecked(true); else item.setChecked(false); item.setGrayed(aDescs.length == 1); } createCustomBrowserPathPart(mainComposite); } /** * @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(ILaunchConfiguration) */ public void initializeFrom(ILaunchConfiguration config) { // updateProjectFromConfig(config); // fMainText.setItems(getPerlFiles()); // updateMainTypeFromConfig(config); // updateParamsFromConfig(config... [truncated message content] |