[Pydev-cvs] org.python.pydev/src/org/python/pydev/outline PyOutlinePage.java,1.3,1.4
Brought to you by:
fabioz
From: <fa...@us...> - 2004-03-05 14:55:47
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/outline In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12322/src/org/python/pydev/outline Modified Files: PyOutlinePage.java Log Message: Minor refactorings so that some needed items for external navigation are made visible (and testing for null items). Index: PyOutlinePage.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/outline/PyOutlinePage.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PyOutlinePage.java 31 Dec 2003 19:34:28 -0000 1.3 --- PyOutlinePage.java 5 Mar 2004 14:41:34 -0000 1.4 *************** *** 99,103 **** IDocumentProvider provider = editorView.getDocumentProvider(); document = provider.getDocument(editorView.getEditorInput()); ! model = new ParsedModel(this, editorView.getParser()); tree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); tree.setContentProvider(new ParsedContentProvider()); --- 99,103 ---- IDocumentProvider provider = editorView.getDocumentProvider(); document = provider.getDocument(editorView.getEditorInput()); ! model = getParsedModel(); tree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); tree.setContentProvider(new ParsedContentProvider()); *************** *** 105,108 **** --- 105,117 ---- tree.setInput(model.getRoot()); } + + /** + * + * @return the parsed model, so that it can be used elsewhere (in navigation) + */ + public ParsedModel getParsedModel() { + return new ParsedModel(this, editorView.getParser()); + } + /* *************** *** 113,130 **** public void refreshItems(Object[] items) { TreeViewer viewer = getTreeViewer(); ! Tree treeWidget = viewer.getTree(); ! ScrollBar bar = treeWidget.getVerticalBar(); ! int barPosition = 0; ! if (bar != null) { ! barPosition = bar.getSelection(); ! } ! if (items == null) ! viewer.refresh(); ! else ! for (int i=0; i< items.length; i++) { ! viewer.refresh(items[i]); } - if (barPosition != 0) { - bar.setSelection(Math.min(bar.getMaximum(), barPosition)); } } --- 122,141 ---- public void refreshItems(Object[] items) { TreeViewer viewer = getTreeViewer(); ! if (viewer != null){ ! Tree treeWidget = viewer.getTree(); ! ScrollBar bar = treeWidget.getVerticalBar(); ! int barPosition = 0; ! if (bar != null) { ! barPosition = bar.getSelection(); ! } ! if (items == null) ! viewer.refresh(); ! else ! for (int i=0; i< items.length; i++) { ! viewer.refresh(items[i]); ! } ! if (barPosition != 0) { ! bar.setSelection(Math.min(bar.getMaximum(), barPosition)); } } } *************** *** 136,140 **** */ public void updateItems(Object[] items) { ! getTreeViewer().update(items, null); } --- 147,153 ---- */ public void updateItems(Object[] items) { ! TreeViewer tree = getTreeViewer(); ! if (tree != null) ! getTreeViewer().update(items, null); } *************** *** 197,218 **** if (newSel == null) return; ! if (newSel.r != null) { ! editorView.setSelection(newSel.r.getOffset(), newSel.r.getLength()); ! } ! else { ! IDocumentProvider provider = editorView.getDocumentProvider(); ! IDocument document = provider.getDocument(editorView.getEditorInput()); ! try { ! IRegion r = document.getLineInformation(newSel.line - 1); ! // if selecting the whole line, just use the information ! if (newSel.column == IOutlineModel.SelectThis.WHOLE_LINE) { ! newSel.column = 0; ! newSel.length = r.getLength(); ! } ! editorView.setSelection(r.getOffset() + newSel.column, newSel.length); ! } catch (BadLocationException e) { ! e.printStackTrace(); ! } ! } } }; --- 210,214 ---- if (newSel == null) return; ! selectSelectionInEditor(newSel,editorView); } }; *************** *** 220,222 **** --- 216,240 ---- createActions(); } + + public static void selectSelectionInEditor(IOutlineModel.SelectThis newSel, PyEdit editorView) { + if (newSel.r != null) { + editorView.setSelection(newSel.r.getOffset(), newSel.r.getLength()); + } + else { + IDocumentProvider provider = editorView.getDocumentProvider(); + IDocument document = provider.getDocument(editorView.getEditorInput()); + try { + IRegion r = document.getLineInformation(newSel.line - 1); + // if selecting the whole line, just use the information + if (newSel.column == IOutlineModel.SelectThis.WHOLE_LINE) { + newSel.column = 0; + newSel.length = r.getLength(); + } + editorView.setSelection(r.getOffset() + newSel.column, newSel.length); + } catch (BadLocationException e) { + e.printStackTrace(); + } + } + } + } |