From 663ff9fae682e36af5634dcdb0b22a5092de2ff4 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 5 Feb 2019 16:24:21 +0300 Subject: [PATCH] [platform] add LeftRightSearchAwareRenderer combining two renderers and their search strings --- .../ui/list/LeftRightSearchAwareRenderer.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 platform/platform-api/src/com/intellij/ui/list/LeftRightSearchAwareRenderer.kt diff --git a/platform/platform-api/src/com/intellij/ui/list/LeftRightSearchAwareRenderer.kt b/platform/platform-api/src/com/intellij/ui/list/LeftRightSearchAwareRenderer.kt new file mode 100644 index 000000000000..9dcc8626d493 --- /dev/null +++ b/platform/platform-api/src/com/intellij/ui/list/LeftRightSearchAwareRenderer.kt @@ -0,0 +1,24 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.ui.list + +import com.intellij.ui.speedSearch.SearchAwareRenderer + +/** + * A renderer which combines [two renderers][LeftRightRenderer] and combines [search string][getItemSearchString] from both renderers. + */ +class LeftRightSearchAwareRenderer( + override val mainRenderer: SearchAwareRenderer, + override val rightRenderer: SearchAwareRenderer +) : LeftRightRenderer(), + SearchAwareRenderer { + + override fun getItemSearchString(item: T): String? { + val main = mainRenderer.getItemSearchString(item) + val right = rightRenderer.getItemSearchString(item) + return when { + main == null -> right + right == null -> main + else -> "$main $right" + } + } +}