package ppj09.gwt.swapweb.client.gui; import ppj09.gwt.swapweb.client.SwapWeb; import ppj09.gwt.swapweb.client.datatype.Article; import ppj09.gwt.swapweb.client.datatype.Message; import ppj09.gwt.swapweb.client.datatype.User; import ppj09.gwt.swapweb.client.serverInterface.MessageHandler; import ppj09.gwt.swapweb.client.serverInterface.MessageHandlerAsync; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.gwtext.client.core.EventObject; import com.gwtext.client.core.Position; import com.gwtext.client.widgets.Button; import com.gwtext.client.widgets.MessageBox; import com.gwtext.client.widgets.Window; import com.gwtext.client.widgets.event.ButtonListenerAdapter; import com.gwtext.client.widgets.form.FormPanel; import com.gwtext.client.widgets.form.TextArea; import com.gwtext.client.widgets.form.TextField; import com.gwtext.client.widgets.layout.AnchorLayoutData; import com.gwtext.client.widgets.layout.FitLayout; public class MessageComposeView extends Composite { private Article article; private String receiver; private String topic; private int articleId; private User user; private TextField subject; private TextField sentTo; public MessageComposeView(Article article) { this.article = article; this.receiver = article.getUserName(); this.articleId = article.getArticleId(); createMessagePopupWindow(); subject.setValue("Artikel: " + article.getTitle() + " (ID: " + article.getArticleId() + ")"); subject.setDisabled(true); sentTo.setValue(article.getUserName()); sentTo.setDisabled(true); } public MessageComposeView(User user) { this.user = user; this.receiver = user.getUsername(); createMessagePopupWindow(); sentTo.setValue(user.getUsername()); sentTo.setDisabled(true); } public MessageComposeView() { createMessagePopupWindow(); } public MessageComposeView(String receiver, String topic) { this.receiver = receiver; this.topic = topic; createMessagePopupWindow(); sentTo.setValue(receiver); sentTo.disable(); subject.setValue("RE: "+ topic); } public void createMessagePopupWindow() { final Window messageWindow = new Window(); messageWindow.setTitle("Resize Me"); messageWindow.setWidth(500); messageWindow.setHeight(300); messageWindow.setMinWidth(300); messageWindow.setMinHeight(200); messageWindow.setLayout(new FitLayout()); messageWindow.setPaddings(5); messageWindow.setButtonAlign(Position.CENTER); FormPanel messagePanel = new FormPanel(); messagePanel.setMonitorValid(true); // anchor width by percentage sentTo = new TextField("Empfänger", "to"); sentTo.setAllowBlank(false); sentTo.setMinLength(5); sentTo.setMinLengthText("Es muss ein empfänger angegeben werden!!"); messagePanel.add(sentTo, new AnchorLayoutData("100%")); // anchor width by percentage subject = new TextField("Betreff", "subject"); subject.setAllowBlank(false); subject.setMinLength(2); subject.setMinLengthText("Betreff ist leer!"); messagePanel.add(subject, new AnchorLayoutData("100%")); final TextArea textArea = new TextArea("Betreff", "subject"); textArea.setAllowBlank(false); textArea.setHideLabel(true); // anchor width by percentage and height by raw adjustment // sets width to 100% and height to "remainder" height - 53px messagePanel.add(textArea, new AnchorLayoutData("100% -53")); Button send = new Button("Send"); send.addListener(new ButtonListenerAdapter() { public void onClick(Button button, EventObject e) { System.out.println("send me" + subject.getText()); Message mesg = new Message(); mesg.setArticleId(articleId); mesg.setAuthor(SwapWeb.getUserNameFromSession()); mesg.setMessage(textArea.getText()); mesg.setReceiver(sentTo.getText()); mesg.setTopic(subject.getText()); MessageHandlerAsync messageProxy = GWT .create(MessageHandler.class); messageProxy.sendMessage(mesg, new AsyncCallback<Integer>() { public void onFailure(Throwable caught) { // TODO Auto-generated method stub } public void onSuccess(Integer result) { // TODO Auto-generated method stub MessageBox.alert("Deine Nachricht wurde versand"); messageWindow.close(); } }); } }); send.setFormBind(true); messagePanel.addButton(send); Button cancel = new Button("Cancel"); cancel.addListener(new ButtonListenerAdapter() { public void onClick(Button button, EventObject e) { messageWindow.close(); } }); messagePanel.addButton(cancel); messageWindow.setCloseAction(Window.HIDE); messageWindow.setPlain(true); // strips all Ext styling for the component messagePanel.setBaseCls("x-plain"); messagePanel.setLabelWidth(55); messagePanel.setUrl("save-form.php"); messagePanel.setWidth(500); messagePanel.setHeight(300); messageWindow.add(messagePanel); messageWindow.show(); } }