blob: 1b84489cb08a8b3bc3055fdba55e71565cbd0e09 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
* 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:
* Pierre Allard,
* Regent L'Archeveque - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*
*******************************************************************************/
package org.eclipse.apogy.core.environment.surface.ui.composites;
import org.eclipse.apogy.common.emf.ApogyCommonEMFFacade;
import org.eclipse.apogy.common.emf.ApogyCommonTransactionFacade;
import org.eclipse.apogy.common.emf.ui.ApogyCommonEMFUIFacade;
import org.eclipse.apogy.common.emf.ui.ECollectionCompositeSettings;
import org.eclipse.apogy.common.emf.ui.adapters.AbstractEListContentProvider;
import org.eclipse.apogy.common.emf.ui.emfforms.composites.EMFFormsEListComposite;
import org.eclipse.apogy.common.emf.ui.emfforms.wizards.EObjectWizard;
import org.eclipse.apogy.core.environment.surface.ApogySurfaceEnvironmentPackage;
import org.eclipse.apogy.core.environment.surface.CartesianTriangularMeshMapLayer;
import org.eclipse.apogy.core.environment.surface.ImageMapLayerPresentation;
import org.eclipse.apogy.core.environment.surface.MapLayerPresentation;
import org.eclipse.apogy.core.environment.surface.ui.ApogySurfaceEnvironmentUIFactory;
import org.eclipse.apogy.core.environment.surface.ui.MapLayerPresentationUISettings;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
//FIXME: bug_542891
public class MapLayerPresentationListComposite extends EMFFormsEListComposite<CartesianTriangularMeshMapLayer, MapLayerPresentation, MapLayerPresentation>
{
public MapLayerPresentationListComposite(Composite parent, int style, ECollectionCompositeSettings settings)
{
super(parent, style, null, ApogySurfaceEnvironmentPackage.Literals.CARTESIAN_TRIANGULAR_MESH_MAP_LAYER__MAP_LAYER_PRESENTATIONS, settings);
}
@Override
protected AdapterFactoryContentProvider createContentProvider(AdapterFactory adapterFactory)
{
return new AbstractEListContentProvider(adapterFactory)
{
@Override
public EStructuralFeature getEStructuralFeature()
{
return MapLayerPresentationListComposite.this.getEStructuralFeature();
}
};
}
@Override
protected void createButtons(Composite parent, int style)
{
createNewButton(parent, style);
createDeleteButton(parent, style);
createSeparator(parent, style);
createShowButton(parent, style);
createHideButton(parent, style);
createSeparator(parent, style);
createUpButton(parent, style);
createDownButton(parent, style);
}
@Override
protected void doNew()
{
MapLayerPresentationUISettings settings = ApogySurfaceEnvironmentUIFactory.eINSTANCE.createMapLayerPresentationUISettings();
settings.setName(ApogyCommonEMFFacade.INSTANCE.getDefaultName(getRootEObject(),
null,
ApogySurfaceEnvironmentPackage.Literals.CARTESIAN_TRIANGULAR_MESH_MAP_LAYER__MAP_LAYER_PRESENTATIONS));
settings.setCartesianTriangularMeshMapLayer(getRootEObject());
Wizard wizard = new EObjectWizard<CartesianTriangularMeshMapLayer, MapLayerPresentation, ImageMapLayerPresentation>(getRootEObject(),
null,
ApogySurfaceEnvironmentPackage.Literals.CARTESIAN_TRIANGULAR_MESH_MAP_LAYER__MAP_LAYER_PRESENTATIONS,
ApogySurfaceEnvironmentPackage.Literals.IMAGE_MAP_LAYER_PRESENTATION,
settings);
WizardDialog dialog = new WizardDialog(getShell(), wizard);
dialog.open();
}
@Override
protected void createShowButtonBindings(Button button) {
ApogyCommonEMFUIFacade.INSTANCE.createViewerSelectionControlEnabledBinding(getDataBindingContext(), getViewer(),
button, o ->
{
if(o instanceof MapLayerPresentation)
{
return !((MapLayerPresentation) o).isVisible();
}
return false;
});
}
@Override
protected void doShow()
{
for(MapLayerPresentation presentation : getSelectedItemObjects())
{
ApogyCommonTransactionFacade.INSTANCE.basicSet(presentation, ApogySurfaceEnvironmentPackage.Literals.MAP_LAYER_PRESENTATION__VISIBLE, true, true);
}
}
@Override
protected void createHideButtonBindings(Button button) {
ApogyCommonEMFUIFacade.INSTANCE.createViewerSelectionControlEnabledBinding(getDataBindingContext(), getViewer(),
button, o ->
{
if(o instanceof MapLayerPresentation)
{
return ((MapLayerPresentation) o).isVisible();
}
return false;
});
}
@Override
protected void doHide()
{
for(MapLayerPresentation presentation : getSelectedItemObjects())
{
ApogyCommonTransactionFacade.INSTANCE.basicSet(presentation, ApogySurfaceEnvironmentPackage.Literals.MAP_LAYER_PRESENTATION__VISIBLE, false, true);
}
}
}