bySummary.getViewport().setViewPosition(new Point(0, 0));
try { int startLine = srcLine.getStartLine() - 1; int endLine = srcLine.getEndLine();      JViewport viewport = sourceTextAreaScrollPane.getViewport(); Rectangle viewportRect = viewport.getViewRect(); int topRow = sourceTextArea.getLineOfOffset(sourceTextArea.viewToModel(viewportRect.getLocation())); int bottomRow = sourceTextArea.getLineOfOffset(sourceTextArea.viewToModel(new Point(viewportRect.x, (viewportRect.y + viewportRect.height) - 1))); int numRowsVisible = bottomRow - topRow;    int viewLine = Math.max(startLine - (numRowsVisible > 0 ? numRowsVisible / 2 : 0), 0); int viewBegin = sourceTextArea.getLineStartOffset(viewLine); Rectangle viewRect = sourceTextArea.modelToView(viewBegin); viewport.setViewPosition(new Point(viewRect.x, viewRect.y));   int selBegin = sourceTextArea.getLineStartOffset(startLine); int selEnd = sourceTextArea.getLineStartOffset(endLine); sourceTextArea.select(selBegin, selEnd); sourceTextArea.getCaret().setSelectionVisible(true); } catch (javax.swing.text.BadLocationException e) { logger.logMessage(Logger.ERROR, e.toString()); }
			public void run() {				bySummary.getViewport().setViewPosition(new Point(0, 0));			}