/******************************************************************************* * Copyright (c) 2012 xored software, Inc. * 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: * xored software, Inc. - initial API and implementation (Igor Zapletnev) ******************************************************************************/ package com.xored.glance.ui.gef.blocks; import org.eclipse.core.runtime.ListenerList; import org.eclipse.draw2d.FigureListener; import org.eclipse.draw2d.IFigure; import com.xored.glance.ui.sources.ITextBlock; import com.xored.glance.ui.sources.ITextBlockListener; import com.xored.glance.ui.sources.TextChangedEvent; public abstract class FigureTextBlock<T extends IFigure> implements ITextBlock, FigureListener { private final T figure; private final ListenerList listeners; public FigureTextBlock(final T fig) { listeners = new ListenerList(); figure = fig; figure.addFigureListener(this); } public void figureMoved(final IFigure source) { final Object[] objects = listeners.getListeners(); final TextChangedEvent textEvent = new TextChangedEvent(0, getText().length(), getText()); for (final Object object : objects) { final ITextBlockListener listener = (ITextBlockListener) object; listener.textChanged(textEvent); } } public T getFigure() { return figure; } public void addTextBlockListener(final ITextBlockListener listener) { listeners.add(listener); } public void removeTextBlockListener(final ITextBlockListener listener) { listeners.remove(listener); } }