/* * Copyright 2003-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.nodeEditor.assist; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuItem; import jetbrains.mps.openapi.editor.selection.Selection; import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.function.Function; /** * A wrapper that passes the results of the wrapped menu provider to a {@link Function} and returns the function result. */ class FilteringSelectionMenuProvider implements SelectionMenuProvider { private final SelectionMenuProvider mySource; private final Function<List<TransformationMenuItem>, List<TransformationMenuItem>> myFilter; FilteringSelectionMenuProvider(SelectionMenuProvider source, Function<List<TransformationMenuItem>, List<TransformationMenuItem>> filter) { mySource = source; myFilter = filter; } @NotNull @Override public List<TransformationMenuItem> getMenuItems(@NotNull Selection selection) { return myFilter.apply(mySource.getMenuItems(selection)); } }