mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[DS-3445] refactor code, split method
GitOrigin-RevId: 22eaecd6e2185ea7775683cd5eb338d69c00a5e6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
05394418d5
commit
0b7bb90f4e
+32
-28
@@ -38,7 +38,7 @@ class NotebookIntervalPointerFactoryImpl(private val notebookCellLines: Notebook
|
||||
mySavedChanges = changes
|
||||
return modifyDocumentAction().also {
|
||||
if (mySavedChanges != null) {
|
||||
applyChanges()
|
||||
applySavedChanges()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,7 +86,7 @@ class NotebookIntervalPointerFactoryImpl(private val notebookCellLines: Notebook
|
||||
|
||||
updatePointersFrom(invalidPointersStart)
|
||||
|
||||
applyChanges()
|
||||
applySavedChanges()
|
||||
}
|
||||
|
||||
private fun onEdited(intervals: List<NotebookCellLines.Interval>, excluded: List<NotebookCellLines.Interval> = emptyList()) {
|
||||
@@ -102,39 +102,43 @@ class NotebookIntervalPointerFactoryImpl(private val notebookCellLines: Notebook
|
||||
}
|
||||
}
|
||||
|
||||
private fun applyChanges() {
|
||||
private fun applySavedChanges() {
|
||||
mySavedChanges?.forEach { hint ->
|
||||
when (hint) {
|
||||
is NotebookIntervalPointerFactory.Invalidate -> {
|
||||
val ordinal = hint.ptr.get()?.ordinal
|
||||
invalidate((hint.ptr as NotebookIntervalPointerImpl))
|
||||
if (ordinal != null) {
|
||||
changeListeners.multicaster.let { listener ->
|
||||
listener.onRemoved(ordinal)
|
||||
listener.onInserted(ordinal)
|
||||
}
|
||||
}
|
||||
}
|
||||
is NotebookIntervalPointerFactory.Reuse -> {
|
||||
val oldPtr = hint.ptr as NotebookIntervalPointerImpl
|
||||
pointers.getOrNull(hint.ordinalAfterChange)?.let { newPtr ->
|
||||
if (oldPtr !== newPtr) {
|
||||
val oldOrdinal = oldPtr.interval?.ordinal
|
||||
invalidate(oldPtr)
|
||||
oldPtr.interval = newPtr.interval
|
||||
newPtr.interval = null
|
||||
pointers[hint.ordinalAfterChange] = oldPtr
|
||||
if (oldOrdinal != null && oldOrdinal != hint.ordinalAfterChange) {
|
||||
changeListeners.multicaster.onMoved(oldOrdinal, hint.ordinalAfterChange)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
is NotebookIntervalPointerFactory.Invalidate -> applySavedChange(hint)
|
||||
is NotebookIntervalPointerFactory.Reuse -> applySavedChange(hint)
|
||||
}
|
||||
}
|
||||
mySavedChanges = null
|
||||
}
|
||||
|
||||
private fun applySavedChange(hint: NotebookIntervalPointerFactory.Invalidate) {
|
||||
val ordinal = hint.ptr.get()?.ordinal
|
||||
invalidate((hint.ptr as NotebookIntervalPointerImpl))
|
||||
if (ordinal != null) {
|
||||
changeListeners.multicaster.let { listener ->
|
||||
listener.onRemoved(ordinal)
|
||||
listener.onInserted(ordinal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun applySavedChange(hint: NotebookIntervalPointerFactory.Reuse) {
|
||||
val oldPtr = hint.ptr as NotebookIntervalPointerImpl
|
||||
pointers.getOrNull(hint.ordinalAfterChange)?.let { newPtr ->
|
||||
if (oldPtr !== newPtr) {
|
||||
val oldOrdinal = oldPtr.interval?.ordinal
|
||||
invalidate(oldPtr)
|
||||
oldPtr.interval = newPtr.interval
|
||||
newPtr.interval = null
|
||||
pointers[hint.ordinalAfterChange] = oldPtr
|
||||
if (oldOrdinal != null && oldOrdinal != hint.ordinalAfterChange) {
|
||||
changeListeners.multicaster.onMoved(oldOrdinal, hint.ordinalAfterChange)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun invalidate(ptr: NotebookIntervalPointerImpl) {
|
||||
ptr.interval?.let { interval ->
|
||||
pointers[interval.ordinal] = NotebookIntervalPointerImpl(interval)
|
||||
|
||||
Reference in New Issue
Block a user