blob: 9870975617388a273241491837596cfebd816912 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 SSI Schaefer IT Solutions GmbH 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:
* SSI Schaefer IT Solutions GmbH
*******************************************************************************/
package org.eclipse.tea.core.ui;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tea.core.internal.model.TaskingModel;
import org.eclipse.tea.core.internal.model.iface.TaskingElement;
import org.eclipse.tea.core.ui.internal.TaskingModelContentProvider;
import org.eclipse.tea.core.ui.internal.TaskingModelLabelProvider;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.dialogs.PatternFilter;
public class TaskingModelTreePanel extends Composite {
private FilteredTree tree;
public TaskingModelTreePanel(Composite parent, TaskingModel model) {
super(parent, SWT.NONE);
GridLayoutFactory.fillDefaults().margins(10, 10).applyTo(this);
tree = new FilteredTree(this, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER, new PatternFilter() {
@Override
protected boolean isLeafMatch(Viewer viewer, Object element) {
String labelText = ((TaskingElement) element).getLabel();
if (labelText == null) {
return false;
}
return wordMatches(labelText);
}
}, true);
tree.getViewer().setContentProvider(new TaskingModelContentProvider());
tree.getViewer().setLabelProvider(new DelegatingStyledCellLabelProvider(new TaskingModelLabelProvider()));
tree.getViewer().setInput(model);
tree.getViewer().setExpandedState(model.getRootGroup(), true);
GridDataFactory.fillDefaults().grab(true, true).applyTo(tree);
}
public void addSelectionListener(ISelectionChangedListener listener) {
tree.getViewer().addSelectionChangedListener(listener);
}
public TaskingElement getSelection() {
Object o = tree.getViewer().getStructuredSelection().getFirstElement();
if (o instanceof TaskingElement) {
return (TaskingElement) o;
}
return null;
}
}