/******************************************************************************* * Copyright (c) 2000, 2010 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 *******************************************************************************/ package org.eclipse.gef.ui.parts; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.gef.EditPartViewer; /** * A adapter for an outline page containing a single EditPartViewer. This class * handles selection processing and widget focus. There is no need to manage * viewer lifecycle. When <code>dispose()</code> is called in the superclass, * the EditPartViewer will receive widget dispose callback, and perform any * necessary cleanup. This class is just an adapter. * * @author hudsonr */ public class ContentOutlinePage extends org.eclipse.ui.part.Page implements org.eclipse.ui.views.contentoutline.IContentOutlinePage { private EditPartViewer viewer; private Control control; /** * Constructs a ContentOutlinePage for the given viewer. * * @param viewer * the viewer */ public ContentOutlinePage(EditPartViewer viewer) { this.viewer = viewer; } /** * @see ISelectionProvider#addSelectionChangedListener(ISelectionChangedListener) */ public void addSelectionChangedListener(ISelectionChangedListener listener) { getViewer().addSelectionChangedListener(listener); } /** * Forwards the createControl request to the editpartviewer. * * @see org.eclipse.ui.part.IPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { control = getViewer().createControl(parent); } /** * @see org.eclipse.ui.part.IPage#getControl() */ public Control getControl() { return control; } /** * Forwards selection request to the viewer. * * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection() */ public ISelection getSelection() { // $TODO when could this even happen? if (getViewer() == null) return StructuredSelection.EMPTY; return getViewer().getSelection(); } /** * Returns the EditPartViewer * * @return the viewer */ protected EditPartViewer getViewer() { return viewer; } /** * @see ISelectionProvider#removeSelectionChangedListener(ISelectionChangedListener) */ public void removeSelectionChangedListener( ISelectionChangedListener listener) { getViewer().removeSelectionChangedListener(listener); } /** * Sets focus to a part in the page. */ public void setFocus() { if (getControl() != null) getControl().setFocus(); } /** * @see ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection) */ public void setSelection(ISelection selection) { if (getViewer() != null) getViewer().setSelection(selection); } }