/*
* Copyright 2003-2014 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.descriptor;
import jetbrains.mps.smodel.runtime.ILanguageAspect;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import org.jetbrains.mps.openapi.language.SLanguage;
import java.util.Collection;
/**
* User: shatalin
* Date: 4/8/13
*/
public interface EditorAspectDescriptor extends ILanguageAspect {
/**
* Returns the editors defined for a concept together with any additions contributed by extending languages.
* @param concept the concept
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<ConceptEditor> getEditors(SAbstractConcept concept);
/**
* Returns the editors defined for a concept that are declared in this language.
* @param concept the concept
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<ConceptEditor> getDeclaredEditors(SAbstractConcept concept);
/**
* Returns the editors components defined for a concept and id together with any additions contributed by extending languages.
* @param concept the concept
* @param editorComponentId id of the editor component
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<ConceptEditorComponent> getEditorComponents(SAbstractConcept concept, String editorComponentId);
/**
* Returns the editors components defined for a concept that are declared in this language.
* @param concept the concept
* @param editorComponentId id of the editor component
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<ConceptEditorComponent> getDeclaredEditorComponents(SAbstractConcept concept, String editorComponentId);
/**
* Returns the default transformation menu for a concept (if defined), together with any additions contributed by extending languages. Only menus and
* contributions from used languages are returned.
*
* @param concept the concept
* @param usedLanguages a collection of used languages
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<TransformationMenu> getDefaultTransformationMenus(@NotNull SAbstractConcept concept, @NotNull Collection<SLanguage> usedLanguages);
/**
* Returns the default transformation menu for a concept and/or any contributions to that menu that are declared in this language.
* @param concept the concept
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<TransformationMenu> getDeclaredDefaultTransformationMenus(SAbstractConcept concept);
/**
* Returns a named transformation menu together with any additions to it contributed by extending languages. Only menus and contributions from used languages
* are returned.
*
* @param menuId identifier of the named menu
* @param usedLanguages a collection of used languages
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<TransformationMenu> getNamedTransformationMenus(@NotNull NamedMenuId menuId, @NotNull Collection<SLanguage> usedLanguages);
/**
* Returns a named transformation menu together with any additions to it declared in this language
* @param menuId identifier of the named menu
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<TransformationMenu> getDeclaredNamedTransformationMenus(NamedMenuId menuId);
/**
* Returns a named substitute menu together with any additions to it declared in this language
* @param menuId identifier of the named menu
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<SubstituteMenu> getDeclaredNamedSubstituteMenus(NamedMenuId menuId);
/**
* Returns the default substitute menu for a concept (if defined), together with any additions contributed by extending languages.
* @param concept the concept
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<SubstituteMenu> getDefaultSubstituteMenus(SAbstractConcept concept, @NotNull Collection<SLanguage> usedLanguages);
/**
* Returns the default substitute menu for a concept and/or any contributions to that menu that are declared in this language.
* @param concept the concept
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<SubstituteMenu> getDeclaredDefaultSubstituteMenus(SAbstractConcept concept);
/**
* Returns a named substitute menu together with any additions to it contributed by extending languages.
* @param menuId identifier of the named menu
* @return a non-null but possibly empty collection
*/
@NotNull
Collection<SubstituteMenu> getNamedSubstituteMenus(NamedMenuId menuId, @NotNull Collection<SLanguage> usedLanguages);
}