/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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. * */ package gov.redhawk.diagram.sheet.properties; import gov.redhawk.sca.ui.ScaComponentFactory; import gov.redhawk.sca.ui.properties.ScaPropertiesAdapterFactory; import mil.jpeojtrs.sca.partitioning.ComponentInstantiation; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.emf.edit.provider.IDisposable; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.diagram.ui.properties.sections.AbstractModelerPropertySection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; /** * @since 5.1 */ public class ComponentPropertiesPropertySection extends AbstractModelerPropertySection implements IEditingDomainProvider { private AdapterFactory adapterFactory; private final ComponentInstantiationPropertyViewerAdapter adapter = new ComponentInstantiationPropertyViewerAdapter(this); public ComponentPropertiesPropertySection() { } /** * @since 6.0 */ protected AdapterFactory createAdapterFactory() { return new ScaPropertiesAdapterFactory(); } /** * {@inheritDoc} */ @Override public final void createControls(final Composite parent, final TabbedPropertySheetPage tabbedPropertySheetPage) { super.createControls(parent, tabbedPropertySheetPage); this.adapterFactory = createAdapterFactory(); final TreeViewer viewer = createTreeViewer(parent); this.adapter.setViewer(viewer); } /** * @since 6.0 */ public TreeViewer getViewer() { return adapter.getViewer(); } /** * @since 6.0 */ public AdapterFactory getAdapterFactory() { return adapterFactory; } /** * @since 6.0 */ protected TreeViewer createTreeViewer(final Composite parent) { return ScaComponentFactory.createPropertyTable(getWidgetFactory(), parent, SWT.SINGLE, this.adapterFactory); } @Override public TransactionalEditingDomain getEditingDomain() { return super.getEditingDomain(); } /** * {@inheritDoc} */ @Override public final void setInput(final IWorkbenchPart part, final ISelection selection) { super.setInput(part, selection); final EObject eObj = getEObject(); if (eObj instanceof ComponentInstantiation) { final ComponentInstantiation newInput = (ComponentInstantiation) eObj; this.adapter.setInput(newInput); } else { this.adapter.setInput(null); } } /** * {@inheritDoc} */ @Override public final void dispose() { this.adapter.dispose(); if (this.adapterFactory != null) { if (adapterFactory instanceof IDisposable) { ((IDisposable) this.adapterFactory).dispose(); } this.adapterFactory = null; } this.input = null; super.dispose(); } /** * {@inheritDoc} */ @Override public final boolean shouldUseExtraSpace() { return true; } }