package org.nightlabs.jfire.reporting.admin.parameter.ui.figure; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.LineBorder; import org.eclipse.swt.graphics.Color; import org.nightlabs.jfire.reporting.admin.parameter.ui.editpart.AbstractNodeReportEditPart; import org.nightlabs.jfire.reporting.parameter.ValueProvider; import org.nightlabs.jfire.reporting.parameter.ValueProviderInputParameter; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class ValueProviderConfigFigure extends AbstractInputNodeFigure { public ValueProviderConfigFigure(AbstractNodeReportEditPart editPart, ValueProvider valueProvider) { super(editPart); this.valueProvider = valueProvider; LineBorder lineBorder = new LineBorder(1); lineBorder.setColor(new Color(null, 114, 114, 114)); setBorder(lineBorder); } private ValueProvider valueProvider; @Override protected void paintFigure(Graphics g) { super.paintFigure(g); drawOutputConnector(g, getBounds()); } protected String getInputString(ValueProviderInputParameter inputParam) { // return "ID " + inputParam.getParameterID() + "\n" + "Type " + inputParam.getParameterType(); return inputParam.getParameterID(); } @Override protected String getOutputString() { // We remove all packages in order to shorten the displayed types - using simple class-names only. For example: // // * java.lang.String => String // * org.nightlabs.jfire.security.id.UserID => UserID // * java.util.Collection<org.nightlabs.jfire.security.id.UserID> => Collection<UserID> // * java.util.Map<org.nightlabs.jfire.security.id.UserID, java.util.List<org.nightlabs.jfire.something.Whatever>> => Map<UserID, List<Whatever>> // String s = valueProvider.getOutputType(); Pattern pattern = Pattern.compile("([^.<>,\\s]*)([\\.<>,\\s]?)"); //$NON-NLS-1$ Matcher matcher = pattern.matcher(s); StringBuilder sb = new StringBuilder(); while (matcher.find()) { String word = matcher.group(1); String symbol = matcher.group(2); if (!".".equals(symbol)) { sb.append(word); sb.append(symbol); } } return sb.toString(); } @Override public int getInputAmount() { return valueProvider.getInputParameters().size(); } @Override public String getInputString(int index) { String s = valueProvider.getInputParameters().get(index).getParameterType(); return valueProvider.getInputParameters().get(index).getParameterID() + "("+ s.substring(s.lastIndexOf(".")+1) +")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } @Override public String getName() { return valueProvider.getName().getText(); } // @Override // public String getIputParameterID(int index) { // return valueProvider.getInputParameters().get(index).getParameterID(); // } // // @Override // public String getIputParameterType(int index) { // return valueProvider.getInputParameters().get(index).getParameterType(); // } }