package com.iambookmaster.client.quick; import com.google.gwt.user.client.ui.ChangeListener; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.iambookmaster.client.common.CompactHorizontalPanel; import com.iambookmaster.client.common.NumberTextBox; import com.iambookmaster.client.locale.AppConstants; import com.iambookmaster.client.locale.AppLocale; import com.iambookmaster.client.model.Model; import com.iambookmaster.client.model.SettingsListener; public class QuickSettingsBookGenerationEditor extends VerticalPanel implements QuickViewWidget { private static final AppConstants appConstants = AppLocale.getAppConstants(); private Model model; private SettingsListener settingsListener; private CheckBox closeParagraphControl; private ListBox fineKeys; private NumberTextBox closeLenght; private NumberTextBox maxAttempt; public QuickSettingsBookGenerationEditor(Model mod) { this.model = mod; setSize("100%", "100%"); Label label = new Label(appConstants.quickTextBookGeneration()); add(label); setCellHeight(label,"1%"); setCellWidth(label,"100%"); ClickListener clickListener = new ClickListener() { public void onClick(Widget sender) { if (sender==closeParagraphControl) { if (closeParagraphControl.isChecked()) { closeLenght.setValue(1); model.getSettings().setMinimalSeparation(1); } else { model.getSettings().setMinimalSeparation(0); closeLenght.setValue(0); } } model.updateSettings(null); } }; ChangeListener changeListener = new ChangeListener() { public void onChange(Widget sender) { if (sender==closeLenght) { int len = closeLenght.getIntegerValue(); model.getSettings().setMinimalSeparation(len); if (len==0) { model.getSettings().setMinimalSeparation(0); closeParagraphControl.setChecked(false); } else { model.getSettings().setMinimalSeparation(len); closeParagraphControl.setChecked(true); } } else if (sender==maxAttempt) { int len = closeLenght.getIntegerValue(); model.getSettings().setMaxAttemptCount(len); } else if (sender==fineKeys) { model.getSettings().setFineSecretKeys(Integer.parseInt(fineKeys.getValue(fineKeys.getSelectedIndex()))); } model.updateSettings(settingsListener); } }; //control how close nearest paragraphs closeParagraphControl = new CheckBox(appConstants.quickNearestParagraphControl()); closeParagraphControl.addClickListener(clickListener); add(closeParagraphControl); setCellHeight(closeParagraphControl,"1%"); setCellWidth(closeParagraphControl,"100%"); closeLenght = new NumberTextBox(); closeLenght.setVisibleLength(2); closeLenght.setMaxLength(1); closeLenght.setRange(0,9); closeLenght.addChangeListener(changeListener); CompactHorizontalPanel panel = new CompactHorizontalPanel(); panel.addCompactWidget(closeLenght); panel.addFullText(appConstants.quickNearestParagraphDistance()); add(panel); setCellHeight(panel,"1%"); setCellWidth(panel,"100%"); //control quantity of attempts maxAttempt = new NumberTextBox(); maxAttempt.setVisibleLength(3); maxAttempt.setMaxLength(2); maxAttempt.setRange(1,99); maxAttempt.addChangeListener(changeListener); panel = new CompactHorizontalPanel(); panel.addCompactWidget(maxAttempt); panel.addFullText(appConstants.quickMaxQuantityOfGenerationAttempts()); add(panel); setCellHeight(panel,"1%"); setCellWidth(panel,"100%"); //fine of secret keys panel = new CompactHorizontalPanel(); fineKeys = new ListBox(); fineKeys.addChangeListener(changeListener); fineKeys.addItem(appConstants.quickSmartSecretKeyAny(), "0"); fineKeys.addItem(appConstants.quickSmartSecretKey5(), "5"); fineKeys.addItem(appConstants.quickSmartSecretKey10(), "10"); fineKeys.setTitle(appConstants.quickSmartSecretKeyTitle()); panel.addCompactWidget(fineKeys); panel.addFullText(appConstants.quickSmartSecretKey()); add(panel); setCellHeight(panel,"1%"); setCellWidth(panel,"100%"); //filler HTML html = new HTML(" "); html.setStyleName("filler"); add(html); setCellHeight(html,"100%"); setCellWidth(html,"99%"); //fill data applySettings(); settingsListener = new SettingsListener(){ public void settingsWereUpated() { applySettings(); } }; model.addSettingsListener(settingsListener); applySettings(); } private void applySettings() { com.iambookmaster.client.beans.Settings settings = model.getSettings(); closeLenght.setValue(settings.getMinimalSeparation()); if (settings.getMinimalSeparation()==0) { closeParagraphControl.setChecked(false); } else { closeParagraphControl.setChecked(true); } maxAttempt.setValue(settings.getMaxAttemptCount()); switch (settings.getFineSecretKeys()) { case 5: fineKeys.setSelectedIndex(1); break; case 10: fineKeys.setSelectedIndex(2); break; default: fineKeys.setSelectedIndex(0); } } public void close() { model.removeSettingsListener(settingsListener); } }