/******************************************************************************* * Copyright (c) 2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.graphical.editors.process; import java.util.Iterator; import java.util.List; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.zest.core.viewers.IConnectionStyleProvider; import org.eclipse.zest.core.viewers.IFigureProvider; import org.eclipse.zest.core.viewers.ISelfStyleProvider; import org.eclipse.zest.core.widgets.CGraphNode; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator; import org.jboss.tools.smooks.configuration.editors.GraphicsConstants; import org.jboss.tools.smooks.configuration.editors.IFieldMarker; import org.jboss.tools.smooks.graphical.editors.SmooksProcessGraphicalEditor; import org.jboss.tools.smooks.graphical.editors.TaskTypeManager; import org.jboss.tools.smooks.graphical.editors.TaskTypeManager.TaskTypeDescriptor; /** * @author Dart * */ public class ProcessGraphicalViewerLabelProvider extends LabelProvider implements IFigureProvider, ISelfStyleProvider ,IConnectionStyleProvider { private SmooksProcessGraphicalEditor processEditor; @Override public void dispose() { super.dispose(); } public ProcessGraphicalViewerLabelProvider(SmooksProcessGraphicalEditor graph) { this.processEditor = graph; } @Override public Image getImage(Object element) { if (element instanceof TaskType) { String id = ((TaskType) element).getId(); List<TaskTypeDescriptor> des = TaskTypeManager.getAllTaskList(); for (Iterator<?> iterator = des.iterator(); iterator.hasNext();) { TaskTypeDescriptor taskTypeDescriptor = (TaskTypeDescriptor) iterator.next(); if (taskTypeDescriptor.getId().equals(id)) { return SmooksConfigurationActivator.getDefault().getImageRegistry().get( taskTypeDescriptor.getImagePath()); } } } return super.getImage(element); } @Override public String getText(Object element) { if (element instanceof TaskType) { String label = TaskTypeManager.getTaskLabel((TaskType)element); if(label == null){ label = ((TaskType) element).getId(); } return label; } return ""; //$NON-NLS-1$ } /* * (non-Javadoc) * * @see * org.eclipse.zest.core.viewers.IFigureProvider#getFigure(java.lang.Object) */ public IFigure getFigure(Object element) { if (element instanceof TaskType) { // if(TaskTypeManager.TASK_ID_INPUT.equals(((TaskType)element).getId())){ Image image = getImage(element); String text = getText(element); return new TaskNodeFigure((TaskType)element, processEditor, image, text); // } } return null; } public void selfStyleConnection(Object element, GraphConnection connection) { // connection.setLineColor(GraphicsConstants.BORDER_CORLOR); } private String getProblemMessage(List<String> message){ String m = null; if(message != null && !message.isEmpty()){ m = ""; //$NON-NLS-1$ for (Iterator<String> iterator = message.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); m = m + " - " + string +" \n"; //$NON-NLS-1$ //$NON-NLS-2$ } } return m; } public void selfStyleNode(Object element, GraphNode node) { if (node instanceof CGraphNode) { IFigure figure = ((CGraphNode) node).getFigure(); if(figure instanceof TaskNodeFigure && element instanceof TaskType){ int problem = ((TaskType)element).getProblemType(); List<String> problemMessages = ((TaskType)element).getProblemMessages(); String message = getProblemMessage(problemMessages); ImageRegistry ir = SmooksConfigurationActivator.getDefault().getImageRegistry(); switch(problem){ case IFieldMarker.TYPE_NONE: ((TaskNodeFigure)figure).getLabel().setIcon(null); break; case IFieldMarker.TYPE_ERROR: ((TaskNodeFigure)figure).getLabel().setIcon(ir.get(GraphicsConstants.IMAGE_ERROR)); break; case IFieldMarker.TYPE_WARINING: ((TaskNodeFigure)figure).getLabel().setIcon(ir.get(GraphicsConstants.IMAGE_WARNING)); break; } ((TaskNodeFigure)figure).setProblemMessage(message); } Dimension size = figure.getLayoutManager().getPreferredSize(figure, -1, -1); figure.setSize(size); } } public int getConnectionStyle(Object rel) { return 0; } public Color getColor(Object rel) { return ColorConstants.black; } public Color getHighlightColor(Object rel) { return ColorConstants.black; } public int getLineWidth(Object rel) { // TODO Auto-generated method stub return 0; } public IFigure getTooltip(Object entity) { // TODO Auto-generated method stub return null; } }