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/advancedsearch/UnfoldFilter.java

174 lines
4.5 KiB
Java

/**
*
*/
package org.gcube.portlets.user.speciesdiscovery.client.advancedsearch;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceCapability;
import org.gcube.portlets.user.speciesdiscovery.shared.DataSourceModel;
import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability;
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Jul 16, 2013
*
*/
public class UnfoldFilter implements AdvancedSearchPanelInterface{
private Button btnResetAllFilters = new Button("Reset Filters");
private ContentPanel unfoldFilterPanel = new ContentPanel();
private CheckBoxGroup checkGroup = new CheckBoxGroup();
@Override
public ContentPanel getPanel() {
btnResetAllFilters.setStyleName("button-hyperlink");
return unfoldFilterPanel;
}
public UnfoldFilter(){
init();
}
/**
*
*/
private void init() {
unfoldFilterPanel.setHeaderVisible(false);
unfoldFilterPanel.setBodyBorder(false);
unfoldFilterPanel.setLayout(new FitLayout());
unfoldFilterPanel.setStyleAttribute("marginLeft", "10px");
unfoldFilterPanel.setStyleAttribute("marginRight", "10px");
unfoldFilterPanel.setStyleAttribute("padding", "5px");
Text text = new Text("Expand with: ");
text.setStyleAttribute("margin-left", "5px");
text.setStyleAttribute("margin-right", "5px");
HorizontalPanel hp = new HorizontalPanel();
hp.setVerticalAlign(VerticalAlignment.MIDDLE);
hp.add(text);
hp.add(checkGroup);
unfoldFilterPanel.add(hp);
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.speciesdiscovery.client.advancedsearch.AdvancedSearchPanelInterface#getName()
*/
@Override
public String getName() {
return AdvancedSearchPanelEnum.UNFOLD.getLabel();
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.speciesdiscovery.client.advancedsearch.AdvancedSearchPanelInterface#resetAdvancedFields()
*/
@Override
public void resetAdvancedFields() {
}
@Override
public ArrayList<DataSourceModel> getAvailablePlugIn() {
return null;
}
private static Comparator<DataSourceModel> COMPARATOR = new Comparator<DataSourceModel>() {
// This is where the sorting happens.
public int compare(DataSourceModel o1, DataSourceModel o2) {
return o1.getName().compareToIgnoreCase(o2.getName());
}
};
public void loadDataSource(List<DataSourceModel> result) {
Collections.sort(result, COMPARATOR);
if(result!=null){
for(DataSourceModel dsm: result){
System.out.println("Data Source name " + dsm.getName());
CheckBox check = null;
for (DataSourceCapability dsc : dsm.getListCapabilities()) {
System.out.println("\tData Source capability name: " + dsc.getCapability().getName());
if(dsc.getCapability().getName().compareTo(SpeciesCapability.UNFOLD.getName())==0){
check = createCheckBox(dsm, dsc.getCapability().getName());
System.out.println("added check " + dsm.getName() + " for UNFOLD");
checkGroup.add(check);
}
}
}
}
}
private CheckBox createCheckBox(DataSourceModel dsm, String property) {
CheckBox check = new CheckBox();
check.setBoxLabel(dsm.getName());
check.setValueAttribute(dsm.getName());
check.setData("capability", dsm);
check.setToolTip(new ToolTipConfig(dsm.getDescription()));
return check;
}
/**
*
* @return
*/
public List<DataSourceModel> getCheckedGroupList() {
List<DataSourceModel> listDS = new ArrayList<DataSourceModel>();
List<CheckBox> values = new ArrayList<CheckBox>();
if(checkGroup.getValues().size()>0)
values = checkGroup.getValues();
for (CheckBox checkBox : values) {
if (checkBox.isEnabled())
listDS.add(new DataSourceModel(checkBox.getValueAttribute(), checkBox.getValueAttribute()));
}
if(listDS.size()==0)
return null;
// System.out.println("print unfold ds : "+listDS);
return listDS;
}
public void activeChecks(boolean bool){
checkGroup.reset();
checkGroup.setEnabled(bool);
}
}