package ppj09.gwt.swapweb.client.gui;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.Label;
import com.gwtext.client.widgets.menu.Menu;
import ppj09.gwt.swapweb.client.SwapWeb;
import ppj09.gwt.swapweb.client.datatype.OfferSearchResult;
import ppj09.gwt.swapweb.client.datatype.SearchResult;
import ppj09.gwt.swapweb.client.serverInterface.SearchHandler;
import ppj09.gwt.swapweb.client.serverInterface.SearchHandlerAsync;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
public class OfferSearchResultView extends Composite implements SearchResultView {
private OfferSearchResult offerSearchResult;
public OfferSearchResultView(final SearchResult offerSearchResult) {
final SearchHandlerAsync sh = GWT.create(SearchHandler.class);
this.offerSearchResult = (OfferSearchResult) offerSearchResult;
Panel offerPanelWrapper = new Panel();
offerPanelWrapper.setBorder(false);
offerPanelWrapper.setMargins(0,30,0,5);
Panel offerPanel = new Panel();
offerPanel.setWidth(550);
if (this.offerSearchResult.isSwapConcluded()) {
offerPanel.setTitle("Abgeschlossener Swap mit " + this.offerSearchResult.getOfferedBy());
} else {
offerPanel.setTitle("Angebot von " + this.offerSearchResult.getOfferedBy());
}
offerPanel.setCollapsible(true);
offerPanel.setCollapsed(true);
//offerPanel.setWidth("90%");
for (SearchResult articleSearchResult : this.offerSearchResult.getArticles())
offerPanel.add((ArticleSearchResultView) articleSearchResult.getView());
//HorizontalPanel horizontalButtonPanel = new HorizontalPanel();
final ToolbarButton ablehnen = new ToolbarButton("ablehnen");
final ToolbarButton annehmen = new ToolbarButton("annehmen");
ablehnen.addListener(new ButtonListenerAdapter(){
public void onClick(Button button, EventObject e) {
sh.declineOffer(((OfferSearchResult)offerSearchResult).getId(),
new AsyncCallback<Integer>(){
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(Integer result) {
if (result==1)
System.out.println("Angebot erfolgreich abgelehnt.");
else
System.out.println("Fehlgeschlagen!");
annehmen.disable();
ablehnen.disable();
ablehnen.setText("Angebot wurde abgelehnt!");
}
});
}
});
annehmen.addListener(new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
sh.acceptOffer(((OfferSearchResult)offerSearchResult).getId(),
new AsyncCallback<Integer>(){
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(Integer result) {
if (result==1) {
System.out.println("Angebot erfolgreich angenommen.");
annehmen.disable();
annehmen.setText("Angebot erfolgreich angenommen!");
ablehnen.disable();
}
else
System.out.println("Fehlgeschlagen!");
}
});
}
});
/*
* Wenn der user sein eigenes Profil ansieht hat er die Möglichkeit
* Angebote anzunehmen und abzulehnen.
*/
if (this.offerSearchResult.getOfferedTo().equals(SwapWeb.getUserNameFromSession())) {
Toolbar buttonToolbar = new Toolbar();
if (this.offerSearchResult.isSwapConcluded()) {
final ToolbarButton bewertungAbgeben = new ToolbarButton("bewertung abgeben");
bewertungAbgeben.addListener(new ButtonListenerAdapter(){
public void onClick(Button button, EventObject e) {
new UserRateForm(((OfferSearchResult) offerSearchResult).getOfferedBy(),
((OfferSearchResult) offerSearchResult).getId(),
bewertungAbgeben);
}
});
buttonToolbar.addButton(bewertungAbgeben);
} else {
buttonToolbar.addButton(annehmen);
buttonToolbar.addButton(ablehnen);
//offerPanel.add(horizontalButtonPanel);
}
offerPanel.setBottomToolbar(buttonToolbar);
} else {
System.out.println(this.offerSearchResult.getOfferedTo() + " != " + SwapWeb.getUserNameFromSession());
}
offerPanel.doLayout();
offerPanelWrapper.add(offerPanel);
offerPanelWrapper.doLayout();
initWidget(offerPanelWrapper);
}
}