Update of /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31449/src/org/epic/debug Modified Files: LaunchConfigurationCGIWebServerTab.java DebugModelPresentation.java PerlDB.java CGITarget.java ExpressionView.java PerlLineBreakpoint.java PerlLaunchConfigurationConstants.java ManageBreakpointRulerAction.java PerlDebugPlugin.java PerlDebugImages.java Added Files: ManageRegExpBreakpointRulerActionDelegate.java ManageRegExpBreakpointRulerAction.java PerlRegExpBreakpoint.java Log Message: made CGI Script file extensions configurable RegExp breakpoints added Index: PerlDebugImages.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlDebugImages.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- PerlDebugImages.java 20 May 2004 12:49:03 -0000 1.7 +++ PerlDebugImages.java 5 Jun 2004 14:07:56 -0000 1.8 @@ -64,6 +64,10 @@ public static final ImageDescriptor ACTION_EXPRESSION_EVALUATE = createImageDescriptor(iconPath + "run.gif"); + /* RegExp Breakpoint*/ + public static final ImageDescriptor DESC_OBJS_REGEXP_BP_ENABLED= createImageDescriptor(iconPath + "rx.gif"); + public static final ImageDescriptor DESC_OBJS_REGEXP_BP_DISABLED= createImageDescriptor(iconPath + "rx_dis.gif"); + private static ImageDescriptor createImageDescriptor(String path) { try Index: LaunchConfigurationCGIWebServerTab.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/LaunchConfigurationCGIWebServerTab.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- LaunchConfigurationCGIWebServerTab.java 20 May 2004 12:49:02 -0000 1.3 +++ LaunchConfigurationCGIWebServerTab.java 5 Jun 2004 14:07:53 -0000 1.4 @@ -14,7 +14,7 @@ * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ - +/*STR*/ package org.epic.debug; //import java.lang.reflect.InvocationTargetException; @@ -36,6 +36,8 @@ import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; @@ -43,8 +45,9 @@ import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; //import org.epic.debug.util.ListEditor; - +/*STR*/ public class LaunchConfigurationCGIWebServerTab extends AbstractLaunchConfigurationTab implements IPropertyChangeListener @@ -59,6 +62,8 @@ * @since 2.0 */ + private Text mCGIsuffixText; + private Label mCGIsuffixLabel; //private ListEditor fEnvVar; // private IntegerFieldEditor fWebserverPort; private DirectoryFieldEditor fCGIRootDir; @@ -193,6 +198,37 @@ fCGIRootDir.setPropertyChangeListener(this); + createVerticalSpacer(comp, 2); + Composite paramComp = new Composite(comp, SWT.NONE); + GridLayout paramLayout = new GridLayout(); + paramLayout.numColumns = 2; + paramLayout.marginHeight = 0; + paramLayout.marginWidth = 0; + paramComp.setLayout(paramLayout); + gd = new GridData(GridData.FILL_HORIZONTAL); + paramComp.setLayoutData(gd); + paramComp.setFont(font); + + mCGIsuffixLabel = new Label(paramComp, SWT.NONE); + mCGIsuffixLabel.setText("File Extension for CGI Files: (comma separated list e.g. .cgi,.pl)"); //$NON-NLS-1$ + gd = new GridData(); + gd.horizontalSpan = 2; + mCGIsuffixLabel.setLayoutData(gd); + mCGIsuffixLabel.setFont(font); + + mCGIsuffixText = new Text(paramComp, SWT.SINGLE | SWT.BORDER); + + gd = new GridData(GridData.FILL_HORIZONTAL); + mCGIsuffixText.setLayoutData(gd); + mCGIsuffixText.setFont(font); + mCGIsuffixText.addModifyListener(new ModifyListener() + { + public void modifyText(ModifyEvent evt) + { + updateLaunchConfigurationDialog(); + } + }); + //createVerticalSpacer(comp, 1); // Composite webserverPortComp = new Composite(comp, SWT.NONE); @@ -235,7 +271,11 @@ config.getAttribute( PerlLaunchConfigurationConstants.ATTR_CGI_ROOT_DIR, (String) null)); - + + mCGIsuffixText.setText( config.getAttribute( + PerlLaunchConfigurationConstants.ATTR_PROJECT_NAME, + ".cgi,.pl")); + // fWebserverPort.setStringValue( // config.getAttribute( // PerlLaunchConfigurationConstants.ATTR_DEBUG_PORT, @@ -263,9 +303,9 @@ config.setAttribute( PerlLaunchConfigurationConstants.ATTR_CGI_ROOT_DIR, this.fCGIRootDir.getStringValue()); - // config.setAttribute( - // PerlLaunchConfigurationConstants.ATTR_DEBUG_PORT, - // fWebserverPort.getStringValue()); + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_CGI_FILE_EXTENSION, + this.mCGIsuffixText.getText()); config.setAttribute( PerlLaunchConfigurationConstants.ATTR_DEBUG_CGI, "OK"); @@ -380,6 +420,9 @@ config.setAttribute( PerlLaunchConfigurationConstants.ATTR_CGI_ENV, (Map) null); + config.setAttribute( + PerlLaunchConfigurationConstants.ATTR_CGI_FILE_EXTENSION, + ".CGI,.PL"); } Index: ExpressionView.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/ExpressionView.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ExpressionView.java 20 May 2004 12:49:03 -0000 1.5 +++ ExpressionView.java 5 Jun 2004 14:07:56 -0000 1.6 @@ -96,7 +96,7 @@ } /** - * Action called, when Evaluate Expressin button is pressed + * Action called, when Evaluate expression button is pressed */ private void evaluateExpression() { --- NEW FILE: ManageRegExpBreakpointRulerAction.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 *******************************************************************************/ package org.epic.debug; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugException; import org.eclipse.jface.text.source.IVerticalRulerInfo; import org.eclipse.ui.texteditor.ITextEditor; public class ManageRegExpBreakpointRulerAction extends ManageBreakpointRulerAction { public ManageRegExpBreakpointRulerAction( IVerticalRulerInfo ruler, ITextEditor editor) { super(ruler, editor); fAddLabel = "Add RegExp Breakpoint"; fRemoveLabel = "Remove RegExp Breakpoint"; } void createBreakPoint(int fLine) throws DebugException, CoreException { new PerlRegExpBreakpoint(getResource(), fLine); } public void update() { fMarkers= getMarkers(); setText(fAddLabel); this.setEnabled(fMarkers.isEmpty()); } } Index: PerlDB.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlDB.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- PerlDB.java 20 May 2004 12:49:03 -0000 1.18 +++ PerlDB.java 5 Jun 2004 14:07:54 -0000 1.19 @@ -12,6 +12,9 @@ import gnu.regexp.RESyntax; import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.net.InetAddress; @@ -32,11 +35,17 @@ import org.eclipse.debug.core.model.ITerminate; import org.eclipse.debug.core.model.IThread; import org.eclipse.debug.core.model.IVariable; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.Document; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; import org.epic.debug.util.PathMapperCygwin; import org.epic.debug.varparser.PerlDebugValue; import org.epic.debug.varparser.PerlDebugVar; import org.epic.debug.varparser.PerlVarParser; import org.epic.perleditor.PerlEditorPlugin; +import org.epic.regexp.views.RegExpView; /** * @author ruehl @@ -48,7 +57,6 @@ { private boolean mIsSessionTerminated; - private DebugTarget mTarget; private CommandThread mCommandThread; private int mCurrentCommand; @@ -116,8 +124,10 @@ private BreakpointMap mPendingBreakpoints; private BreakpointMap mActiveBreakpoints; + private final static String mLineSeparator = System.getProperty("line.separator"); private org.epic.debug.util.PathMapper mPathMapper; - + StringBuffer mRegExp = new StringBuffer(); + StringBuffer mText = new StringBuffer(); private class CommandThread extends Thread { @@ -427,13 +437,37 @@ public String evaluateStatement(Object fThread, String fText) { - startCommand(mCommandEvaluateCode, fText, false, fThread); - if (mDebugOutput == null || mDebugOutput.lastIndexOf("\n") <= 0) + + String res; + + if( mIsCommandRunning ) + { + startSubCommand(mCommandEvaluateCode, fText, false); + } + else + { + startCommand(mCommandEvaluateCode, fText, false, fThread); + } + + res = mDebugOutput; + int index_n = res.lastIndexOf("\n"); + int index_r = res.lastIndexOf("\r"); + + if ( res == null || ( (index_n <= 0) && (index_r<=0)) ) { return null; } + + + int index; + + if( index_n > 0 && !(index_r>0 && index_r<index_n)) + index = index_n; + else + index = index_r; + String result = - mDebugOutput.substring(0, mDebugOutput.lastIndexOf("\n")); + res.substring(0,index); return (result); } public boolean startCommand( @@ -721,7 +755,7 @@ } - // System.out.println(currentOutput); + // System.out.println(currentOutput); if (finished == SESSION_TERMINATED) { @@ -854,7 +888,7 @@ boolean finished = false; boolean skip = false; - + try { mCurrentCommandDest = mThreads[0]; @@ -868,32 +902,31 @@ e); } - int count=0; - // StringBuffer debugOutput=new StringBuffer(); + int count = 0; + // StringBuffer debugOutput=new StringBuffer(); char buf[] = new char[1000]; - - if( ! skip ) - do - { - try - { - count = mDebugOut.read(buf); - // System.out.println("Count: "+count+"\n"); - } catch (IOException e) + + if (!skip) + do { - skip = true; - break; -// PerlDebugPlugin.getDefault().logError( -// "Test: Could not terminate Perl Process", -// e); - } + try + { + count = mDebugOut.read(buf); + // System.out.println("Count: "+count+"\n"); + } catch (IOException e) + { + skip = true; + break; + // PerlDebugPlugin.getDefault().logError( + // "Test: Could not terminate Perl Process", + // e); + } - // if (count > 0) - // debugOutput.append(buf, 0, count); - + // if (count > 0) + // debugOutput.append(buf, 0, count); - }while(count != -1); -// System.out.println("\n***************EXIT DB-****************\n"+debugOutput.toString()); + } while (count != -1); + // System.out.println("\n***************EXIT DB-****************\n"+debugOutput.toString()); // try // { // this.mDebugOut.read(); @@ -904,15 +937,15 @@ // } // } - // startCommand(mCommandClearOutput, null, false, this); - // startCommand(mCommandExecuteCode, "q\n", false, this); + // startCommand(mCommandClearOutput, null, false, this); + // startCommand(mCommandExecuteCode, "q\n", false, this); mCurrentSubCommand = mCommandNone; mCurrentCommand = mCommandNone; mIsCommandRunning = false; mIsCommandFinished = false; - // generateDebugTermEvent(); - // PerlDebugPlugin.getPerlBreakPointmanager().removeDebugger(this); + // generateDebugTermEvent(); + // PerlDebugPlugin.getPerlBreakPointmanager().removeDebugger(this); mTarget.debugSessionTerminated(); } @@ -939,11 +972,54 @@ { IP_Position pos = getCurrent_IP_Position(); - return ( + PerlBreakpoint bp = mActiveBreakpoints.getBreakpointForLocation( pos.get_IP_Path(), - pos.get_IP_Line()) - != null); + pos.get_IP_Line()); + + if (bp != null) + { + if (bp instanceof PerlRegExpBreakpoint) + { + mRegExp = new StringBuffer(); + mText = new StringBuffer(); + + this.getRegExp(pos, mRegExp,mText); + // show view + Shell shell = PerlDebugPlugin.getActiveWorkbenchShell(); + if (shell != null) + { + shell.getDisplay().syncExec(new Runnable() + { + public void run() + { + RegExpView view = null; + IWorkbenchPage activePage = + PerlDebugPlugin + .getWorkbenchWindow() + .getActivePage(); + try + { + view = (RegExpView) activePage.showView( + "org.epic.regexp.views.RegExpView"); + } catch (PartInitException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + view.setRegExpText(mRegExp.toString()); + view.setMatchText(mText.toString()); + + } + + + }); + + } + } + return true; + } + return false; } public IThread[] getThreads() @@ -1162,16 +1238,18 @@ startSubCommand(mCommandExecuteCode, "o frame=0 ", false); if (ShowLocalVariableActionDelegate.getPreferenceValue()) startSubCommand(mCommandExecuteCode, "y ", false); - - System.out.println("\n\n\n\n\n\n\n\n\n********Local Vars:"+ mDebugSubCommandOutput); + + System.out.println( + "\n\n\n\n\n\n\n\n\n********Local Vars:" + mDebugSubCommandOutput); lVarList = mVarParser.parseVars( mDebugSubCommandOutput, PerlDebugVar.IS_LOCAL_SCOPE); startSubCommand(mCommandExecuteCode, "o frame=2", false); startSubCommand(mCommandExecuteCode, "X ", false); - - System.out.println("\n\n\n\n\n\n\n\n\n********Global Vars:"+ mDebugSubCommandOutput); + + System.out.println( + "\n\n\n\n\n\n\n\n\n********Global Vars:" + mDebugSubCommandOutput); mVarParser.parseVars( mDebugSubCommandOutput, PerlDebugVar.IS_GLOBAL_SCOPE, @@ -1448,5 +1526,79 @@ { return (mThreads[0] == fThread); } + private void getRegExp( + IP_Position fPos, + StringBuffer fRegexp, + StringBuffer fArg) + { + StringBuffer sourceCode = new StringBuffer(); + + int BUF_SIZE = 1024; + + // Get the file content + char[] buf = new char[BUF_SIZE]; + File inputFile = new File(fPos.get_IP_Path().makeAbsolute().toString()); + BufferedReader in; + try + { + in = new BufferedReader(new FileReader(inputFile)); + + int read = 0; + while ((read = in.read(buf)) > 0) + { + sourceCode.append(buf, 0, read); + } + in.close(); + } catch (FileNotFoundException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + String line=null; + Document doc = new Document(sourceCode.toString()); + try + { + int length = doc.getLineLength(fPos.get_IP_Line()-1); + int offset = doc.getLineOffset(fPos.get_IP_Line()-1); + line = doc.get(offset,length); + } catch (BadLocationException e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + try + { + String delim; + + RE findDelim =new RE("[$%@].+[\\s]*=~[\\s]*[m]?(.)", 0, RESyntax.RE_SYNTAX_PERL5); + + REMatch match = findDelim.getMatch(line); + + delim = match.toString(1); + String temp = line; + temp.replaceAll("\\"+delim,"xx"); + RE findRegExp =new RE("([$%@][^\\s]+)[\\s]*=~[\\s]*[m]?"+delim+"(.*)"+delim, 0, RESyntax.RE_SYNTAX_PERL5); + match = findRegExp.getMatch(temp); + String var = line.substring(match.getStartIndex(1),match.getEndIndex(1)); + String text = line.substring(match.getStartIndex(2),match.getEndIndex(2)); + var = evaluateStatement(mThreads[0],"p \""+var+"\""); + text = evaluateStatement(mThreads[0],"p \""+text+"\""); + System.out.println("\n"+var+":"+text+"\n"); + fRegexp.append(text); + fArg.append(var); + } catch (REException e2) + { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + + + + } } \ No newline at end of file --- NEW FILE: ManageRegExpBreakpointRulerActionDelegate.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 *******************************************************************************/ package org.epic.debug; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.source.IVerticalRulerInfo; import org.eclipse.ui.texteditor.AbstractRulerActionDelegate; import org.eclipse.ui.texteditor.ITextEditor; public class ManageRegExpBreakpointRulerActionDelegate extends ManageBreakpointRulerActionDelegate { /** * @see AbstractRulerActionDelegate#createAction(ITextEditor, IVerticalRulerInfo) */ protected IAction createAction(ITextEditor editor, IVerticalRulerInfo rulerInfo) { return new ManageRegExpBreakpointRulerAction(rulerInfo, editor); } } Index: DebugModelPresentation.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/DebugModelPresentation.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- DebugModelPresentation.java 20 May 2004 12:49:02 -0000 1.11 +++ DebugModelPresentation.java 5 Jun 2004 14:07:54 -0000 1.12 @@ -28,107 +28,159 @@ * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class DebugModelPresentation implements IDebugModelPresentation { +public class DebugModelPresentation implements IDebugModelPresentation +{ /** * Constructor for DebugModelPresentation. */ - public DebugModelPresentation() { + public DebugModelPresentation() + { super(); } /** * @see org.eclipse.debug.ui.IDebugModelPresentation#setAttribute(String, Object) */ - public void setAttribute(String attribute, Object value) { + public void setAttribute(String attribute, Object value) + { } /** * @see org.eclipse.jface.viewers.ILabelProvider#getImage(Object) */ - public Image getImage(Object element) { - - if ( element instanceof PerlDebugVar ) + public Image getImage(Object element) + { + + if (element instanceof PerlDebugVar) { - try { - if ( ((PerlDebugVar)element).getHideImage() ) - return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( new PerlImageDescriptor(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED), 0));; - - if( ((PerlDebugVar)element).isLocalScope()) + try + { + if (((PerlDebugVar) element).getHideImage()) + return PerlDebugPlugin + .getDefaultDesciptorImageRegistry() + .get( + new PerlImageDescriptor( + DebugUITools.getImageDescriptor( + IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED), + 0)); + ; + + if (((PerlDebugVar) element).isLocalScope()) { - if ( ((PerlDebugVar)element).isTainted() ) - return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( PerlDebugImages.DESC_OBJS_CHANGED_DEBUG_VAR_LOCAL); + if (((PerlDebugVar) element).isTainted()) + return PerlDebugPlugin + .getDefaultDesciptorImageRegistry() + .get( + PerlDebugImages.DESC_OBJS_CHANGED_DEBUG_VAR_LOCAL); else - return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( PerlDebugImages.DESC_OBJS_DEBUG_VAR_LOCAL); + return PerlDebugPlugin + .getDefaultDesciptorImageRegistry() + .get( + PerlDebugImages.DESC_OBJS_DEBUG_VAR_LOCAL); } - - if ( ((PerlDebugVar)element).isTainted() ) - return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( PerlDebugImages.DESC_OBJS_CHANGED_DEBUG_VAR); - } catch (DebugException e) {e.printStackTrace();} + + if (((PerlDebugVar) element).isTainted()) + return PerlDebugPlugin + .getDefaultDesciptorImageRegistry() + .get( + PerlDebugImages.DESC_OBJS_CHANGED_DEBUG_VAR); + } catch (DebugException e) + { + e.printStackTrace(); + } } - - if (element instanceof IMarker) { - IBreakpoint bp = getBreakpoint((IMarker)element); - if (bp != null && bp instanceof PerlBreakpoint) { - return getPerlBreakpointImage((PerlLineBreakpoint)bp); - } + + if (element instanceof IMarker) + { + IBreakpoint bp = getBreakpoint((IMarker) element); + if (bp != null && bp instanceof PerlBreakpoint) + { + return getPerlBreakpointImage((PerlLineBreakpoint) bp); } - if( element instanceof PerlBreakpoint) - return( getPerlBreakpointImage((PerlBreakpoint) element) ); - + } + if (element instanceof PerlBreakpoint) + return (getPerlBreakpointImage((PerlBreakpoint) element)); + return null; } - protected Image getPerlBreakpointImage(PerlBreakpoint breakpoint) { - - try{ - int flags= computeBreakpointAdornmentFlags(breakpoint); - PerlImageDescriptor descriptor= null; - if ( breakpoint.isEnabled() && ! breakpoint.isNoValidBreakpointPosition() ) - { - descriptor= new PerlImageDescriptor(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_BREAKPOINT), flags); - } else { - descriptor= new PerlImageDescriptor(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED), flags); - } - return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get(descriptor); - } catch (CoreException e ) - { - PerlDebugPlugin.log(e); - } - - return null; - } + protected Image getPerlBreakpointImage(PerlBreakpoint breakpoint) + { + try + { + int flags = computeBreakpointAdornmentFlags(breakpoint); + PerlImageDescriptor descriptor = null; + if (breakpoint.isEnabled() + && !breakpoint.isNoValidBreakpointPosition()) + { + if (breakpoint instanceof PerlRegExpBreakpoint) + descriptor = + new PerlImageDescriptor( + PerlDebugImages.DESC_OBJS_REGEXP_BP_ENABLED, + flags); + else + descriptor = + new PerlImageDescriptor( + DebugUITools.getImageDescriptor( + IDebugUIConstants.IMG_OBJS_BREAKPOINT), + flags); + } else + { + if (breakpoint instanceof PerlRegExpBreakpoint) + descriptor = + new PerlImageDescriptor( + PerlDebugImages.DESC_OBJS_REGEXP_BP_DISABLED, + flags); + else + descriptor = + new PerlImageDescriptor( + DebugUITools.getImageDescriptor( + IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED), + flags); + } + return PerlDebugPlugin.getDefaultDesciptorImageRegistry().get( + descriptor); + } catch (CoreException e) + { + PerlDebugPlugin.log(e); + } + + return null; + } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(Object) */ - public String getText(Object element) { + public String getText(Object element) + { StringBuffer erg = new StringBuffer(); - - if( element instanceof PerlLineBreakpoint ) + + if (element instanceof PerlLineBreakpoint) { - PerlLineBreakpoint bp = ((PerlLineBreakpoint)element); - - if( bp.getResourcePath() == null ) - return( "[]"); - erg.append( bp.getResourcePath().lastSegment()); - erg.append(" [line: "+Integer.toString(bp.getLineNumber())+"]"); - if( bp.isNoValidBreakpointPosition()) + PerlLineBreakpoint bp = ((PerlLineBreakpoint) element); + + if (bp.getResourcePath() == null) + return ("[]"); + erg.append(bp.getResourcePath().lastSegment()); + erg.append(" [line: " + Integer.toString(bp.getLineNumber()) + "]"); + if (bp.isNoValidBreakpointPosition()) erg.append(" - <invalid position>"); - return(erg.toString()); + return (erg.toString()); } - return(null); + return (null); } /** * @see org.eclipse.debug.ui.IDebugModelPresentation#computeDetail(IValue, IValueDetailListener) */ - public void computeDetail(IValue value, IValueDetailListener listener) { + public void computeDetail(IValue value, IValueDetailListener listener) + { try { - listener.detailComputed(value,value.getValueString()); + listener.detailComputed(value, value.getValueString()); } catch (DebugException e) { // TODO Auto-generated catch block @@ -139,22 +191,22 @@ /** * @see org.eclipse.debug.ui.ISourcePresentation#getEditorInput(Object) */ - public IEditorInput getEditorInput(Object element) { + public IEditorInput getEditorInput(Object element) + { IStorageEditorInput i; StackFrame frame; IPath p; - - System.out.println("@@@@@@@@getInput: "+(element instanceof StackFrame)+"\n"); - if(element instanceof StackFrame ) + + System.out.println( + "@@@@@@@@getInput: " + (element instanceof StackFrame) + "\n"); + if (element instanceof StackFrame) { frame = (StackFrame) element; - } - else + } else { - return(null); + return (null); } - - + p = frame.get_IP_Path(); /*IWorkspaceRoot myWorkspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); IFile file; @@ -166,78 +218,91 @@ i = new LocalFileStorageEditorInput(p.toString()); i = new LocalFileEditorInput(i); } */ - i = FileUtilities.getFileEditorInput(p); - - return(i); + i = FileUtilities.getFileEditorInput(p); + + return (i); } /** * @see org.eclipse.debug.ui.ISourcePresentation#getEditorId(IEditorInput, Object) */ - public String getEditorId(IEditorInput input, Object element) { + public String getEditorId(IEditorInput input, Object element) + { System.out.println("@@@@@@@@getEditor\n"); - IEditorRegistry registry= PlatformUI.getWorkbench().getEditorRegistry(); - IEditorDescriptor descriptor= registry.getDefaultEditor(input.getName()); - if (descriptor != null) - return descriptor.getId(); + IEditorRegistry registry = + PlatformUI.getWorkbench().getEditorRegistry(); + IEditorDescriptor descriptor = + registry.getDefaultEditor(input.getName()); + if (descriptor != null) + return descriptor.getId(); - return null; + return null; //return "org.epic.perleditor.editors.PerlEditor"; } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(ILabelProviderListener) */ - public void addListener(ILabelProviderListener listener) { + public void addListener(ILabelProviderListener listener) + { } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ - public void dispose() { + public void dispose() + { } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(Object, String) */ - public boolean isLabelProperty(Object element, String property) { + public boolean isLabelProperty(Object element, String property) + { return false; } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(ILabelProviderListener) */ - public void removeListener(ILabelProviderListener listener) { + public void removeListener(ILabelProviderListener listener) + { } - /** * Returns the adornment flags for the given breakpoint. * These flags are used to render appropriate overlay * icons for the breakpoint. */ - private int computeBreakpointAdornmentFlags( PerlBreakpoint breakpoint) { - int flags= 0; - if( breakpoint.isNoValidBreakpointPosition()) + private int computeBreakpointAdornmentFlags(PerlBreakpoint breakpoint) + { + int flags = 0; + if (breakpoint.isNoValidBreakpointPosition()) return 0; - - try { - if (breakpoint.isEnabled()) { + + try + { + if (breakpoint.isEnabled()) + { flags |= PerlImageDescriptor.ENABLED; } - if (breakpoint.isInstalled()) { + if (breakpoint.isInstalled()) + { flags |= PerlImageDescriptor.INSTALLED; } - - } catch (CoreException e) { - + + } catch (CoreException e) + { + PerlDebugPlugin.log(e); } return flags; } - - protected IBreakpoint getBreakpoint(IMarker marker) { - return DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(marker); - } + + protected IBreakpoint getBreakpoint(IMarker marker) + { + return DebugPlugin.getDefault().getBreakpointManager().getBreakpoint( + marker); + } } --- NEW FILE: PerlRegExpBreakpoint.java --- /* * Created on 11.04.2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.epic.debug; import java.util.Map; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugException; /** * @author ruehl * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class PerlRegExpBreakpoint extends PerlLineBreakpoint{ private static final String Perl_REGEXP_BREAKPOINT = "org.epic.debug.perlRegExpBreakpointMarker"; //$NON-NLS-1$ public PerlRegExpBreakpoint() { super(); } public PerlRegExpBreakpoint(IResource resource, int lineNumber) throws DebugException, CoreException { super(resource, lineNumber); } public PerlRegExpBreakpoint(IResource resource, int lineNumber, int charStart, int charEnd, boolean add, Map attributes) throws DebugException,CoreException { super(resource, lineNumber, charStart, charEnd, add, attributes); } String getMarkerID() { return(Perl_REGEXP_BREAKPOINT); } } Index: PerlLineBreakpoint.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlLineBreakpoint.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- PerlLineBreakpoint.java 20 May 2004 12:49:03 -0000 1.5 +++ PerlLineBreakpoint.java 5 Jun 2004 14:07:56 -0000 1.6 @@ -43,7 +43,7 @@ public PerlLineBreakpoint(IResource resource, int lineNumber) throws DebugException, CoreException { super(); Map attributes = new HashMap(10); - createPerlLineBreakpoint(resource,lineNumber, -1, -1, true, attributes,Perl_LINE_BREAKPOINT); + createPerlLineBreakpoint(resource,lineNumber, -1, -1, true, attributes,getMarkerID()); } @@ -52,8 +52,14 @@ super(); if( attributes == null) { attributes = new HashMap(10); } - createPerlLineBreakpoint(resource,lineNumber, charStart, charEnd, add, attributes, Perl_LINE_BREAKPOINT); + createPerlLineBreakpoint(resource,lineNumber, charStart, charEnd, add, attributes,getMarkerID()); } + + String getMarkerID() + { + return(Perl_LINE_BREAKPOINT); + } + /** * */ Index: CGITarget.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/CGITarget.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- CGITarget.java 21 May 2004 14:30:09 -0000 1.5 +++ CGITarget.java 5 Jun 2004 14:07:56 -0000 1.6 @@ -93,6 +93,8 @@ String htmlRootDir = null; String htmlRootFile = null; String cgiRootDir = null; + String cgiFileExtension = null; + if (mDebug) { mDebugPort = new RemotePort(); @@ -121,6 +123,11 @@ (ArrayList) mLaunch.getLaunchConfiguration().getAttribute( PerlLaunchConfigurationConstants.ATTR_CGI_ENV, (List) null); + + cgiFileExtension = + mLaunch.getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_CGI_FILE_EXTENSION, + (String) null); } catch (CoreException e2) { @@ -167,7 +174,9 @@ + htmlRootFileRel + "\n" + "cgi.executable=" - + PerlExecutableUtilities.getPerlExecutableCommandLine().get(0)); + + PerlExecutableUtilities.getPerlExecutableCommandLine().get(0) + + "\n" + + "cgi.suffix="+cgiFileExtension); if (mDebug) { Index: ManageBreakpointRulerAction.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/ManageBreakpointRulerAction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ManageBreakpointRulerAction.java 12 Apr 2004 17:16:01 -0000 1.3 +++ ManageBreakpointRulerAction.java 5 Jun 2004 14:07:56 -0000 1.4 @@ -22,6 +22,7 @@ import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IBreakpointManager; import org.eclipse.debug.core.model.IBreakpoint; @@ -39,13 +40,13 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate { - private IVerticalRulerInfo fRuler; - private ITextEditor fTextEditor; + protected IVerticalRulerInfo fRuler; + protected ITextEditor fTextEditor; private String fMarkerType; - private List fMarkers; + protected List fMarkers; - private String fAddLabel; - private String fRemoveLabel; + protected String fAddLabel; + protected String fRemoveLabel; public ManageBreakpointRulerAction(IVerticalRulerInfo ruler, ITextEditor editor) { fRuler= ruler; @@ -144,6 +145,7 @@ public void update() { fMarkers= getMarkers(); setText(fMarkers.isEmpty() ? fAddLabel : fRemoveLabel); + } /** @@ -192,24 +194,36 @@ return breakpoints; } - protected void addMarker() { - - IEditorInput editorInput= getTextEditor().getEditorInput(); - - IDocument document= getDocument(); + protected void addMarker() + { - int rulerLine= getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); - - try{ - int line= getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); + IEditorInput editorInput = getTextEditor().getEditorInput(); - new PerlLineBreakpoint(getResource(),line+1); - } catch (Exception e){ + IDocument document = getDocument(); + + int rulerLine = + getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); + + try + { + int line = + getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); + + createBreakPoint(line+1); + + } catch (Exception e) + { PerlDebugPlugin.getDefault().logError("ManageBreakpointRulerAction error adding Breakpoint", e); //$NON-NLS-1$ - } - - + } + } + + void createBreakPoint(int fLine) throws DebugException, CoreException + { + + new PerlLineBreakpoint(getResource(), fLine + 1); + + } protected void removeMarkers(List markers) { IBreakpointManager breakpointManager= DebugPlugin.getDefault().getBreakpointManager(); Index: PerlDebugPlugin.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlDebugPlugin.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- PerlDebugPlugin.java 20 May 2004 12:49:02 -0000 1.14 +++ PerlDebugPlugin.java 5 Jun 2004 14:07:56 -0000 1.15 @@ -313,9 +313,15 @@ */ public static IWorkbenchWindow getActiveWorkbenchWindow() { - return getDefault().getWorkbench().getActiveWorkbenchWindow(); + return getDefault().getWorkbench().getActiveWorkbenchWindow(); } - + + public static IWorkbenchWindow getWorkbenchWindow() + { + IWorkbenchWindow window = getDefault().getWorkbench().getActiveWorkbenchWindow(); + if (window == null) + window = getDefault().getWorkbench().getWorkbenchWindows()[0]; + return window;} /** * Returns the active workbench shell or <code>null</code> if none * Index: PerlLaunchConfigurationConstants.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlLaunchConfigurationConstants.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- PerlLaunchConfigurationConstants.java 8 May 2004 10:09:14 -0000 1.9 +++ PerlLaunchConfigurationConstants.java 5 Jun 2004 14:07:56 -0000 1.10 @@ -35,7 +35,8 @@ public final static String ATTR_HTML_ROOT_FILE = "ATTR_HTML_ROOT_FILE"; public final static String ATTR_CGI_ROOT_DIR = "ATTR_CGI_ROOT_DIR"; public final static String ATTR_CGI_ENV = "ATTR_CGI_ENV"; - +/*STR*/ +public final static String ATTR_CGI_FILE_EXTENSION = "ATTR_CGI_FILE_EXTENSION"; public final static String getDebugPort(ILaunch fLaunch) { |