diff options
Diffstat (limited to 'extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/properties/StateInvariantBasePropertySection.java')
1 files changed, 150 insertions, 0 deletions
diff --git a/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/properties/StateInvariantBasePropertySection.java b/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/properties/StateInvariantBasePropertySection.java new file mode 100644 index 00000000000..5bf5e1e2745 --- /dev/null +++ b/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/properties/StateInvariantBasePropertySection.java @@ -0,0 +1,150 @@ +/******************************************************************************* + * Copyright (c) 2009 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.papyrus.tabbedproperties.uml.properties; + +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.eef.runtime.api.adapters.SemanticAdapter; +import org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent; +import org.eclipse.emf.eef.runtime.api.parts.IFormPropertiesEditionPart; +import org.eclipse.emf.eef.runtime.api.parts.IPropertiesEditionPart; +import org.eclipse.emf.eef.runtime.api.providers.IPropertiesEditionProvider; +import org.eclipse.emf.eef.runtime.impl.services.PropertiesEditionComponentService; +import org.eclipse.jface.viewers.IFilter; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.papyrus.tabbedproperties.uml.components.StateInvariantBasePropertiesEditionComponent; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection; +import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; +import org.eclipse.uml2.uml.UMLPackage; + + + +/** + * @author <a href="mailto:jerome.benois@obeo.fr">Jerome Benois</a> + */ +public class StateInvariantBasePropertySection extends AbstractPropertySection implements IFilter { + + private Composite parent; + + private IPropertiesEditionComponent propertiesEditionComponent; + + /** + * The current selected object or the first object in the selection when + * multiple objects are selected. + */ + protected EObject eObject; + + /** + * The view manager + */ + private IPropertiesEditionPart editionPart = null; + + /** + * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(org.eclipse.swt.widgets.Composite, + * org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage) + */ + public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) { + super.createControls(parent, aTabbedPropertySheetPage); + this.parent = parent; + } + + /** + * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) + */ + public void setInput(IWorkbenchPart part, ISelection selection) { + super.setInput(part, selection); + if(!(selection instanceof IStructuredSelection) || + !((part instanceof IEditingDomainProvider) || part.getAdapter(IEditingDomainProvider.class) != null)) { + return; + } + + Object firstElement = ((IStructuredSelection)selection).getFirstElement(); + EObject newEObject = resolveSemanticObject(firstElement); + + EditingDomain editingDomain = null; + if(part instanceof IEditingDomainProvider) + editingDomain = ((IEditingDomainProvider)part).getEditingDomain(); + else if(part.getAdapter(IEditingDomainProvider.class) != null) + editingDomain = ((IEditingDomainProvider)part.getAdapter(IEditingDomainProvider.class)).getEditingDomain(); + + if(editingDomain != null && newEObject != null && newEObject != eObject) { + eObject = newEObject; + if(eObject != null) { + IPropertiesEditionProvider provider = PropertiesEditionComponentService.getInstance().getProvider(eObject); + if(this.propertiesEditionComponent != null) + this.propertiesEditionComponent.dispose(); + this.propertiesEditionComponent = provider.getPropertiesEditionComponent(eObject, IPropertiesEditionComponent.LIVE_MODE); + if(this.propertiesEditionComponent != null) { + this.propertiesEditionComponent.setLiveEditingDomain(editingDomain); + // FIXME: find a better way to define the Form constant + this.editionPart = propertiesEditionComponent.getPropertiesEditionPart(1, StateInvariantBasePropertiesEditionComponent.BASE_PART); //$NON-NLS-1$ + if(editionPart instanceof IFormPropertiesEditionPart) { + for(int i = 0; i < parent.getChildren().length; i++) { + Composite child = (Composite)parent.getChildren()[i]; + child.dispose(); + } + ((IFormPropertiesEditionPart)this.editionPart).createFigure(parent, getWidgetFactory()); + parent.layout(); + propertiesEditionComponent.initPart(propertiesEditionComponent.translatePart(StateInvariantBasePropertiesEditionComponent.BASE_PART), 1, eObject); + } + } + } + } + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#dispose() + */ + public void dispose() { + super.dispose(); + if(this.propertiesEditionComponent != null) { + this.propertiesEditionComponent.dispose(); + this.propertiesEditionComponent = null; + this.editionPart = null; + } + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.jface.viewers.IFilter#select(java.lang.Object) + */ + public boolean select(Object toTest) { + EObject eObjectToTest = resolveSemanticObject(toTest); + return eObjectToTest != null && eObjectToTest.eClass() == UMLPackage.eINSTANCE.getStateInvariant(); + } + + private EObject resolveSemanticObject(Object object) { + if(object instanceof EObject) { + return (EObject)object; + } else if(object instanceof IAdaptable) { + IAdaptable adaptable = (IAdaptable)object; + if(adaptable.getAdapter(SemanticAdapter.class) != null) { + SemanticAdapter semanticAdapter = (SemanticAdapter)adaptable + .getAdapter(SemanticAdapter.class); + return semanticAdapter.getEObject(); + } else if(adaptable.getAdapter(EObject.class) != null) { + return (EObject)adaptable.getAdapter(EObject.class); + } + } + return null; + } + + + +} |