[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codefolding PyEditProjection.java,1.3,1.4 C
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2004-07-22 13:27:41
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codefolding In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10911/src/org/python/pydev/editor/codefolding Modified Files: PyEditProjection.java CodeFoldingSetter.java Log Message: Had to do some "hack" to get the marks after loading the editor the first time. Index: PyEditProjection.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codefolding/PyEditProjection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PyEditProjection.java 19 Jul 2004 19:50:56 -0000 1.3 --- PyEditProjection.java 22 Jul 2004 13:27:31 -0000 1.4 *************** *** 31,35 **** private ProjectionSupport fProjectionSupport; ! /* --- 31,36 ---- private ProjectionSupport fProjectionSupport; ! public static final int PROP_FOLDING_CHANGED = -999; ! /* Index: CodeFoldingSetter.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codefolding/CodeFoldingSetter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CodeFoldingSetter.java 19 Jul 2004 17:59:42 -0000 1.1 --- CodeFoldingSetter.java 22 Jul 2004 13:27:31 -0000 1.2 *************** *** 15,19 **** import org.eclipse.jface.text.source.projection.ProjectionAnnotation; import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel; ! import org.eclipse.ui.editors.text.TextEditor; import org.python.pydev.editor.model.AbstractNode; import org.python.pydev.editor.model.ClassNode; --- 15,20 ---- import org.eclipse.jface.text.source.projection.ProjectionAnnotation; import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel; ! import org.eclipse.ui.IPropertyListener; ! import org.python.pydev.editor.PyEdit; import org.python.pydev.editor.model.AbstractNode; import org.python.pydev.editor.model.ClassNode; *************** *** 27,35 **** * This class is used to set the code folding markers. */ ! public class CodeFoldingSetter implements IModelListener { ! private TextEditor editor; ! public CodeFoldingSetter(TextEditor editor) { this.editor = editor; } --- 28,36 ---- * This class is used to set the code folding markers. */ ! public class CodeFoldingSetter implements IModelListener, IPropertyListener { ! private PyEdit editor; ! public CodeFoldingSetter(PyEdit editor) { this.editor = editor; } *************** *** 40,48 **** * @see org.python.pydev.editor.model.IModelListener#modelChanged(org.python.pydev.editor.model.AbstractNode) */ ! public void modelChanged(AbstractNode root) { IAnnotationModel model = (IAnnotationModel) editor .getAdapter(ProjectionAnnotationModel.class); ! try{ if (model != null) { --- 41,81 ---- * @see org.python.pydev.editor.model.IModelListener#modelChanged(org.python.pydev.editor.model.AbstractNode) */ ! public synchronized void modelChanged(AbstractNode root) { IAnnotationModel model = (IAnnotationModel) editor .getAdapter(ProjectionAnnotationModel.class); ! if (model == null){ ! //we have to get the model to do it... so, start a thread and try until get it... ! //this had to be done because sometime we get here and we still are unable to get the ! //projection annotation model. (there should be a better way, but this solves it... ! //even if it looks like a hack...) ! new Thread(){ ! public void run(){ ! IAnnotationModel modelT = null; ! for(int i=0 ; i < 10 && modelT == null; i++){ ! modelT = (IAnnotationModel) editor ! .getAdapter(ProjectionAnnotationModel.class); ! try { ! sleep(50); ! } catch (InterruptedException e) { ! e.printStackTrace(); ! } ! } ! if (modelT != null){ ! addMarksToModel(editor.getPythonModel(), modelT); ! } ! } ! }.start(); ! }else{ ! addMarksToModel(root, model); ! } ! ! } ! ! /** ! * @param root ! * @param model ! */ ! private void addMarksToModel(AbstractNode root, IAnnotationModel model) { try{ if (model != null) { *************** *** 75,79 **** e.printStackTrace(); } - } --- 108,111 ---- *************** *** 130,132 **** --- 162,174 ---- } + /* (non-Javadoc) + * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int) + */ + public void propertyChanged(Object source, int propId) { + if(propId == PyEditProjection.PROP_FOLDING_CHANGED){ + System.out.println("PyEditProjection.PROP_FOLDING_CHANGED"); + modelChanged(editor.getPythonModel()); + } + } + } \ No newline at end of file |