/******************************************************************************* * Copyright (c) 2014, 2015 Red Hat. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat - Initial Contribution *******************************************************************************/ package org.eclipse.linuxtools.internal.docker.ui.views; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.StyledString; import org.eclipse.linuxtools.docker.core.EnumDockerStatus; import org.eclipse.linuxtools.docker.core.IDockerConnection; import org.eclipse.linuxtools.docker.core.IDockerContainer; import org.eclipse.linuxtools.docker.core.IDockerImage; import org.eclipse.linuxtools.docker.core.IDockerPortMapping; import org.eclipse.linuxtools.internal.docker.ui.SWTImagesFactory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainerLink; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainerLinksCategory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainerPortMappingsCategory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainerVolume; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainerVolumesCategory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerContainersCategory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.DockerImagesCategory; import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerContentProvider.LoadingStub; import org.eclipse.swt.graphics.Image; /** * @author xcoulon * */ public class DockerExplorerLabelProvider implements IStyledLabelProvider, ILabelProvider { private Image OPEN_CONNECTION_IMAGE = SWTImagesFactory.DESC_REPOSITORY_MIDDLE .createImage(); private Image UNOPEN_CONNECTION_IMAGE = SWTImagesFactory.DESC_REPOSITORY_MIDDLED .createImage(); private Image CATEGORY_IMAGE = SWTImagesFactory.DESC_DB_GROUP.createImage(); private Image IMAGE_IMAGE = SWTImagesFactory.DESC_IMAGE.createImage(); private Image STARTED_CONTAINER_IMAGE = SWTImagesFactory.DESC_CONTAINER_STARTED .createImage(); private Image PAUSED_CONTAINER_IMAGE = SWTImagesFactory.DESC_CONTAINER_PAUSED .createImage(); private Image STOPPED_CONTAINER_IMAGE = SWTImagesFactory.DESC_CONTAINER_STOPPED .createImage(); private Image CONTAINER_LINK_IMAGE = SWTImagesFactory.DESC_CONTAINER_LINK .createImage(); private Image CONTAINER_VOLUME_IMAGE = SWTImagesFactory.DESC_CONTAINER_VOLUME .createImage(); private Image CONTAINER_PORT_IMAGE = SWTImagesFactory.DESC_CONTAINER_PORT .createImage(); private Image LOADING_IMAGE = SWTImagesFactory.DESC_SYSTEM_PROCESS .createImage(); @Override public void addListener(ILabelProviderListener listener) { } @Override public void dispose() { OPEN_CONNECTION_IMAGE.dispose(); UNOPEN_CONNECTION_IMAGE.dispose(); CATEGORY_IMAGE.dispose(); IMAGE_IMAGE.dispose(); STARTED_CONTAINER_IMAGE.dispose(); PAUSED_CONTAINER_IMAGE.dispose(); STOPPED_CONTAINER_IMAGE.dispose(); CONTAINER_LINK_IMAGE.dispose(); CONTAINER_VOLUME_IMAGE.dispose(); CONTAINER_PORT_IMAGE.dispose(); LOADING_IMAGE.dispose(); } @Override public boolean isLabelProperty(Object element, String property) { return false; } @Override public void removeListener(ILabelProviderListener listener) { } @Override public Image getImage(final Object element) { if(element instanceof IDockerConnection) { if (((IDockerConnection) element).isOpen()) { return OPEN_CONNECTION_IMAGE; } else { return UNOPEN_CONNECTION_IMAGE; } } else if(element instanceof DockerImagesCategory) { return CATEGORY_IMAGE; } else if(element instanceof DockerContainersCategory) { return CATEGORY_IMAGE; } else if(element instanceof IDockerImage) { return IMAGE_IMAGE; } else if(element instanceof IDockerContainer) { final IDockerContainer container = (IDockerContainer) element; final EnumDockerStatus containerStatus = EnumDockerStatus .fromStatusMessage(container.status()); if (containerStatus == EnumDockerStatus.RUNNING) { return STARTED_CONTAINER_IMAGE; } else if (containerStatus == EnumDockerStatus.PAUSED) { return PAUSED_CONTAINER_IMAGE; } else { return STOPPED_CONTAINER_IMAGE; } } else if (element instanceof DockerContainerLinksCategory || element instanceof DockerContainerLink) { return CONTAINER_LINK_IMAGE; } else if (element instanceof DockerContainerVolumesCategory || element instanceof DockerContainerVolume) { return CONTAINER_VOLUME_IMAGE; } else if (element instanceof DockerContainerPortMappingsCategory || element instanceof IDockerPortMapping) { return CONTAINER_PORT_IMAGE; } else if(element instanceof LoadingStub) { return LOADING_IMAGE; } return null; } @Override public String getText(final Object element) { final StyledString styledText = getStyledText(element); if(styledText != null) { return styledText.getString(); } return null; } @Override public StyledString getStyledText(Object element) { return LabelProviderUtils.getStyledText(element); } }