package com.akjava.gwt.hangout.test2.client; import com.akjava.gwt.lib.hangouts.client.Hangout; import com.akjava.gwt.lib.hangouts.client.Participant; import com.akjava.gwt.lib.hangouts.client.av.Av; import com.akjava.gwt.lib.hangouts.client.av.effects.AudioResource; import com.akjava.gwt.lib.hangouts.client.av.effects.Effects; import com.akjava.gwt.lib.hangouts.client.av.effects.Sound; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class AudioTest extends VerticalPanel{ private VerticalPanel container; private Sound sound; public AudioTest(){ HorizontalPanel input=new HorizontalPanel(); add(input); final TextBox audioUrl=new TextBox(); audioUrl.setWidth("400px"); input.add(audioUrl); Button update=new Button("set audio"); input.add(update); final CheckBox loopCheck=new CheckBox("loop"); add(loopCheck); update.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { updateList(audioUrl.getText(),loopCheck.getValue()); } }); container=new VerticalPanel(); add(container); } protected void updateList(String url,boolean loop) { container.clear(); AudioResource resources=Effects.createAudioResource(url); sound = resources.createSound(AudioResource.params().loop(loop)); HorizontalPanel controler=new HorizontalPanel(); container.add(controler); Button play=new Button("Play"); play.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { sound.play(); } }); controler.add(play); Button stop=new Button("Stop"); stop.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { sound.stop(); } }); controler.add(stop); container.add(new Label(sound.getAudioResource().getUrl())); container.add(new Label("loop:"+sound.isLooped())); container.add(new Label("volume:"+sound.getVolume())); } public class AvatorInfo extends HorizontalPanel{ private String participantId; private Image img; public AvatorInfo(String p){ this.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE); this.participantId=p; Label nameLabel=new Label(); nameLabel.setWidth("100px"); add(nameLabel); Participant participant=Hangout.getParticipantById(participantId); nameLabel.setText(participant.getPerson().getDisplayName()); Button edit=new Button("Edit"); add(edit); edit.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String url=Av.getAvatar(participantId); String newUrl=Window.prompt("image url", url); if(newUrl!=null){ Av.setAvatar(participantId, newUrl); updateImage(); } } }); Button clear=new Button("Clear"); add(clear); clear.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Av.clearAvatar(participantId); updateImage(); } }); img=new Image(); img.setWidth("100px"); add(img); updateImage(); } private void updateImage(){ String url=Av.getAvatar(participantId); Test2.log("image-url:"+url); if(url!=null){ img.setUrl(url); img.setVisible(true); }else{ img.setVisible(false); } } } }