package org.gcube.portlets.user.speciesdiscovery.client.cluster; import java.util.List; import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery; 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.resources.Resources; import org.gcube.portlets.user.speciesdiscovery.shared.TaxonomyRow; 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.event.MenuEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Html; import com.extjs.gxt.ui.client.widget.TabItem; import com.extjs.gxt.ui.client.widget.TabPanel; import com.extjs.gxt.ui.client.widget.VerticalPanel; import com.extjs.gxt.ui.client.widget.button.Button; 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.ToolBar; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.FlexTable; /** * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * */ public class TablesForTaxonomyRow { private TabPanel tabPanel; private EventBus eventBus; private List parents = null; private TabItemForTaxonomyRow tabTR; // private HashMap hashTR = new HashMap(); public List getParents() { return parents; } public void setParents(List parents) { this.parents = parents; } public TablesForTaxonomyRow(TabPanel tabPanel2, EventBus eventBus2) { this.tabPanel = tabPanel2; this.eventBus = eventBus2; this.tabTR = new TabItemForTaxonomyRow(this, this.tabPanel, this.eventBus); } /** * * @param taxonomy * @param isNewTab - set true if has been clicked a classification link, or false otherwise * @return */ public VerticalPanel getPanelClassificationForTaxonomy(TaxonomyRow taxonomy, String dataSource, boolean isNewTab){ // hashTR.put(taxonomy.getIdToString(),tabTR); tabTR.setCurrentTaxonomy(taxonomy); //DEBUG System.out.println("in getPanelClassificationForTaxonomy..."); System.out.println("principal "+taxonomy.getName() + " id " + taxonomy.getServiceId()+" parents"); int i=0; for (TaxonomyRow tax : taxonomy.getParents()) { System.out.println(++i + " parent name " + tax.getName()); } return tabTR.getPanelClassificationForTaxonomy(taxonomy, dataSource, isNewTab); } /** * * @param row * @param isNewTab * @param dataSource * @param parentIndex * @return */ public FlexTable getHTMLTableForTaxonomyWithRef(final TaxonomyRow row,boolean isNewTab, final String dataSource) { return tabTR.getHTMLTableForTaxonomyWithRef(row, isNewTab, dataSource); } protected ContentPanel getPanelForTaxonomy(TaxonomyRow taxon, String dataSource, boolean isNewTab) { ContentPanel contentPanel = new ContentPanel(); // contentPanel.setLayout(new FitLayout()); contentPanel.setHeaderVisible(false); contentPanel.setBodyBorder(false); contentPanel.setStyleAttribute("padding", "5px"); contentPanel.setStyleAttribute("margin", "5px"); VerticalPanel verticaPanel = new VerticalPanel(); verticaPanel.setSize("100%", "100%"); contentPanel.add(new Html("

" + taxon.getName() + "


")); contentPanel.add(new Html("

Scientific Classification


")); contentPanel.add(getPanelClassificationForTaxonomy(taxon, dataSource, isNewTab)); contentPanel.add(getHTMLTableForTaxonomyWithRef(taxon, isNewTab, dataSource)); return contentPanel; } protected void addTabItem(final TaxonomyRow taxon, final String dataSource){ this.tabTR = new TabItemForTaxonomyRow(this, this.tabPanel, this.eventBus); TabItem tabItem = new TabItem(); // tabItem.setLayout(new FitLayout()); tabItem.setScrollMode(Scroll.AUTO); tabItem.setClosable(true); ContentPanel cp = new ContentPanel(); cp.setHeaderVisible(false); ToolBar toolbar = new ToolBar(); Button btnSaveTaxonomyChildren = new Button(ConstantsSpeciesDiscovery.SAVE_TAXONOMY_CHILDREN); Menu formatSubMenu = new Menu(); btnSaveTaxonomyChildren.setMenu(formatSubMenu); btnSaveTaxonomyChildren.setScale(ButtonScale.SMALL); btnSaveTaxonomyChildren.setIconAlign(IconAlign.TOP); btnSaveTaxonomyChildren.setIcon(AbstractImagePrototype.create(Resources.INSTANCE.getSaveProducts())); btnSaveTaxonomyChildren.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVE_TAXONOMY_CHILDREN, ConstantsSpeciesDiscovery.SAVES_TAXONOMY_CHILDREN_FROM_RESULT)); MenuItem darwinCoreArchiveItem = new MenuItem(ConstantsSpeciesDiscovery.DARWIN_CORE_ARCHIVE); darwinCoreArchiveItem.setToolTip(new ToolTipConfig(ConstantsSpeciesDiscovery.SAVES_IN_DARWIN_CORE_ARCHIVE_FORMAT)); darwinCoreArchiveItem.addSelectionListener(new SelectionListener() { @Override public void componentSelected(MenuEvent ce) { eventBus.fireEvent(new CreateTaxonomyJobEvent(taxon, dataSource, TaxonomyJobType.BYCHILDREN)); } }); formatSubMenu.add(darwinCoreArchiveItem); toolbar.add(btnSaveTaxonomyChildren); cp.setTopComponent(toolbar); cp.setBodyBorder(false); // cp.setScrollMode(Scroll.AUTOY); String tabName = taxon.getName() + " ("+ dataSource + ")"; tabItem.setText(tabName); cp.add(getPanelForTaxonomy(taxon, dataSource, true)); tabItem.add(cp); tabPanel.add(tabItem); } }