/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation * Red Hat, Inc. *******************************************************************************/ package org.jboss.tools.cdi.text.ext.hyperlink.xpl; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.SearchPattern; import org.jboss.tools.cdi.core.CDIImages; import org.jboss.tools.cdi.core.ICDIElement; import org.jboss.tools.cdi.core.util.BeanPresentationUtil; import org.jboss.tools.cdi.text.ext.hyperlink.IInformationItem; /** * Show hierarchy in light-weight control. * * @since 3.0 */ public class HierarchyInformationControl extends org.jboss.tools.common.text.ext.hyperlink.xpl.HierarchyInformationControl { public HierarchyInformationControl(Shell parent, String title, int shellStyle, int tableStyle, IHyperlink[] hyperlinks) { super(parent, title, shellStyle, tableStyle, hyperlinks); } @Override protected BeanTableLabelProvider createTableLableProvider() { return new BeanTableLabelProvider2(); } @Override protected String getId() { return "org.jboss.tools.cdi.text.ext.InformationControl"; } @Override protected boolean select2(SearchPattern patternMatcher, Object element) { if (element instanceof IInformationItem) { String name = ((IInformationItem)element).getCDIElement().getElementName(); if(getFilterText().getText().isEmpty()){ patternMatcher.setPattern("*"); }else{ patternMatcher.setPattern(getFilterText().getText()); } return patternMatcher.matches(name); }else return true; } class BeanTableLabelProvider2 extends BeanTableLabelProvider { @Override public void update(ViewerCell cell) { Object element = cell.getElement(); StyledString styledString = getStyledText(element); cell.setText(styledString.getString()); cell.setStyleRanges(styledString.getStyleRanges()); cell.setImage(getImage(element)); super.update(cell); } @Override public String getText(Object element) { return getStyledText(element).getString(); } @Override public StyledString getStyledText(Object element) { StyledString sb = new StyledString(); if(element instanceof IHyperlink){ if(element instanceof IInformationItem){ ICDIElement cdiElement = ((IInformationItem)element).getCDIElement(); String name = cdiElement.getElementName(); String location = BeanPresentationUtil.getCDIElementLocation(cdiElement, false); sb.append(name, NAME_STYLE); sb.append(location, PACKAGE_STYLE); }else{ sb.append(((IHyperlink)element).getHyperlinkText(), NAME_STYLE); } } return sb; } @Override public Image getImage(Object element) { if(element instanceof IInformationItem){ ICDIElement cdiElement = ((IInformationItem)element).getCDIElement(); return CDIImages.getImageByElement(cdiElement); } return null; } } }