| /******************************************************************************* |
| * 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 (Yuri Strot) |
| ******************************************************************************/ |
| package com.xored.glance.internal.ui.viewers; |
| |
| import com.xored.glance.ui.sources.Match; |
| import com.xored.glance.ui.sources.TextChangedEvent; |
| import com.xored.glance.ui.utils.TextUtils; |
| |
| import org.eclipse.jface.text.ITextPresentationListener; |
| import org.eclipse.jface.text.TextPresentation; |
| import org.eclipse.jface.text.TextViewer; |
| |
| /** |
| * @author Yuri Strot |
| */ |
| public class ColoredTextViewerBlock extends TextViewerBlock implements ITextPresentationListener { |
| |
| private Match[] matches = Match.EMPTY; |
| |
| private Match selected = null; |
| |
| /** |
| * @param viewer |
| */ |
| public ColoredTextViewerBlock(TextViewer viewer) { |
| super(viewer); |
| } |
| |
| @Override |
| public void applyTextPresentation(TextPresentation presentation) { |
| TextUtils.applyStyles(presentation, matches, selected); |
| } |
| |
| @Override |
| public void dispose() { |
| super.dispose(); |
| refresh(); |
| } |
| |
| public Match getSelected() { |
| return selected; |
| } |
| |
| public void setMatches(Match[] matches) { |
| this.matches = matches; |
| refresh(); |
| } |
| |
| public void setSelected(Match selected) { |
| this.selected = selected; |
| refresh(); |
| } |
| |
| @Override |
| protected void addListeners() { |
| viewer.addTextPresentationListener(this); |
| super.addListeners(); |
| } |
| |
| @Override |
| protected void fireTextChanged(TextChangedEvent changedEvent) { |
| matches = Match.EMPTY; |
| super.fireTextChanged(changedEvent); |
| } |
| |
| @Override |
| protected void removeListeners() { |
| super.removeListeners(); |
| viewer.removeTextPresentationListener(this); |
| } |
| |
| private void refresh() { |
| viewer.invalidateTextPresentation(); |
| } |
| |
| } |