Java tutorial
/** * Copyright 2014 SAP AG * * 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 org.spotter.eclipse.ui.providers; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Font; import org.lpe.common.config.ConfigParameterDescription; import org.spotter.eclipse.ui.model.AbstractPropertyItem; import org.spotter.eclipse.ui.util.AbstractNameFormatter; import org.spotter.eclipse.ui.viewers.PropertiesGroupViewer; /** * Label provider for properties table. This label provider expects objects of * type {@link AbstractPropertyItem}. * * @author Denis Knoepfle * */ public class PropertiesLabelProvider extends CellLabelProvider { private static final int TOOLTIP_DISPLAY_TIME = 3000; private static final int TOOLTIP_DISPLAY_DELAY_TIME = 500; private static final FontRegistry FONT_REGISTRY = new FontRegistry(); private static final Font NORMAL_FONT = FONT_REGISTRY.get(JFaceResources.DEFAULT_FONT); private static final Font ITALIC_FONT = FONT_REGISTRY.getItalic(JFaceResources.DEFAULT_FONT); private final PropertiesGroupViewer propertiesGroupViewer; /** * Create a new label provider for the given properties viewer. * * @param propertiesGroupViewer * The properties viewer */ public PropertiesLabelProvider(PropertiesGroupViewer propertiesGroupViewer) { super(); this.propertiesGroupViewer = propertiesGroupViewer; } @Override public String getToolTipText(Object element) { String tooltip = null; if (element != null && element instanceof AbstractPropertyItem) { tooltip = ((AbstractPropertyItem) element).getToolTip(); } return tooltip; } @Override public boolean useNativeToolTip(Object object) { return true; } @Override public int getToolTipTimeDisplayed(Object object) { return TOOLTIP_DISPLAY_TIME; } @Override public int getToolTipDisplayDelayTime(Object object) { return TOOLTIP_DISPLAY_DELAY_TIME; } @Override public void update(ViewerCell cell) { Object element = cell.getElement(); if (element != null && element instanceof AbstractPropertyItem) { AbstractPropertyItem tableItem = (AbstractPropertyItem) element; ConfigParameterDescription desc = tableItem.getConfigParameterDescription(); boolean mandatory = desc == null ? true : desc.isMandatory(); cell.setFont(mandatory ? NORMAL_FONT : ITALIC_FONT); switch (cell.getColumnIndex()) { case 0: AbstractNameFormatter formatter = propertiesGroupViewer.getNameFormatter(); String name = tableItem.getName(); cell.setText(formatter == null ? name : formatter.format(name)); break; case 1: cell.setText(tableItem.getValue()); break; default: break; } } } }