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.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.ui.CheckBox;
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.beans.ObjectBean;
import com.iambookmaster.client.beans.Picture;
import com.iambookmaster.client.common.NumberTextBox;
import com.iambookmaster.client.editor.PicturesListBox;
import com.iambookmaster.client.locale.AppConstants;
import com.iambookmaster.client.locale.AppLocale;
import com.iambookmaster.client.model.Model;
import com.iambookmaster.client.model.ObjectListener;
public class QuickViewObjectEditor extends VerticalPanel implements QuickViewWidget {
private static final AppConstants appConstants = AppLocale.getAppConstants();
private ObjectBean object;
private Model model;
private ObjectListener objectListener;
private TextBox name;
private NumberTextBox number;
private TextArea description;
private TextArea comments;
private CheckBox uncoutable;
private PicturesListBox image;
public QuickViewObjectEditor(Model mod, ObjectBean obj) {
this.model = mod;
setSize("100%", "100%");
Label label = new Label(appConstants.quickItemTitle());
add(label);
setCellHeight(label,"1%");
setCellWidth(label,"100%");
Grid grid = new Grid(4,2);
grid.setSize("100%", "100%");
ChangeHandler changeListener = new ChangeHandler() {
public void onChange(ChangeEvent event) {
updateLocation(event.getSource());
}
};
ClickHandler clickHandler = new ClickHandler() {
public void onClick(ClickEvent event) {
updateLocation(event.getSource());
}
};
KeyPressHandler keyboardListener = new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getCharCode()==KeyCodes.KEY_ENTER) {
updateLocation(event.getSource());
} else if (event.getCharCode()==KeyCodes.KEY_ESCAPE) {
open(object);
}
}
};
name = new TextBox();
name.addChangeHandler(changeListener);
name.addKeyPressHandler(keyboardListener);
grid.setWidget(0,0,new Label(appConstants.quickItemName()));
grid.setWidget(0,1,name);
number = new NumberTextBox();
number.addChangeHandler(changeListener);
number.addKeyPressHandler(keyboardListener);
grid.setWidget(1,0,new Label(appConstants.qucikItemSecretKey()));
grid.setWidget(1,1,number);
uncoutable = new CheckBox();
uncoutable.addClickHandler(clickHandler);
uncoutable.setTitle(appConstants.quickSettingsMultyObjectsTitle());
grid.setWidget(2,0,new Label(appConstants.quickSettingsMultyObjects()));
grid.setWidget(2,1,uncoutable);
image = new PicturesListBox(model,Picture.ROLE_ICON);
image.addChangeHandler(changeListener);
image.setTitle(appConstants.quickObjectImageTitle());
grid.setWidget(3,0,new Label(appConstants.quickObjectImage()));
grid.setWidget(3,1,image);
add(grid);
setCellHeight(grid,"1%");
setCellWidth(grid,"100%");
label = new Label(appConstants.quickItemMasterDescription());
add(label);
setCellHeight(label,"1%");
setCellWidth(label,"100%");
comments = new TextArea();
comments.setTitle(appConstants.quickItemPlayerNeverSee());
comments.setSize("100%","100%");
comments.addChangeHandler(changeListener);
add(comments);
setCellHeight(comments,"50");
setCellWidth(comments,"100%");
label = new Label(appConstants.quickItemPlayerMissuse());
add(label);
setCellHeight(label,"1%");
setCellWidth(label,"100%");
description = new TextArea();
description.addChangeHandler(changeListener);
description.setTitle(appConstants.qucikItemPlayerMissuseTitle());
description.setSize("100%","100%");
add(description);
setCellHeight(description,"50%");
setCellWidth(description,"100%");
objectListener = new ObjectListener(){
public void refreshAll() {
open(QuickViewObjectEditor.this.object);
}
public void select(ObjectBean object) {
}
public void unselect(ObjectBean object) {
}
public void update(ObjectBean object) {
if (object==QuickViewObjectEditor.this.object) {
open(QuickViewObjectEditor.this.object);
}
}
public void addNewObject(ObjectBean object) {
}
public void remove(ObjectBean object) {
}
public void showInfo(ObjectBean object) {
}
};
model.addObjectsListener(objectListener);
open(obj);
}
private void updateLocation(Object sender) {
if (sender==name) {
object.setName(name.getText().trim());
} else if (sender==number) {
object.setKey(number.getIntegerValue());
} else if (sender==comments) {
object.setMasterComments(comments.getText().trim());
} else if (sender==description) {
object.setDescription(description.getText().trim());
} else if (sender==uncoutable) {
object.setUncountable(uncoutable.getValue());
} else if (sender==image) {
object.setIcon(image.getSelectedPicture());
}
model.updateObject(object, objectListener);
}
public void open(ObjectBean object) {
this.object = object;
name.setText(object.getName());
number.setValue(object.getKey());
description.setText(object.getDescription());
comments.setText(object.getMasterComments());
uncoutable.setValue(object.isUncountable());
image.setSelectedPicture(object.getIcon());
}
public void close() {
model.removeObjectsListener(objectListener);
}
}