/*
* Copyright (C) 2012-2016 NS Solutions Corporation
*
* 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.htmlhifive.tools.wizard.ui.page.tree;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import com.htmlhifive.tools.wizard.PluginResource;
import com.htmlhifive.tools.wizard.library.LibraryState;
/**
* <H3>ツリーラベルプロバイダ.</H3>
*
* @author fkubo
*/
public class LibraryTreeLabelProvider extends LabelProvider implements ITableLabelProvider, ITableFontProvider,
ITableColorProvider {
@Override
public String getColumnText(Object element, int columnIndex) {
if (columnIndex == 0) {
if (element instanceof LibraryTreeNode) {
return ((LibraryTreeNode) element).getLabel();
}
return super.getText(element);
}
if (columnIndex == 1) {
if (element instanceof CategoryNode) {
CategoryNode categoryNode = (CategoryNode) element;
return categoryNode.getPathLable();
}
if (element instanceof LibraryNode) {
LibraryNode libraryNode = (LibraryNode) element;
if (libraryNode.getFileList() != null) {
return " " + StringUtils.join(libraryNode.getFileList(), ", ");
}
}
}
return null;
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
if (columnIndex == 0) {
if (element instanceof CategoryNode) {
// カテゴリ.
return PluginResource.IMG_CATEGORY;
}
if (element instanceof LibraryNode) {
LibraryNode libraryNode = (LibraryNode) element;
if (libraryNode.isInError()) {
return PluginResource.IMG_REFACTORING_ERROR;
} else if (libraryNode.getState() == LibraryState.DEFAULT && libraryNode.isIncomplete()) {
return PluginResource.IMG_REFACTORING_WARNING;
} else if (libraryNode.getState() == LibraryState.DEFAULT && libraryNode.isRecommended()) {
return PluginResource.IMG_QUICK_ASSIST;
} else {
return libraryNode.getState().getImage();
}
}
}
return null;
}
@Override
public Font getFont(Object element, int columnIndex) {
// return JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
return null;
}
@Override
public Color getForeground(Object element, int columnIndex) {
if (columnIndex == 1) {
if (element instanceof CategoryNode) {
CategoryNode categoryNode = (CategoryNode) element;
boolean installed = false;
if (categoryNode.getChildren() != null) {
for (TreeNode node : categoryNode.getChildren()) {
if (((LibraryNode) node).isExists()) {
installed = true;
break;
}
}
}
if (!installed) {
return Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
}
} else if (element instanceof LibraryNode) {
if (!((LibraryNode) element).isExists()) {
return Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
}
}
}
return null;
}
@Override
public Color getBackground(Object element, int columnIndex) {
return null;
}
}