/******************************************************************************* * Copyright (c) 2008, 2011 Obeo. * 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: * Obeo - initial API and implementation *******************************************************************************/ package org.eclipse.emf.eef.runtime.ui.gwt.editor.widget; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.user.cellview.client.CellTree; import com.google.gwt.user.cellview.client.TreeNode; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.TreeViewModel; public class EEFTreeViewer extends CellTree { public <T> EEFTreeViewer(TreeViewModel viewModel, T rootValue) { super(viewModel, rootValue, (Resources) GWT.create(CellTree.BasicResources.class)); } public void expand(List<?> path) { TreeNode node = getRootTreeNode(); if (node != null) { LOOP: for (int i = 0, size = path.size(); i < size; ++i) { Object segment = path.get(i); for (int j = 0, count = node.getChildCount(); j < count; ++j) { Object childValue = node.getChildValue(j); if (childValue.equals(segment)) { node = node.setChildOpen(j, true); continue LOOP; } } break; } } } /** * @param handler */ public void addSelectionChangeHandler(SelectionChangeEvent.Handler handler) { ((EEFTreeViewerContentProvider)getTreeViewModel()).addSelectionChangeHandler(handler); } }