/******************************************************************************* * Copyright (c) 2008 Olivier Moises * * 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: * Olivier Moises- initial API and implementation *******************************************************************************/ package org.eclipse.wazaabi.ide.ui.editparts; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Event; import org.eclipse.wazaabi.mm.edp.EventDispatcher; import org.eclipse.wazaabi.mm.edp.handlers.Binding; import org.eclipse.wazaabi.mm.edp.handlers.EventHandler; import org.eclipse.wazaabi.mm.edp.handlers.Parameter; import org.eclipse.wazaabi.mm.edp.handlers.StringParameter; public class TextComponentTreeEditPart extends AbstractComponentTreeEditPart { protected String getExtendedInfo() { String model2UIBindingSource = getFirstModel2UIBindingSource((EventDispatcher) getModel()); String UI2ModelBindingTarget = getFirstUI2ModelBindingTarget((EventDispatcher) getModel()); String inputVariableName = getInputVariableName(); if (inputVariableName != null && inputVariableName.length() != 0) { String bindingPathPrefix = "$" + inputVariableName + "/"; //$NON-NLS-1$ //$NON-NLS-2$ if (model2UIBindingSource != null && model2UIBindingSource.equals(UI2ModelBindingTarget) && model2UIBindingSource.startsWith(bindingPathPrefix)) return model2UIBindingSource.substring(bindingPathPrefix .length()); } return super.getExtendedInfo(); } private String getStringParamaterValue(EventHandler eventHandler, String paramName) { if (paramName == null || "".equals(paramName)) //$NON-NLS-1$ return null; for (Parameter param : eventHandler.getParameters()) { if (paramName.equals(param.getName())) //$NON-NLS-1$ return ((StringParameter) param).getValue(); } return null; } private String getFirstModel2UIBindingSource(EventDispatcher dispatcher) { for (EventHandler eventHandler : dispatcher.getHandlers()) { if (eventHandler instanceof Binding) { String target = getStringParamaterValue(eventHandler, "target"); if (target != null && "@text".equals(target)) return getStringParamaterValue(eventHandler, "source"); } } return null; } private String getFirstUI2ModelBindingTarget(EventDispatcher dispatcher) { for (EventHandler eventHandler : dispatcher.getHandlers()) { if (eventHandler instanceof Binding) { String source = getStringParamaterValue(eventHandler, "source"); if (source != null && "@text".equals(source)) return getStringParamaterValue(eventHandler, "target"); } } return null; } public void measureWidget(Event event) { } public void eraseWidget(Event event) { } public void paintWidget(Event event) { if (event.index == 1) { FontData fontData = event.gc.getFont().getFontData()[0]; fontData.setStyle(SWT.BOLD); Font font = new Font(event.display, fontData); event.gc.setFont(font); /* center column 1 vertically */ // int yOffset = 0; // if (event.index == 1) { // Point size = event.gc.textExtent(text); // yOffset = Math.max(0, (event.height - size.y) / 2); // } event.gc.drawText(getExtendedInfo() != null ? getExtendedInfo() : "", event.x /* + TEXT_MARGIN */, event.y /* + yOffset */, true); font.dispose(); } } }