/* * Copyright 2015-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.intellij.ideabuck.ui.tree.renderers; import com.facebook.buck.intellij.ideabuck.ui.tree.BuckTreeNodeBuild; import com.facebook.buck.intellij.ideabuck.ui.tree.BuckTreeNodeDetail; import com.facebook.buck.intellij.ideabuck.ui.tree.BuckTreeNodeDetailError; import com.facebook.buck.intellij.ideabuck.ui.tree.BuckTreeNodeFileError; import com.facebook.buck.intellij.ideabuck.ui.tree.BuckTreeNodeTarget; import com.google.common.collect.ImmutableMap; import com.intellij.ui.components.JBLabel; import java.awt.Component; import javax.swing.JTree; import javax.swing.tree.TreeCellRenderer; public class BuckTreeCellRenderer implements TreeCellRenderer { private ImmutableMap<Class<?>, BuildElementRenderer> mRenderers; public BuckTreeCellRenderer() { mRenderers = new ImmutableMap.Builder<Class<?>, BuildElementRenderer>() .put(BuckTreeNodeBuild.class, new BuildNodeRenderer()) .put(BuckTreeNodeTarget.class, new TargetNodeRenderer()) .put(BuckTreeNodeFileError.class, new FileErrorNodeRenderer()) .put(BuckTreeNodeDetail.class, new DetailNodeRenderer()) .put(BuckTreeNodeDetailError.class, new DetailNodeRenderer()) .build(); } @Override public Component getTreeCellRendererComponent( JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Class<?> cc = value.getClass(); if (mRenderers.containsKey(cc)) { BuildElementRenderer renderer = mRenderers.get(value.getClass()); return renderer.render(value); } return new JBLabel("unknown kind of element"); } }