Lines 70-76
Link Here
|
70 |
import org.netbeans.spi.editor.highlighting.HighlightsLayer; |
70 |
import org.netbeans.spi.editor.highlighting.HighlightsLayer; |
71 |
import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory; |
71 |
import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory; |
72 |
import org.netbeans.spi.editor.highlighting.HighlightsSequence; |
72 |
import org.netbeans.spi.editor.highlighting.HighlightsSequence; |
|
|
73 |
import org.netbeans.spi.editor.highlighting.ReleasableHighlightsContainer; |
73 |
import org.netbeans.spi.editor.highlighting.ZOrder; |
74 |
import org.netbeans.spi.editor.highlighting.ZOrder; |
|
|
75 |
import org.netbeans.spi.editor.highlighting.support.AbstractHighlightsContainer; |
74 |
import org.openide.util.Lookup; |
76 |
import org.openide.util.Lookup; |
75 |
|
77 |
|
76 |
/** |
78 |
/** |
Lines 351-357
Link Here
|
351 |
bagB.addHighlight(15, 25, attribsB); |
353 |
bagB.addHighlight(15, 25, attribsB); |
352 |
bagC.addHighlight(50, 60, attribsC); |
354 |
bagC.addHighlight(50, 60, attribsC); |
353 |
bagD.addHighlight(55, 65, attribsD); |
355 |
bagD.addHighlight(55, 65, attribsD); |
354 |
|
356 |
|
355 |
SingletonLayerFactory layerA = new SingletonLayerFactory("layerA", ZOrder.DEFAULT_RACK, true, bagA); |
357 |
SingletonLayerFactory layerA = new SingletonLayerFactory("layerA", ZOrder.DEFAULT_RACK, true, bagA); |
356 |
SingletonLayerFactory layerB = new SingletonLayerFactory("layerB", ZOrder.DEFAULT_RACK.forPosition(1), false, bagB); |
358 |
SingletonLayerFactory layerB = new SingletonLayerFactory("layerB", ZOrder.DEFAULT_RACK.forPosition(1), false, bagB); |
357 |
SingletonLayerFactory layerC = new SingletonLayerFactory("layerC", ZOrder.DEFAULT_RACK.forPosition(2), true, bagC); |
359 |
SingletonLayerFactory layerC = new SingletonLayerFactory("layerC", ZOrder.DEFAULT_RACK.forPosition(2), true, bagC); |
Lines 634-639
Link Here
|
634 |
assertFalse("There should be no highlights", fixed.moveNext()); |
636 |
assertFalse("There should be no highlights", fixed.moveNext()); |
635 |
} |
637 |
} |
636 |
} |
638 |
} |
|
|
639 |
|
640 |
public void testReleaseLayers() { |
641 |
final String mimeType = "text/plain"; |
642 |
TestReleaseHighlightsContainer releasableContainer = new TestReleaseHighlightsContainer(); |
643 |
SingletonLayerFactory releasableLayer = new SingletonLayerFactory( |
644 |
"releasableLayer", ZOrder.DEFAULT_RACK.forPosition(1), true, releasableContainer); |
645 |
|
646 |
MemoryMimeDataProvider.reset(null); |
647 |
MemoryMimeDataProvider.addInstances(mimeType, releasableLayer); |
648 |
|
649 |
JEditorPane pane = new JEditorPane(mimeType, "Hello"); |
650 |
HighlightingManager hm = HighlightingManager.getInstance(pane); // Ensure layers get created |
651 |
hm.getHighlights(HighlightsLayerFilter.IDENTITY); |
652 |
pane.setEditorKit(new SimpleKit(mimeType)); |
653 |
// Do not check against concrete release count since there are e.g. mime lookup rebuild notifications |
654 |
// that lead to HM.rebuildAllLayers() which increases the releaseCount too. |
655 |
assertTrue("Highlights container releasing not performed after pane.setEditorKit()", releasableContainer.releaseCount > 0); |
656 |
} |
637 |
|
657 |
|
638 |
// test getting independent HCs for different JEditorPanes with the same mime type |
658 |
// test getting independent HCs for different JEditorPanes with the same mime type |
639 |
|
659 |
|
Lines 870-873
Link Here
|
870 |
return filteredLayers; |
890 |
return filteredLayers; |
871 |
} |
891 |
} |
872 |
}; |
892 |
}; |
|
|
893 |
|
894 |
private static final class TestReleaseHighlightsContainer extends AbstractHighlightsContainer |
895 |
implements ReleasableHighlightsContainer |
896 |
{ |
897 |
|
898 |
public int releaseCount; |
899 |
|
900 |
@Override |
901 |
public HighlightsSequence getHighlights(int startOffset, int endOffset) { |
902 |
return HighlightsSequence.EMPTY; |
903 |
} |
904 |
|
905 |
@Override |
906 |
public void released() { |
907 |
releaseCount++; |
908 |
} |
909 |
|
910 |
} |
911 |
|
873 |
} |
912 |
} |