[nobug] add document counts
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java index 2a446c8..88ef038 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java
@@ -22,6 +22,10 @@ import java.util.Set; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.Dialog; @@ -109,6 +113,8 @@ import org.eclipse.wst.sse.ui.internal.reconcile.ReconcileAnnotationKey; import org.eclipse.wst.sse.ui.internal.reconcile.TemporaryAnnotation; +import com.ibm.icu.text.NumberFormat; + /** * @author nsd A Status Line contribution intended to display the selected * offsets in an editor. Double-clicking shows information about @@ -501,6 +507,35 @@ modelHandlerContentTypeLabel.setLayoutData(gd); modelHandlerContentTypeLabel.setText(SSEUIMessages.OffsetStatusLineContributionItem_5 + model.getModelHandler().getAssociatedContentTypeId() + " (" + model.getModelHandler() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + final Text counts = new Text(composite, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY); + gd = new GridData(SWT.FILL, SWT.FILL, true, false); + gd.horizontalSpan = 2; + counts.setLayoutData(gd); + counts.setText("Counting..."); + counts.setEnabled(false); + final IStructuredModel finalModel = model; + final Display display = Display.getCurrent(); + Job counter = new Job("Counting regions") { + protected IStatus run(IProgressMonitor monitor) { + IStructuredDocumentRegion[] structuredDocumentRegions = finalModel.getStructuredDocument().getStructuredDocumentRegions(); + int length = finalModel.getStructuredDocument().getLength(); + int regionCount = 0; + for (int i = 0; i < structuredDocumentRegions.length; i++) { + regionCount += structuredDocumentRegions[i].getNumberOfRegions(); + } + NumberFormat formatter = NumberFormat.getIntegerInstance(); + final String regioncount = "Count: " + formatter.format(structuredDocumentRegions.length) + " document regions containing " + formatter.format(regionCount) + " text regions representing " + formatter.format(length) + " characters";//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + display.syncExec(new Runnable() { + public void run() { + counts.setText(regioncount); + counts.setEnabled(true); + } + }); + return Status.OK_STATUS; + } + }; + counter.schedule(1000); + Label blankRow = new Label(composite, SWT.NONE); gd = new GridData(SWT.FILL, SWT.FILL, true, false); gd.horizontalSpan = 2;