package com.iambookmaster.client.quick;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.iambookmaster.client.beans.Picture;
import com.iambookmaster.client.beans.Sound;
import com.iambookmaster.client.locale.AppConstants;
import com.iambookmaster.client.locale.AppLocale;
import com.iambookmaster.client.model.ContentListener;
import com.iambookmaster.client.model.Model;
public class QuickViewSoundEditor extends VerticalPanel implements QuickViewWidget {
private static final AppConstants appConstants = AppLocale.getAppConstants();
private Sound object;
private Model model;
private ContentListener objectListener;
private TextBox name;
private TextBox value;
private Button preview;
private Button stop;
public QuickViewSoundEditor(Model mod, Sound obj) {
this.model = mod;
setSize("100%", "100%");
Label label = new Label(appConstants.quickSoundEditTitle());
add(label);
setCellHeight(label,"1%");
setCellWidth(label,"100%");
Grid grid = new Grid(2,2);
grid.setSize("100%", "100%");
ChangeListener changeListener = new ChangeListener() {
public void onChange(Widget sender) {
updateLocation(sender);
}
};
KeyboardListener keyboardListener = new KeyboardListener() {
public void onKeyDown(Widget sender, char keyCode, int modifiers) {
}
public void onKeyPress(Widget sender, char keyCode, int modifiers) {
if (keyCode==KeyboardListener.KEY_ENTER) {
updateLocation(sender);
} else if (keyCode==KeyboardListener.KEY_ESCAPE) {
open(object);
}
}
public void onKeyUp(Widget sender, char keyCode, int modifiers) {
}
};
name = new TextBox();
name.addChangeListener(changeListener);
name.addKeyboardListener(keyboardListener);
grid.setWidget(0,0,new Label(appConstants.quickSoundEditName()));
grid.setWidget(0,1,name);
value = new TextBox();
value.addChangeListener(changeListener);
value.addKeyboardListener(keyboardListener);
grid.setWidget(1,0,new Label(appConstants.quickSoundEditURL()));
grid.setWidget(1,1,value);
add(grid);
setCellHeight(grid,"1%");
setCellWidth(grid,"100%");
ClickListener clickListener = new ClickListener() {
public void onClick(Widget sender) {
if (sender==preview) {
model.playSound(value.getText().trim(),false);
} else if (sender==stop){
model.stopSound();
}
}
};
preview = new Button(appConstants.buttonPlay(),clickListener);
stop = new Button(appConstants.buttonStop(),clickListener);
HorizontalPanel horizontalPanel = new HorizontalPanel();
horizontalPanel.setSpacing(5);
horizontalPanel.add(preview);
horizontalPanel.add(stop);
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
HTML html = new HTML(" ");
add(html);
setCellHeight(html,"99%");
setCellWidth(html,"100%");
objectListener = new ContentListener(){
public void refreshAll() {
open(QuickViewSoundEditor.this.object);
}
public void select(Picture object) {
}
public void unselect(Picture object) {
}
public void update(Sound object) {
if (object==QuickViewSoundEditor.this.object) {
open(QuickViewSoundEditor.this.object);
}
}
public void remove(Picture object) {
}
public void addNew(Picture picture) {
}
public void addNew(Sound sound) {
}
public void remove(Sound sound) {
}
public void select(Sound sound) {
}
public void unselect(Sound sound) {
}
public void update(Picture picture) {
}
public void showInfo(Picture picture) {
}
public void showInfo(Sound sound) {
}
};
model.addContentListener(objectListener);
open(obj);
}
private void updateLocation(Widget sender) {
if (sender==name) {
object.setName(name.getText().trim());
} else if (sender==value) {
object.setUrl(value.getText().trim());
}
model.updateSound(object, objectListener);
}
public void open(Sound object) {
this.object = object;
name.setText(object.getName());
value.setText(object.getUrl());
}
public void close() {
model.removeContentListener(objectListener);
}
}