package CrowdBenchmark.parts; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; 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.layout.GridLayout; 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.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.widgets.Form; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; import CrowdBenchmark.models.AdvanceConfigModel; import CrowdBenchmark.util.Constant; public class AdvanceConfig extends TitleAreaDialog { private AdvanceConfigModel advanceConfig; private Combo expert_combo; private Combo normalWorker_combo; private Combo sloppyWorker_combo; private Text txtEM; private Text txtIter; private Text txtSLME; private Text expert_fisrtParam; private Text expert_secondParam; private Text normalWorker_fisrtParam; private Text normalWorker_secondParam; private Text sloppyWorker_fisrtParam; private Text sloppyWorker_secondParam; private FormToolkit toolkit; private Form form; private Composite expert_section; private Composite expert_composite; private Composite normalWorker_section; private Composite normalWorker_composite; private Composite sloppyWorker_section; private Composite sloppyWorker_composite; final String[] feedbacksDistributor = new String[] { "FeedBacks Per Question Distributor", "FeedBacks Per Worker Distributor", "FeedBacks Constraint Distributor" }; final String[] observerValues = new String[] { "Normal Distribution", "Fix Distribution", "Uniform Distribution" }; protected int expert_index; protected int normalWorker_index; protected int sloppyWorker_index; private Section sctnAlgorithm; private Composite algorithmComposite; private Section sctnFeedbacks; private Composite feedbacksComposite; private Combo feedbacks_combo; private Text txtFeedbacksRatio; private Text txtFeedbacksRatioQuestion; private int feedbacks_index; public AdvanceConfig(Shell parentShell) { super(parentShell); setBlockOnOpen(false); } @Override public void create() { super.create(); // Set the title setTitle("Advance Configuration\r\n"); // Set the message //setMessage("This is a TitleAreaDialog", IMessageProvider.INFORMATION); } @Override protected Control createDialogArea(Composite parent) { GridLayout layout = new GridLayout(); layout.numColumns = 2; // layout.horizontalAlignment = GridData.FILL; parent.setLayout(layout); // The text fields will grow with the size of the dialog GridData gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = GridData.FILL; initValue(); addParameterFormPart(parent); return parent; } private void initValue(){ advanceConfig = new AdvanceConfigModel(); advanceConfig.readAdvanceConfigFile(Constant.ADVANCE_CONFIG_FILE); } private void addParameterFormPart(final Composite parent) { toolkit = new FormToolkit(parent.getDisplay()); form = toolkit.createForm(parent); form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); GridLayout layout = new GridLayout(); layout.marginWidth = 2; layout.horizontalSpacing = 0; form.getBody().setLayout(layout); layout.numColumns = 2; GridData gd = new GridData(); gd.horizontalSpan = 2; addWorkerSection(parent); addAlgorithmSection(parent); addFeedbacksSection(parent); } private void addWorkerSection(Composite parent) { Section observerSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR); GridData gd_observerSection = new GridData(SWT.FILL, SWT.TOP, true, true, 1, 2); gd_observerSection.widthHint = 360; observerSection.setLayoutData(gd_observerSection); toolkit.paintBordersFor(observerSection); observerSection.setText("Worker"); Composite workerHolder = new Composite(observerSection,SWT.NONE); GridLayout gl_workerHolder = new GridLayout(1, true); gl_workerHolder.verticalSpacing = 0; gl_workerHolder.marginBottom = 5; workerHolder.setLayout(gl_workerHolder); observerSection.setClient(workerHolder); toolkit.adapt(workerHolder); toolkit.paintBordersFor(workerHolder); expert_section = new Composite(workerHolder, SWT.NONE); expert_section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); GridLayout gl_expert_section = new GridLayout(2, false); gl_expert_section.verticalSpacing = 0; gl_expert_section.marginHeight = 0; expert_section.setLayout(gl_expert_section); addExpertDistribution(); normalWorker_section = new Composite(workerHolder, SWT.NONE); normalWorker_section.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1)); GridLayout gl_normalWorker_section = new GridLayout(2, false); gl_normalWorker_section.verticalSpacing = 0; gl_normalWorker_section.marginHeight = 0; normalWorker_section.setLayout(gl_normalWorker_section); // new Label(observerSectionBody, SWT.NONE); addNormalWorkerDistribution(); sloppyWorker_section = new Composite(workerHolder, SWT.NONE); sloppyWorker_section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); GridLayout gl_sloppyWorker_section = new GridLayout(2, false); gl_sloppyWorker_section.verticalSpacing = 0; gl_sloppyWorker_section.marginHeight = 0; sloppyWorker_section.setLayout(gl_sloppyWorker_section); // new Label(observerSectionBody, SWT.NONE); addSloppyWorkerDistribution(); } private int getIndex(Constant.DISTRIBUTION distribution){ switch (distribution) { case NormalDistribution: return 0; case UniformDistribution: return 2; case FixedDistribution: return 1; default: return 3; } } private int getIndexofFeedbacksDistributor(Constant.FEEDBACKSDISTRIBUTION distribution){ switch (distribution) { case FeedBacksPerQuestionDistributor: return 0; case FeedBacksPerWorkerDistributor: return 1; default: return 2; } } private void addExpertDistribution() { Composite distribution = new Composite(expert_section, SWT.NONE); distribution.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, true, 1, 1)); toolkit.adapt(distribution); toolkit.paintBordersFor(distribution); distribution.setLayout(new GridLayout(1, false)); Label expert = new Label(distribution, SWT.NONE); expert.setLayoutData(new GridData(SWT.LEFT, SWT.DOWN, true, false, 1, 1)); expert.setText("Expert"); ComboViewer comboViewer = new ComboViewer(distribution, SWT.READ_ONLY); expert_combo = comboViewer.getCombo(); expert_combo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.paintBordersFor(expert_combo); comboViewer.setContentProvider(new ArrayContentProvider()); // org.eclipse.jface.viewers.ArrayContentProvider() comboViewer.setLabelProvider(new LabelProvider()); // org.eclipse.jface.viewers.LabelProvider() expert_combo.setItems(observerValues); // combo.setText(observerValues[0]); expert_combo.setVisibleItemCount(observerValues.length); expert_index = getIndex(Constant.DISTRIBUTION.valueOf(advanceConfig.getWorkers().getExpert().getSelectedDistribution())); expert_combo.select(expert_index); addExpertParameters(); expert_combo.addListener(SWT.Modify, new Listener() { @Override public void handleEvent(Event event) { expert_index = expert_combo.getSelectionIndex(); System.out.println(expert_combo.getItem(expert_index)); if(expert_composite != null) expert_composite.dispose(); addExpertParameters(); } }); } private void addExpertParameters() { expert_composite = new Composite(expert_section, SWT.NONE); expert_composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); toolkit.adapt(expert_composite); toolkit.paintBordersFor(expert_composite); expert_composite.setLayout(new GridLayout(2, true)); Label firstParams = new Label(expert_composite, SWT.NONE); firstParams.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, true, false, 1, 1)); toolkit.adapt(firstParams, true, true); //firstParams.setText("mean"); Label secondParam = new Label(expert_composite, SWT.NONE); secondParam.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, true, false, 1, 1)); toolkit.adapt(secondParam, true, true); //secondParam.setText("sd"); expert_fisrtParam = new Text(expert_composite, SWT.BORDER); expert_fisrtParam.setSize(new Point(3000, 0)); GridData gd_expert_fisrtParam = new GridData(SWT.LEFT, SWT.CENTER, false, true, 1, 1); gd_expert_fisrtParam.widthHint = 60; expert_fisrtParam.setLayoutData(gd_expert_fisrtParam); expert_secondParam = new Text(expert_composite, SWT.BORDER); expert_secondParam.setSize(new Point(500, 0)); GridData gd_expert_secondParam = new GridData(SWT.LEFT, SWT.CENTER, false, true, 1, 1); gd_expert_secondParam.widthHint = 60; expert_secondParam.setLayoutData(gd_expert_secondParam); expert_secondParam.setVisible(true); int index = expert_combo.getSelectionIndex(); switch (index) { case 0: firstParams.setText("Mean"); secondParam.setText("Sd"); expert_fisrtParam.setText(advanceConfig.getWorkers().getExpert().getMean()); expert_secondParam.setText(advanceConfig.getWorkers().getExpert().getSd()); break; case 1: firstParams.setText("Reliability"); secondParam.setText(""); expert_fisrtParam.setText(advanceConfig.getWorkers().getExpert().getFixed()); expert_secondParam.setVisible(false); break; case 2: firstParams.setText("Lower Bound"); secondParam.setText("Upper Bound"); expert_fisrtParam.setText(advanceConfig.getWorkers().getExpert().getLowBound()); expert_secondParam.setText(advanceConfig.getWorkers().getExpert().getUpBound()); break; default: break; } expert_section.layout(); } private void addNormalWorkerDistribution() { Composite distribution = new Composite(normalWorker_section, SWT.NONE); toolkit.adapt(distribution); toolkit.paintBordersFor(distribution); distribution.setLayout(new GridLayout(1, false)); Label normalWorker = new Label(distribution, SWT.NONE); normalWorker.setLayoutData(new GridData(SWT.LEFT, SWT.DOWN, false, false, 1, 1)); normalWorker.setText("Normal Worker"); ComboViewer comboViewer = new ComboViewer(distribution, SWT.READ_ONLY); normalWorker_combo = comboViewer.getCombo(); normalWorker_combo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.paintBordersFor(normalWorker_combo); comboViewer.setContentProvider(new ArrayContentProvider()); // org.eclipse.jface.viewers.ArrayContentProvider() comboViewer.setLabelProvider(new LabelProvider()); // org.eclipse.jface.viewers.LabelProvider() normalWorker_combo.setItems(observerValues); // combo.setText(observerValues[0]); normalWorker_combo.setVisibleItemCount(observerValues.length); normalWorker_index = getIndex(Constant.DISTRIBUTION.valueOf(advanceConfig.getWorkers().getNormal().getSelectedDistribution())); normalWorker_combo.select(normalWorker_index); addNormalWorkerParameters(); normalWorker_combo.addListener(SWT.Modify, new Listener() { @Override public void handleEvent(Event event) { normalWorker_index = normalWorker_combo.getSelectionIndex(); System.out.println(normalWorker_combo.getItem(normalWorker_index)); if(normalWorker_composite != null) normalWorker_composite.dispose(); addNormalWorkerParameters(); } }); } private void addNormalWorkerParameters() { normalWorker_composite = new Composite(normalWorker_section, SWT.NONE); normalWorker_composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(normalWorker_composite); toolkit.paintBordersFor(normalWorker_composite); normalWorker_composite.setLayout(new GridLayout(2, true)); Label firstParams = new Label(normalWorker_composite, SWT.NONE); firstParams.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(firstParams, true, true); //firstParams.setText("mean"); Label secondParam = new Label(normalWorker_composite, SWT.NONE); secondParam.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(secondParam, true, true); //secondParam.setText("sd"); normalWorker_fisrtParam = new Text(normalWorker_composite, SWT.BORDER); GridData gd_normalWorker_fisrtParam = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_normalWorker_fisrtParam.widthHint = 60; normalWorker_fisrtParam.setLayoutData(gd_normalWorker_fisrtParam); normalWorker_secondParam = new Text(normalWorker_composite, SWT.BORDER); GridData gd_normalWorker_secondParam = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_normalWorker_secondParam.widthHint = 60; normalWorker_secondParam.setLayoutData(gd_normalWorker_secondParam); normalWorker_secondParam.setVisible(true); int index = normalWorker_combo.getSelectionIndex(); switch (index) { case 0: firstParams.setText("Mean"); secondParam.setText("Sd"); normalWorker_fisrtParam.setText(advanceConfig.getWorkers().getNormal().getMean()); normalWorker_secondParam.setText(advanceConfig.getWorkers().getNormal().getSd()); break; case 1: firstParams.setText("Reliability"); secondParam.setText(""); normalWorker_fisrtParam.setText(advanceConfig.getWorkers().getNormal().getFixed()); normalWorker_secondParam.setVisible(false); break; case 2: firstParams.setText("Lower Bound"); secondParam.setText("Upper Bound"); normalWorker_fisrtParam.setText(advanceConfig.getWorkers().getNormal().getLowBound()); normalWorker_secondParam.setText(advanceConfig.getWorkers().getNormal().getUpBound()); break; default: break; } normalWorker_section.layout(); } private void addSloppyWorkerDistribution() { Composite distribution = new Composite(sloppyWorker_section, SWT.NONE); toolkit.adapt(distribution); toolkit.paintBordersFor(distribution); distribution.setLayout(new GridLayout(1, false)); Label sloppyWorker = new Label(distribution, SWT.NONE); sloppyWorker.setLayoutData(new GridData(SWT.LEFT, SWT.DOWN, false, false, 1, 1)); sloppyWorker.setText("Sloppy Worker"); ComboViewer comboViewer = new ComboViewer(distribution, SWT.READ_ONLY); sloppyWorker_combo = comboViewer.getCombo(); sloppyWorker_combo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.paintBordersFor(sloppyWorker_combo); comboViewer.setContentProvider(new ArrayContentProvider()); // org.eclipse.jface.viewers.ArrayContentProvider() comboViewer.setLabelProvider(new LabelProvider()); // org.eclipse.jface.viewers.LabelProvider() sloppyWorker_combo.setItems(observerValues); // combo.setText(observerValues[0]); sloppyWorker_combo.setVisibleItemCount(observerValues.length); sloppyWorker_index = getIndex(Constant.DISTRIBUTION.valueOf(advanceConfig.getWorkers().getSloppy().getSelectedDistribution())); sloppyWorker_combo.select(sloppyWorker_index); addSloppyWorkerParameters(); sloppyWorker_combo.addListener(SWT.Modify, new Listener() { @Override public void handleEvent(Event event) { sloppyWorker_index = sloppyWorker_combo.getSelectionIndex(); System.out.println(sloppyWorker_combo.getItem(sloppyWorker_index)); if(sloppyWorker_composite != null) sloppyWorker_composite.dispose(); addSloppyWorkerParameters(); } }); } private void addSloppyWorkerParameters() { sloppyWorker_composite = new Composite(sloppyWorker_section, SWT.NONE); sloppyWorker_composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(sloppyWorker_composite); toolkit.paintBordersFor(sloppyWorker_composite); sloppyWorker_composite.setLayout(new GridLayout(2, true)); Label firstParams = new Label(sloppyWorker_composite, SWT.NONE); firstParams.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(firstParams, true, true); //firstParams.setText("mean"); Label secondParam = new Label(sloppyWorker_composite, SWT.NONE); secondParam.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); toolkit.adapt(secondParam, true, true); //secondParam.setText("sd"); sloppyWorker_fisrtParam = new Text(sloppyWorker_composite, SWT.BORDER); GridData gd_sloppyWorker_fisrtParam = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_sloppyWorker_fisrtParam.widthHint = 60; sloppyWorker_fisrtParam.setLayoutData(gd_sloppyWorker_fisrtParam); sloppyWorker_secondParam = new Text(sloppyWorker_composite, SWT.BORDER); GridData gd_sloppyWorker_secondParam = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_sloppyWorker_secondParam.widthHint = 60; sloppyWorker_secondParam.setLayoutData(gd_sloppyWorker_secondParam); sloppyWorker_secondParam.setVisible(true); int index = sloppyWorker_combo.getSelectionIndex(); switch (index) { case 0: firstParams.setText("Mean"); secondParam.setText("Sd"); sloppyWorker_fisrtParam.setText(advanceConfig.getWorkers().getSloppy().getMean()); sloppyWorker_secondParam.setText(advanceConfig.getWorkers().getSloppy().getSd()); break; case 1: firstParams.setText("Reliability"); secondParam.setText(""); sloppyWorker_fisrtParam.setText(advanceConfig.getWorkers().getSloppy().getFixed()); sloppyWorker_secondParam.setVisible(false); break; case 2: firstParams.setText("Lower Bound"); secondParam.setText("Upper Bound"); sloppyWorker_fisrtParam.setText(advanceConfig.getWorkers().getSloppy().getLowBound()); sloppyWorker_secondParam.setText(advanceConfig.getWorkers().getSloppy().getUpBound()); break; default: break; } sloppyWorker_section.layout(); } private void addAlgorithmSection(Composite parent) { sctnAlgorithm = toolkit.createSection(form.getBody(), Section.CLIENT_INDENT | Section.TITLE_BAR); // gd_workerSection.widthHint = 335; sctnAlgorithm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2)); sctnAlgorithm.setText("Algorithm"); algorithmComposite = new Composite(sctnAlgorithm, SWT.NONE); toolkit.adapt(algorithmComposite); toolkit.paintBordersFor(algorithmComposite); sctnAlgorithm.setClient(algorithmComposite); createAlgorithmForm(algorithmComposite); } public void createAlgorithmForm(Composite parent) { GridLayout gl_algorithmComposite = new GridLayout(2, false); gl_algorithmComposite.verticalSpacing = 10; gl_algorithmComposite.marginHeight = 6; gl_algorithmComposite.marginTop = 3; parent.setLayout(gl_algorithmComposite); Label EM = new Label(parent, SWT.NONE); GridData gd_EM = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_EM.verticalIndent = -2; EM.setLayoutData(gd_EM); EM.setText("EM Iteration"); txtEM = new Text(parent, SWT.BORDER); GridData gd_txtEM = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_txtEM.verticalIndent = 2; gd_txtEM.widthHint = 60; txtEM.setLayoutData(gd_txtEM); txtEM.setText(advanceConfig.getAlgos().getEM_iter()); Label Iter = new Label(parent, SWT.NONE); Iter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); Iter.setText("ITER Iteration"); txtIter = new Text(parent, SWT.BORDER); GridData gd_txtIter = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_txtIter.widthHint = 60; txtIter.setLayoutData(gd_txtIter); txtIter.setText(advanceConfig.getAlgos().getITER_iter()); Label SLME = new Label(parent, SWT.NONE); GridData gd_SLME = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_SLME.verticalIndent = 1; SLME.setLayoutData(gd_SLME); SLME.setText("SLME Iteration"); txtSLME = new Text(parent, SWT.BORDER); GridData gd_txtSLME = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_txtSLME.widthHint = 60; txtSLME.setLayoutData(gd_txtSLME); txtSLME.setText(advanceConfig.getAlgos().getSLME_iter()); } private void addFeedbacksSection(Composite parent) { sctnFeedbacks = toolkit.createSection(form.getBody(), Section.CLIENT_INDENT | Section.TITLE_BAR); // gd_workerSection.widthHint = 335; sctnFeedbacks.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); sctnFeedbacks.setText("Feedbacks"); feedbacksComposite = new Composite(sctnFeedbacks, SWT.NONE); toolkit.adapt(feedbacksComposite); toolkit.paintBordersFor(feedbacksComposite); sctnFeedbacks.setClient(feedbacksComposite); createFeedbacksForm(); } public void createFeedbacksForm() { GridLayout gl_feedbacksComposite = new GridLayout(2, false); gl_feedbacksComposite.marginLeft = 5; gl_feedbacksComposite.horizontalSpacing = 0; feedbacksComposite.setLayout(gl_feedbacksComposite); Label distributor = new Label(feedbacksComposite, SWT.NONE); GridData gd_distributor = new GridData(SWT.LEFT, SWT.DOWN, true, false, 1, 1); gd_distributor.horizontalIndent = 5; distributor.setLayoutData(gd_distributor); distributor.setText("Distributor"); ComboViewer comboViewer = new ComboViewer(feedbacksComposite, SWT.READ_ONLY); feedbacks_combo = comboViewer.getCombo(); GridData gd_feedbacks_combo = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_feedbacks_combo.widthHint = 286; gd_feedbacks_combo.heightHint = 88; feedbacks_combo.setLayoutData(gd_feedbacks_combo); toolkit.paintBordersFor(feedbacks_combo); comboViewer.setContentProvider(new ArrayContentProvider()); // org.eclipse.jface.viewers.ArrayContentProvider() comboViewer.setLabelProvider(new LabelProvider()); // org.eclipse.jface.viewers.LabelProvider() feedbacks_combo.setItems(feedbacksDistributor); // combo.setText(observerValues[0]); feedbacks_combo.setVisibleItemCount(feedbacksDistributor.length); feedbacks_index = getIndexofFeedbacksDistributor(Constant.FEEDBACKSDISTRIBUTION.valueOf(advanceConfig.getFeedbacks().getFeedbacksDistributor())); feedbacks_combo.select(feedbacks_index); Label feedbackRatio = new Label(feedbacksComposite, SWT.NONE); GridData gd_feedbackRatio = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_feedbackRatio.horizontalIndent = 5; feedbackRatio.setLayoutData(gd_feedbackRatio); feedbackRatio.setText("Feedbacks Ratio"); txtFeedbacksRatio = new Text(feedbacksComposite, SWT.BORDER); GridData gd_txtFeedbacksRatio = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_txtFeedbacksRatio.widthHint = 60; txtFeedbacksRatio.setLayoutData(gd_txtFeedbacksRatio); txtFeedbacksRatio.setText(advanceConfig.getFeedbacks().getFeedbackRatio()); Label feedbackRatioQuestion = new Label(feedbacksComposite, SWT.NONE); GridData gd_feedbackRatioQuestion = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_feedbackRatioQuestion.horizontalIndent = 5; feedbackRatioQuestion.setLayoutData(gd_feedbackRatioQuestion); feedbackRatioQuestion.setText("Feedbacks Ratio Question"); txtFeedbacksRatioQuestion = new Text(feedbacksComposite, SWT.BORDER); GridData gd_txtFeedbacksRatioQuestion = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_txtFeedbacksRatioQuestion.widthHint = 60; txtFeedbacksRatioQuestion.setLayoutData(gd_txtFeedbacksRatioQuestion); txtFeedbacksRatioQuestion.setText(advanceConfig.getFeedbacks().getFeedbackRatioQuestion()); } @Override protected void createButtonsForButtonBar(Composite parent) { GridData gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 3; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = SWT.CENTER; parent.setLayoutData(gridData); // Create Add button // Own method as we need to overview the SelectionAdapter createOkButton(parent, OK, "Apply", true); // Add a SelectionListener // Create Cancel button Button cancelButton = createButton(parent, CANCEL, "Cancel", false); // Add a SelectionListener cancelButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { setReturnCode(CANCEL); close(); } }); } protected Button createOkButton(Composite parent, int id, String label, boolean defaultButton) { // increment the number of columns in the button bar ((GridLayout) parent.getLayout()).numColumns++; Button button = new Button(parent, SWT.PUSH); button.setText(label); button.setFont(JFaceResources.getDialogFont()); button.setData(new Integer(id)); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if (isValidInput()) { okPressed(); } } }); if (defaultButton) { Shell shell = parent.getShell(); if (shell != null) { shell.setDefaultButton(button); } } setButtonLayoutData(button); return button; } private boolean isValidInput() { boolean valid = true; return valid; } @Override protected boolean isResizable() { return true; } // Coyy textFields because the UI gets disposed // and the Text Fields are not accessible any more. private void saveInput() { saveWorker(); saveAlgos(); saveFeedbacks(); advanceConfig.writeAdvanceConfigFile(Constant.ADVANCE_CONFIG_FILE); } private void saveFeedbacks(){ int feedback_index = feedbacks_combo.getSelectionIndex(); switch (feedback_index) { case 0: advanceConfig.getFeedbacks().setFeedbacksDistributor("FeedBacksPerQuestionDistributor"); break; case 1: advanceConfig.getFeedbacks().setFeedbacksDistributor("FeedBacksPerWorkerDistributor"); break; default: advanceConfig.getFeedbacks().setFeedbacksDistributor("FeedBacksConstraintDistributor"); break; } advanceConfig.getFeedbacks().setFeedbackRatio(txtFeedbacksRatio.getText()); advanceConfig.getFeedbacks().setFeedbackRatioQuestion(txtFeedbacksRatioQuestion.getText()); advanceConfig.getFeedbacks().updateHashMap(); } private void saveWorker(){ int expert_index = expert_combo.getSelectionIndex(); switch (expert_index) { case 0: advanceConfig.getWorkers().getExpert().setSelectedDistribution("NormalDistribution"); advanceConfig.getWorkers().getExpert().setMean(expert_fisrtParam.getText()); advanceConfig.getWorkers().getExpert().setSd(expert_secondParam.getText()); break; case 1: advanceConfig.getWorkers().getExpert().setSelectedDistribution("FixedDistribution"); advanceConfig.getWorkers().getExpert().setFixed(expert_fisrtParam.getText()); break; case 2: advanceConfig.getWorkers().getExpert().setSelectedDistribution("UniformDistribution"); advanceConfig.getWorkers().getExpert().setLowBound(expert_fisrtParam.getText()); advanceConfig.getWorkers().getExpert().setUpBound(expert_secondParam.getText()); break; default: break; } int normalWorker_index = normalWorker_combo.getSelectionIndex(); switch (normalWorker_index) { case 0: advanceConfig.getWorkers().getNormal().setSelectedDistribution("NormalDistribution"); advanceConfig.getWorkers().getNormal().setMean(normalWorker_fisrtParam.getText()); advanceConfig.getWorkers().getNormal().setSd(normalWorker_secondParam.getText()); break; case 1: advanceConfig.getWorkers().getNormal().setSelectedDistribution("FixedDistribution"); advanceConfig.getWorkers().getNormal().setFixed(normalWorker_fisrtParam.getText()); break; case 2: advanceConfig.getWorkers().getNormal().setSelectedDistribution("UniformDistribution"); advanceConfig.getWorkers().getNormal().setLowBound(normalWorker_fisrtParam.getText()); advanceConfig.getWorkers().getNormal().setUpBound(normalWorker_secondParam.getText()); break; default: break; } int sloppyWorker_index = sloppyWorker_combo.getSelectionIndex(); switch (sloppyWorker_index) { case 0: advanceConfig.getWorkers().getSloppy().setSelectedDistribution("NormalDistribution"); advanceConfig.getWorkers().getSloppy().setMean(sloppyWorker_fisrtParam.getText()); advanceConfig.getWorkers().getSloppy().setSd(sloppyWorker_secondParam.getText()); break; case 1: advanceConfig.getWorkers().getSloppy().setSelectedDistribution("FixedDistribution"); advanceConfig.getWorkers().getSloppy().setFixed(sloppyWorker_fisrtParam.getText()); break; case 2: advanceConfig.getWorkers().getSloppy().setSelectedDistribution("UniformDistribution"); advanceConfig.getWorkers().getSloppy().setLowBound(sloppyWorker_fisrtParam.getText()); advanceConfig.getWorkers().getSloppy().setUpBound(sloppyWorker_secondParam.getText()); break; default: break; } advanceConfig.getWorkers().updatehashMap(); } private void saveAlgos(){ advanceConfig.getAlgos().setEM_iter(txtEM.getText()); advanceConfig.getAlgos().setITER_iter(txtIter.getText()); advanceConfig.getAlgos().setSLME_iter(txtSLME.getText()); advanceConfig.getAlgos().updateHashMap(); } @Override protected void okPressed() { saveInput(); super.okPressed(); } }