This repository has been archived on 2024-05-07. You can view files and clone it, but cannot push or open issues or pull requests.
species-discovery/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/windowdetail/ViewDetailsWindow.java

767 lines
27 KiB
Java

package org.gcube.portlets.user.speciesdiscovery.client.windowdetail;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.client.SearchController;
import org.gcube.portlets.user.speciesdiscovery.client.SpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.client.event.CreateGisLayerJobEvent;
import org.gcube.portlets.user.speciesdiscovery.client.event.CreateOccurrenceJobEvent;
import org.gcube.portlets.user.speciesdiscovery.client.event.CreateTaxonomyJobEvent;
import org.gcube.portlets.user.speciesdiscovery.client.event.CreateTaxonomyJobEvent.TaxonomyJobType;
import org.gcube.portlets.user.speciesdiscovery.client.event.SearchEvent;
import org.gcube.portlets.user.speciesdiscovery.client.gridview.OccurrenceJobGridManager;
import org.gcube.portlets.user.speciesdiscovery.client.resources.Resources;
import org.gcube.portlets.user.speciesdiscovery.client.util.GridField;
import org.gcube.portlets.user.speciesdiscovery.client.util.OccurencesGridFields;
import org.gcube.portlets.user.speciesdiscovery.client.util.Util;
import org.gcube.portlets.user.speciesdiscovery.client.util.stream.DataSourceManager;
import org.gcube.portlets.user.speciesdiscovery.client.util.stream.StreamPagingLoader;
import org.gcube.portlets.user.speciesdiscovery.client.util.stream.StreamPagingToolBar;
import org.gcube.portlets.user.speciesdiscovery.shared.OccurrencesSaveEnum;
import org.gcube.portlets.user.speciesdiscovery.shared.OccurrencesStatus;
import org.gcube.portlets.user.speciesdiscovery.shared.SaveFileFormat;
import org.gcube.portlets.user.speciesdiscovery.shared.SearchType;
import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability;
import com.allen_sauer.gwt.log.client.Log;
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.IconAlign;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.BoxComponentEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.event.WindowListener;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.layout.FitData;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class ViewDetailsWindow extends Window {
protected final ViewDetailsWindow INSTANCE;
protected StreamPagingLoader loader;
protected int count = 0;
// private int numberOfSelectedRow = 0;
private ContentPanel container = new ContentPanel();
private TabPanel tabPanel = new TabPanel();
private TabItem tabItemOccrs = new TabItem(ConstantsSpeciesDiscovery.OCCURRENCEPOINTS);
private TabItem tabItemDetails = new TabItem(ConstantsSpeciesDiscovery.DETAILS);
private ContentPanel panelDetails = new ContentPanel();
private ContentPanel panelOccurrences = new ContentPanel();
private int width = 900;
private int height = 600;
private int widthPanelOccurrences = 1200;
private int heightPanelOccurrences = height-70;
public final static String FIVEPX = "5px";
// private SearchController searchController;
private ToolBar toolbarOccurrences;
private DataSourceManager dataSourceManager;
private ToolBar toolbarTaxonomy;
private boolean isSearchByCommonName = false;
private Timer timerGetCountOfOccurrences;
// private List<String> lastlistDataSourceFound = null;
private DetailsFiller detailsFiller;
private SearchEvent lastSearchEvent;
public ViewDetailsWindow(SearchEvent lastSearchEvent) {
INSTANCE = this;
this.setCollapsible(false);
this.setMaximizable(true);
// this.setHideCollapseTool(true);
this.dataSourceManager = DataSourceManager.getInstance();
this.lastSearchEvent = lastSearchEvent;
if(lastSearchEvent.getType().equals(SearchType.BY_COMMON_NAME))
isSearchByCommonName = true;
container.setHeaderVisible(false);
container.setBodyBorder(false);
container.setLayout(new FitLayout());
setSize(width, height);
setPlain(true);
setModal(false);
setBlinkModal(false);
setHeading("View Details");
setLayout(new FitLayout());
addWindowListener(new WindowListener() {
@Override
public void windowHide(WindowEvent we) {
//loader is null if items are taxonomy
if(loader!=null)
loader.reset();
if(timerGetCountOfOccurrences!=null)
stopTimerGetCountOfOccurrences(500);
}
});
addListener(Events.Resize, new Listener<BoxComponentEvent>() {
public void handleEvent(BoxComponentEvent event) {
windowResize(INSTANCE.getWidth(), INSTANCE.getHeight());
}
});
tabPanel = new TabPanel();
tabPanel.setBorders(false);
if(lastSearchEvent.getResultType().getName().compareTo(SpeciesCapability.RESULTITEM.getName())==0){
this.toolbarOccurrences = createToolbarOccurrences();
createTabItemDisplayResultItem();
}
else if(lastSearchEvent.getResultType().getName().compareTo(SpeciesCapability.TAXONOMYITEM.getName())==0){
this.toolbarTaxonomy = createToolbarTaxonomy();
cretateTabItemDisplayTaxonomyItem();
}
container.add(tabPanel,new FitData(4));
add(container);
show();
}
protected void windowResize(int width,int height){
if(width>widthPanelOccurrences)
panelOccurrences.setWidth(width-20);
else
panelOccurrences.setWidth(widthPanelOccurrences);
if(height>heightPanelOccurrences)
panelOccurrences.setHeight(height-70);
else
panelOccurrences.setHeight(heightPanelOccurrences);
}
private void cretateTabItemDisplayTaxonomyItem() {
tabItemDetails.setScrollMode(Scroll.AUTO);
ContentPanel cpDetailsTaxonomy = new ContentPanel();
cpDetailsTaxonomy.setHeaderVisible(false);
cpDetailsTaxonomy.setBodyBorder(false);
cpDetailsTaxonomy.add(panelDetails);
cpDetailsTaxonomy.setTopComponent(this.toolbarTaxonomy);
tabItemDetails.add(cpDetailsTaxonomy);
panelDetails.setHeaderVisible(false);
panelDetails.setBodyBorder(false);
// panelDetails.setStyleAttribute("padding", FIVEPX);
panelDetails.setStyleAttribute("padding-left", FIVEPX);
panelDetails.setStyleAttribute("padding-right", FIVEPX);
panelDetails.setStyleAttribute("padding-bottom", FIVEPX);
panelDetails.setStyleAttribute("margin-left", FIVEPX);
panelDetails.setStyleAttribute("margin-right", FIVEPX);
panelDetails.setStyleAttribute("margin-bottom", FIVEPX);
// panelDetails.setTopComponent(this.toolbarTaxonomy);
tabItemDetails.add(panelDetails);
setFocusWidget(getButtonBar().getItem(0));
tabItemDetails.mask("Loading...", ConstantsSpeciesDiscovery.LOADINGSTYLE);
enableToolbarTaxonomy(false);
loadStructuresAndFillingPage(SpeciesCapability.TAXONOMYITEM);
tabPanel.add(tabItemDetails);
}
private void createTabItemDisplayResultItem() {
tabItemOccrs.setToolTip(new ToolTipConfig("Show Occurrences", "Shows occurences points from selected results."));
tabItemDetails.setScrollMode(Scroll.AUTO);
panelDetails.setHeaderVisible(false);
panelDetails.setBodyBorder(false);
panelDetails.setStyleAttribute("padding", FIVEPX);
panelDetails.setStyleAttribute("margin", FIVEPX);
// panelDetails.add(createButtonSaveAsHtml());
panelOccurrences.setHeaderVisible(false);
panelOccurrences.setBodyBorder(false);
// panelOccurences.setStyleAttribute("padding", FIVEPX);
panelOccurrences.setScrollMode(Scroll.AUTO);
panelOccurrences.setSize(widthPanelOccurrences, heightPanelOccurrences);
panelOccurrences.setLayout(new FitLayout());
panelOccurrences.setTopComponent(this.toolbarOccurrences);
tabItemDetails.add(panelDetails);
tabItemOccrs.add(panelOccurrences);
setFocusWidget(getButtonBar().getItem(0));
createOccurrencesWindow();
tabItemDetails.mask("Loading...",ConstantsSpeciesDiscovery.LOADINGSTYLE);
enableToolbarOccurrence(false);
// loadNumberOfSelectedRowAndDetailsFilling(SpeciesCapability.RESULTITEM);
loadStructuresAndFillingPage(SpeciesCapability.RESULTITEM);
tabPanel.add(tabItemDetails);
tabPanel.add(tabItemOccrs);
}
private void enableToolbarOccurrence(boolean bool){
toolbarOccurrences.setEnabled(bool);
}
private void enableToolbarTaxonomy(boolean bool){
toolbarTaxonomy.setEnabled(bool);
}
public void loadStructuresAndFillingPage(final SpeciesCapability capability){
if(capability.getName().compareTo(SpeciesCapability.RESULTITEM.getName())==0){
ResultRowDetailsFiller resultRowFiller = new ResultRowDetailsFiller(tabItemDetails, toolbarOccurrences, panelDetails, lastSearchEvent);
resultRowFiller.loadStructuresAndFillingPage();
detailsFiller = resultRowFiller;
}else if(capability.getName().compareTo(SpeciesCapability.TAXONOMYITEM.getName())==0){
TaxonomyRowDetailsFiller taxonomyFiller = new TaxonomyRowDetailsFiller(tabItemDetails, toolbarTaxonomy, tabPanel, panelDetails, lastSearchEvent);
taxonomyFiller.loadStructuresAndFillingPage();
detailsFiller = taxonomyFiller;
}
}
public ToolBar createToolbarTaxonomy(){
ToolBar toolbar = new ToolBar();
Button btnTaxonomyMenu = new Button(ConstantsSpeciesDiscovery.SAVE_TAXONOMY_ITEMS);
Menu formatSubMenu = new Menu();
btnTaxonomyMenu.setMenu(formatSubMenu);
btnTaxonomyMenu.setScale(ButtonScale.SMALL);
btnTaxonomyMenu.setIconAlign(IconAlign.TOP);
btnTaxonomyMenu.setIcon(AbstractImagePrototype.create(Resources.INSTANCE.getSaveProducts()));
btnTaxonomyMenu.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVE_TAXONOMY_ITEMS, "Save taxonomy items from selected results."));
// btnOccurrencesMenu.addSelectionListener(new SelectionListener<ButtonEvent>() {
//
// @Override
// public void componentSelected(ButtonEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.TAXONOMY_ITEM, SaveFileFormat.DARWIN_CORE_ARCHIVE, count, null));
//
// }
// });
MenuItem darwinCoreArchiveItem = new MenuItem(ConstantsSpeciesDiscovery.DARWIN_CORE_ARCHIVE);
darwinCoreArchiveItem.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVES_IN_DARWIN_CORE_ARCHIVE_FORMAT));
darwinCoreArchiveItem.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
SearchController.eventBus.fireEvent(new CreateTaxonomyJobEvent(TaxonomyJobType.BYIDS));
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.TAXONOMY_ITEM, SaveFileFormat.DARWIN_CORE_ARCHIVE, count, null));
}
});
formatSubMenu.add(darwinCoreArchiveItem);
toolbar.add(btnTaxonomyMenu);
return toolbar;
}
public ToolBar createToolbarOccurrences(){
ToolBar toolbar = new ToolBar();
Button btnShowInGisViewer = new Button(ConstantsSpeciesDiscovery.CREATE_GIS_LAYER_TITLE);
btnShowInGisViewer.setIcon(AbstractImagePrototype.create(Resources.INSTANCE.getGisProducts()));
btnShowInGisViewer.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.CREATE_GIS_LAYER_TITLE, ConstantsSpeciesDiscovery.CREATE_GIS_LAYER_TEXT));
btnShowInGisViewer.setScale(ButtonScale.SMALL);
btnShowInGisViewer.setIconAlign(IconAlign.TOP);
btnShowInGisViewer.setArrowAlign(ButtonArrowAlign.BOTTOM);
btnShowInGisViewer.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
SearchController.eventBus.fireEvent(new CreateGisLayerJobEvent(lastSearchEvent.getSearchTerm() + " occurrences Layer", "Gis Layer generated from SPD Portlet by gCube Framework", count));
}
});
Button btnOccurrencesMenu = new Button(ConstantsSpeciesDiscovery.SAVE_OCCURRENCES);
Menu formatSubMenu = new Menu();
btnOccurrencesMenu.setMenu(formatSubMenu);
btnOccurrencesMenu.setScale(ButtonScale.SMALL);
btnOccurrencesMenu.setIconAlign(IconAlign.TOP);
btnOccurrencesMenu.setIcon(AbstractImagePrototype.create(Resources.INSTANCE.getSaveProducts()));
btnOccurrencesMenu.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVE_OCCURRENCES, ConstantsSpeciesDiscovery.SAVE_OCCURENCES_POINTS_FROM_SELECTED_RESULTS));
MenuItem csvFormatItem = new MenuItem(ConstantsSpeciesDiscovery.CSV);
csvFormatItem.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVES_IN_CSV_FILE_FORMAT));
csvFormatItem.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD, detailsFiller.getLastlistDataSourceFound(), searchTerm,false));
}
});
formatSubMenu.add(csvFormatItem);
Menu csvTypeMenu = new Menu();
MenuItem csvStandard = new MenuItem(ConstantsSpeciesDiscovery.PLAIN_CSV);
csvStandard.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD, detailsFiller.getLastlistDataSourceFound(), searchTerm,false));
}
});
MenuItem csvStandardByDataSource = new MenuItem(ConstantsSpeciesDiscovery.PLAIN_CSV_BY_DATA_SOURCE);
csvStandardByDataSource.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.CSV, count, OccurrencesSaveEnum.STANDARD, detailsFiller.getLastlistDataSourceFound(), searchTerm,true));
}
});
MenuItem csvOpenModeller = new MenuItem(ConstantsSpeciesDiscovery.OPEN_MODELLER);
csvOpenModeller.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.CSV, count, OccurrencesSaveEnum.OPENMODELLER));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.CSV, count, OccurrencesSaveEnum.OPENMODELLER, detailsFiller.getLastlistDataSourceFound(), searchTerm,false));
}
});
MenuItem csvOpenModellerByDataSource = new MenuItem(ConstantsSpeciesDiscovery.OPEN_MODELLER_BY_DATA_SOURCE);
csvOpenModellerByDataSource.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.CSV, count, OccurrencesSaveEnum.OPENMODELLER));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.CSV, count, OccurrencesSaveEnum.OPENMODELLER, detailsFiller.getLastlistDataSourceFound(), searchTerm,true));
}
});
csvTypeMenu.add(csvStandard);
csvTypeMenu.add(csvStandardByDataSource);
csvTypeMenu.add(csvOpenModeller);
csvTypeMenu.add(csvOpenModellerByDataSource);
csvFormatItem.setSubMenu(csvTypeMenu);
MenuItem darwinCoreFormatItem = new MenuItem(ConstantsSpeciesDiscovery.DARWIN_CORE);
darwinCoreFormatItem.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVES_IN_DARWIN_CORE_FILE_FORMAT));
darwinCoreFormatItem.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
// searchController.getEventBus().fireEvent(new SaveItemsEvent(SearchResultType.OCCURRENCE_POINT, SaveFileFormat.DARWIN_CORE, count, null));
String searchTerm = OccurrenceJobGridManager.getSearchTermBySearchType(isSearchByCommonName, lastSearchEvent.getSearchTerm());
SearchController.eventBus.fireEvent(new CreateOccurrenceJobEvent(SaveFileFormat.DARWIN_CORE, count, null, detailsFiller.getLastlistDataSourceFound(), searchTerm, false));
}
});
formatSubMenu.add(darwinCoreFormatItem);
toolbar.add(btnOccurrencesMenu);
toolbar.add(new SeparatorToolItem());
toolbar.add(btnShowInGisViewer);
return toolbar;
}
protected void initLoader()
{
loader = new StreamPagingLoader(ConstantsSpeciesDiscovery.PAGE_SIZE);
// loader = new StreamPagingLoader(PAGE_SIZE);
loader.setDataSource(dataSourceManager.getDataSourceByResultType(SpeciesCapability.OCCURRENCESPOINTS));
}
public void createOccurrencesWindow()
{
List<ColumnConfig> config = new ArrayList<ColumnConfig>();
for (GridField field:OccurencesGridFields.values()) config.add(Util.createColumnConfig(field, 150));
final ColumnModel cm = new ColumnModel(config);
initLoader();
Grid<ModelData> grid = new Grid<ModelData>(loader.getStore(), cm);
grid.setBorders(true);
grid.getView().setEmptyText(ConstantsSpeciesDiscovery.NORESULTS);
StreamPagingToolBar toolBar = new StreamPagingToolBar();
toolBar.bind(loader);
panelOccurrences.setBottomComponent(toolBar);
panelOccurrences.add(grid);
}
public void loadOccurences()
{
Log.trace("Loading occurrences");
count = 0;
dataSourceManager.setExpectedOccurencePoints(count);
SpeciesDiscovery.taxonomySearchService.retrieveOccurencesFromSelection(new AsyncCallback<Integer>() {
@Override
public void onSuccess(Integer expectedPoints) {
Log.trace("Expected points: "+expectedPoints);
dataSourceManager.setExpectedOccurencePoints(expectedPoints);
count = expectedPoints.intValue();
String items = count>0?"items":"item";
tabItemOccrs.setText(tabItemOccrs.getText() + " ("+count +" "+ items+")");
dataSourceManager.setExpectedOccurencePoints(count);
// count = expectedPoints;
loader.startLoading(true);
pollingGetCountOfOcccurrences(count);
}
@Override
public void onFailure(Throwable caught) {
Info.display("Error getting occurrences", "Error getting occurrences, retry");
Log.trace("Error getting occurrences", caught);
}
});
}
private void pollingGetCountOfOcccurrences(final int allItems){
toolbarOccurrences.add(new SeparatorToolItem());
final Label labelLoading = new Label("loading 0 of "+allItems);
labelLoading.setStyleAttribute("paddingLeft", "20px");
labelLoading.setData("count", new Integer(0));
toolbarOccurrences.add(labelLoading);
timerGetCountOfOccurrences = new Timer() {
@Override
public void run() {
SpeciesDiscovery.taxonomySearchService.getCountOfOccurrencesBatch(new AsyncCallback<OccurrencesStatus>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error on loading", "An error occurred on count of occurrence point, retry." +caught.getMessage());
}
@Override
public void onSuccess(OccurrencesStatus result) {
int currentValue = ((Integer) labelLoading.getData("count")).intValue();
if(result.getSize()>currentValue && result.getSize()<allItems)
labelLoading.setText("loading "+result.getSize()+ " of " + allItems + " and counting...");
if(result.getSize()==allItems){
setLabelLoadedText(result.getSize(), allItems);
stopTimerGetCountOfOccurrences(1000);
}
//case stream completed
if(result.isResultEOF()){
Log.trace("EOF of occurrences is true");
setLabelLoadedText(result.getSize(), allItems);
stopTimerGetCountOfOccurrences(2000);
}
labelLoading.setData("count", result.getSize());
Log.trace("loading " + result.getSize() + " occurrences" );
toolbarOccurrences.layout();
}
private void setLabelLoadedText(int size, int allItems) {
String msg = "loaded "+size+ " of " + allItems;
if(size<allItems){
int difference = allItems - size;
msg+= " (" + difference + " duplicate or not available occurrence points were discarded)";
}
labelLoading.setText(msg);
}
});
}
};
// Schedule the timer to run once in 1 seconds.
timerGetCountOfOccurrences.scheduleRepeating(ConstantsSpeciesDiscovery.SCHEDULE_MILLIS_COUNT_OCCURRENCES);
// timerGetCountOfOccurrences.run();
Log.trace("run timerGetCountOfOccurrences");
}
private void stopTimerGetCountOfOccurrences(int delay) {
Log.trace("stop timerGetCountOfOccurrences");
Timer timer = new Timer() {
@Override
public void run() {
// System.out.println("cancel cancel cancel");
timerGetCountOfOccurrences.cancel();
}
};
timer.schedule(delay);
}
/**
* {@inheritDoc}
*/
@Override
protected void onHide() {
super.onHide();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
if(loader!=null){
loader.reset();
SpeciesDiscovery.taxonomySearchService.stopRetrievingOccurrences(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
Log.error("An error occurred in stopRetrievingOccurrences: " + caught);
}
@Override
public void onSuccess(Void result) {
Log.trace("Stop retrieving Occurrences: OK");
}
});
}
}
});
}
// //TEST
// public Button createButtonSaveAsHtml(){
//
// ToolBar toolbar = new ToolBar();
//
// Button btnExportAsHtml = new Button("Export As Html");
// btnExportAsHtml.setIcon(AbstractImagePrototype.create(Resources.INSTANCE.getSaveProducts()));
// btnExportAsHtml.setToolTip(new ToolTipConfig("Show in Gis Viewer", "Show occurences points from selected results in a Gis Viewer Map."));
// btnExportAsHtml.setScale(ButtonScale.SMALL);
// btnExportAsHtml.setIconAlign(IconAlign.TOP);
// btnExportAsHtml.setArrowAlign(ButtonArrowAlign.BOTTOM);
// btnExportAsHtml.addSelectionListener(new SelectionListener<ButtonEvent>() {
//
// @Override
// public void componentSelected(ButtonEvent ce) {
//// searchController.getEventBus().fireEvent(new ShowOccurrencesMapEvent());
//
// String html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html>" +
// "<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">" +
// "<style type=\"text/css\">" +getCssStyles() +
// "</style>" +
// "<title>"+lastSearchEvent.getSearchTerm()+"</title>" +
// "</head>" +
// " <body>"+panelDetails.getElement().getInnerHTML()+"</body>" +
// "</html> ";
//
//// System.out.println(html);
// }
// });
//
// return btnExportAsHtml;
//
// }
private String getCssStyles(){
return ".button-hyperlink .x-btn-text {" +
"cursor: pointer !important;" +
"cursor: hand !important;" +
"border: none !important;" +
"/* Disable the button-style */" +
"background-color: transparent !important;" +
"background: none !important;" +
"background-image: none !important;" +
"padding: 0px !important;" +
"color: #4784C3 !important;" +
"font-size: 10px;" +
"font-family: Serif, \"Times New Roman\", Georgia,;" +
"text-decoration: underline !important;" +
"}" +
".button-hyperlink .x-btn-tl,.button-hyperlink.x-btn-tr,.button-hyperlink " +
".x-btn-tc,.button-hyperlink .x-btn-ml,.button-hyperlink .x-btn-mr,.button-hyperlink " +
".x-btn-mc,.button-hyperlink .x-btn-bl,.button-hyperlink .x-btn-br,.button-hyperlink .x-btn-bc" +
"{" +
"background-image: none !important;" +
"background: none !important;" +
"}" +
".button-hyperlink .x-btn-small .x-btn-mr, .button-hyperlink .x-btn-small .x-btn-ml,.button-hyperlink .x-btn-small .x-btn-mc," +
".button-hyperlink .x-btn-small .x-btn-br,.button-hyperlink .x-btn-small .x-btn-bl,.button-hyperlink .x-btn-small .x-btn-bc," +
".button-hyperlink .x-btn-small .x-btn-tc,.button-hyperlink .x-btn-small .x-btn-tr,.button-hyperlink .x-btn-small .x-btn-tl" +
"{" +
"background-image: none !important;" +
"background: none !important;" +
"}" +
".button-hyperlink .x-btn-tl i,.button-hyperlink .x-btn-tr i,.button-hyperlink .x-btn-tc i,.button-hyperlink .x-btn-ml i,.button-hyperlink .x-btn-mr i,.button-hyperlink .x-btn-mc i,.button-hyperlink .x-btn-bl i,.button-hyperlink .x-btn-br i,.button-hyperlink .x-btn-bc i" +
"{" +
"font-size: 0px;" +
"}" +
"table.imagetable {" +
"font-family: verdana,arial,sans-serif;" +
"font-size:10px;" +
"border: 1px solid #e3e3e3;" +
"background-color: #f2f2f2;" +
"width: 100%;" +
"border-radius: 6px;" +
"-webkit-border-radius: 6px;" +
"-moz-border-radius: 6px;" +
"}" +
"table.imagetable .title {" +
"background:#b5cfd2;" +
"border-width: 1px;" +
"width: 30%;" +
"padding: 8px;" +
"border-style: solid;" +
"border-color: #999999;" +
"}" +
"table.imagetable td {" +
"background:#dcddc0;" +
"border-width: 1px;" +
"padding: 8px;" +
"border-style: solid;" +
"border-color: #999999;" +
"}" +
"table.imagetable th {" +
"height: 35px;" +
"font-weight: bold;" +
"font-size: 12px;" +
"}";
}
}