/******************************************************************************* * Copyright 2014 Geoscience Australia * * 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 au.gov.ga.earthsci.layer.ui; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import au.gov.ga.earthsci.application.IconLoader; import au.gov.ga.earthsci.application.ImageRegistry; import au.gov.ga.earthsci.common.ui.util.TextStyler; import au.gov.ga.earthsci.common.ui.viewers.IFireableLabelProvider; import au.gov.ga.earthsci.layer.DrawOrder; import au.gov.ga.earthsci.layer.tree.ILayerTreeNode; /** * Label provider for the draw order viewer. * * @author Michael de Hoog (michael.dehoog@ga.gov.au) */ public class DrawOrderLabelProvider extends ColumnLabelProvider implements IFireableLabelProvider, IStyledLabelProvider { private final IconLoader iconLoader = new IconLoader(this); private final TextStyler structureStyler = new TextStyler(); public DrawOrderLabelProvider() { structureStyler.style.foreground = Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } @Override public String getText(Object element) { if (element instanceof DrawOrderModel.DrawOrderDrawOrderModelElement) { DrawOrderModel.DrawOrderDrawOrderModelElement drawOrderElement = (DrawOrderModel.DrawOrderDrawOrderModelElement) element; return DrawOrder.getLabel(drawOrderElement.drawOrder); } if (element instanceof DrawOrderModel.LayerDrawOrderModelElement) { DrawOrderModel.LayerDrawOrderModelElement layerElement = (DrawOrderModel.LayerDrawOrderModelElement) element; return layerElement.node.getLabelOrName(); } return super.getText(element); } @Override public StyledString getStyledText(Object element) { StyledString string = new StyledString(getText(element)); if (element instanceof DrawOrderModel.LayerDrawOrderModelElement) { DrawOrderModel.LayerDrawOrderModelElement layerElement = (DrawOrderModel.LayerDrawOrderModelElement) element; String structure = buildStructureString(layerElement.node.getParent()); if (structure != null) { string.append(" "); //$NON-NLS-1$ string.append("(" + structure + ")", structureStyler); //$NON-NLS-1$//$NON-NLS-2$ } } return string; } private String buildStructureString(ILayerTreeNode node) { if (node == null || node.isRoot()) { return null; } StringBuilder sb = new StringBuilder(); while (!node.isRoot()) { sb.insert(0, "/" + node.getLabelOrName()); //$NON-NLS-1$ node = node.getParent(); } return sb.substring(1); } @Override public Image getImage(Object element) { if (element instanceof DrawOrderModel.DrawOrderDrawOrderModelElement) { return ImageRegistry.getInstance().get(ImageRegistry.ICON_FOLDER); } if (element instanceof DrawOrderModel.LayerDrawOrderModelElement) { DrawOrderModel.LayerDrawOrderModelElement layerElement = (DrawOrderModel.LayerDrawOrderModelElement) element; return LayerTreeLabelProvider.getImage(layerElement.node, element, iconLoader); } return super.getImage(element); } @Override public void fireLabelProviderChanged(LabelProviderChangedEvent event) { super.fireLabelProviderChanged(event); } }