package com.iambookmaster.client.quick; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyPressEvent; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; 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 QuickSettingsBookInfoEditor extends VerticalPanel implements QuickViewWidget { private static final AppConstants appConstants = AppLocale.getAppConstants(); private Model model; private SettingsListener settingsListener; private TextBox title; private TextBox authors; private TextArea description; private Command resizeDescription; public QuickSettingsBookInfoEditor(Model mod) { this.model = mod; setSize("100%", "100%"); Label label = new Label(appConstants.quickBookInfoTitle()); add(label); setCellHeight(label,"1%"); setCellWidth(label,"100%"); Grid grid = new Grid(2,2); grid.setSize("100%", "100%"); ChangeHandler changeListener = new ChangeHandler() { public void onChange(ChangeEvent event) { updateSettings(event.getSource()); } }; KeyPressHandler keyboardListener = new KeyPressHandler() { public void onKeyPress(KeyPressEvent event) { if (event.getCharCode()==KeyCodes.KEY_ENTER) { updateSettings(event.getSource()); } else if (event.getCharCode()==KeyCodes.KEY_ESCAPE) { update(); } } }; title = new TextBox(); title.setWidth("100%"); title.addChangeHandler(changeListener); title.addKeyPressHandler(keyboardListener); grid.setWidget(0,0,new Label(appConstants.quickBookTitle())); grid.setWidget(0,1,title); grid.getCellFormatter().setWidth(0, 0, "1%"); authors = new TextBox(); authors.setWidth("100%"); authors.addChangeHandler(changeListener); authors.addKeyPressHandler(keyboardListener); grid.getCellFormatter().setWidth(0, 1, "99%"); grid.setWidget(1,0,new Label(appConstants.quickBookAuthors())); grid.setWidget(1,1,authors); add(grid); setCellHeight(grid,"1%"); setCellWidth(grid,"100%"); label = new Label(appConstants.quickBookDescription()); add(label); setCellHeight(label,"1%"); setCellWidth(label,"100%"); description = new TextArea(); description.setSize("100%", "100%"); description.addChangeHandler(changeListener); add(description); setCellHeight(description,"99%"); setCellWidth(description,"100%"); settingsListener = new SettingsListener(){ public void settingsWereUpated() { update(); } }; model.addSettingsListener(settingsListener); resizeDescription = new Command(){ public void execute() { int h = description.getOffsetHeight(); if (h<40) { description.setVisibleLines(7); } } }; update(); } public void update() { title.setText(model.getSettings().getBookTitle()); authors.setText(model.getSettings().getBookAuthors()); description.setText(model.getSettings().getBookDescription()); DeferredCommand.addCommand(resizeDescription); } private void updateSettings(Object object) { if (object==title) { model.getSettings().setBookTitle(title.getText().trim()); } else if (object==authors) { model.getSettings().setBookAuthors(authors.getText().trim()); } else if (object==description) { model.getSettings().setBookDescription(description.getText().trim()); } model.updateSettings(settingsListener); } public void close() { model.removeSettingsListener(settingsListener); } }