Search in sources :

Example 1 with RegionsReplacedEvent

use of org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent in project webtools.sourceediting by eclipse.

the class BasicStructuredDocument method internalReplaceText.

/**
 * @param requester
 * @param start
 * @param replacementLength
 * @param changes
 * @param modificationStamp
 * @param ignoreReadOnlySettings
 * @return
 */
private StructuredDocumentEvent internalReplaceText(Object requester, int start, int replacementLength, String changes, long modificationStamp, boolean ignoreReadOnlySettings) {
    StructuredDocumentEvent result = null;
    stopPostNotificationProcessing();
    if (changes == null)
        // $NON-NLS-1$
        changes = "";
    // 
    if (Debug.debugStructuredDocument)
        // $NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
        System.out.println(getClass().getName() + "::replaceText(" + start + "," + replacementLength + "," + changes + ")");
    if (Debug.perfTestStructuredDocumentOnly || Debug.perfTest || Debug.perfTestRawStructuredDocumentOnly) {
        startStreamTime = System.currentTimeMillis();
    }
    try {
        // Note: event must be computed before 'fire' method called
        fDocumentEvent = new DocumentEvent(this, start, replacementLength, changes);
        fireDocumentAboutToChanged();
        try {
            acquireLock();
            if (!ignoreReadOnlySettings && (containsReadOnly(start, replacementLength))) {
                NoChangeEvent noChangeEvent = new NoChangeEvent(this, requester, changes, start, replacementLength);
                noChangeEvent.reason = NoChangeEvent.READ_ONLY_STATE_CHANGE;
                result = noChangeEvent;
            } else {
                result = updateModel(requester, start, replacementLength, changes);
            }
        } finally {
            releaseLock();
        }
        if (Debug.perfTestRawStructuredDocumentOnly || Debug.perfTest) {
            long stopStreamTime = System.currentTimeMillis();
            // $NON-NLS-1$
            System.out.println("\n\t\t\t\t Time for IStructuredDocument raw replaceText: " + (stopStreamTime - startStreamTime));
        }
        if (Debug.debugStructuredDocument) {
            // $NON-NLS-1$
            System.out.println("event type returned by replaceTextWithNoDebuggingThread: " + result);
        }
    } finally {
        // increment modification stamp if modifications were made
        if (result != null && !(result instanceof NoChangeEvent)) {
            fModificationStamp = modificationStamp;
            fNextModificationStamp = Math.max(fModificationStamp, fNextModificationStamp);
            fDocumentEvent.fModificationStamp = fModificationStamp;
        }
        if (result == null) {
            // result should not be null, but if an exception was thrown,
            // it will be
            // so send a noChangeEvent and log the problem
            NoChangeEvent noChangeEvent = new NoChangeEvent(this, requester, changes, start, replacementLength);
            noChangeEvent.reason = NoChangeEvent.NO_EVENT;
            fireStructuredDocumentEvent(noChangeEvent);
            // $NON-NLS-1$
            Logger.log(Logger.ERROR, "Program Error: invalid structured document event");
        } else {
            if (result instanceof RegionChangedEvent) {
                fireStructuredDocumentEvent((RegionChangedEvent) result);
            } else {
                if (result instanceof RegionsReplacedEvent) {
                    fireStructuredDocumentEvent((RegionsReplacedEvent) result);
                } else {
                    if (result instanceof StructuredDocumentRegionsReplacedEvent) {
                        // probably more efficient to mark old regions as
                        // 'deleted' at the time
                        // that are determined to be deleted, but I'll do
                        // here
                        // in then central spot
                        // for programming ease.
                        updateDeletedFields((StructuredDocumentRegionsReplacedEvent) result);
                        fireStructuredDocumentEvent((StructuredDocumentRegionsReplacedEvent) result);
                    } else {
                        if (result instanceof NoChangeEvent) {
                            fireStructuredDocumentEvent((NoChangeEvent) result);
                        } else {
                            // if here, this means a new event was created
                            // and not handled here
                            // just send a no event until this issue is
                            // resolved.
                            NoChangeEvent noChangeEvent = new NoChangeEvent(this, requester, changes, start, replacementLength);
                            noChangeEvent.reason = NoChangeEvent.NO_EVENT;
                            fireStructuredDocumentEvent(noChangeEvent);
                            // $NON-NLS-1$
                            Logger.log(Logger.INFO, "Program Error: unexpected structured document event: " + result);
                        }
                    }
                }
            }
        }
        if (Debug.perfTest || Debug.perfTestStructuredDocumentOnly) {
            long stopStreamTime = System.currentTimeMillis();
            // $NON-NLS-1$
            System.out.println("\n\t\t\t\t Total Time for IStructuredDocument event signaling/processing in replaceText: " + (stopStreamTime - startStreamTime));
        }
        resumePostNotificationProcessing();
    }
    return result;
}
Also used : StructuredDocumentEvent(org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent) RegionChangedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionChangedEvent) StructuredDocumentRegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent) RegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent) NoChangeEvent(org.eclipse.wst.sse.core.internal.provisional.events.NoChangeEvent) StructuredDocumentEvent(org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent) DocumentEvent(org.eclipse.jface.text.DocumentEvent) StructuredDocumentRegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent)

Example 2 with RegionsReplacedEvent

use of org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent in project webtools.sourceediting by eclipse.

the class TestRegionsReplacedEvent method testGetNewRegions.

public void testGetNewRegions() {
    RegionsReplacedEvent event = getBasicEvent();
    assertNull(event.getNewRegions());
}
Also used : RegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent)

Example 3 with RegionsReplacedEvent

use of org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent in project webtools.sourceediting by eclipse.

the class TestRegionsReplacedEvent method testGetOldRegions.

public void testGetOldRegions() {
    RegionsReplacedEvent event = getBasicEvent();
    assertNull(event.getOldRegions());
}
Also used : RegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent)

Example 4 with RegionsReplacedEvent

use of org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent in project webtools.sourceediting by eclipse.

the class TestRegionsReplacedEvent method getBasicEvent.

private RegionsReplacedEvent getBasicEvent() {
    IStructuredDocument document = StructuredDocumentFactory.getNewStructuredDocumentInstance(new NullParser());
    document.setText(this, testString);
    RegionsReplacedEvent event = new RegionsReplacedEvent(document, this, null, null, null, "", 0, 0);
    return event;
}
Also used : RegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent) IStructuredDocument(org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument)

Example 5 with RegionsReplacedEvent

use of org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent in project webtools.sourceediting by eclipse.

the class TestRegionsReplacedEvent method testGetStructuredDocumentRegion.

public void testGetStructuredDocumentRegion() {
    RegionsReplacedEvent event = getBasicEvent();
    assertNull(event.getStructuredDocumentRegion());
}
Also used : RegionsReplacedEvent(org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent)

Aggregations

RegionsReplacedEvent (org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent)8 NoChangeEvent (org.eclipse.wst.sse.core.internal.provisional.events.NoChangeEvent)3 RegionChangedEvent (org.eclipse.wst.sse.core.internal.provisional.events.RegionChangedEvent)3 StructuredDocumentRegionsReplacedEvent (org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent)3 StructuredDocumentEvent (org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent)2 ITextRegion (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion)2 DocumentEvent (org.eclipse.jface.text.DocumentEvent)1 NewDocumentEvent (org.eclipse.wst.sse.core.internal.provisional.events.NewDocumentEvent)1 IStructuredDocument (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument)1 IStructuredDocumentRegion (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion)1 IStructuredDocumentRegionList (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegionList)1 ITextRegionList (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList)1