Skip to content
Snippets Groups Projects
Commit 24d14873 authored by Alberto Debiasi's avatar Alberto Debiasi
Browse files

Add missing headers with ELP 2.0 license.

Change-Id: Ic79abc870bf93096fa9eb07d138ac7d2c2d6c647
parent f4e0cd59
No related branches found
No related tags found
No related merge requests found
Showing
with 3143 additions and 3003 deletions
/* ------------------------------------------------------------------------------
- Copyright (c) 2015 Intecs.
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
- L. Baracchi, laura.baracchi@intecs.it
------------------------------------------------------------------------------*/
package org.polarsys.chess.core.util.uml;
/**
* The Class ValueNFP.
*/
public class ValueNFP {
/** The unit. */
public String unit = new String();
/** The value. */
public Double value = 0.0;
}
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
/* ------------------------------------------------------------------------------
- Copyright (c) 2015 Intecs.
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
- L. Baracchi, laura.baracchi@intecs.it
------------------------------------------------------------------------------*/
package org.polarsys.chess.core.util.uml;
/**
* The Class ValueNFP.
*/
public class ValueNFP {
/** The unit. */
public String unit = new String();
/** The value. */
public Double value = 0.0;
}
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
package org.polarsys.chess.diagramsCreator.utils;
import java.util.ArrayList;
......
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/
package org.polarsys.chess.multicore;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle.
*/
public class Activator extends AbstractUIPlugin {
/** The Constant PLUGIN_ID. */
// The plug-in ID
public static final String PLUGIN_ID = "org.polarsys.chess.multicore"; //$NON-NLS-1$
/** The plugin. */
// The shared instance
private static Activator plugin;
/**
* The constructor.
*/
public Activator() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
/**
* Returns the shared instance.
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
}
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/
package org.polarsys.chess.multicore;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle.
*/
public class Activator extends AbstractUIPlugin {
/** The Constant PLUGIN_ID. */
// The plug-in ID
public static final String PLUGIN_ID = "org.polarsys.chess.multicore"; //$NON-NLS-1$
/** The plugin. */
// The shared instance
private static Activator plugin;
/**
* The constructor.
*/
public Activator() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
/**
* Returns the shared instance.
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
}
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/package org.polarsys.chess.multicore;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.papyrus.infra.widgets.editors.ICommitListener;
import org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.IGraphicalContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider;
import org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector;
import org.eclipse.papyrus.infra.widgets.strategy.ProviderBasedBrowseStrategy;
import org.eclipse.papyrus.infra.widgets.strategy.StrategyBasedContentProvider;
import org.eclipse.papyrus.infra.widgets.strategy.TreeBrowseStrategy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.PatternFilter;
import org.eclipse.uml2.uml.InstanceSpecification;
import org.polarsys.chess.multicore.model.CHTask;
/**
* A copy of the ReferenceSelector class where the treeViewer does not have
*
* any IDoubleClickListener instance.
*
* @author Alessandro Zovi
*/
public class ReferenceSelectorNoDoubleClick extends ReferenceSelector {
/** The inst spec not yet assigned to partition. */
private EList<InstanceSpecification> instSpecNotYetAssignedToPartition;
/** The task not yet assigned to partition. */
private EList<CHTask> taskNotYetAssignedToPartition;
/**
* Instantiates a new reference selector no double click.
*
* @param unique the unique
*/
public ReferenceSelectorNoDoubleClick(boolean unique) {
super(unique);
}
/**
* Instantiates a new reference selector no double click.
*
* @param unique the unique
* @param instSpecNotYetAssignedToPartition the inst spec not yet assigned to partition
* @param taskNotYetAssignedToPartition the task not yet assigned to partition
*/
public ReferenceSelectorNoDoubleClick(boolean unique,
EList<InstanceSpecification> instSpecNotYetAssignedToPartition,
EList<CHTask> taskNotYetAssignedToPartition) {
super(unique);
this.instSpecNotYetAssignedToPartition = instSpecNotYetAssignedToPartition;
this.taskNotYetAssignedToPartition = taskNotYetAssignedToPartition;
}
/**
* Refreshes this selector's {@link org.eclipse.swt.widgets.List}
*/
@Override
public void refresh() {
((CustomSelectionFilteredBrowseStrategy) contentProvider.getBrowseStrategy()).refresh();
treeViewer.refresh();
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector#setContentProvider(org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider)
*/
@Override
public void setContentProvider(IStaticContentProvider staticContentProvider) {
ITreeContentProvider provider = new EncapsulatedContentProvider(staticContentProvider);
TreeBrowseStrategy filteredBrowseStrategy = new CustomSelectionFilteredBrowseStrategy(provider);
TreeBrowseStrategy revealBrowseStrategy = new ProviderBasedBrowseStrategy(provider);
this.contentProvider = new StrategyBasedContentProvider(filteredBrowseStrategy, revealBrowseStrategy);
if (treeViewer != null) {
treeViewer.setContentProvider(contentProvider);
treeViewer.setInput(""); //$NON-NLS-1$
}
if (contentProvider instanceof ICommitListener) {
commitListeners.add(contentProvider);
}
}
/**
* The Class CustomSelectionFilteredBrowseStrategy.
*/
/* LB 20150708
* CustomSelectionFilteredBrowseStrategy was introduced for managing correctly the
* visualization in the selector of only Inst Specs or Tasks that are not
* already assigned to partitions or cores (even the first time the panel is opened)
*/
private class CustomSelectionFilteredBrowseStrategy extends ProviderBasedBrowseStrategy {
/**
* Instantiates a new custom selection filtered browse strategy.
*
* @param provider the provider
*/
public CustomSelectionFilteredBrowseStrategy(ITreeContentProvider provider) {
super(provider);
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider#isValidValue(java.lang.Object)
*/
@Override
public boolean isValidValue(Object element) {
if (!unique) {
return super.isValidValue(element);
}
if (!super.isValidValue(element)) {
return false;
}
if(instSpecNotYetAssignedToPartition!=null && !instSpecNotYetAssignedToPartition.contains(element)){
instSpecNotYetAssignedToPartition.add((InstanceSpecification) element);
selectedElements.add((InstanceSpecification) element);
return false;
}
if(taskNotYetAssignedToPartition!=null && !taskNotYetAssignedToPartition.contains(element)){
taskNotYetAssignedToPartition.add((CHTask) element);
selectedElements.add((CHTask) element);
return false;
}
return !selectedElements.contains(getAdaptedValue(element));
}
/**
* Refresh.
*/
public void refresh() {
if (unique) {
clearCache();
}
}
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector#createControls(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createControls(Composite parent) {
Composite content = new Composite(parent, SWT.NONE);
content.setLayout(new GridLayout(1, true));
treeViewer = new TreeViewer(content, SWT.BORDER | SWT.MULTI);
treeViewer.setFilters(new ViewerFilter[]{ new PatternFilter() });
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.minimumHeight = 300;
data.minimumWidth = 300;
treeViewer.getTree().setLayoutData(data);
if(labelProvider != null) {
treeViewer.setLabelProvider(labelProvider);
}
if(contentProvider != null) {
treeViewer.setContentProvider(contentProvider);
treeViewer.setInput(""); //$NON-NLS-1$
}
if(contentProvider instanceof IGraphicalContentProvider) {
IGraphicalContentProvider graphicalContentProvider = contentProvider;
Composite beforeTreeComposite = new Composite(content, SWT.NONE);
beforeTreeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
FillLayout layout = new FillLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
beforeTreeComposite.setLayout(layout);
graphicalContentProvider.createBefore(beforeTreeComposite);
beforeTreeComposite.moveAbove(treeViewer.getTree());
Composite afterTreeComposite = new Composite(content, SWT.NONE);
layout = new FillLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
afterTreeComposite.setLayout(layout);
afterTreeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
graphicalContentProvider.createAfter(afterTreeComposite);
}
}
}
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/package org.polarsys.chess.multicore;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.papyrus.infra.widgets.editors.ICommitListener;
import org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.IGraphicalContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider;
import org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector;
import org.eclipse.papyrus.infra.widgets.strategy.ProviderBasedBrowseStrategy;
import org.eclipse.papyrus.infra.widgets.strategy.StrategyBasedContentProvider;
import org.eclipse.papyrus.infra.widgets.strategy.TreeBrowseStrategy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.PatternFilter;
import org.eclipse.uml2.uml.InstanceSpecification;
import org.polarsys.chess.multicore.model.CHTask;
/**
* A copy of the ReferenceSelector class where the treeViewer does not have
*
* any IDoubleClickListener instance.
*
* @author Alessandro Zovi
*/
public class ReferenceSelectorNoDoubleClick extends ReferenceSelector {
/** The inst spec not yet assigned to partition. */
private EList<InstanceSpecification> instSpecNotYetAssignedToPartition;
/** The task not yet assigned to partition. */
private EList<CHTask> taskNotYetAssignedToPartition;
/**
* Instantiates a new reference selector no double click.
*
* @param unique the unique
*/
public ReferenceSelectorNoDoubleClick(boolean unique) {
super(unique);
}
/**
* Instantiates a new reference selector no double click.
*
* @param unique the unique
* @param instSpecNotYetAssignedToPartition the inst spec not yet assigned to partition
* @param taskNotYetAssignedToPartition the task not yet assigned to partition
*/
public ReferenceSelectorNoDoubleClick(boolean unique,
EList<InstanceSpecification> instSpecNotYetAssignedToPartition,
EList<CHTask> taskNotYetAssignedToPartition) {
super(unique);
this.instSpecNotYetAssignedToPartition = instSpecNotYetAssignedToPartition;
this.taskNotYetAssignedToPartition = taskNotYetAssignedToPartition;
}
/**
* Refreshes this selector's {@link org.eclipse.swt.widgets.List}
*/
@Override
public void refresh() {
((CustomSelectionFilteredBrowseStrategy) contentProvider.getBrowseStrategy()).refresh();
treeViewer.refresh();
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector#setContentProvider(org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider)
*/
@Override
public void setContentProvider(IStaticContentProvider staticContentProvider) {
ITreeContentProvider provider = new EncapsulatedContentProvider(staticContentProvider);
TreeBrowseStrategy filteredBrowseStrategy = new CustomSelectionFilteredBrowseStrategy(provider);
TreeBrowseStrategy revealBrowseStrategy = new ProviderBasedBrowseStrategy(provider);
this.contentProvider = new StrategyBasedContentProvider(filteredBrowseStrategy, revealBrowseStrategy);
if (treeViewer != null) {
treeViewer.setContentProvider(contentProvider);
treeViewer.setInput(""); //$NON-NLS-1$
}
if (contentProvider instanceof ICommitListener) {
commitListeners.add(contentProvider);
}
}
/**
* The Class CustomSelectionFilteredBrowseStrategy.
*/
/* LB 20150708
* CustomSelectionFilteredBrowseStrategy was introduced for managing correctly the
* visualization in the selector of only Inst Specs or Tasks that are not
* already assigned to partitions or cores (even the first time the panel is opened)
*/
private class CustomSelectionFilteredBrowseStrategy extends ProviderBasedBrowseStrategy {
/**
* Instantiates a new custom selection filtered browse strategy.
*
* @param provider the provider
*/
public CustomSelectionFilteredBrowseStrategy(ITreeContentProvider provider) {
super(provider);
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider#isValidValue(java.lang.Object)
*/
@Override
public boolean isValidValue(Object element) {
if (!unique) {
return super.isValidValue(element);
}
if (!super.isValidValue(element)) {
return false;
}
if(instSpecNotYetAssignedToPartition!=null && !instSpecNotYetAssignedToPartition.contains(element)){
instSpecNotYetAssignedToPartition.add((InstanceSpecification) element);
selectedElements.add((InstanceSpecification) element);
return false;
}
if(taskNotYetAssignedToPartition!=null && !taskNotYetAssignedToPartition.contains(element)){
taskNotYetAssignedToPartition.add((CHTask) element);
selectedElements.add((CHTask) element);
return false;
}
return !selectedElements.contains(getAdaptedValue(element));
}
/**
* Refresh.
*/
public void refresh() {
if (unique) {
clearCache();
}
}
}
/* (non-Javadoc)
* @see org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector#createControls(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createControls(Composite parent) {
Composite content = new Composite(parent, SWT.NONE);
content.setLayout(new GridLayout(1, true));
treeViewer = new TreeViewer(content, SWT.BORDER | SWT.MULTI);
treeViewer.setFilters(new ViewerFilter[]{ new PatternFilter() });
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.minimumHeight = 300;
data.minimumWidth = 300;
treeViewer.getTree().setLayoutData(data);
if(labelProvider != null) {
treeViewer.setLabelProvider(labelProvider);
}
if(contentProvider != null) {
treeViewer.setContentProvider(contentProvider);
treeViewer.setInput(""); //$NON-NLS-1$
}
if(contentProvider instanceof IGraphicalContentProvider) {
IGraphicalContentProvider graphicalContentProvider = contentProvider;
Composite beforeTreeComposite = new Composite(content, SWT.NONE);
beforeTreeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
FillLayout layout = new FillLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
beforeTreeComposite.setLayout(layout);
graphicalContentProvider.createBefore(beforeTreeComposite);
beforeTreeComposite.moveAbove(treeViewer.getTree());
Composite afterTreeComposite = new Composite(content, SWT.NONE);
layout = new FillLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
afterTreeComposite.setLayout(layout);
afterTreeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
graphicalContentProvider.createAfter(afterTreeComposite);
}
}
}
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/package org.polarsys.chess.multicore.commands;
import org.polarsys.chess.core.util.uml.ModelError;
/**
* The Class GenerateTask2CoreAssignmentsUsingRUNCommand.
*/
public class GenerateTask2CoreAssignmentsUsingRUNCommand extends GenerateTask2CoreAssignmentsCommand {
/* (non-Javadoc)
* @see org.polarsys.chess.multicore.commands.GenerateTask2CoreAssignmentsCommand#execute()
*/
@Override
public void execute() throws ModelError {
queryContent(umlModel);
executeTask2CoreCalculator(true);
updateModel();
}
}
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
/*------------------------------------------------------------------------------
-
- Copyright (c) 2015-2016 University of Padova, ITALY - Intecs SpA
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v2.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v20.html
-
- Contributors:
-
- Alessandro Zovi azovi@math.unipd.it
- Stefano Puri stefano.puri@intecs.it
- Laura Baracchi laura.baracchi@intecs.it
- Nicholas Pacini nicholas.pacini@intecs.it
-
- Initial API and implementation and/or initial documentation
------------------------------------------------------------------------------*/package org.polarsys.chess.multicore.commands;
import org.polarsys.chess.core.util.uml.ModelError;
/**
* The Class GenerateTask2CoreAssignmentsUsingRUNCommand.
*/
public class GenerateTask2CoreAssignmentsUsingRUNCommand extends GenerateTask2CoreAssignmentsCommand {
/* (non-Javadoc)
* @see org.polarsys.chess.multicore.commands.GenerateTask2CoreAssignmentsCommand#execute()
*/
@Override
public void execute() throws ModelError {
queryContent(umlModel);
executeTask2CoreCalculator(true);
updateModel();
}
}
#-------------------------------------------------------------------------------
# Copyright (C) 2020
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#-------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
Provides...
</body>
</html>
\ No newline at end of file
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment