package project.client.gadgets; import java.util.Map; import project.client.ServletRpc; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class GadgetCrawler extends Composite { private String STYLE_MAIN = "Crawler"; private String STYLE_PANEL = "panel"; private String STYLE_NAME = "name"; private String STYLE_ACTIVE = "active"; private String STYLE_INACTIVE = "inactive"; private String STYLE_LABEL_NAME = "label"; private String STYLE_LABEL = "label-info"; private String STYLE_EDIT_LABEL = "edit"; private Panel mainPanel = null; private String crawlerName = null; private boolean active = false; public GadgetCrawler (String name) { mainPanel = new VerticalPanel (); mainPanel.setStyleName(STYLE_MAIN); initWidget(mainPanel); this.crawlerName = name; ServletRpc.getRpcInterface() .getCrawlers(this.crawlerName, new AsyncCallback<Map<String,Map<String,String>>> () { public void onFailure (Throwable t) { Window.alert("Exception : " + t.getMessage()); } public void onSuccess (Map<String,Map<String, String>> result) { Map<String,String> map = result.get(crawlerName); if (map.get("status").equals("true")) active = true; else active = false; // // mainPanel.clear(); Panel hPanel = null; Label lbl = null; hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label(map.get("name")); lbl.addStyleName(STYLE_NAME); hPanel.add(lbl); final Label lblActive = new Label (); if (active) { lblActive.setText("(active)"); lblActive.addStyleName(STYLE_ACTIVE); } else { lblActive.setText("(inactive)"); lblActive.addStyleName(STYLE_INACTIVE); } lblActive.addClickListener(new ClickListener () { public void onClick (Widget w) { if (active) lblActive.removeStyleName(STYLE_ACTIVE); else lblActive.removeStyleName(STYLE_INACTIVE); active = !active; if (active) lblActive.addStyleName(STYLE_ACTIVE); else lblActive.addStyleName(STYLE_INACTIVE); ServletRpc.getRpcInterface().activateCrawler(crawlerName, active, new AsyncCallback<String> () { public void onFailure (Throwable t) { Window.alert("Exception : " + t.getMessage()); } public void onSuccess (String result) { } }); } }); hPanel.add(lblActive); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label("Type: "); lbl.addStyleName(STYLE_LABEL_NAME); hPanel.add(lbl); lbl = new Label(map.get("type")); lbl.addStyleName(STYLE_LABEL); hPanel.add(lbl); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label("Url: "); lbl.addStyleName(STYLE_LABEL_NAME); hPanel.add(lbl); lbl = new Label(map.get("url")); lbl.addStyleName(STYLE_LABEL); hPanel.add(lbl); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label("Indexing (current / end): "); lbl.addStyleName(STYLE_LABEL_NAME); hPanel.add(lbl); lbl = new Label(map.get("current-page") + " / " + map.get("end-page")); lbl.addStyleName(STYLE_LABEL); hPanel.add(lbl); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label("Sleep (per page / per thread): "); lbl.addStyleName(STYLE_LABEL_NAME); hPanel.add(lbl); lbl = new Label(map.get("sleep-per-page") + " / " + map.get("thread.sleep-per-thread")); lbl.addStyleName(STYLE_LABEL); hPanel.add(lbl); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label("Productivity: "); lbl.addStyleName(STYLE_LABEL_NAME); hPanel.add(lbl); String strSleep = map.get("thread.sleep-per-thread"); int avgSleep = 0; if (strSleep.contains("-")) { String s1 = strSleep.substring(0, strSleep.indexOf('-')); String s2 = strSleep.substring(strSleep.indexOf('-') + 1); avgSleep = (Integer.parseInt(s1) + Integer.parseInt(s2)) / 2; } else { avgSleep = Integer.parseInt(strSleep); } lbl = new Label("" + (3600 / avgSleep) + " threads / hour"); lbl.addStyleName(STYLE_LABEL); hPanel.add(lbl); mainPanel.add(hPanel); hPanel = new HorizontalPanel (); hPanel.addStyleName(STYLE_PANEL); lbl = new Label ("edit this crawler"); lbl.addStyleName(STYLE_EDIT_LABEL); lbl.addClickListener(new ClickListener () { public void onClick (Widget w) { //TODO relay to edit } }); hPanel.add(lbl); mainPanel.add(hPanel); } }); } }