/******************************************************************************* * 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.ui.controls.tree; 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; public class TreeItemContent implements ITextBlock { private TreeNode node; private String text; private ListenerList listeners = new ListenerList(); private int column; public TreeItemContent(TreeNode node, String text, int column) { this.node = node; node.items.add(this); this.text = text; this.column = column; } @Override public void addTextBlockListener(ITextBlockListener listener) { listeners.add(listener); } @Override public int compareTo(ITextBlock that) { TreeItemContent item = (TreeItemContent) that; int diff = this.node.compareTo(item.node); if (diff != 0) { return diff; } return column - item.column; } public TreeNode getNode() { return node; } @Override public String getText() { return text; } @Override public void removeTextBlockListener(ITextBlockListener listener) { listeners.remove(listener); } public void setText(String text) { if (text.equals(this.text)) { return; } int length = text.length(); TextChangedEvent event = new TextChangedEvent(0, length, this.text); this.text = text; for (Object object : listeners.getListeners()) { ITextBlockListener listener = (ITextBlockListener) object; listener.textChanged(event); } } @Override public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("("); buffer.append(text); buffer.append(", "); buffer.append(column); buffer.append(")"); return buffer.toString(); } }