public void relayout(boolean updateFolding) { assert SwingUtilities.isEventDispatchThread() : "LeftEditorHighlighter.relayout() should be executed in eventDispatchThread"; SNode editedNode = myEditorComponent.getEditedNode(); // additional check - during editor dispose process some Folding area painters can be removed // calling relayout().. if (myEditorComponent.isDisposed() || (editedNode != null && jetbrains.mps.util.SNodeOperations.isDisposed(editedNode))) { return; } if (myRightToLeft) { recalculateFoldingAreaWidth(); updateSeparatorLinePosition(); if (updateFolding) { for (AbstractFoldingAreaPainter painter : myFoldingAreaPainters) { painter.relayout(); } // wee need to recalculateIconRenderersWidth only if one of collections was folded/unfolded recalculateIconRenderersWidth(); } recalculateTextColumnWidth(); } else { recalculateTextColumnWidth(); if (updateFolding) { for (AbstractFoldingAreaPainter painter : myFoldingAreaPainters) { painter.relayout(); } // wee need to recalculateIconRenderersWidth only if one of collections was folded/unfolded recalculateIconRenderersWidth(); } recalculateFoldingAreaWidth(); updateSeparatorLinePosition(); } updatePreferredSize(); }