/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.communication.views; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import de.rcenvironment.core.communication.common.NetworkGraphLink; import de.rcenvironment.core.communication.common.NetworkGraphNode; import de.rcenvironment.core.gui.communication.views.internal.AnchorPoints; import de.rcenvironment.core.gui.communication.views.model.NetworkGraphNodeWithContext; import de.rcenvironment.core.gui.communication.views.spi.ContributedNetworkViewNode; import de.rcenvironment.core.gui.communication.views.spi.SelfRenderingNetworkViewNode; import de.rcenvironment.core.gui.resources.api.ImageManager; import de.rcenvironment.core.gui.resources.api.StandardImages; /** * The {@link LabelProvider} for the network view. * * @author Robert Mischke * @author David Scholz (added resource monitoring folder) */ public class NetworkViewLabelProvider extends LabelProvider { private Image nodeImage; private Image folderImage; private Image infoImage; private Image networkImage; private Image connectionImage; private Image disconnectImage; private boolean optionNodeIdsVisible; public NetworkViewLabelProvider() { createImages(); } public void setNodeIdsVisible(boolean value) { optionNodeIdsVisible = value; } @Override public String getText(Object element) { String result; if (element instanceof SelfRenderingNetworkViewNode) { return ((SelfRenderingNetworkViewNode) element).getText(); } else if (element instanceof ContributedNetworkViewNode && ((ContributedNetworkViewNode) element).getContributor() != null) { // TODO second "if" clause can be removed after full transition return ((ContributedNetworkViewNode) element).getContributor().getText(element); } else if (element == AnchorPoints.INSTANCES_PARENT_NODE) { return "Instances"; } else if (element == AnchorPoints.MAIN_NETWORK_SECTION_PARENT_NODE) { return "RCE Network"; } else if (element == AnchorPoints.SSH_REMOTE_ACCESS_SECTION_PARENT_NODE) { return "SSH Remote Access"; } else if (element instanceof NetworkGraphNodeWithContext) { NetworkGraphNodeWithContext typedNode = (NetworkGraphNodeWithContext) element; // switch by node context switch (typedNode.getContext()) { case ROOT: NetworkGraphNode node = typedNode.getNode(); result = typedNode.getDisplayNameOfNode(); if (optionNodeIdsVisible) { result += " [" + node.getNodeId().getInstanceNodeSessionIdString() + "] "; } if (typedNode.isWorkflowHost()) { result += " <Workflow Host>"; } if (typedNode.isLocalNode()) { result += " <Self>"; } return result; case RAW_NODE_PROPERTIES_FOLDER: return "Raw Node Properties"; case RAW_NODE_PROPERTY: return typedNode.getDisplayText(); default: return "<error>"; } } else if (element instanceof NetworkGraphLink) { result = ((NetworkGraphLink) element).getLinkId(); // TODO } else { result = element.toString(); } return result; } @Override public Image getImage(Object element) { Image result = null; if (element instanceof SelfRenderingNetworkViewNode) { return ((SelfRenderingNetworkViewNode) element).getImage(); } else if (element instanceof ContributedNetworkViewNode && ((ContributedNetworkViewNode) element).getContributor() != null) { // TODO second "if" clause can be removed after full transition return ((ContributedNetworkViewNode) element).getContributor().getImage(element); } else if (element instanceof NetworkGraphNodeWithContext) { NetworkGraphNodeWithContext typedNode = (NetworkGraphNodeWithContext) element; // switch by node context switch (typedNode.getContext()) { case ROOT: result = nodeImage; break; case RESOURCE_MONITORING_FOLDER: case RAW_NODE_PROPERTIES_FOLDER: result = folderImage; break; case RAW_NODE_PROPERTY: result = infoImage; break; default: result = null; } } else if (element instanceof NetworkGraphLink) { result = connectionImage; } else if (element == AnchorPoints.INSTANCES_PARENT_NODE) { result = nodeImage; } else if (element == AnchorPoints.MAIN_NETWORK_SECTION_PARENT_NODE) { result = networkImage; } else if (element == AnchorPoints.SSH_REMOTE_ACCESS_SECTION_PARENT_NODE) { result = networkImage; } if (result == null) { // FIXME proper error/placeholder image? result = super.getImage(element); } return result; } @Override public void dispose() { disposeImages(); } private void createImages() { ImageManager imageManager = ImageManager.getInstance(); folderImage = imageManager.getSharedImage(StandardImages.FOLDER_16); infoImage = imageManager.getSharedImage(StandardImages.INFORMATION_16); nodeImage = ImageDescriptor.createFromURL( getClass().getResource("/resources/icons/node.png")).createImage(); //$NON-NLS-1$ networkImage = ImageDescriptor.createFromURL( getClass().getResource("/resources/icons/network.gif")).createImage(); //$NON-NLS-1$ connectionImage = ImageDescriptor.createFromURL( getClass().getResource("/resources/icons/connect.png")).createImage(); //$NON-NLS-1$ disconnectImage = ImageDescriptor.createFromURL( getClass().getResource("/resources/icons/disconnect.png")).createImage(); //$NON-NLS-1$ } private void disposeImages() { nodeImage.dispose(); networkImage.dispose(); connectionImage.dispose(); disconnectImage.dispose(); } }