/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.properties; import org.apache.commons.lang3.StringUtils; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.PlatformUI; import de.rcenvironment.core.component.workflow.execution.api.WorkflowExecutionInformation; import de.rcenvironment.core.component.workflow.model.api.WorkflowLabel; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.gui.workflow.parts.ConnectionPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowExecutionInformationPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowLabelPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowNodePart; import de.rcenvironment.core.gui.workflow.parts.WorkflowPart; /** * Returns the label displayed in the head of the properties tab. * * @author Heinrich Wendel * @author Sascha Zur */ public final class WorkflowLabelProvider extends LabelProvider { @Override public String getText(Object objects) { final int maxLength = 40; String value = ""; //$NON-NLS-1$ if (objects == null || objects.equals(StructuredSelection.EMPTY)) { value = Messages.noItemSelected; } else if (((IStructuredSelection) objects).size() > 1) { value = ((IStructuredSelection) objects).size() + Messages.itemSelected; } else { Object object = ((IStructuredSelection) objects).getFirstElement(); if (object instanceof WorkflowNodePart) { value = de.rcenvironment.core.utils.common.StringUtils.format("Component Properties: %s", StringUtils.abbreviate(((WorkflowNode) ((WorkflowNodePart) object).getModel()).getName(), maxLength)); } else if (object instanceof WorkflowExecutionInformationPart) { value = de.rcenvironment.core.utils.common.StringUtils.format("Workflow: %s", StringUtils.abbreviate( ((WorkflowExecutionInformation) ((WorkflowExecutionInformationPart) object).getModel()).getInstanceName(), maxLength)); } else if (object instanceof WorkflowLabelPart) { String[] labelParts = ((WorkflowLabel) ((WorkflowLabelPart) object).getModel()).getText().split("\n"); String labelAbrev = StringUtils.abbreviate(labelParts[0].replaceAll("\\r", ""), maxLength); if (!labelAbrev.endsWith("...") && labelParts.length > 1) { labelAbrev += "..."; } value = de.rcenvironment.core.utils.common.StringUtils.format("Label Properties: \"%s\"", labelAbrev); } else if (object instanceof WorkflowPart || object instanceof ConnectionPart) { try { String partName = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActivePartReference().getPartName(); value = de.rcenvironment.core.utils.common.StringUtils.format("Workflow Properties: %s", StringUtils.abbreviate(StringUtils.removeEndIgnoreCase(partName, ".wf"), maxLength)); } catch (NullPointerException npe){ value = "Workflow Properties"; } } } return value; } }