[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited SourceModulePropos
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2005-04-13 13:03:03
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14483/src/org/python/pydev/editor/codecompletion/revisited Modified Files: IASTManager.java ASTManager.java Added Files: SourceModuleProposal.java Log Message: Refactoring content assistants --- NEW FILE: SourceModuleProposal.java --- /* * Created on Apr 12, 2005 * * @author Fabio Zadrozny */ package org.python.pydev.editor.codecompletion.revisited; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorPart; import org.python.pydev.editor.PyEdit; import org.python.pydev.editor.codecompletion.CompletionProposal; import org.python.pydev.editor.codecompletion.revisited.modules.SourceModule; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.utils.REF; /** * This class is a proposal that should be applied in a module and not in the original doc. * * @author Fabio Zadrozny */ public class SourceModuleProposal extends CompletionProposal { public final SourceModule module; public PyEdit edit; public IDocument doc; public String className; public static final int ADD_TO_DEFAULT = -1; public static final int ADD_TO_LAST_LINE = 0; public static final int ADD_TO_LAST_CLASS_LINE = 1; public int addTo = ADD_TO_LAST_LINE; public SourceModuleProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, SourceModule s) { super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo); this.module = s; } /** * @see org.python.pydev.editor.codecompletion.CompletionProposal#apply(org.eclipse.jface.text.IDocument) */ public void apply(IDocument dummy) { IPath path = new Path(module.getFile().getAbsolutePath()); IEditorPart part = PydevPlugin.doOpenEditor(path, true); if(part instanceof PyEdit){ edit = (PyEdit) part; doc = edit.getDocumentProvider().getDocument(edit.getEditorInput()); }else{ String contents = REF.getFileContents(module.getFile()); doc = new Document(contents); } if(addTo == ADD_TO_LAST_LINE){ fReplacementOffset = doc.getLength(); } super.apply(doc); } /** * @see org.python.pydev.editor.codecompletion.CompletionProposal#getSelection(org.eclipse.jface.text.IDocument) */ public Point getSelection(IDocument dummy) { Point sel = super.getSelection(doc); edit.setSelection(sel.x, sel.y); return null; } /** * @return * */ public String getReplacementStr() { return fReplacementString; } } Index: ASTManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/ASTManager.java,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** ASTManager.java 22 Mar 2005 16:45:49 -0000 1.27 --- ASTManager.java 13 Apr 2005 13:02:22 -0000 1.28 *************** *** 357,361 **** * @return the module represented by this name */ ! private AbstractModule getModule(String name, PythonNature nature) { AbstractModule n = (AbstractModule) modules.get(new ModulesKey(name, null)); if (n == null){ --- 357,361 ---- * @return the module represented by this name */ ! public AbstractModule getModule(String name, PythonNature nature) { AbstractModule n = (AbstractModule) modules.get(new ModulesKey(name, null)); if (n == null){ *************** *** 639,655 **** SourceModule s = (SourceModule) module; try { ! AssignDefinition[] defs = s.findDefinition(state.activationToken, state.line, state.col); ! if(defs.length > 0){ ! for (int i = 0; i < defs.length; i++) { ! ! CompletionState copy = state.getCopy(); ! copy.activationToken = defs[i].value; ! copy.line = defs[i].line; ! copy.col = defs[i].col; ! IToken[] tks = getCompletionsForModule(module, copy); ! if(tks.length > 0) ! return tks; ! } } --- 639,653 ---- SourceModule s = (SourceModule) module; try { ! AssignDefinition[] defs = s.findDefinition(state.activationToken, state.line, state.col, this); ! for (int i = 0; i < defs.length; i++) { ! ! CompletionState copy = state.getCopy(); ! copy.activationToken = defs[i].value; ! copy.line = defs[i].line; ! copy.col = defs[i].col; ! IToken[] tks = getCompletionsForModule(module, copy); ! if(tks.length > 0) ! return tks; } Index: IASTManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/IASTManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IASTManager.java 2 Feb 2005 15:56:17 -0000 1.5 --- IASTManager.java 13 Apr 2005 13:02:22 -0000 1.6 *************** *** 11,14 **** --- 11,15 ---- import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; + import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule; import org.python.pydev.editor.codecompletion.revisited.modules.ModulesKey; import org.python.pydev.plugin.PythonNature; *************** *** 108,110 **** --- 109,120 ---- */ public abstract IToken[] getCompletionsForToken(File file, IDocument doc, CompletionState state); + + /** + * + * @param name + * @param nature + * @return the module with the specified name. + */ + public AbstractModule getModule(String name, PythonNature nature); + } \ No newline at end of file |