public code v1

This commit is contained in:
2026-05-22 11:14:29 +02:00
parent 427197ec5a
commit b8141736eb
28859 changed files with 575079 additions and 0 deletions
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -0,0 +1 @@
/bin/
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>afryca.domain.gui.integer</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -0,0 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: afryca.domain.gui.integer;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: afryca.domain.gui;bundle-version="1.0.0",
afryca.domain.integer;bundle-version="1.0.0",
afryca.domain.gui,
org.eclipse.wb.swt
Automatic-Module-Name: afryca.domain.gui.integer
@@ -0,0 +1,2 @@
#Properties file for afryca.domain.gui.integer
Bundle-Name = Integer domain gui
@@ -0,0 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="afryca.domain.gui.domain_gui">
<domain_gui
chart="afryca.domain.gui.integer.chart.IntegerChart"
dialog="afryca.domain.gui.integer.dialog.IntegerDialog"
domain="afryca.domain.integer"
id="afryca.domain.gui.integer">
</domain_gui>
</extension>
</plugin>
@@ -0,0 +1,205 @@
package afryca.domain.gui.integer.chart;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.swt.widgets.Composite;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ValueMarker;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYBarPainter;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.DefaultIntervalXYDataset;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.experimental.chart.swt.ChartComposite;
import org.jfree.ui.Layer;
import org.jfree.ui.RectangleInsets;
import afryca.domain.Domain;
import afryca.domain.gui.chart.DomainChart;
import afryca.domain.integer.NumericIntegerDomain;
public class IntegerChart extends DomainChart {
public static final Color[] colors = {Color.RED, Color.CYAN, Color.GREEN, Color.MAGENTA, Color.LIGHT_GRAY, Color.ORANGE, Color.ORANGE,
Color.MAGENTA, Color.PINK, Color.WHITE, Color.YELLOW};
private ValueMarker numMarker;
private IntervalMarker intervalMarker;
private ValueMarker[] alternativesMarkers;
public IntegerChart() {
super();
domain = null;
chart = null;
chartComposite = null;
numMarker = null;
intervalMarker = null;
}
@Override
public void initialize(Domain domain, Composite container, int width, int height, int style) {
setDomain(domain);
chartComposite = new ChartComposite(container, style, chart, true);
chartComposite.setSize(width, height);
}
@Override
public void refreshChart() {
if(chart == null) {
chart = createChart(createIntervalDataset());
} else {
chart.getXYPlot().setDataset(createIntervalDataset());
}
long upperLimit = ((NumericIntegerDomain) domain).getMax(), lowerLimit = ((NumericIntegerDomain) domain).getMin();
boolean inRange = true;
long rangeSize = upperLimit - lowerLimit;
double margin = (rangeSize > 0) ? rangeSize / 4d : 1;
chart.getXYPlot().getRangeAxis().setRange(lowerLimit - margin, upperLimit + margin);
chart.getXYPlot().getRangeAxis().setTickLabelsVisible(inRange);
chart.getXYPlot().getRangeAxis().setLabel("Domain");
}
private JFreeChart createChart(IntervalXYDataset intervalXYDataset) {
JFreeChart result = ChartFactory.createXYBarChart("", "X", false, "", intervalXYDataset, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
PlotOrientation.HORIZONTAL, false, false, false);
result.setBackgroundPaint(Color.WHITE);
XYPlot xyplot = (XYPlot) result.getPlot();
XYBarRenderer xyBarRenderer = (XYBarRenderer) xyplot.getRenderer();
xyBarRenderer.setSeriesPaint(0, Color.BLUE);
xyBarRenderer.setUseYInterval(true);
xyBarRenderer.setBarPainter(new StandardXYBarPainter());
xyplot.setBackgroundPaint(Color.WHITE);
xyplot.setDomainGridlinePaint(Color.lightGray);
xyplot.setRangeGridlinePaint(Color.lightGray);
xyplot.getDomainAxis().setVisible(false);
return result;
}
private IntervalXYDataset createIntervalDataset() {
DefaultIntervalXYDataset result = new DefaultIntervalXYDataset();
int upperLimit = ((NumericIntegerDomain) domain).getMax(), lowerLimit = ((NumericIntegerDomain) domain).getMin();
double[] x = new double[] {1};
double[] xStart = new double[] {0.1};
double[] xEnd = new double[] {0.9};
double[] y = new double[] {upperLimit - lowerLimit};
double[] yStart = new double[] {lowerLimit};
double[] yEnd = new double[] {upperLimit};
double[][] data = new double[][] {x, xStart, xEnd, y, yStart, yEnd};
result.addSeries("Range", data);
return result;
}
@Override
public void setSelection(Object selection) {
if(numMarker != null) {
chart.getXYPlot().removeRangeMarker(numMarker);
}
if(intervalMarker != null) {
chart.getXYPlot().removeRangeMarker(intervalMarker);
}
if(selection instanceof LinkedList<?>) {
intervalMarker = new IntervalMarker((Integer)((LinkedList<?>) selection).getFirst(), (Integer)((LinkedList<?>) selection).getLast());
intervalMarker.setAlpha(0.5f);
intervalMarker.setPaint(Color.RED);
chart.getXYPlot().addRangeMarker(intervalMarker);
} else {
numMarker = new ValueMarker((Integer) selection);
numMarker.setPaint(Color.RED);
numMarker.setStroke(new BasicStroke(4));
chart.getXYPlot().addRangeMarker(numMarker);
}
}
@Override
public void displayRanking(Object ranking) {
if(ranking != null) {
String[] alternatives = (String[]) ((Object[]) ranking)[0];
int[] pos = (int[]) ((Object[]) ranking)[1];
displayAlternatives(alternatives, pos, colors);
}
}
public void displayAlternatives(String[] alternatives, int[] pos, Color[] colors) {
if(numMarker != null) {
chart.getXYPlot().removeRangeMarker(numMarker);
}
if(alternativesMarkers != null) {
for (ValueMarker marker : alternativesMarkers) {
chart.getXYPlot().removeRangeMarker(marker);
}
}
alternativesMarkers = null;
class MyItem implements Comparable<MyItem> {
public String alternative;
public Double pos;
public Color color;
public MyItem(String alternative, double pos, Color color) {
this.alternative = alternative;
this.pos = pos;
this.color = color;
}
@Override
public int compareTo(MyItem other) {
return Double.compare(this.pos, other.pos);
}
}
List<MyItem> items = null;
if((alternatives != null) && (pos != null) && (colors != null)) {
items = new LinkedList<MyItem>();
for(int i = 0; i < pos.length; i++) {
if (alternatives[i] != null) {
items.add(new MyItem(alternatives[i], pos[i], colors[i]));
}
}
Collections.sort(items);
}
if(items != null) {
int size = items.size();
if (size > 0) {
int height = (int) (chartComposite.getSize().y * 0.75f);
int offset = height / size;
alternativesMarkers = new ValueMarker[size];
MyItem item;
for (int i = 0; i < size; i++) {
item = items.get(i);
alternativesMarkers[i] = new ValueMarker(item.pos);
alternativesMarkers[i].setPaint(item.color);
alternativesMarkers[i].setStroke(new BasicStroke(3));
alternativesMarkers[i].setLabel(item.alternative);
alternativesMarkers[i].setLabelFont(new Font("TimesRoman", Font.BOLD, 20)); //$NON-NLS-1$
alternativesMarkers[i].setLabelPaint(item.color);
alternativesMarkers[i].setLabelOffset(new RectangleInsets(offset + (offset * i), 15, 0, 0));
chart.getXYPlot().addRangeMarker(0, alternativesMarkers[i], Layer.FOREGROUND);
}
}
}
}
}
@@ -0,0 +1,288 @@
package afryca.domain.gui.integer.dialog;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.eclipse.e4.core.services.nls.Translation;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.services.IStylingEngine;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.ResourceManager;
import afryca.domain.Domain;
import afryca.domain.gui.dialog.DomainDialog;
import afryca.domain.gui.integer.chart.IntegerChart;
import afryca.domain.gui.integer.icons.Icons;
import afryca.domain.gui.integer.l10n.Messages;
import afryca.domain.integer.NumericIntegerDomain;
public class IntegerDialog extends DomainDialog {
private static final String PLUGIN_ID = "afryca.domain.gui.integer";
private static final int BUTTON_OK = IDialogConstants.OK_ID;
private static final int BUTTON_CANCEL = IDialogConstants.CANCEL_ID;
private static final int CHART_WIDTH = 450;
private static final int CHART_HEIGHT = 250;
private static final int TEXT_HEIGHT = 25;
private static final int DIALOG_WIDTH = CHART_WIDTH + TEXT_HEIGHT * 4;
private static final int DIALOG_HEIGHT = CHART_HEIGHT * 2 + TEXT_HEIGHT * 5;
private static final int MINIMUN = Integer.MIN_VALUE;
private static final int MAXIMUN = Integer.MAX_VALUE;
private IntegerChart chart;
private int lowerLimit;
private int upperLimit;
private List<String> ids;
@Inject
@Named(DOMAINS)
private List<Domain> domains;
private Composite container;
private Label lowerLimitLabel;
private Label upperLimitLabel;
private Text textId;
private Spinner lowerLimitSpinner;
private Spinner upperLimitSpinner;
private ControlDecoration domainNameTextControlDecoration;
@Translation
@Inject
private Messages messages;
@Translation
@Inject
private Icons icons;
@Inject
private IStylingEngine engine;
public IntegerDialog() {
super();
}
@Inject
public IntegerDialog(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {
super(shell);
}
@Override
protected Control createDialogArea(Composite parent) {
container = (Composite) super.createDialogArea(parent);
GridLayoutFactory.swtDefaults().applyTo(container);
styleDialog();
initialize();
createControls();
addTextListeners();
addSpinnersListeners();
return container;
}
private void styleDialog() {
engine.setClassname(getShell(), DIALOG_CLASS_SHELL);
getShell().setText(messages.create_integer_domain);
setTitleImage(ResourceManager.getPluginImage(PLUGIN_ID, icons.domain));
setTitle(messages.create_integer_domain);
setMessage(messages.insert_limits, SWT.NONE);
}
private void initialize() {
domain = new NumericIntegerDomain();
((NumericIntegerDomain) domain).setMinMax(0, 0);
lowerLimit = ((NumericIntegerDomain) domain).getMin();
upperLimit = ((NumericIntegerDomain) domain).getMax();
id = ""; //$NON-NLS-1$
ids = new ArrayList<String>();
for(Domain d: domains) {
ids.add(d.getId());
}
}
private void createControls() {
Label idLabel = new Label(container, SWT.NULL);
GridData gridData = new GridData(SWT.CENTER, SWT.CENTER, true, false, 4, 1);
idLabel.setLayoutData(gridData);
idLabel.setText(messages.domain_name);
textId = new Text(container, SWT.BORDER);
textId.setText(id);
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1);
textId.setLayoutData(gridData);
Label titleLabel = new Label(container, SWT.NULL);
gridData = new GridData(SWT.CENTER, SWT.CENTER, true, false, 4, 1);
gridData.verticalIndent = 15;
titleLabel.setLayoutData(gridData);
titleLabel.setText(messages.limits);
Composite limitsComposite = new Composite(container, SWT.NONE);
GridLayout layoutLimits = new GridLayout(2, true);
limitsComposite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
limitsComposite.setLayout(layoutLimits);
Composite lowerComposite = new Composite(limitsComposite, SWT.NONE);
GridLayout layoutLower = new GridLayout(2, false);
GridLayoutFactory.swtDefaults().applyTo(lowerComposite);
lowerComposite.setLayout(layoutLower);
lowerLimitLabel = new Label(lowerComposite, SWT.NONE);
gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
lowerLimitLabel.setLayoutData(gridData);
lowerLimitLabel.setText(messages.lower);
lowerLimitSpinner = new Spinner(lowerComposite, SWT.BORDER);
gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
gridData.widthHint = 90;
lowerLimitSpinner.setLayoutData(gridData);
Composite upperComposite = new Composite(limitsComposite, SWT.NONE);
GridLayout layoutUpper = new GridLayout(2, false);
GridLayoutFactory.swtDefaults().applyTo(upperComposite);
upperComposite.setLayout(layoutUpper);
upperLimitLabel = new Label(upperComposite, SWT.NONE);
gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
upperLimitLabel.setLayoutData(gridData);
upperLimitLabel.setText(messages.upper);
upperLimitSpinner = new Spinner(upperComposite, SWT.BORDER);
gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
gridData.widthHint = 90;
upperLimitSpinner.setLayoutData(gridData);
setInfoSpinners();
createChart();
}
private void setInfoSpinners() {
lowerLimitSpinner.setIncrement(1);
lowerLimitSpinner.setMinimum(MINIMUN);
lowerLimitSpinner.setMaximum(MAXIMUN);
lowerLimitSpinner.setDigits(0);
upperLimitSpinner.setIncrement(1);
upperLimitSpinner.setMinimum(MINIMUN);
upperLimitSpinner.setMaximum(MAXIMUN);
upperLimitSpinner.setDigits(0);
lowerLimitSpinner.setSelection(lowerLimit);
upperLimitSpinner.setSelection(upperLimit);
lowerLimitSpinner.setMaximum(upperLimitSpinner.getSelection());
upperLimitSpinner.setMinimum(lowerLimitSpinner.getSelection());
}
private void createChart() {
Composite composite = new Composite(container, SWT.NONE);
composite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
chart = new IntegerChart();
chart.initialize(domain, composite, CHART_WIDTH, CHART_HEIGHT, SWT.BORDER);
}
private void addTextListeners() {
textId.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
id = ((Text) e.getSource()).getText().trim();
domain.setId(id);
configureButtons();
validate();
}
});
}
private void addSpinnersListeners() {
ModifyListener limitsListener = new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
Spinner spinner = (Spinner) e.getSource();
if(spinner == lowerLimitSpinner) {
if(spinner.getSelection() > upperLimitSpinner.getSelection()) {
spinner.setSelection(upperLimitSpinner.getMinimum());
}
lowerLimit = spinner.getSelection();
upperLimitSpinner.setMinimum(lowerLimitSpinner.getSelection());
((NumericIntegerDomain) domain).setMin(lowerLimit);
chart.setDomain(domain);
} else if(spinner == upperLimitSpinner) {
if(spinner.getSelection() < lowerLimitSpinner.getSelection()) {
spinner.setSelection(lowerLimitSpinner.getMaximum());
}
upperLimit = spinner.getSelection();
lowerLimitSpinner.setMaximum(upperLimitSpinner.getSelection());
((NumericIntegerDomain) domain).setMax(upperLimit);
chart.setDomain(domain);
}
configureButtons();
}
};
upperLimitSpinner.addModifyListener(limitsListener);
lowerLimitSpinner.addModifyListener(limitsListener);
}
private void configureButtons() {
Button okButton = getButton(BUTTON_OK);
if (okButton != null) {
okButton.setEnabled(validate());
}
}
private boolean validate() {
String message = ""; //$NON-NLS-1$
if(id.isEmpty()) {
message = messages.empty_value;
}
if(ids.contains(id)) {
message = messages.duplicate_name;
}
return validate(domainNameTextControlDecoration, message) && (lowerLimit < upperLimit);
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, BUTTON_OK, IDialogConstants.OK_LABEL, true);
createButton(parent, BUTTON_CANCEL, IDialogConstants.CANCEL_LABEL, false);
showDecoration();
configureButtons();
}
private void showDecoration() {
domainNameTextControlDecoration = createNotificationDecorator(textId);
domainNameTextControlDecoration.show();
}
@Override
protected Point getInitialSize() {
return new Point(DIALOG_WIDTH, DIALOG_HEIGHT);
}
}
@@ -0,0 +1,11 @@
package afryca.domain.gui.integer.icons;
/**
* Localized icons
*
* @author Sinbad²
* @version 3.0
*/
public class Icons {
public String domain;
}
@@ -0,0 +1 @@
domain=icons/domain.png
@@ -0,0 +1,13 @@
package afryca.domain.gui.integer.l10n;
public class Messages {
public String create_integer_domain;
public String domain_name;
public String duplicate_name;
public String empty_value;
public String insert_limits;
public String limits;
public String lower;
public String upper;
public String domain;
}
@@ -0,0 +1,9 @@
create_integer_domain=Create numeric integer domain
domain_name=Domain name
duplicate_name=Duplicated name
empty_value=Empty value
insert_limits=Insert limits
limits=Limits
lower=Lower
upper=Upper
domain=Domain
@@ -0,0 +1,9 @@
create_integer_domain=Crear dominio numérico entero
domain_name=Nombre dominio
duplicate_name=Nombre duplicado
empty_value=Valor vacío
insert_limits=Insertar límites
limits=Límites
lower=Inferior
upper=Superior
domain=Dominio
@@ -0,0 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: afryca.domain.gui.integer;singleton:=true
Bundle-Version: 1.0.0.202101221157
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: afryca.domain.gui;bundle-version="1.0.0",afryca.domain.i
nteger;bundle-version="1.0.0",afryca.domain.gui,org.eclipse.wb.swt
Automatic-Module-Name: afryca.domain.gui.integer
@@ -0,0 +1 @@
domain=icons/domain.png
@@ -0,0 +1,9 @@
create_integer_domain=Create numeric integer domain
domain_name=Domain name
duplicate_name=Duplicated name
empty_value=Empty value
insert_limits=Insert limits
limits=Limits
lower=Lower
upper=Upper
domain=Domain
@@ -0,0 +1,9 @@
create_integer_domain=Crear dominio numérico entero
domain_name=Nombre dominio
duplicate_name=Nombre duplicado
empty_value=Valor vacío
insert_limits=Insertar límites
limits=Límites
lower=Inferior
upper=Superior
domain=Dominio
@@ -0,0 +1,4 @@
#Fri Jan 22 13:01:55 CET 2021
artifact.main=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.domain.gui.integer\\target\\afryca.domain.gui.integer-1.0.0-SNAPSHOT.jar
artifact.attached.p2artifacts=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.domain.gui.integer\\target\\p2artifacts.xml
artifact.attached.p2metadata=C\:\\Users\\\u00C1lvaro\\Workspaces\\afryca_2020\\afryca\\plugins\\afryca.domain.gui.integer\\target\\p2content.xml
@@ -0,0 +1,3 @@
artifactId=afryca.domain.gui.integer
groupId=afryca.group
version=1.0.0-SNAPSHOT
@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<?artifactRepository version='1.1.0'?>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='afryca.domain.gui.integer' version='1.0.0.202101221157'>
<properties size='5'>
<property name='artifact.size' value='16825'/>
<property name='download.size' value='16825'/>
<property name='maven-groupId' value='afryca.group'/>
<property name='maven-artifactId' value='afryca.domain.gui.integer'/>
<property name='maven-version' value='1.0.0-SNAPSHOT'/>
</properties>
</artifact>
</artifacts>
@@ -0,0 +1,46 @@
<?xml version='1.0' encoding='UTF-8'?>
<units size='1'>
<unit id='afryca.domain.gui.integer' version='1.0.0.202101221157' generation='2'>
<update id='afryca.domain.gui.integer' range='[0.0.0,1.0.0.202101221157)' severity='0'/>
<properties size='5'>
<property name='df_LT.Bundle-Name' value='Integer domain gui'/>
<property name='org.eclipse.equinox.p2.name' value='%Bundle-Name'/>
<property name='maven-groupId' value='afryca.group'/>
<property name='maven-artifactId' value='afryca.domain.gui.integer'/>
<property name='maven-version' value='1.0.0-SNAPSHOT'/>
</properties>
<provides size='5'>
<provided namespace='org.eclipse.equinox.p2.iu' name='afryca.domain.gui.integer' version='1.0.0.202101221157'/>
<provided namespace='osgi.bundle' name='afryca.domain.gui.integer' version='1.0.0.202101221157'/>
<provided namespace='osgi.identity' name='afryca.domain.gui.integer' version='1.0.0.202101221157'>
<properties size='1'>
<property name='type' value='osgi.bundle'/>
</properties>
</provided>
<provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
<provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
</provides>
<requires size='5'>
<required namespace='osgi.bundle' name='afryca.domain.gui' range='1.0.0'/>
<required namespace='osgi.bundle' name='afryca.domain.integer' range='1.0.0'/>
<required namespace='osgi.bundle' name='afryca.domain.gui' range='0.0.0'/>
<required namespace='osgi.bundle' name='org.eclipse.wb.swt' range='0.0.0'/>
<requiredProperties namespace='osgi.ee' match='(&amp;(osgi.ee=JavaSE)(version=1.8))'>
<description>
afryca.domain.gui.integer
</description>
</requiredProperties>
</requires>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='afryca.domain.gui.integer' version='1.0.0.202101221157'/>
</artifacts>
<touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
Bundle-SymbolicName: afryca.domain.gui.integer;singleton:=true&#xA;Bundle-Version: 1.0.0.202101221157&#xA;
</instruction>
</instructions>
</touchpointData>
</unit>
</units>