public code v1

This commit is contained in:
Francisco Jesús Martínez Mimbrera
2026-05-23 00:32:57 +02:00
commit 759a8968a2
4357 changed files with 163763 additions and 0 deletions
@@ -0,0 +1,7 @@
<?flintstones.helper.data.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,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>flintstones.group</groupId>
<artifactId>flintstones.bundles</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>flintstones.domain.fuzzyset.unbalanced.ui.dialog</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<name>[bundle] Ui</name>
</project>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>flintstones.domain.fuzzyset.unbalanced.ui.dialog</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>
<filteredResources>
<filter>
<id>1779484362543</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -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,22 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: flintstones.domain.fuzzyset.unbalanced.ui.dialog;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: flintstones.domain.fuzzyset.unbalanced,
flintstones.domain.fuzzyset.ui.dialog,
flintstones.domain.numeric.real,
org.eclipse.wb.swt,
javax.inject,
org.eclipse.e4.core.contexts,
org.eclipse.e4.core.di,
flintstones.entity.domain,
flintstones.entity.domain.ui.chart,
flintstones.entity.domain.ui.dialog,
flintstones.model.domain.ui.service,
flintstones.domain.fuzzyset.ui.chart,
flintstones.model.ui.service,
flintstones.helper.ui,
flintstones.model.domain.service
Automatic-Module-Name: flintstones.domain.fuzzyset.unbalanced.ui
@@ -0,0 +1,5 @@
#Properties file for flintstones.domain.fuzzyset.unbalanced.ui
Bundle-Name = Ui
chart_ui.icon = domain-L.png
new_dialog.description = [RELLENAR INFO FUZZYSET]
modify_dialog.description = [UNUSED]
@@ -0,0 +1,5 @@
#Properties file for flintstones.domain.fuzzyset.unbalanced.ui
Bundle-Name = Ui
chart_ui.icon = domain-L.png
new_dialog.description = [RELLENAR INFO FUZZYSET]
modify_dialog.description = [UNUSED]
@@ -0,0 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
OSGI-INF/l10n/bundle.properties,\
OSGI-INF/
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<?eclipse version="3.4"?>
<plugin>
<extension
point="flintstones.domain.ui.chart.extensionpoint">
<chart_ui
chart="flintstones.domain.fuzzyset.ui.chart.LinguisticDomainChart"
domain="flintstones.domain.linguistic.unbalanced"
uid="flintstones.domain.linguistic.unbalanced.ui">
</chart_ui>
</extension>
<extension
point="flintstones.domain.ui.new.dialog.extensionpoint">
<new_dialog
description="%new_dialog.description"
domain="flintstones.domain.linguistic.unbalanced"
uid="flintstones.domain.linguistic.unbalanced.ui.new"
implementation="flintstones.domain.fuzzyset.unbalanced.ui.dialog.LHModifyDomainDialog">
</new_dialog>
</extension>
<extension
point="flintstones.domain.ui.modify.dialog.extensionpoint">
<modify_dialog
description="%modify_dialog.description"
domain="flintstones.domain.linguistic.unbalanced"
uid="flintstones.domain.linguistic.unbalanced.ui.modify"
implementation="flintstones.domain.fuzzyset.unbalanced.ui.dialog.LHModifyDomainDialog">
</modify_dialog>
</extension>
</plugin>
@@ -0,0 +1,518 @@
package flintstones.domain.fuzzyset.unbalanced.ui.dialog;
import java.util.List;
import javax.inject.Inject;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.services.nls.Translation;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
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.wb.swt.SWTResourceManager;
import flintstones.domain.fuzzyset.ui.chart.LinguisticDomainChart;
import flintstones.domain.fuzzyset.unbalanced.Unbalanced;
import flintstones.domain.fuzzyset.unbalanced.ui.dialog.subdialog.SemanticDialog;
import flintstones.domain.fuzzyset.unbalanced.ui.messages.Messages;
import flintstones.entity.domain.ui.dialog.DomainDialog;
import flintstones.model.domain.ui.service.IDomainUIService;
import flintstones.model.ui.service.UiService;
@SuppressWarnings("javadoc")
public class LHModifyDomainDialog extends DomainDialog {
private Composite container;
private Composite chartRow;
private String[] labels = new String[] { "s0", "s1", "s2" };
// STATIC/PARENT
private LinguisticDomainChart domainChart;
private Spinner numberOfLabelsSpinner;
private Spinner slSpinner;
private Spinner srSpinner;
private int cardinality;
private int sl;
private int sr;
private int minimumLabels;
private int maximumLabels;
private ModifyListener _numberOfLabelsModifyListener;
private ModifyListener _slModifyListener;
private ModifyListener _srModifyListener;
private ModifyListener _slDensityComboModifyListener;
private ModifyListener _srDensityComboModifyListener;
private ModifyListener _lhInitialDomainModifyListener;
private Combo srDensityCombo;
private Combo slDensityCombo;
private Combo lhInitialDomainCombo;
private Button setSemanticButton;
@Inject
@Translation
private Messages messages;
@Inject
IDomainUIService uiDomainService;
@Inject
IEclipseContext context;
public LHModifyDomainDialog() {
super();
}
protected void beforeUI() {
Unbalanced domain = (Unbalanced) getMyDomain();
this.labels = domain.getLabelSet().getLabelsName().toArray(new String[0]);
// CHART
this.domainChart = (LinguisticDomainChart) this.uiDomainService.createChart(domain.getType());
this.domainChart.initialize(getMyDomain(), this.chartRow, 600, 185, SWT.BORDER);
this.redraw();
}
private Unbalanced getMyDomain() {
return (Unbalanced) getDomain();
}
private void modifyDomain() {
int initialDomain = 0;
if (this.lhInitialDomainCombo.getSelectionIndex() == 0)
initialDomain = 3;
else
initialDomain = 7;
this.labels = new String[this.cardinality];
for (int i = 0; i < this.cardinality; i++)
this.labels[i] = "s" + i; //$NON-NLS-1$
(getMyDomain()).createUnbalancedDomain(this.labels, this.sr, this.sl,
this.slDensityCombo.getSelectionIndex(), this.srDensityCombo.getSelectionIndex(), initialDomain);
this.domainChart.setDomain(getMyDomain());
}
@Override
public Control createDialogArea(Composite parent) {
this.container = (Composite) super.createDialogArea(parent);
this.drawBlock1DomainName();
this.drawBlock2LH();
this.drawBlock3Labels();
this.drawBlock4Chart();
this.hookSelection();
this.hookModifyListeners();
return this.container;
}
private void drawBlock1DomainName() {
this.addNameField(container);
}
private void redraw() {
// ROW 3
this.domainChart.setDomain(getMyDomain());
setSaveEnabled(true);
}
private void drawBlock2LH() {
Label lhFeaturesLabel = new Label(this.container, SWT.NONE);
UiService.setFont(lhFeaturesLabel, UiService.FONT_SECTION_TITLE);
lhFeaturesLabel.setText(this.messages.LH_features);
GridData gridData = UiService.setGridData(lhFeaturesLabel, -1, 0, false, false);
gridData.verticalIndent = 10;
Composite genericDomainComposite = new Composite(this.container, SWT.BORDER);
UiService.setGridLayout(genericDomainComposite, 2, false);
UiService.setGridData(genericDomainComposite, 9, 9, true, false);
Label lhInitialGranularityLabel = new Label(genericDomainComposite, SWT.NULL);
lhInitialGranularityLabel.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
lhInitialGranularityLabel.setText(this.messages.Initial_granularity_of_LH);
lhInitialGranularityLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
this.lhInitialDomainCombo = new Combo(genericDomainComposite, SWT.BORDER | SWT.READ_ONLY);
gridData = UiService.setGridData(lhInitialDomainCombo, 9, 9, false, false);
gridData.widthHint = 15;
this.lhInitialDomainCombo.setItems(new String[] { "3", "7" }); //$NON-NLS-1$ //$NON-NLS-2$
this.lhInitialDomainCombo.select(0);
this.minimumLabels = 3;
this.maximumLabels = 17;
}
private void drawBlock3Labels() {
Label domainLabelsLabel = new Label(this.container, SWT.NONE);
GridData gridData = UiService.setGridData(domainLabelsLabel, -1, 0, false, false);
gridData.verticalIndent = 15;
UiService.setFont(domainLabelsLabel, UiService.FONT_SECTION_TITLE);
domainLabelsLabel.setText(this.messages.Labels_of_unbalanced_scale);
Composite labelsInfoComposite = new Composite(this.container, SWT.BORDER);
UiService.setGridLayout(labelsInfoComposite, 1);
UiService.setGridData(labelsInfoComposite, 9, 9, true, false);
Composite numberOfLabelsComposite = new Composite(labelsInfoComposite, SWT.NONE);
UiService.setGridLayout(numberOfLabelsComposite, 2);
UiService.setGridData(numberOfLabelsComposite, 0, 0, true, false);
Label numberOfLabelsLabel = new Label(numberOfLabelsComposite, SWT.NULL);
numberOfLabelsLabel.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
numberOfLabelsLabel.setText(this.messages.Number_of_labels_of_unbalanced_scale);
UiService.setGridData(numberOfLabelsLabel, 0, 0, false, false);
this.cardinality = getMyDomain().getLabelSet().getCardinality();
this.numberOfLabelsSpinner = new Spinner(numberOfLabelsComposite, SWT.BORDER);
gridData = UiService.setGridData(numberOfLabelsSpinner, 0, 0, false, false);
gridData.widthHint = 15;
this.numberOfLabelsSpinner.setMinimum(this.minimumLabels);
this.numberOfLabelsSpinner.setMaximum(this.maximumLabels);
this.numberOfLabelsSpinner.setIncrement(2);
this.numberOfLabelsSpinner.setSelection(this.cardinality);
Composite labelsComposite = new Composite(labelsInfoComposite, SWT.NONE);
UiService.setGridLayout(labelsComposite, 4, true);
UiService.setGridData(labelsComposite, 0, 0, true, false);
Label slLabel = new Label(labelsComposite, SWT.NULL);
slLabel.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
slLabel.setText(this.messages.Left_side_SL);
UiService.setGridData(slLabel, 1, 0, false, false);
this.sl = (getMyDomain()).getSl();
this.slSpinner = new Spinner(labelsComposite, SWT.BORDER);
gridData = UiService.setGridData(slSpinner, -1, 0, false, false);
gridData.widthHint = 15;
Label slDensity = new Label(labelsComposite, SWT.NULL);
slDensity.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
slDensity.setText(this.messages.Density_SL);
UiService.setGridData(slDensity, 1, 0, true, false);
this.slDensityCombo = new Combo(labelsComposite, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
gridData.widthHint = 70;
this.slDensityCombo.setLayoutData(gridData);
this.slDensityCombo.setItems(new String[] { this.messages.LHDomainDialog_Extreme, this.messages.LHDomainDialog_Center });
this.slDensityCombo.setEnabled(false);
Label srLabel = new Label(labelsComposite, SWT.NULL);
srLabel.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
srLabel.setText(this.messages.Right_side_SR);
srLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
this.sr = (getMyDomain()).getSr();
this.srSpinner = new Spinner(labelsComposite, SWT.BORDER);
gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gridData.widthHint = 15;
this.srSpinner.setLayoutData(gridData);
Label srDensity = new Label(labelsComposite, SWT.NULL);
srDensity.setFont(SWTResourceManager.getFont("Cantarell", 8, SWT.NONE)); //$NON-NLS-1$
srDensity.setText(this.messages.Density_SR);
srDensity.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
this.srDensityCombo = new Combo(labelsComposite, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gridData.widthHint = 70;
this.srDensityCombo.setLayoutData(gridData);
this.srDensityCombo.setItems(new String[] { this.messages.LHDomainDialog_Extreme, this.messages.LHDomainDialog_Center });
this.srDensityCombo.setEnabled(false);
}
private void hookSelection() {
this.slSpinner.setSelection(this.sl);
this.slDensityCombo.select(((getMyDomain()).getSlDensity()));
this.srSpinner.setSelection(this.sr);
this.srDensityCombo.select(((getMyDomain()).getSrDensity()));
}
private void drawBlock4Chart() {
Composite row1 = new Composite(container, SWT.NONE);
UiService.setGridLayout(row1, 1);
UiService.setGridData(row1, 9, 9, true, true);
// LABEL
Label nameLabel = new Label(row1, SWT.NONE);
nameLabel.setText(this.messages.Preview);
UiService.setGridData(nameLabel, -1, 0, true, false);
UiService.setFont(nameLabel, UiService.FONT_SECTION_TITLE);
// CHART
this.chartRow = new Composite(row1, SWT.NONE);
UiService.setGridLayout(this.chartRow, 1);
UiService.setGridData(this.chartRow, 9, 9, true, true);
this.setSemanticButton = new Button(row1, SWT.NONE);
GridData gridData = new GridData(SWT.RIGHT, SWT.FILL, false, false);
this.setSemanticButton.setLayoutData(gridData);
this.setSemanticButton.setText(this.messages.Set_semantic);
this.hookSemanticButtonListener();
}
private void hookSemanticButtonListener() {
this.setSemanticButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
SemanticDialog dialog = ContextInjectionFactory.make(SemanticDialog.class, LHModifyDomainDialog.this.context);
dialog.setValues(LHModifyDomainDialog.this.labels);
if (dialog.open() == Window.OK) {
List<String> auxLabels = dialog.getValues();
for (int i = 0; i < auxLabels.size(); i++)
LHModifyDomainDialog.this.labels[i] = auxLabels.get(i);
LHModifyDomainDialog.this.modifyDomain();
}
}
});
}
private void hookModifyListeners() {
this._lhInitialDomainModifyListener = e -> {
boolean modify = false;
if (LHModifyDomainDialog.this.lhInitialDomainCombo.getSelectionIndex() == 1) {
if (LHModifyDomainDialog.this.minimumLabels == 3) {
modify = true;
LHModifyDomainDialog.this.sl = 3;
LHModifyDomainDialog.this.sr = 3;
LHModifyDomainDialog.this.minimumLabels = 7;
LHModifyDomainDialog.this.maximumLabels = 25;
LHModifyDomainDialog.this.cardinality = LHModifyDomainDialog.this.minimumLabels;
}
} else if (LHModifyDomainDialog.this.minimumLabels == 7) {
modify = true;
LHModifyDomainDialog.this.sl = 1;
LHModifyDomainDialog.this.sr = 1;
LHModifyDomainDialog.this.minimumLabels = 3;
LHModifyDomainDialog.this.maximumLabels = 17;
LHModifyDomainDialog.this.cardinality = LHModifyDomainDialog.this.minimumLabels;
}
if (modify) {
LHModifyDomainDialog.this.numberOfLabelsSpinner
.removeModifyListener(LHModifyDomainDialog.this._numberOfLabelsModifyListener);
LHModifyDomainDialog.this.slSpinner.removeModifyListener(LHModifyDomainDialog.this._slModifyListener);
LHModifyDomainDialog.this.srSpinner.removeModifyListener(LHModifyDomainDialog.this._srModifyListener);
LHModifyDomainDialog.this.slDensityCombo
.removeModifyListener(LHModifyDomainDialog.this._slDensityComboModifyListener);
LHModifyDomainDialog.this.srDensityCombo
.removeModifyListener(LHModifyDomainDialog.this._srDensityComboModifyListener);
LHModifyDomainDialog.this.numberOfLabelsSpinner.setValues(LHModifyDomainDialog.this.cardinality,
LHModifyDomainDialog.this.minimumLabels, LHModifyDomainDialog.this.maximumLabels, 0, 2, 2);
LHModifyDomainDialog.this.slSpinner.setValues(LHModifyDomainDialog.this.sl, LHModifyDomainDialog.this.sl,
LHModifyDomainDialog.this.sl, 0, 1, 1);
LHModifyDomainDialog.this.srSpinner.setValues(LHModifyDomainDialog.this.sr, LHModifyDomainDialog.this.sr,
LHModifyDomainDialog.this.sr, 0, 1, 1);
LHModifyDomainDialog.this.slDensityCombo.setEnabled(false);
LHModifyDomainDialog.this.slDensityCombo.select(0);
LHModifyDomainDialog.this.srDensityCombo.setEnabled(false);
LHModifyDomainDialog.this.srDensityCombo.select(0);
LHModifyDomainDialog.this.numberOfLabelsSpinner
.addModifyListener(LHModifyDomainDialog.this._numberOfLabelsModifyListener);
LHModifyDomainDialog.this.slSpinner.addModifyListener(LHModifyDomainDialog.this._slModifyListener);
LHModifyDomainDialog.this.srSpinner.addModifyListener(LHModifyDomainDialog.this._srModifyListener);
LHModifyDomainDialog.this.slDensityCombo.addModifyListener(LHModifyDomainDialog.this._slDensityComboModifyListener);
LHModifyDomainDialog.this.srDensityCombo.addModifyListener(LHModifyDomainDialog.this._srDensityComboModifyListener);
LHModifyDomainDialog.this.modifyDomain();
}
};
this._numberOfLabelsModifyListener = e -> {
int cardinality = LHModifyDomainDialog.this.numberOfLabelsSpinner.getSelection();
if (cardinality < LHModifyDomainDialog.this.minimumLabels)
LHModifyDomainDialog.this.numberOfLabelsSpinner.setSelection(LHModifyDomainDialog.this.minimumLabels);
if (cardinality > LHModifyDomainDialog.this.maximumLabels)
LHModifyDomainDialog.this.numberOfLabelsSpinner.setSelection(LHModifyDomainDialog.this.maximumLabels);
if ((cardinality % 2) == 0) {
if (cardinality > LHModifyDomainDialog.this.cardinality)
cardinality++;
else
cardinality--;
LHModifyDomainDialog.this.numberOfLabelsSpinner.setSelection(cardinality);
} else {
int difference;
LHModifyDomainDialog.this.srSpinner.removeModifyListener(LHModifyDomainDialog.this._srModifyListener);
LHModifyDomainDialog.this.slSpinner.removeModifyListener(LHModifyDomainDialog.this._slModifyListener);
int maximum = cardinality - ((LHModifyDomainDialog.this.minimumLabels - 1) / 2) - 1;
if (maximum > ((LHModifyDomainDialog.this.maximumLabels - 1) / 2))
maximum = ((LHModifyDomainDialog.this.maximumLabels - 1) / 2);
int minimum = cardinality - ((LHModifyDomainDialog.this.maximumLabels - 1) / 2) - 1;
if (minimum < ((LHModifyDomainDialog.this.minimumLabels - 1) / 2))
minimum = ((LHModifyDomainDialog.this.minimumLabels - 1) / 2);
LHModifyDomainDialog.this.slSpinner.setMinimum(minimum);
LHModifyDomainDialog.this.srSpinner.setMinimum(minimum);
LHModifyDomainDialog.this.slSpinner.setMaximum(maximum);
LHModifyDomainDialog.this.srSpinner.setMaximum(maximum);
if (cardinality > LHModifyDomainDialog.this.cardinality) {
difference = cardinality - LHModifyDomainDialog.this.cardinality;
if (LHModifyDomainDialog.this.sl == ((LHModifyDomainDialog.this.maximumLabels - 1) / 2)) {
LHModifyDomainDialog.this.sr += difference;
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
} else if (LHModifyDomainDialog.this.sr == ((LHModifyDomainDialog.this.maximumLabels - 1) / 2)) {
LHModifyDomainDialog.this.sl += difference;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
} else {
difference /= 2;
LHModifyDomainDialog.this.sl += difference;
LHModifyDomainDialog.this.sr += difference;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
}
} else if (cardinality < LHModifyDomainDialog.this.cardinality) {
difference = LHModifyDomainDialog.this.cardinality - cardinality;
if (LHModifyDomainDialog.this.sl == ((LHModifyDomainDialog.this.minimumLabels - 1) / 2)) {
LHModifyDomainDialog.this.sr -= difference;
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
} else if (LHModifyDomainDialog.this.sr == ((LHModifyDomainDialog.this.minimumLabels - 1) / 2)) {
LHModifyDomainDialog.this.sl -= difference;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
} else {
difference /= 2;
LHModifyDomainDialog.this.sl -= difference;
LHModifyDomainDialog.this.sr -= difference;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
}
}
LHModifyDomainDialog.this.cardinality = cardinality;
LHModifyDomainDialog.this.modifyDensityCombos();
LHModifyDomainDialog.this.srSpinner.addModifyListener(LHModifyDomainDialog.this._srModifyListener);
LHModifyDomainDialog.this.slSpinner.addModifyListener(LHModifyDomainDialog.this._slModifyListener);
LHModifyDomainDialog.this.modifyDomain();
}
};
this._slModifyListener = e -> {
int sl = LHModifyDomainDialog.this.slSpinner.getSelection();
LHModifyDomainDialog.this.srSpinner.removeModifyListener(LHModifyDomainDialog.this._srModifyListener);
if (sl > LHModifyDomainDialog.this.sl) {
LHModifyDomainDialog.this.sr--;
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
} else {
LHModifyDomainDialog.this.sr++;
LHModifyDomainDialog.this.srSpinner.setSelection(LHModifyDomainDialog.this.sr);
}
LHModifyDomainDialog.this.sl = sl;
LHModifyDomainDialog.this.modifyDensityCombos();
LHModifyDomainDialog.this.srSpinner.addModifyListener(LHModifyDomainDialog.this._srModifyListener);
LHModifyDomainDialog.this.modifyDomain();
};
this._srModifyListener = e -> {
int sr = LHModifyDomainDialog.this.srSpinner.getSelection();
LHModifyDomainDialog.this.slSpinner.removeModifyListener(LHModifyDomainDialog.this._slModifyListener);
if (sr > LHModifyDomainDialog.this.sr) {
LHModifyDomainDialog.this.sl--;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
} else {
LHModifyDomainDialog.this.sl++;
LHModifyDomainDialog.this.slSpinner.setSelection(LHModifyDomainDialog.this.sl);
}
LHModifyDomainDialog.this.sr = sr;
LHModifyDomainDialog.this.modifyDensityCombos();
LHModifyDomainDialog.this.slSpinner.addModifyListener(LHModifyDomainDialog.this._slModifyListener);
LHModifyDomainDialog.this.modifyDomain();
};
this._slDensityComboModifyListener = e -> LHModifyDomainDialog.this.modifyDomain();
this._srDensityComboModifyListener = e -> LHModifyDomainDialog.this.modifyDomain();
this.lhInitialDomainCombo.addModifyListener(this._lhInitialDomainModifyListener);
this.numberOfLabelsSpinner.addModifyListener(this._numberOfLabelsModifyListener);
this.slSpinner.addModifyListener(this._slModifyListener);
this.srSpinner.addModifyListener(this._srModifyListener);
this.slDensityCombo.addModifyListener(this._slDensityComboModifyListener);
this.srDensityCombo.addModifyListener(this._srDensityComboModifyListener);
}
private void modifyDensityCombos() {
this.slDensityCombo.removeModifyListener(this._slDensityComboModifyListener);
this.srDensityCombo.removeModifyListener(this._srDensityComboModifyListener);
if (!this.direct(this.sl)) {
if (!this.slDensityCombo.isEnabled())
this.slDensityCombo.setEnabled(true);
} else if (this.slDensityCombo.isEnabled())
this.slDensityCombo.setEnabled(false);
if (!this.direct(this.sr)) {
if (!this.srDensityCombo.isEnabled())
this.srDensityCombo.setEnabled(true);
} else if (this.srDensityCombo.isEnabled())
this.srDensityCombo.setEnabled(false);
this.slDensityCombo.addModifyListener(this._slDensityComboModifyListener);
this.srDensityCombo.addModifyListener(this._srDensityComboModifyListener);
}
private boolean direct(int value) {
int minimum = (this.minimumLabels - 1) / 2;
while (value > minimum)
minimum *= 2;
return (value == minimum);
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(this.messages.Modify_unbalanced_domain);
}
@Override
protected Point getInitialSize() {
return new Point(650, 750);
}
}
@@ -0,0 +1,236 @@
package flintstones.domain.fuzzyset.unbalanced.ui.dialog.subdialog;
import java.text.MessageFormat;
import java.util.LinkedList;
import java.util.List;
import javax.inject.Inject;
import org.eclipse.e4.core.services.nls.Translation;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ModifyListener;
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.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.SWTResourceManager;
import flintstones.domain.fuzzyset.unbalanced.ui.messages.Messages;
@SuppressWarnings("javadoc")
public class SemanticDialog extends Dialog {
@Inject
@Translation
private Messages messages;
private List<String> _values;
private List<Text> _textValues;
private List<ControlDecoration> _controlDecorations;
private Button _okButton;
public SemanticDialog() {
super(Display.getCurrent().getActiveShell());
}
public List<String> getValues() {
return this._values;
}
@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
GridLayout gridLayout = (GridLayout) container.getLayout();
gridLayout.verticalSpacing = 15;
gridLayout.numColumns = 1;
Label titleLabel = new Label(container, SWT.CENTER);
titleLabel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 1, 1));
titleLabel.setFont(SWTResourceManager.getFont("Cantarell", 10, SWT.BOLD)); //$NON-NLS-1$
titleLabel.setText(this.messages.Semantic_for_domain);
ScrolledComposite scrolledComposite = new ScrolledComposite(container, SWT.H_SCROLL | SWT.V_SCROLL | SWT.CENTER);
scrolledComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1));
gridLayout = new GridLayout(2, false);
gridLayout.verticalSpacing = 15;
gridLayout.numColumns = 2;
Composite labelsComposite = new Composite(scrolledComposite, SWT.CENTER);
labelsComposite.setLayout(gridLayout);
Label fieldLabel;
GridData gridData;
this._textValues = new LinkedList<>();
this._controlDecorations = new LinkedList<>();
Text value;
ControlDecoration controlDecoration;
for (int i = 0; i < this._values.size(); i++) {
fieldLabel = new Label(labelsComposite, SWT.CENTER);
fieldLabel.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.BOLD)); //$NON-NLS-1$
String labelTemplate = this.messages.SemanticDialog_labelTemplate;
String text = MessageFormat.format(labelTemplate, i + 1)
.toString();
fieldLabel.setText(text);
value = new Text(labelsComposite, SWT.BORDER);
gridData = new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1);
gridData.widthHint = 105;
value.setLayoutData(gridData);
value.setText(this._values.get(i));
this._textValues.add(value);
controlDecoration = this.createNotificationDecorator(value);
this._controlDecorations.add(controlDecoration);
}
scrolledComposite.setContent(labelsComposite);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setMinSize(labelsComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
scrolledComposite.setSize(200, 300);
this.hookValuesModifyListener();
this.validateFields();
return container;
}
private void hookValuesModifyListener() {
ModifyListener modifyListener = e -> {
Text semanticText = (Text) e.getSource(), text;
String semanticValueText = semanticText.getText();
for (int i = 0; i < SemanticDialog.this._textValues.size(); ++i) {
text = SemanticDialog.this._textValues.get(i);
if (semanticText == text)
SemanticDialog.this._values.set(i, semanticValueText);
}
SemanticDialog.this.validateFields();
};
for (Text text : this._textValues)
text.addModifyListener(modifyListener);
}
// Este metodo debe morir
protected boolean validateBase(ControlDecoration controlDecoration, String text) {
controlDecoration.setDescriptionText(text);
if (text.isEmpty()) {
controlDecoration.hide();
return true;
}
controlDecoration.show();
return false;
}
private boolean validateEmptyText(Text text, ControlDecoration controlDecoration) {
if (text.getText()
.isEmpty())
return this.validateBase(controlDecoration, this.messages.Empty_value);
return this.validateBase(controlDecoration, ""); //$NON-NLS-1$
}
private boolean validateInvalidText(Text text, ControlDecoration controlDecoration) {
String textValue = text.getText();
if (textValue.contains(":"))
return this.validateBase(controlDecoration, this.messages.Illegal_value);
return this.validateBase(controlDecoration, ""); //$NON-NLS-1$
}
private boolean validateDuplicateText(Text text, int index, ControlDecoration controlDecoration) {
String textValue = text.getText();
for (int i = 0; i < this._textValues.size(); ++i)
if (i != index)
if (textValue.equals(this._textValues.get(i)
.getText()))
return this.validateBase(controlDecoration, this.messages.Duplicated_value);
return this.validateBase(controlDecoration, ""); //$NON-NLS-1$
}
private void validateFields() {
Boolean values[] = new Boolean[this._values.size()];
Text text;
ControlDecoration controlDecoration;
for (int i = 0; i < this._textValues.size(); ++i) {
text = this._textValues.get(i);
controlDecoration = this._controlDecorations.get(i);
values[i] = this.validateEmptyText(text, controlDecoration);
if (values[i]) {
values[i] = this.validateInvalidText(text, controlDecoration);
if (values[i])
values[i] = this.validateDuplicateText(text, i, controlDecoration);
}
}
boolean validFields;
int i = 0;
do
validFields = values[i++];
while ((validFields) && i < values.length);
if (this._okButton != null)
this._okButton.setEnabled(validFields);
}
public void setValues(String[] values) {
this._values = new LinkedList<>();
for (String value : values)
this._values.add(value);
}
protected ControlDecoration createNotificationDecorator(Text text) {
ControlDecoration controlDecoration = new ControlDecoration(text, SWT.LEFT | SWT.TOP);
FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_ERROR);
controlDecoration.setImage(fieldDecoration.getImage());
validate(controlDecoration, ""); //$NON-NLS-1$
return controlDecoration;
}
protected ControlDecoration createNotificationDecorator(Button button) {
ControlDecoration controlDecoration = new ControlDecoration(button, SWT.LEFT | SWT.TOP);
FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_WARNING);
controlDecoration.setImage(fieldDecoration.getImage());
validate(controlDecoration, ""); //$NON-NLS-1$
return controlDecoration;
}
protected boolean validate(ControlDecoration controlDecoration, String text) {
controlDecoration.setDescriptionText(text);
if(text.isEmpty()) {
controlDecoration.hide();
return true;
} else {
controlDecoration.show();
return false;
}
}
}
@@ -0,0 +1,33 @@
// This file has been auto-generated
package flintstones.domain.fuzzyset.unbalanced.ui.messages;
import org.eclipse.e4.core.services.nls.Message;
@Message
@SuppressWarnings("javadoc")
public class Messages {
public String SemanticDialog_labelTemplate;
public String Domain_name;
public String LH_features;
public String Initial_granularity_of_LH;
public String Labels_of_unbalanced_scale;
public String Number_of_labels_of_unbalanced_scale;
public String Left_side_SL;
public String Density_SL;
public String Right_side_SR;
public String Density_SR;
public String Set_semantic;
public String Preview;
public String Create_unbalanced_domain;
public String Duplicated_name;
public String Empty_value;
public String Empty_domain;
public String Modify_unbalanced_domain;
public String Semantic_for_domain;
public String Illegal_value;
public String Duplicated_value;
public String LHDomainDialog_Extreme;
public String LHDomainDialog_Center;
}
@@ -0,0 +1,22 @@
Create_unbalanced_domain=Create unbalanced domain
Density_SL=Density SL
Density_SR=Density SR
Domain_name=Domain name
Duplicated_name=Duplicated name
Empty_value=Empty value
Empty_domain=Empty domain
Initial_granularity_of_LH=Initial granularity of LH
Labels_of_unbalanced_scale=Labels of unbalanced scale
Left_side_SL=Left side SL
LH_features=LH Features
LHDomainDialog_Center=Center
LHDomainDialog_Extreme=Extreme
Number_of_labels_of_unbalanced_scale=Number of labels of unbalanced scale
Preview=Preview
Right_side_SR=Right side SR
Set_semantic=Set semantic
Modify_unbalanced_domain=Modify unbalanced domain
Duplicated_value=Duplicated value
Illegal_value=Illegal value
Semantic_for_domain=Semantic for domain
SemanticDialog_labelTemplate=Label {0}
@@ -0,0 +1,22 @@
Create_unbalanced_domain=Crear dominio no balanceado
Density_SL=Densidad SL
Density_SR=Densidad SR
Domain_name=Nombre de dominio
Duplicated_name=Nombre duplicado
Empty_value=Valor vacio
Empty_domain=Dominio vacio
Initial_granularity_of_LH=Granularidad inicial de LH
Labels_of_unbalanced_scale=Etiquetas de escala no balanceada
Left_side_SL=Lado izquierdo SL
LH_features=Caracteristicas LH
Number_of_labels_of_unbalanced_scale=Número de etiquetas de escala no balanceada
Preview=Previsualización
Right_side_SR=Lado derecho de SR
Set_semantic=Establecer semantica
Modify_unbalanced_domain=Modificar dominio no balanceado
Duplicated_value=Valor duplicado
Illegal_value=Valor ilegal
Semantic_for_domain=Semantica del dominio
SemanticDialog_labelTemplate=Etiqueta {0}
LHDomainDialog_Center=Centrado
LHDomainDialog_Extreme=Extremo