package org.elixir_lang.name_arity; import com.intellij.ui.RowIcon; import org.elixir_lang.icons.ElixirIcons; import org.elixir_lang.structure_view.element.Timed; import org.elixir_lang.structure_view.element.Visible; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; public class PresentationData { @NotNull public static Icon icon(final boolean callback, final boolean overridable, final boolean override, @NotNull final Timed.Time time, @Nullable final Visible.Visibility visibility) { int layers = 3; if (callback) { layers++; } if (overridable) { layers++; } if (override) { layers++; } RowIcon rowIcon = new RowIcon(layers); int layer = 0; if (callback) { rowIcon.setIcon(ElixirIcons.CALLBACK, layer++); } Icon timeIcon = ElixirIcons.Time.from(time); rowIcon.setIcon(timeIcon, layer++); Icon visibilityIcon = ElixirIcons.Visibility.from(visibility); rowIcon.setIcon(visibilityIcon, layer++); rowIcon.setIcon(ElixirIcons.CALL_DEFINITION, layer++); if (overridable) { rowIcon.setIcon(ElixirIcons.OVERRIDABLE, layer++); } if (override) { rowIcon.setIcon(ElixirIcons.OVERRIDE, layer); } return rowIcon; } @NotNull public static String presentableText(@NotNull String name, @Nullable Integer arity) { StringBuilder presentableTextBuilder = new StringBuilder(name).append('/'); if (arity != null) { presentableTextBuilder.append(arity); } else { presentableTextBuilder.append('?'); } return presentableTextBuilder.toString(); } }