|
|
|
@ -4,7 +4,6 @@ import java.util.List;
|
|
|
|
|
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.AppController;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.ConstantsPortlet;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.SaveSmartFolderEvent;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.ScopeChangeEvent;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.SearchTextEvent;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.model.ScopeModel;
|
|
|
|
@ -12,26 +11,31 @@ import org.gcube.portlets.user.workspace.client.view.GxtComboBox;
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.view.toolbars.GxtBreadcrumbPathPanel;
|
|
|
|
|
|
|
|
|
|
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
|
|
|
|
|
import com.extjs.gxt.ui.client.event.ComponentEvent;
|
|
|
|
|
import com.extjs.gxt.ui.client.event.KeyListener;
|
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
|
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.LayoutContainer;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.VerticalPanel;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.ComboBox;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.DateField;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.TextField;
|
|
|
|
|
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.Button;
|
|
|
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.InputAddOn;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.TextBox;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.resources.ButtonSize;
|
|
|
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
|
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
|
|
|
import com.google.gwt.event.dom.client.KeyPressEvent;
|
|
|
|
|
import com.google.gwt.event.dom.client.KeyPressHandler;
|
|
|
|
|
import com.google.gwt.event.logical.shared.ResizeEvent;
|
|
|
|
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
|
|
|
|
import com.google.gwt.user.client.Window;
|
|
|
|
|
import com.google.gwt.user.client.ui.RootPanel;
|
|
|
|
|
import com.google.gwt.user.client.ui.SimplePanel;
|
|
|
|
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -44,19 +48,21 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
|
|
|
|
|
private GxtComboBox comboBoxGxt = null;
|
|
|
|
|
private ComboBox<ScopeModel> cbViewScope = null;
|
|
|
|
|
private final TextField<String> textSearch = new TextField<String>();
|
|
|
|
|
//private final TextField<String> textSearch = new TextField<String>();
|
|
|
|
|
|
|
|
|
|
InputAddOn searchAddOn = new InputAddOn();
|
|
|
|
|
private TextBox textBox = new TextBox();
|
|
|
|
|
private Button bSearch = new Button(ConstantsPortlet.SEARCH);
|
|
|
|
|
private Button bCancel = new Button(ConstantsPortlet.CANCEL);
|
|
|
|
|
private Button bSave = new Button(ConstantsPortlet.SAVE);
|
|
|
|
|
private Button bHide = new Button("X");
|
|
|
|
|
private TextField<String> textFull = new TextField<String>();
|
|
|
|
|
private DateField fromDate = new DateField();
|
|
|
|
|
private DateField toDate = new DateField();
|
|
|
|
|
private SimpleComboBox<String> cbNameFilter = null;
|
|
|
|
|
private boolean isSearchActive = false;
|
|
|
|
|
private VerticalPanel verticalPanel = new VerticalPanel();
|
|
|
|
|
private HorizontalPanel hp = new HorizontalPanel();
|
|
|
|
|
|
|
|
|
|
private HorizontalPanel hpMain = new HorizontalPanel();
|
|
|
|
|
private VerticalPanel container = new VerticalPanel();
|
|
|
|
|
private HorizontalPanel mainPane = new HorizontalPanel();
|
|
|
|
|
private Button iconSearchButton = new Button("", IconType.SEARCH);
|
|
|
|
|
private SimplePanel hpMain = new SimplePanel();
|
|
|
|
|
private GxtBreadcrumbPathPanel toolbarPahtPanel;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -73,54 +79,34 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
this.comboBoxGxt = new GxtComboBox();
|
|
|
|
|
this.cbViewScope = this.comboBoxGxt.getComboViewScope();
|
|
|
|
|
this.cbNameFilter = this.comboBoxGxt.getComboStringFilter();
|
|
|
|
|
this.textSearch.setId("text-search");
|
|
|
|
|
this.cbViewScope.setWidth(360);
|
|
|
|
|
this.textBox.setId("text-search");
|
|
|
|
|
this.toolbarPahtPanel = toolBarPathPanel;
|
|
|
|
|
|
|
|
|
|
hp.setStyleAttribute("margin-left", "2px");
|
|
|
|
|
seVisibleButtonsCancelSave(false);
|
|
|
|
|
|
|
|
|
|
textSearch.setAllowBlank(true);
|
|
|
|
|
textSearch.setEmptyText(ConstantsPortlet.SEARCHBYNAME);
|
|
|
|
|
|
|
|
|
|
/* COMMENTED TO FIX https://support.social.isti.cnr.it/ticket/87
|
|
|
|
|
textSearch.setRegex("^[a-zA-Z0-9]+[ a-zA-Z0-9_().-]*"); //alphanumeric
|
|
|
|
|
textSearch.getMessages().setRegexText(ConstantsExplorer.MESSAGE_SEARCH_FORCE_APHANUMERIC);
|
|
|
|
|
textSearch.setAutoValidate(true);
|
|
|
|
|
*/
|
|
|
|
|
hp.add(textSearch);
|
|
|
|
|
|
|
|
|
|
// bSearch.setStyleName("wizardButton");
|
|
|
|
|
// bSearch.getElement().getStyle().setMarginLeft(3, Unit.PX);
|
|
|
|
|
// bCancel.setStyleName("wizardButton");
|
|
|
|
|
bCancel.getElement().getStyle().setMarginLeft(3, Unit.PX);
|
|
|
|
|
// bSave.setStyleName("wizardButton");
|
|
|
|
|
bSave.getElement().getStyle().setMarginLeft(3, Unit.PX);
|
|
|
|
|
|
|
|
|
|
hp.add(bSearch);
|
|
|
|
|
hp.add(bSave);
|
|
|
|
|
hp.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
|
|
|
bSearch.addStyleName("button_toolbar");
|
|
|
|
|
bSave.addStyleName("button_toolbar");
|
|
|
|
|
cbViewScope.setStyleAttribute("margin-left", "132px");
|
|
|
|
|
cbViewScope.setStyleAttribute("margin-top", "2px");
|
|
|
|
|
|
|
|
|
|
hpMain.setId("hpSearchAndFilter");
|
|
|
|
|
// hpMain.setStyleAttribute("background", "#D0DEF0");
|
|
|
|
|
verticalPanel.setId("VerticalPanelSearchAndFilter");
|
|
|
|
|
verticalPanel.setStyleAttribute("background", "#D0DEF0");
|
|
|
|
|
hpMain.add(hp);
|
|
|
|
|
hpMain.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
searchAddOn.add(textBox);
|
|
|
|
|
searchAddOn.add(bSearch);
|
|
|
|
|
searchAddOn.add(bHide);
|
|
|
|
|
textBox.setPlaceholder(ConstantsPortlet.SEARCHBYNAME);
|
|
|
|
|
hpMain.add(searchAddOn);
|
|
|
|
|
mainPane.setId("VerticalPanelSearchAndFilter");
|
|
|
|
|
|
|
|
|
|
iconSearchButton.setSize(ButtonSize.LARGE);
|
|
|
|
|
iconSearchButton.setType(ButtonType.LINK);
|
|
|
|
|
iconSearchButton.getElement().getStyle().setColor("#999");
|
|
|
|
|
|
|
|
|
|
//SOLUTION FOR SCOPE INVISIBLE
|
|
|
|
|
cbViewScope.setVisible(false);
|
|
|
|
|
verticalPanel.add(this.toolbarPahtPanel.getToolBarPathPanel());
|
|
|
|
|
verticalPanel.add(hpMain);
|
|
|
|
|
verticalPanel.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mainPane.add(hpMain);
|
|
|
|
|
mainPane.add(iconSearchButton);
|
|
|
|
|
mainPane.add(this.toolbarPahtPanel.getToolBarPathPanel());
|
|
|
|
|
|
|
|
|
|
mainPane.setVerticalAlign(VerticalAlignment.MIDDLE);
|
|
|
|
|
|
|
|
|
|
this.addListeners();
|
|
|
|
|
|
|
|
|
|
add(verticalPanel);
|
|
|
|
|
container.add(mainPane);
|
|
|
|
|
add(container);
|
|
|
|
|
|
|
|
|
|
updateSize();
|
|
|
|
|
Window.addResizeHandler(new ResizeHandler() {
|
|
|
|
@ -129,8 +115,22 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
updateSize();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
hpMain.setVisible(false);
|
|
|
|
|
iconSearchButton.addClickHandler(new ClickHandler() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
|
hpMain.setVisible(true);
|
|
|
|
|
iconSearchButton.setVisible(false);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
layout();
|
|
|
|
|
bHide.addClickHandler(new ClickHandler() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
|
hpMain.setVisible(false);
|
|
|
|
|
iconSearchButton.setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -140,12 +140,7 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
RootPanel workspace = RootPanel.get(ConstantsPortlet.WORKSPACEDIV);
|
|
|
|
|
int leftBorder = workspace.getAbsoluteLeft();
|
|
|
|
|
int rootWidth = Window.getClientWidth() - 2* leftBorder; //- rightScrollBar;
|
|
|
|
|
|
|
|
|
|
//SOLUTION FOR SCOPE INVISIBLE
|
|
|
|
|
hp.setWidth(rootWidth);
|
|
|
|
|
|
|
|
|
|
// ORIGINAL CODE
|
|
|
|
|
// hp.setWidth(rootWidth - 500);
|
|
|
|
|
mainPane.setWidth(rootWidth);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -154,8 +149,7 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
* @param value the value
|
|
|
|
|
*/
|
|
|
|
|
public void searchText(String value){
|
|
|
|
|
textSearch.setValue(value);
|
|
|
|
|
seVisibleButtonsCancelSave(true);
|
|
|
|
|
textBox.setValue(value);
|
|
|
|
|
String parentId = toolbarPahtPanel.getLastParent()!=null?toolbarPahtPanel.getLastParent().getIdentifier():null;
|
|
|
|
|
AppController.getEventBus().fireEvent(new SearchTextEvent(value, parentId));
|
|
|
|
|
}
|
|
|
|
@ -171,39 +165,28 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
if(isValidSearch()){
|
|
|
|
|
// seVisibleButtonsCancelSave(true);
|
|
|
|
|
// AppController.getEventBus().fireEvent(new SearchTextEvent(textSearch.getValue()));
|
|
|
|
|
searchText(textSearch.getValue());
|
|
|
|
|
}else if(textSearch.getValue()==null || textSearch.getValue().isEmpty()){
|
|
|
|
|
searchText(textBox.getValue());
|
|
|
|
|
}else if(textBox.getValue()==null || textBox.getValue().isEmpty()){
|
|
|
|
|
searchCancel();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
KeyListener keyListener = new KeyListener() {
|
|
|
|
|
public void componentKeyUp(ComponentEvent event) {
|
|
|
|
|
if (event.getKeyCode() == 13) { // KEY_ENTER
|
|
|
|
|
textBox.addKeyPressHandler(new KeyPressHandler() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onKeyPress(KeyPressEvent event) {
|
|
|
|
|
if (event.getNativeEvent().getKeyCode() == 13) { // KEY_ENTER
|
|
|
|
|
if(isValidSearch()){
|
|
|
|
|
searchText(textSearch.getValue());
|
|
|
|
|
}else if(textSearch.getValue()==null || textSearch.getValue().isEmpty()){
|
|
|
|
|
searchText(textBox.getValue());
|
|
|
|
|
}else if(textBox.getValue()==null || textBox.getValue().isEmpty()){
|
|
|
|
|
searchCancel();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
textSearch.addKeyListener(keyListener);
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
bSave.addClickHandler(new ClickHandler() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
|
if(textSearch.getValue()!=null && !textSearch.getValue().isEmpty() && textSearch.isValid()){
|
|
|
|
|
if (textSearch.getValue() != null && textSearch.getValue().length()>0) {
|
|
|
|
|
String parentId = toolbarPahtPanel.getLastParent()!=null?toolbarPahtPanel.getLastParent().getIdentifier():null;
|
|
|
|
|
AppController.getEventBus().fireEvent(new SaveSmartFolderEvent(null, textSearch.getValue(), parentId));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.cbViewScope.addSelectionChangedListener(new SelectionChangedListener<ScopeModel>() {
|
|
|
|
|
|
|
|
|
@ -223,7 +206,7 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
* Reset fields.
|
|
|
|
|
*/
|
|
|
|
|
public void resetFields(){
|
|
|
|
|
this.textSearch.reset();
|
|
|
|
|
this.textBox.setValue("");
|
|
|
|
|
this.textFull.reset();
|
|
|
|
|
this.fromDate.reset();
|
|
|
|
|
this.toDate.reset();
|
|
|
|
@ -237,26 +220,15 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
* @return true, if is valid search
|
|
|
|
|
*/
|
|
|
|
|
private boolean isValidSearch(){
|
|
|
|
|
return textSearch.getValue()!=null && !textSearch.getValue().isEmpty() && textSearch.isValid();
|
|
|
|
|
return textBox.getValue()!=null && !textBox.getValue().isEmpty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Se visible buttons cancel save.
|
|
|
|
|
*
|
|
|
|
|
* @param flag the flag
|
|
|
|
|
*/
|
|
|
|
|
public void seVisibleButtonsCancelSave(boolean flag){
|
|
|
|
|
|
|
|
|
|
this.bCancel.setVisible(flag);
|
|
|
|
|
this.bSave.setVisible(flag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Search cancel.
|
|
|
|
|
*/
|
|
|
|
|
public void searchCancel(){
|
|
|
|
|
resetFields();
|
|
|
|
|
seVisibleButtonsCancelSave(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -297,14 +269,6 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
this.isSearchActive = isSearchActive;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets the visible button save.
|
|
|
|
|
*
|
|
|
|
|
* @param bool the new visible button save
|
|
|
|
|
*/
|
|
|
|
|
public void setVisibleButtonSave(boolean bool){
|
|
|
|
|
this.bSave.setVisible(bool);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets the empty text.
|
|
|
|
@ -312,7 +276,7 @@ public class GxtSeachAndFilterPanel extends LayoutContainer {
|
|
|
|
|
* @param emptyText the new empty text
|
|
|
|
|
*/
|
|
|
|
|
public void setEmptyText(String emptyText){
|
|
|
|
|
textSearch.setEmptyText(emptyText);
|
|
|
|
|
textBox.setText(emptyText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|