| /* |
| * Copyright 2013-present Facebook, Inc. |
| * |
| * 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.facebook.buck.plugin.intellij.ui; |
| |
| import com.google.common.base.Strings; |
| import com.intellij.icons.AllIcons; |
| import com.intellij.ui.IdeBorderFactory; |
| import com.intellij.ui.MultilineTreeCellRenderer; |
| import com.intellij.ui.SideBorder; |
| |
| import javax.swing.Icon; |
| import javax.swing.JScrollPane; |
| import javax.swing.JTree; |
| |
| class TargetsTreeRenderer extends MultilineTreeCellRenderer { |
| |
| private TargetsTreeRenderer() { |
| } |
| |
| public static JScrollPane install(JTree tree) { |
| JScrollPane scrollPane = installRenderer(tree, new TargetsTreeRenderer()); |
| scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); |
| return scrollPane; |
| } |
| |
| @Override |
| protected void initComponent(JTree tree, |
| Object value, |
| boolean selected, |
| boolean expanded, |
| boolean leaf, |
| int row, |
| boolean hasFocus) { |
| if (value instanceof TargetNode) { |
| TargetNode node = (TargetNode) value; |
| String[] text = new String[] {node.getName()}; |
| Icon icon; |
| switch (node.getType()) { |
| case DIRECTORY: |
| icon = AllIcons.Hierarchy.Base; |
| break; |
| case JAVA_LIBRARY: |
| icon = AllIcons.Modules.Library; |
| break; |
| case JAVA_BINARY: |
| icon = AllIcons.RunConfigurations.Application; |
| break; |
| case JAVA_TEST: |
| icon = AllIcons.RunConfigurations.Junit; |
| break; |
| case OTHER: |
| icon = AllIcons.General.ExternalTools; |
| break; |
| default: |
| icon = AllIcons.General.Error; |
| } |
| setText(text, ""); |
| setIcon(icon); |
| } else { |
| String[] text = new String[] {value == null ? "" : value.toString()}; |
| text[0] = Strings.nullToEmpty(text[0]); |
| setText(text, null); |
| setIcon(null); |
| } |
| } |
| } |