/* * 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.openapi.editor.menus.transformation; import jetbrains.mps.smodel.runtime.IconResource; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNode; public interface CompletionActionItem extends ActionItem { /** * Returns the text that corresponds to this action. Usually this method would return a fixed string, such as a concept alias (e.g. {@code for} for an action * that inserts a ForLoop). Sometimes, however, it may be useful to base the matching text on the pattern. For example, in case of an action that inserts * a method declaration, the method may specify that pattern {@code foo} corresponds to matching text {@code foo()}. * * @param pattern the text that the user has typed so far * @return the text that matches this action, or null if not defined */ @Nullable default String getMatchingText(@NotNull String pattern) { return getLabelText(pattern); } /** * Returns the type of the result of the transformation when performed, if known and applicable. Used to filter actions for smart completion. * * @param pattern the text that the user has typed so far * @return a node representing the type if known; null if unknown or not defined */ @Nullable default SNode getActionType(@NotNull String pattern) { return null; } /** * Returns the icon resource that corresponds to this action * * @param pattern the text that the user has typed so far * @return the icon resource, null if not defined */ @Nullable default IconResource getIcon(String pattern) { return null; } /** * Returns the text that would appear on the right side of the completion menu. * * @param pattern the text that the user has typed so far * @return a (short) string or null if not defined */ @Nullable default String getShortDescriptionText(@NotNull String pattern) { return null; } /** * Indicates whether the action may be executed with the given pattern immediately, without showing the completion menu. Always called in a read action. * * @param pattern the text that the user has typed so far */ boolean canExecuteStrictly(@NotNull String pattern); }