/* * Copyright 2000-2009 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 com.intellij.openapi.ui; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.LinkedHashMap; import java.util.Map; public interface Queryable { void putInfo(@NotNull Map<String, String> info); class PrintInfo { private final String[] myIdKeys; private final String[] myInfoKeys; public PrintInfo() { this(null, null); } public PrintInfo(@Nullable String[] idKeys) { this(idKeys, null); } public PrintInfo(@Nullable String[] idKeys, @Nullable String[] infoKeys) { myIdKeys = idKeys; myInfoKeys = infoKeys; } } class Util { @Nullable public static String print(@NotNull Queryable ui, @Nullable PrintInfo printInfo, @Nullable Contributor contributor) { PrintInfo print = printInfo != null ? printInfo : new PrintInfo(); LinkedHashMap<String, String> map = new LinkedHashMap<String, String>(); ui.putInfo(map); if (contributor != null) { contributor.apply(map); } String id = null; //String[] names = print.myIdKeys != null ? print.myIdKeys : new String[] {"name"}; //for (String eachKey : names) { // String eachValue = map.get(eachKey); // if (eachValue != null) { // id = eachValue; // } //} if (!map.isEmpty()) { id = map.values().iterator().next(); } StringBuilder info = new StringBuilder(); if (print.myInfoKeys != null) { for (String eachKey : print.myInfoKeys) { String eachValue = map.get(eachKey); if (eachValue != null) { if (info.length() > 0) { info.append(","); } info.append(eachKey).append("=").append(eachValue); } } } return id + (info.length() > 0 ? " " + info.toString() : ""); } @Nullable public static String print(@NotNull Queryable ui, @Nullable PrintInfo printInfo) { return print(ui, printInfo, null); } } interface Contributor { void apply(@NotNull Map<String, String> info); } }