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 @@
<?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,17 @@
<?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.method.linguistic.topsis.phase.experts.ui</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<name>[bundle] Linguistic TOPSIS experts ui</name>
<organization>
<name>Sinbad2</name>
</organization>
</project>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>flintstones.method.linguistic.topsis.phase.experts.ui</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>1779484362682</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,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Linguistic TOPSIS experts ui
Bundle-SymbolicName: flintstones.method.linguistic.topsis.phase.experts.ui;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: Sinbad2
Automatic-Module-Name: flintstones.method.linguistic.topsis.phase.experts.ui
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: flintstones.model.ui.service,
flintstones.entity.method.phase.ui,
flintstones.entity.method.phase,
flintstones.method.linguistic.topsis.phase.experts,
org.eclipse.swt,
de.kupzog.ktable
Export-Package: flintstones.method.linguistic.topsis.phase.experts.ui.table
@@ -0,0 +1,5 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="flintstones.phasemethod.ui">
<phasemethod_ui
implementation="flintstones.method.linguistic.topsis.phase.experts.ui.ExpertsInfoUI"
phasemethod="flintstones.method.linguistic.topsis.phase.experts"
uid="flintstones.method.linguistic.topsis.phase.experts.ui">
</phasemethod_ui>
</extension>
</plugin>
@@ -0,0 +1,291 @@
package flintstones.method.linguistic.topsis.phase.experts.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import flintstones.entity.method.phase.ui.PhaseMethodUI;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.ClosenessCoefficientTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.DistanceNegativeIdealSolutionTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.DistancePositiveIdealSolutionTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.DistanceSolutionsTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.ExpertWeightsTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.NegativeIdealSolutionTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.PositiveIdealSolutionTable;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.WeightedDecisionMatrixTable;
import flintstones.model.ui.service.UiService;
public class ExpertsInfoUI extends PhaseMethodUI {
private ExpertsInfo model;
private ExpertWeightsTable weightsTable;
private WeightedDecisionMatrixTable weigthedDecisionMatrixTable;
private PositiveIdealSolutionTable positiveIdealSolutionTable;
private NegativeIdealSolutionTable negativeIdealSolutionTable;
private DistancePositiveIdealSolutionTable distancePositiveIdealSolutionTable;
private DistanceNegativeIdealSolutionTable distanceNegativeIdealSolutionTable;
private DistanceSolutionsTable distanceSolutionsTable;
private ClosenessCoefficientTable closenessCoefficientTable;
private Combo selectExpertCombo;
@Override
public void init() {
model = (ExpertsInfo) this.getModel();
Composite parent = this.getBaseComposite();
GridLayout layout = UiService.setGridLayout(parent, 1, true);
UiService.setGridData(parent, 9, 9, true, true);
layout.horizontalSpacing = 15;
layout.verticalSpacing = 15;
createPartControl(parent);
model.initializeDefaultWeights();
model.executeForAllExperts();
}
private void createPartControl(Composite parent) {
createCombos(parent);
createWeightedInfoTables(parent);
createSolutionsInfoTables(parent);
createDistancesSolutionInfo(parent);
createGlobalSolutionInfo(parent);
}
private void createCombos(Composite parent) {
Composite combosComposite = new Composite(parent, SWT.BORDER);
UiService.setGridLayout(combosComposite, 2, false);
UiService.setGridData(combosComposite, 0, 0, true, false);
createSelectionExpertCombo(combosComposite);
createUnificationDomainDistancesCombo(combosComposite);
}
private void createSelectionExpertCombo(Composite combosComposite) {
/*Composite selectExpertComboComposite = new Composite(combosComposite, SWT.NONE);
UiService.setGridLayout(selectExpertComboComposite, 1, true);
UiService.setGridData(selectExpertComboComposite, -1, 1, false, false);*/
selectExpertCombo = new Combo(combosComposite, SWT.NONE);
UiService.setGridData(selectExpertCombo, 0, 1, true, true);
selectExpertCombo.setItems(model.getExpertsNames());
selectExpertCombo.select(0);
selectExpertCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
refresh();
}
});
}
private void createUnificationDomainDistancesCombo(Composite combosComposite) {
/*Composite distanceSolutionsComboComposite = new Composite(combosComposite, SWT.NONE);
UiService.setGridLayout(distanceSolutionsComboComposite, 1, false);
UiService.setGridData(distanceSolutionsComboComposite, -1, 1, false, false);*/
/*Label label = new Label(distanceSolutionsComboComposite, SWT.NONE);
UiService.setGridData(label, 9, 9, false, true);
label.setText("Select the domain for distances (all experts):");*/
Combo selectUnificationDomainCombo = new Combo(combosComposite, SWT.NONE);
UiService.setGridData(selectUnificationDomainCombo, 9, 9, false, true);
selectUnificationDomainCombo.setItems(model.getLinguisticDomainNames());
selectUnificationDomainCombo.select(0);
model.setUnificationDomainDistances(selectUnificationDomainCombo.getText());
selectUnificationDomainCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
model.setUnificationDomainDistances(selectUnificationDomainCombo.getText());
model.executeForAllExperts();
refresh();
}
});
}
private void createWeightedInfoTables(Composite parent) {
Composite tablesComposite = new Composite(parent, SWT.NONE);
UiService.setGridLayout(tablesComposite, 2, true);
UiService.setGridData(tablesComposite, 9, 9, true, false);
createWeightsTable(tablesComposite);
createWeightedDecisionMatrixTable(tablesComposite);
}
private void createWeightsTable(Composite tablesComposite) {
Composite weightsComposite = new Composite(tablesComposite, SWT.NONE);
UiService.setGridLayout(weightsComposite, 1, true);
UiService.setGridData(weightsComposite, 9, 9, true, false);
weightsTable = new ExpertWeightsTable(weightsComposite);
UiService.setGridData(weightsTable, 9, 9, true, true);
weightsTable.setModel(model, selectExpertCombo.getSelectionIndex());
Composite weightsCombosComposite = new Composite(weightsComposite, SWT.NONE);
UiService.setGridLayout(weightsCombosComposite, 2, false);
UiService.setGridData(weightsCombosComposite, 9, 9, true, false);
createDomainWeightsCombo(weightsCombosComposite);
createUnificationDomainWeightsCombo(weightsCombosComposite);
}
private void createDomainWeightsCombo(Composite weightsComposite) {
Composite selectWeightsComboComposite = new Composite(weightsComposite, SWT.BORDER);
UiService.setGridLayout(selectWeightsComboComposite, 2, false);
UiService.setGridData(selectWeightsComboComposite, -1, 9, false, true);
Label label = new Label(selectWeightsComboComposite, SWT.NONE);
UiService.setGridData(label, -1, -1, false, true);
label.setText("Domain for weights:");
Combo selectDomainCombo = new Combo(selectWeightsComboComposite, SWT.NONE);
GridData grid = UiService.setGridData(selectDomainCombo, -1, -1, false, true);
grid.verticalIndent = 15;
selectDomainCombo.setItems(model.getDomainNames());
selectDomainCombo.select(0);
model.setWeightsDomain(selectDomainCombo.getText());
selectDomainCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
model.setWeightsDomain(selectDomainCombo.getText());
model.execute(selectExpertCombo.getSelectionIndex());
refresh();
}
});
}
private void createUnificationDomainWeightsCombo(Composite weightComposite) {
Composite selectUnificationComboComposite = new Composite(weightComposite, SWT.BORDER);
UiService.setGridLayout(selectUnificationComboComposite, 2, false);
UiService.setGridData(selectUnificationComboComposite, -1, 9, false, true);
Label label = new Label(selectUnificationComboComposite, SWT.NONE);
UiService.setGridData(label, -1, -1, false, true);
label.setText("Unification domain for weights:");
Combo selectUnificationDomainCombo = new Combo(selectUnificationComboComposite, SWT.BORDER);
GridData grid = UiService.setGridData(selectUnificationDomainCombo, -1, -1, false, true);
grid.verticalIndent = 15;
selectUnificationDomainCombo.setItems(model.getLinguisticDomainNames());
selectUnificationDomainCombo.select(0);
model.setUnificationDomainWeights(selectUnificationDomainCombo.getText());
selectUnificationDomainCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
model.setUnificationDomainWeights(selectUnificationDomainCombo.getText());
model.execute(selectExpertCombo.getSelectionIndex());
refresh();
}
});
}
private void createWeightedDecisionMatrixTable(Composite tablesComposite) {
Composite decisionMatrixComposite = new Composite(tablesComposite, SWT.NONE);
UiService.setGridLayout(decisionMatrixComposite, 1, true);
UiService.setGridData(decisionMatrixComposite, 9, 9, true, true);
weigthedDecisionMatrixTable = new WeightedDecisionMatrixTable(decisionMatrixComposite);
UiService.setGridData(weigthedDecisionMatrixTable, 9, 9, true, true);
weigthedDecisionMatrixTable.setModel(model, selectExpertCombo.getSelectionIndex());
weightsTable.setWeightedDecisionMatrixTable(weigthedDecisionMatrixTable);//To update the table when weights change
}
private void createSolutionsInfoTables(Composite parent) {
Composite solutionsTablesComposite = new Composite(parent, SWT.NONE);
UiService.setGridLayout(solutionsTablesComposite, 2, true);
UiService.setGridData(solutionsTablesComposite, 9, 1, true, false);
createPositiveIdealSolutionTable(solutionsTablesComposite);
createNegativeIdealSolutionTable(solutionsTablesComposite);
}
private void createPositiveIdealSolutionTable(Composite solutionsTablesComposite) {
positiveIdealSolutionTable = new PositiveIdealSolutionTable(solutionsTablesComposite);
UiService.setGridData(positiveIdealSolutionTable, 9, 9, true, true);
positiveIdealSolutionTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
private void createNegativeIdealSolutionTable(Composite solutionsTablesComposite) {
negativeIdealSolutionTable = new NegativeIdealSolutionTable(solutionsTablesComposite);
UiService.setGridData(negativeIdealSolutionTable, 9, 9, true, true);
negativeIdealSolutionTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
private void createDistancesSolutionInfo(Composite parent) {
Composite distanceSolutionsTablesComposite = new Composite(parent, SWT.NONE);
UiService.setGridLayout(distanceSolutionsTablesComposite, 2, true);
GridData gd = UiService.setGridData(distanceSolutionsTablesComposite, 9, 9, true, true);
gd.heightHint = 25;
createDistancePositiveIdealSolutionTable(distanceSolutionsTablesComposite);
createDistanceNegativeIdealSolutionTable(distanceSolutionsTablesComposite);
}
private void createDistancePositiveIdealSolutionTable(Composite distanceSolutionsTablesComposite) {
distancePositiveIdealSolutionTable = new DistancePositiveIdealSolutionTable(distanceSolutionsTablesComposite);
UiService.setGridData(distancePositiveIdealSolutionTable, 9, 9, true, true);
distancePositiveIdealSolutionTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
private void createDistanceNegativeIdealSolutionTable(Composite distanceSolutionsTablesComposite) {
distanceNegativeIdealSolutionTable = new DistanceNegativeIdealSolutionTable(distanceSolutionsTablesComposite);
UiService.setGridData(distanceNegativeIdealSolutionTable, 9, 9, true, true);
distanceNegativeIdealSolutionTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
private void createGlobalSolutionInfo(Composite parent) {
Composite globalSolutionsComposite = new Composite(parent, SWT.NONE);
UiService.setGridLayout(globalSolutionsComposite, 2, true);
GridData gd = UiService.setGridData(globalSolutionsComposite, 9, 9, true, true);
gd.heightHint = 25;
createGlobalDistanceSolutionTable(globalSolutionsComposite);
createClosenessCoefficientTable(globalSolutionsComposite);
}
private void createGlobalDistanceSolutionTable(Composite globalSolutionsComposite) {
distanceSolutionsTable = new DistanceSolutionsTable(globalSolutionsComposite);
UiService.setGridData(distanceSolutionsTable, 9, 9, true, true);
distanceSolutionsTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
private void createClosenessCoefficientTable(Composite globalSolutionsComposite) {
closenessCoefficientTable = new ClosenessCoefficientTable(globalSolutionsComposite);
UiService.setGridData(closenessCoefficientTable, 9, 9, true, true);
closenessCoefficientTable.setModel(model, selectExpertCombo.getSelectionIndex());
}
@Override
public void refresh() {
if(model.unificationDomainChanged())
model.executeForAllExperts();
int posExpert = selectExpertCombo.getSelectionIndex();
//Refresh tables
weightsTable.setExpert(posExpert);
weigthedDecisionMatrixTable.setExpert(posExpert);
positiveIdealSolutionTable.setExpert(posExpert);
negativeIdealSolutionTable.setExpert(posExpert);
distancePositiveIdealSolutionTable.setExpert(posExpert);
distanceNegativeIdealSolutionTable.setExpert(posExpert);
distanceSolutionsTable.setExpert(posExpert);
closenessCoefficientTable.setExpert(posExpert);
}
@Override
protected boolean isForwardEnabled() {
return model.isFinished();
}
}
@@ -0,0 +1,177 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class AntiIdealSolutionContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public AntiIdealSolutionContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Negative ideal solution"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = "Valuation";
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringNegativeIdealSolutionCriterion(col - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
@Override
public int doGetRowCount() {
return 1 + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if(col == 0 && row == 0) {
return "";
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return ""; //$NON-NLS-1$
}
}
@@ -0,0 +1,179 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class ClosenessCoefficientContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public ClosenessCoefficientContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return 1 + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Closeness coefficient"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = alternativeAbbreviation(row);
else if (row == 0)
content = "Closeness";
else
content = model.getStringClosenessCoefficient(row - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object alternativeAbbreviation(int pos) {
return "R" + pos;
}
@Override
public int doGetRowCount() {
return model.getNumberAlternatives() + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getAlternativeName(row - 1);
} else if (row < getFixedRowCount())
return "";
else
return (String) doGetContentAt(col, row);
}
}
@@ -0,0 +1,183 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class DistanceIAntiIdealSolutionContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public DistanceIAntiIdealSolutionContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Dist (-)"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = alternativeAbbreviation(row);
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringDistanceNegativeIdealSolutionValuation(col - 1, row - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
private Object alternativeAbbreviation(int pos) {
return "R" + pos;
}
@Override
public int doGetRowCount() {
return model.getNumberAlternatives() + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getAlternativeName(row - 1);
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return (String) doGetContentAt(col, row);
}
}
@@ -0,0 +1,183 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class DistanceIdealSolutionContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public DistanceIdealSolutionContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Dist (+)"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = alternativeAbbreviation(row);
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringDistancePositiveIdealSolutionValuation(col - 1, row - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
private Object alternativeAbbreviation(int pos) {
return "R" + pos;
}
@Override
public int doGetRowCount() {
return model.getNumberAlternatives() + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getAlternativeName(row - 1);
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return (String) doGetContentAt(col, row);
}
}
@@ -0,0 +1,192 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class DistanceSolutionsContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public DistanceSolutionsContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return 2 + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Distances"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = alternativeAbbreviation(row);
else if (row == 0)
if(col == 1)
content = "Dist (+)";
else if(col == 2)
content = "Dist (-)";
else
content = "";
else {
if(col == 1)
content = model.getStringGlobalDistancePositiveIdealSolutionValuation(row - 1, expert);
else if (col == 2)
content = model.getStringGlobalDistanceNegativeIdealSolutionValuation(row - 1, expert);
else
content = "";
}
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object alternativeAbbreviation(int pos) {
return "R" + pos;
}
@Override
public int doGetRowCount() {
return model.getNumberAlternatives() + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getAlternativeName(row - 1);
} else if (row < getFixedRowCount())
return "";
else
return (String) doGetContentAt(col, row);
}
}
@@ -0,0 +1,235 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.editors.KTableCellEditorCombo;
import de.kupzog.ktable.editors.KTableCellEditorText;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.table.WeightedDecisionMatrixTable;
public class ExpertWeightsContentProvider extends KTableNoScrollModel {
private KTable table;
private KTable decisionMatrixTable;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
private class TableCellEditorText extends KTableCellEditorText {
@Override
protected void onKeyPressed(KeyEvent e) {
if(e.keyCode == 13)
this.close(true);
}
@Override
public int getActivationSignals() {
return SINGLECLICK;
}
}
private TableCellEditorText text;
private class TableCellEditorCombo extends KTableCellEditorCombo {
@Override
protected void onKeyPressed(KeyEvent e) {
if(e.keyCode == 13)
this.close(true);
}
@Override
public int getActivationSignals() {
return SINGLECLICK;
}
}
private TableCellEditorCombo combo;
public ExpertWeightsContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
public void setWeightedDecisionMatrixTable(WeightedDecisionMatrixTable weigthedDecisionMatrixTable) {
this.decisionMatrixTable = weigthedDecisionMatrixTable;
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
if (col != 0 && row != 0) {
if(model.domainWeightsIsFuzzySet(expert)) {
combo = new TableCellEditorCombo();
combo.setItems(model.getLabelsNameDomainWeightsExpert(expert));
return combo;
} else {
text = new TableCellEditorText();
return text;
}
}
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Weights"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = expertAbbreviation(row);
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringExpertWeight(col - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
private Object expertAbbreviation(int pos) {
return "E" + (expert + 1);
}
@Override
public int doGetRowCount() {
return getFixedRowCount() + 1;
}
@Override
public void doSetContentAt(int col, int row, Object value) {
model.setExpertWeight(col - 1, expert, (String) value);
model.execute(expert);
table.redraw();
decisionMatrixTable.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getExpertName(expert);
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return model.getExpertName(row - 1) + " / " + model.getCriterionName(col - 1);
}
}
@@ -0,0 +1,177 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class IdealSolutionContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public IdealSolutionContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Positive ideal solution"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = "Valuation";
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringPositiveIdealSolutionCriterion(col - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
@Override
public int doGetRowCount() {
return 1 + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if(col == 0 && row == 0) {
return "";
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return ""; //$NON-NLS-1$
}
}
@@ -0,0 +1,183 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.provider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import de.kupzog.ktable.KTableCellEditor;
import de.kupzog.ktable.KTableCellRenderer;
import de.kupzog.ktable.KTableNoScrollModel;
import de.kupzog.ktable.SWTX;
import de.kupzog.ktable.renderers.DefaultCellRenderer;
import de.kupzog.ktable.renderers.FixedCellRenderer;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
public class WeightedDecisionMatrixContentProvider extends KTableNoScrollModel {
private KTable table;
private ExpertsInfo model;
private int expert;
private final FixedCellRenderer fixedRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | SWT.BOLD);
private final FixedCellRenderer editableRenderer = new FixedCellRenderer(DefaultCellRenderer.STYLE_FLAT | DefaultCellRenderer.INDICATION_FOCUS);
public WeightedDecisionMatrixContentProvider(KTable table) {
super(table);
}
public void init(KTable table, ExpertsInfo model, int posExpert) {
this.table = table;
this.model = model;
this.expert = posExpert;
initialize();
setDesign();
}
public void setExpert(int posExpert) {
this.expert = posExpert;
this.table.redraw();
}
private void setDesign() {
fixedRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
fixedRenderer.setBackground(new Color(Display.getCurrent(), 255, 165, 0));
editableRenderer.setAlignment(SWTX.ALIGN_HORIZONTAL_CENTER | SWTX.ALIGN_VERTICAL_CENTER);
editableRenderer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
}
@Override
public int getFixedHeaderColumnCount() {
return 1;
}
@Override
public int getFixedHeaderRowCount() {
return 1;
}
@Override
public int getFixedSelectableColumnCount() {
return 0;
}
@Override
public int getFixedSelectableRowCount() {
return 0;
}
@Override
public int getRowHeightMinimum() {
return 0;
}
@Override
public boolean isColumnResizable(int arg0) {
return false;
}
@Override
public boolean isRowResizable(int arg0) {
return false;
}
@Override
public KTableCellEditor doGetCellEditor(int col, int row) {
return null;
}
@Override
public KTableCellRenderer doGetCellRenderer(int col, int row) {
if((col < getFixedColumnCount()) || (row < getFixedRowCount()))
return fixedRenderer;
else
return editableRenderer;
}
@Override
public int doGetColumnCount() {
return model.getNumberCriteria() + getFixedColumnCount();
}
@Override
public Object doGetContentAt(int col, int row) {
if ((col == 0) && (row == 0))
return "Decision Matrix (W)"; //$NON-NLS-1$
Object content;
try {
if (col == 0)
content = alternativeAbbreviation(row);
else if (row == 0)
content = criterionAbbreviation(col);
else
content = model.getStringWeightedValuation(col - 1, row - 1, expert);
} catch (Exception e) {
content = ""; //$NON-NLS-1$
}
return content;
}
private Object criterionAbbreviation(int pos) {
return "C" + pos;
}
private Object alternativeAbbreviation(int pos) {
return "R" + pos;
}
@Override
public int doGetRowCount() {
return model.getNumberAlternatives() + getFixedRowCount();
}
@Override
public void doSetContentAt(int col, int row, Object value) {
table.redraw();
}
@Override
public int getInitialColumnWidth(int arg0) {
return 20;
}
@Override
public int getInitialRowHeight(int arg0) {
return 30;
}
@Override
public boolean isFixedCell(int col, int row) {
if (col == 0)
return true;
else if (row == 0)
return true;
return false;
}
@Override
public boolean isHeaderCell(int col, int row) {
return isFixedCell(col, row);
}
@Override
public String doGetTooltipAt(int col, int row) {
if ((col == 0) && (row == 0))
return ""; //$NON-NLS-1$
else if (col < getFixedColumnCount()) {
return model.getAlternativeName(row - 1);
} else if (row < getFixedRowCount())
return model.getCriterionName(col - 1);
else
return model.getAlternativeName(row - 1) + " / " + model.getCriterionName(col - 1);
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.ClosenessCoefficientContentProvider;
public class ClosenessCoefficientTable extends KTable {
ClosenessCoefficientContentProvider provider;
public ClosenessCoefficientTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT | SWT.V_SCROLL);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new ClosenessCoefficientContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.DistanceIAntiIdealSolutionContentProvider;
public class DistanceNegativeIdealSolutionTable extends KTable {
DistanceIAntiIdealSolutionContentProvider provider;
public DistanceNegativeIdealSolutionTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT | SWT.V_SCROLL);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new DistanceIAntiIdealSolutionContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.DistanceIdealSolutionContentProvider;
public class DistancePositiveIdealSolutionTable extends KTable {
DistanceIdealSolutionContentProvider provider;
public DistancePositiveIdealSolutionTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT | SWT.V_SCROLL);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new DistanceIdealSolutionContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.DistanceSolutionsContentProvider;
public class DistanceSolutionsTable extends KTable {
DistanceSolutionsContentProvider provider;
public DistanceSolutionsTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT | SWT.V_SCROLL);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new DistanceSolutionsContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,41 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.ExpertWeightsContentProvider;
public class ExpertWeightsTable extends KTable {
private ExpertWeightsContentProvider provider;
public ExpertWeightsTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new ExpertWeightsContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
public void setWeightedDecisionMatrixTable(WeightedDecisionMatrixTable weigthedDecisionMatrixTable) {
provider.setWeightedDecisionMatrixTable(weigthedDecisionMatrixTable);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.AntiIdealSolutionContentProvider;
public class NegativeIdealSolutionTable extends KTable {
private AntiIdealSolutionContentProvider provider;
public NegativeIdealSolutionTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new AntiIdealSolutionContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,37 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.IdealSolutionContentProvider;
public class PositiveIdealSolutionTable extends KTable {
private IdealSolutionContentProvider provider;
public PositiveIdealSolutionTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new IdealSolutionContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}
@@ -0,0 +1,38 @@
package flintstones.method.linguistic.topsis.phase.experts.ui.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import de.kupzog.ktable.KTable;
import flintstones.method.linguistic.topsis.phase.experts.ExpertsInfo;
import flintstones.method.linguistic.topsis.phase.experts.ui.provider.WeightedDecisionMatrixContentProvider;
public class WeightedDecisionMatrixTable extends KTable {
WeightedDecisionMatrixContentProvider provider;
public WeightedDecisionMatrixTable(Composite parent) {
super(parent, SWT.NO_BACKGROUND | SWT.FLAT | SWT.V_SCROLL);
setBackground(new Color(Display.getCurrent(), 255, 255, 255));
provider = null;
}
public void setModel(ExpertsInfo phase, int posExpert) {
provider = new WeightedDecisionMatrixContentProvider(this);
provider.init(this, phase, posExpert);
setModel(provider);
}
public void setExpert(int posExpert) {
provider.setExpert(posExpert);
}
@Override
public void dispose() {
super.dispose();
}
}