diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/save/WorkspaceExplorerSavePanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/save/WorkspaceExplorerSavePanel.java index 4d1fd79..58ea854 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/save/WorkspaceExplorerSavePanel.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/save/WorkspaceExplorerSavePanel.java @@ -171,7 +171,7 @@ public class WorkspaceExplorerSavePanel extends ScrollPanel implements HasWorskp footerHP.add(fileNameTextBox); footerHP.add(saveButton); footerHP.addStyleName("footerHP"); - + mainVP.add(controller.getWorkspaceExplorerPanel()); mainVP.add(footerHP); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java index 4d662a4..a04a5f6 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java @@ -66,6 +66,22 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); loadExplorer(captionTxt); } + + /** + * Instantiates a new workspace explorer select dialog. + * You can implement {@link WorskpaceExplorerSelectNotificationListener} to receive events + * @param captionTxt the caption txt + * @param filterCriteria the filter criteria + */ + public WorkspaceExplorerSelectDialog(String captionTxt, FilterCriteria filterCriteria, List selectableTypes) { + controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); + if(selectableTypes!=null){ + ItemType[] itemsType = new ItemType[selectableTypes.size()]; + itemsType = selectableTypes.toArray(itemsType); + setSelectableTypes(selectableTypes.toArray(itemsType)); + } + loadExplorer(captionTxt); + } /** diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java index 9908566..ef1ea0e 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java @@ -8,6 +8,8 @@ import java.util.List; import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants; import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; +import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent; +import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEventHandler; import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent; import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener; import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener; @@ -17,11 +19,11 @@ import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; import com.github.gwtbootstrap.client.ui.Alert; import com.github.gwtbootstrap.client.ui.Button; -import com.github.gwtbootstrap.client.ui.ModalFooter; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.github.gwtbootstrap.client.ui.constants.ButtonType; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; @@ -35,15 +37,14 @@ import com.google.gwt.user.client.ui.VerticalPanel; */ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{ - private Button selectButton; private WorkspaceExplorerSelectPanel INSTANCE = this; private boolean isSelect = false; private String captionTxt; - private ModalFooter footer = new ModalFooter(); private Alert alertConfirm; private WorkspaceExplorerController controller; private List listeners = new ArrayList(); private VerticalPanel mainVP = new VerticalPanel(); + private HorizontalPanel footerHP = new HorizontalPanel(); /** * Instantiates a new workspace explorer select panel. @@ -55,6 +56,29 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors loadExplorer(captionTxt); } + /** + * Bind events. + */ + private void bindEvents(){ + WorkspaceExplorerController.eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() { + + @Override + public void onClick(final ClickItemEvent clickItemEvent) { + isSelect = false; + + boolean itemIsSelectable = controller.getWsExplorer().itemIsSelectable(); + if(itemIsSelectable){ + notifySelectedItem(controller.getWsExplorer().getItemSelected()); + isSelect = true; + } + /*else{ //IGNORING ITEMS NOT SELECTABLE, USING BREADCRUMBS? + Item itemB = controller.getBreadcrumbs().getLastParent(); + if(itemB!=null) + setAlertConfirm("Selecting \""+itemB.getName()+"\", confirm?", true, itemB); + }*/ + } + }); + } /** * Instantiates a new workspace explorer select panel. @@ -66,9 +90,25 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO); loadExplorer(captionTxt); } - - + + /** + * Instantiates a new workspace explorer select panel. + * + * @param captionTxt the caption txt + * @param filterCriteria the filter criteria + * @param selectableTypes the selectable types + */ + public WorkspaceExplorerSelectPanel(String captionTxt, FilterCriteria filterCriteria, List selectableTypes) { + controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO); + if(selectableTypes!=null){ + ItemType[] itemsType = new ItemType[selectableTypes.size()]; + itemsType = selectableTypes.toArray(itemsType); + setSelectableTypes(selectableTypes.toArray(itemsType)); + } + loadExplorer(captionTxt); + } + /** * Instantiates a new workspace explorer select panel. * @@ -77,14 +117,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors */ public WorkspaceExplorerSelectPanel(String captionTxt, boolean showOnlyFolders) { controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.AUTO); - if(showOnlyFolders){ ItemType[] itemsType = new ItemType[1]; itemsType[0] = ItemType.FOLDER; setSelectableTypes(itemsType); setShowableTypes(itemsType); } - loadExplorer(captionTxt); } @@ -120,7 +158,8 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors * @param captionTxt the caption txt */ private void loadExplorer(String captionTxt){ - WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent()); + WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent()); + bindEvents(); initPanel(captionTxt); } @@ -134,34 +173,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors this.captionTxt = captionTxt; if(this.captionTxt!=null && !this.captionTxt.isEmpty()) setTitle(this.captionTxt); - selectButton = new Button(WorkspaceExplorerConstants.SELECT); - selectButton.setType(ButtonType.PRIMARY); + setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px"); - add(controller.getWorkspaceExplorerPanel()); - selectButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - isSelect = false; - Item item = controller.getWsExplorer().getItemSelected(); - if(item!=null){ - isSelect = true; - notifySelectedItem(item); - }else if(!controller.getWsExplorer().itemIsSelectable()){ //IGNORING ITEMS NOT SELECTABLE, USING BREADCRUMBS - Item itemB = controller.getBreadcrumbs().getLastParent(); - if(itemB!=null){ - setAlertConfirm("Selecting \""+itemB.getName()+"\", confirm?", true, itemB); - } - } - } - }); - setAlertConfirm("", false, null); - footer.add(selectButton); mainVP.add(controller.getWorkspaceExplorerPanel()); - mainVP.add(footer); - + mainVP.add(footerHP); add(mainVP); } @@ -175,7 +192,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors */ private void setAlertConfirm(String html, boolean show, final Item item){ try{ - footer.remove(alertConfirm); + footerHP.remove(alertConfirm); }catch(Exception e){ //silent } @@ -210,7 +227,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors }); alertConfirm.add(yes); alertConfirm.add(no); - footer.insert(alertConfirm,0); + footerHP.insert(alertConfirm,0); } /** * Notify selected item. diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/SelectionItem.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/SelectionItem.java index dacce28..722beda 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/SelectionItem.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/SelectionItem.java @@ -21,11 +21,5 @@ public interface SelectionItem { * @return the selected item */ Item getSelectedItem(); - - /** - * Selected item. - * - * @param item the item - */ - void selectedItem(Item item); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java index 9160576..0305f60 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java @@ -5,7 +5,6 @@ import java.util.List; import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent; import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources; -import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import com.github.gwtbootstrap.client.ui.CellTable; @@ -34,12 +33,13 @@ import com.google.gwt.view.client.SingleSelectionModel; * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2015 */ -public abstract class AbstractItemsCellTable implements SelectionItem{ +public abstract class AbstractItemsCellTable { protected CellTable cellTable; protected ListDataProvider dataProvider = new ListDataProvider(); protected Item itemContextMenu = null; protected boolean showMoreInfo; + protected final SingleSelectionModel ssm; /** * Inits the table. @@ -65,12 +65,13 @@ public abstract class AbstractItemsCellTable implements SelectionItem{ cellTable.addStyleName("table-overflow"); cellTable.setStriped(true); cellTable.setCondensed(true); - cellTable.setWidth("100%", true); + cellTable.setWidth("100%", false); + cellTable.setHeight("100px"); dataProvider.addDataDisplay(cellTable); initTable(cellTable, null, null); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); - final SingleSelectionModel ssm = new SingleSelectionModel(); + ssm = new SingleSelectionModel(); cellTable.setSelectionModel(ssm); ssm.addSelectionChangeHandler(new Handler() { @Override @@ -79,7 +80,7 @@ public abstract class AbstractItemsCellTable implements SelectionItem{ final Item selectedObject = ssm.getSelectedObject(); if(selectedObject!=null){ GWT.log("Clicked: "+selectedObject); - selectedItem(selectedObject); +// selectedItem(selectedObject); if(showMoreInfo) WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject)); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java index 1038e47..dea150a 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Set; import org.gcube.portlets.widgets.wsexplorer.client.Util; +import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import com.github.gwtbootstrap.client.ui.Pagination; @@ -33,7 +34,7 @@ import com.google.gwt.user.client.ui.Label; * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * Feb 19, 2015 */ -public class ItemsTable extends AbstractItemsCellTable { +public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{ private Column icon; private TextColumn name; @@ -164,20 +165,12 @@ public class ItemsTable extends AbstractItemsCellTable { sb.append(html); } } - - /* (non-Javadoc) - * @see org.gcube.portlets.widgets.wsexplorer.client.grid.AbstractItemsCellTable#selectedItem(org.gcube.portlets.widgets.wsexplorer.shared.Item) - */ - @Override - public void selectedItem(Item item) { - this.selectedItem = item; - } /* (non-Javadoc) * @see org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItemHandler#getSelectionItem() */ @Override public Item getSelectedItem() { - return selectedItem; + return ssm.getSelectedObject(); } }