diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 42a6279..8562dc6 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -5,10 +5,7 @@ - - uses - - + uses diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java index c8914c4..af72a42 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java @@ -527,7 +527,7 @@ public class AppController implements SubscriberInterface { private void doSaveSmartFolder(SaveSmartFolderEvent event) { - AppControllerExplorer.getEventBus().fireEvent(new AddSmartFolderEvent(event.getSearchText())); + AppControllerExplorer.getEventBus().fireEvent(new AddSmartFolderEvent(event.getSearchText(), event.getWorkpaceFolderId())); } }); @@ -542,16 +542,10 @@ public class AppController implements SubscriberInterface { } private void doElementDoubleClick(final FileGridModel fileModel) { - // appContrExplorer.expandFolder(event.getIdentifier()); - - //COMMENTED 01-02-2013 - // appContrExplorer.expandFolder(event.getIdentifier()); - - if(fileModel.getIdentifier()!=null){ if(wsPortlet.getSearchAndFilterContainer().isSearchActive()){ - AppController.getEventBus().fireEvent(new SearchTextEvent(null)); + AppController.getEventBus().fireEvent(new SearchTextEvent(null, null)); wsPortlet.getSearchAndFilterContainer().setSearchActive(false); resetSmartFolderSelected(); } @@ -583,23 +577,21 @@ public class AppController implements SubscriberInterface { // setSearchActive(true); appContrExplorer.searching(true); wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemFunctionalities().activeButtonsOnSearch(true); //ADDED 09-08-13 - doSearchText(searchTextEvent.getTextSearch()); + doSearchText(searchTextEvent.getTextSearch(), searchTextEvent.getFolderId()); } } - private void doSearchText(String textSearch) { + private void doSearchText(String textSearch, String folderId) { if(wsPortlet.getGxtCardLayoutResultPanel().getActivePanel() instanceof GxtItemsPanel){ //If active panel is panel with file items wsPortlet.getSearchAndFilterContainer().setVisibleButtonSave(true); //ADDED 24/04/2012 - - // wsPortlet.getGxtCardLayoutResultPanel().getToolBarItem().activeAllButtonWithoutGroupView(false); //ADDED 06/02/2013 - + wsPortlet.getGridGroupContainer().setBorderAsOnSearch(true); wsPortlet.getGridGroupContainer().mask(ConstantsExplorer.LOADING,ConstantsExplorer.LOADINGSTYLE); - appContrExplorer.getRpcWorkspaceService().getItemsBySearchName(textSearch, new AsyncCallback>() { + appContrExplorer.getRpcWorkspaceService().getItemsBySearchName(textSearch, folderId, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { @@ -615,7 +607,7 @@ public class AppController implements SubscriberInterface { wsPortlet.getGridGroupContainer().unmask(); } }); - } + } } }); @@ -725,7 +717,7 @@ public class AppController implements SubscriberInterface { wsPortlet.getSearchAndFilterContainer().searchCancel(); //cancel search if(wsPortlet.getGxtCardLayoutResultPanel().getActivePanel() instanceof GxtItemsPanel){ //If active panel is panel with file items - AppController.getEventBus().fireEvent(new SearchTextEvent(null)); + AppController.getEventBus().fireEvent(new SearchTextEvent(null, null)); } doPathElementSelected(event); @@ -1427,7 +1419,7 @@ public class AppController implements SubscriberInterface { //CASE IS A SEARCH if(wsPortlet.getSearchAndFilterContainer().isSearchActive()){ //ADDED 12-04-12 wsPortlet.getSearchAndFilterContainer().searchCancel(); //TODO added in 05/04/2012 - AppController.getEventBus().fireEvent(new SearchTextEvent(null)); + AppController.getEventBus().fireEvent(new SearchTextEvent(null, null)); wsPortlet.getSearchAndFilterContainer().setSearchActive(false); resetSmartFolderSelected(); updatGridViewForSelectedItem(item); @@ -1578,7 +1570,7 @@ public class AppController implements SubscriberInterface { //***ADDED 24/04/2012 wsPortlet.getSearchAndFilterContainer().searchCancel(); - eventBus.fireEvent(new SearchTextEvent(null)); + eventBus.fireEvent(new SearchTextEvent(null, null)); // appContrExplorer.searching(false); //************** diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/event/SearchTextEvent.java b/src/main/java/org/gcube/portlets/user/workspace/client/event/SearchTextEvent.java index 4d98f9e..d14b343 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/event/SearchTextEvent.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/event/SearchTextEvent.java @@ -2,33 +2,62 @@ package org.gcube.portlets.user.workspace.client.event; import com.google.gwt.event.shared.GwtEvent; + /** - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * The Class SearchTextEvent. * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Oct 9, 2015 */ public class SearchTextEvent extends GwtEvent { - public static Type TYPE = new Type(); + public static Type TYPE = new Type(); - private String textSearch = null; - - public SearchTextEvent(String text) { - this.textSearch = text; + private String textSearch = null; + + private String folderId; + + /** + * Instantiates a new search text event. + * + * @param text the text + * @param folderId the folder id + */ + public SearchTextEvent(String text, String folderId) { + this.textSearch = text; + this.folderId = folderId; } + /** + * @return the folderId + */ + public String getFolderId() { + return folderId; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ @Override public Type getAssociatedType() { - // TODO Auto-generated method stub return TYPE; } - + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ @Override protected void dispatch(SearchTextEventHandler handler) { handler.onSearchText(this); - + } + /** + * Gets the text search. + * + * @return the text search + */ public String getTextSearch() { return textSearch; } - + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java index ea2d61a..144f81c 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtSeachAndFilterPanel.java @@ -11,6 +11,7 @@ import org.gcube.portlets.user.workspace.client.model.ScopeModel; 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; @@ -44,8 +45,12 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { private ComboBox cbViewScope = null; private final TextField textSearch = new TextField(); private Button bSearch = new Button(ConstantsPortlet.SEARCH); +// private Image bSearchIn = Resources.getIconSearchWs().createImage(); +// private HorizontalPanel hpSearchIn = new HorizontalPanel(); +// private String searchInFolderId = ""; //is the root private Button bCancel = new Button(ConstantsPortlet.CANCEL); private Button bSave = new Button(ConstantsPortlet.SAVE); +// private Label labelSearchIn = new Label(); private TextField textFull = new TextField(); private DateField fromDate = new DateField(); private DateField toDate = new DateField(); @@ -74,11 +79,9 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { // this.textSearch.setStyleAttribute("margin-bottom", "0px"); this.cbViewScope.setWidth(360); // this.cbViewScope.setAutoWidth(true); - this.toolbarPahtPanel = toolBarPathPanel; hp.setStyleAttribute("margin-left", "2px"); - seVisibleButtonsCancelSave(false); textSearch.setAllowBlank(true); @@ -99,9 +102,55 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { bSave.setStyleName("wizardButton"); bSave.getElement().getStyle().setMarginLeft(3, Unit.PX); + /*bSearchIn.addStyleName("bSearchIn"); +// hpSearchIn.setVerticalAlign(VerticalAlignment.BOTTOM); + bSearchIn.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + final WorkspaceExplorerSelectDialog navigator = new WorkspaceExplorerSelectDialog("Select a Folder", true); + + WorskpaceExplorerSelectNotificationListener listener = new WorskpaceExplorerSelectNotificationListener() { + + @Override + public void onSelectedItem(Item item) { + GWT.log("onSelectedItem: "+item); + selectedFolderToSearch(item); + navigator.hide(); + } + + @Override + public void onFailed(Throwable throwable) { + GWT.log("onFailed.."); + + } + + @Override + public void onAborted() { + GWT.log("onAborted.."); + + } + + @Override + public void onNotValidSelection() { + GWT.log("onNotValidSelection.."); + + } + }; + + navigator.addWorkspaceExplorerSelectNotificationListener(listener); + navigator.show(); + } + });*/ + /* + initSearchIn(); + hpSearchIn.setVerticalAlign(VerticalAlignment.MIDDLE); + labelSearchIn.setStyleAttribute("margin-right", "2px"); + hp.add(hpSearchIn); + */ hp.add(bSearch); - // hp.add(bCancel); hp.add(bSave); + hp.setVerticalAlign(VerticalAlignment.MIDDLE); hp.setHeight(20); hpMain.setHeight(20); @@ -116,18 +165,14 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { verticalPanel.setId("VerticalPanelSearchAndFilter"); verticalPanel.setStyleAttribute("background", "#D0DEF0"); hpMain.add(hp); + hpMain.setVerticalAlign(VerticalAlignment.MIDDLE); //SOLUTION FOR SCOPE INVISIBLE cbViewScope.setVisible(false); -// hpMain.add(hp2); - -// verticalPanel.setLayout(new FitLayout()); - -// hpMain.setStyleAttribute("margin", "2px; 8px;"); verticalPanel.add(this.toolbarPahtPanel.getToolBarPathPanel()); verticalPanel.add(hpMain); -// verticalPanel.setStyleAttribute("background-color", "#d0def0"); + verticalPanel.setVerticalAlign(VerticalAlignment.MIDDLE); this.addListeners(); @@ -143,6 +188,24 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { layout(); } + /* + private void initSearchIn(){ + + hpSearchIn.removeAll(); + searchInFolderId = ""; + labelSearchIn.setText(""); +// labelSearchIn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); + hpSearchIn.add(labelSearchIn); + hpSearchIn.setStyleAttribute("margin-left", "3px"); + hpSearchIn.add(bSearchIn); + hpSearchIn.layout(true); + } + + private void selectedFolderToSearch(Item item){ + searchInFolderId = item.getId(); + labelSearchIn.setText("in "+item.getName()); + labelSearchIn.setTitle("search in "+item.getName()); + }*/ /** * Update window size @@ -162,7 +225,8 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { public void searchText(String value){ textSearch.setValue(value); seVisibleButtonsCancelSave(true); - AppController.getEventBus().fireEvent(new SearchTextEvent(value)); + String parentId = toolbarPahtPanel.getLastParent()!=null?toolbarPahtPanel.getLastParent().getIdentifier():null; + AppController.getEventBus().fireEvent(new SearchTextEvent(value, parentId)); } private void addListeners(){ @@ -170,10 +234,12 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { bSearch.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - if(textSearch.getValue()!=null && !textSearch.getValue().isEmpty() && textSearch.isValid()){ + if(isValidSearch()){ // seVisibleButtonsCancelSave(true); // AppController.getEventBus().fireEvent(new SearchTextEvent(textSearch.getValue())); searchText(textSearch.getValue()); + }else if(textSearch.getValue()==null || textSearch.getValue().isEmpty()){ + searchCancel(); } } }); @@ -181,9 +247,11 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { KeyListener keyListener = new KeyListener() { public void componentKeyUp(ComponentEvent event) { if (event.getKeyCode() == 13) { // KEY_ENTER -// seVisibleButtonsCancelSave(true); -// AppController.getEventBus().fireEvent(new SearchTextEvent(textSearch.getValue())); - searchText(textSearch.getValue()); + if(isValidSearch()){ + searchText(textSearch.getValue()); + }else if(textSearch.getValue()==null || textSearch.getValue().isEmpty()){ + searchCancel(); + } } } }; @@ -205,7 +273,8 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { public void onClick(ClickEvent event) { if(textSearch.getValue()!=null && !textSearch.getValue().isEmpty() && textSearch.isValid()){ if (textSearch.getValue() != null && textSearch.getValue().length()>0) { - AppController.getEventBus().fireEvent(new SaveSmartFolderEvent(null, textSearch.getValue(), null)); + String parentId = toolbarPahtPanel.getLastParent()!=null?toolbarPahtPanel.getLastParent().getIdentifier():null; + AppController.getEventBus().fireEvent(new SaveSmartFolderEvent(null, textSearch.getValue(), parentId)); } } } @@ -233,6 +302,10 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { this.cbNameFilter.reset(); } + + private boolean isValidSearch(){ + return textSearch.getValue()!=null && !textSearch.getValue().isEmpty() && textSearch.isValid(); + } public void seVisibleButtonsCancelSave(boolean flag){ @@ -242,6 +315,7 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { public void searchCancel(){ resetFields(); +// initSearchIn(); seVisibleButtonsCancelSave(false); } diff --git a/src/main/webapp/workspaceportlet.css b/src/main/webapp/workspaceportlet.css index 45dba4d..60054c3 100644 --- a/src/main/webapp/workspaceportlet.css +++ b/src/main/webapp/workspaceportlet.css @@ -332,4 +332,7 @@ } .Breadcrumbs-Personal a:hover { text-decoration: underline; +} +.bSearchIn { + cursor: pointer; } \ No newline at end of file