/** * */ package com.xored.glance.ui.controls.text.styled; import com.xored.glance.ui.sources.ITextBlock; import com.xored.glance.ui.sources.ITextBlockListener; import com.xored.glance.ui.sources.TextChangedEvent; import org.eclipse.core.runtime.ListenerList; import org.eclipse.swt.custom.ExtendedModifyEvent; import org.eclipse.swt.custom.ExtendedModifyListener; import org.eclipse.swt.custom.StyledText; /** * @author Yuri Strot */ public class StyledTextBlock implements ITextBlock, ExtendedModifyListener { private StyledText text; private ListenerList listeners; public StyledTextBlock(StyledText text) { this.text = text; listeners = new ListenerList(); text.addExtendedModifyListener(this); } @Override public void addTextBlockListener(ITextBlockListener listener) { listeners.add(listener); } @Override public int compareTo(ITextBlock o) { //style text support only one text block return 0; } @Override public String getText() { return text.getText(); } @Override public void modifyText(ExtendedModifyEvent event) { Object[] objects = listeners.getListeners(); TextChangedEvent textEvent = new TextChangedEvent(event.start, event.length, event.replacedText); for (Object object : objects) { ITextBlockListener listener = (ITextBlockListener) object; listener.textChanged(textEvent); } } @Override public void removeTextBlockListener(ITextBlockListener listener) { listeners.remove(listener); } }