256: Workspace explorer
Task-Url: https://support.d4science.org/issues/256 Added handlers to select and abort git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@115615 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c4dcb70c19
commit
a7f22fde61
|
@ -44,7 +44,7 @@ public class WorkspaceExplorerController implements EventHandler{
|
|||
*/
|
||||
public WorkspaceExplorerController(){
|
||||
bindEvents();
|
||||
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getExplorerPanel(), breadcrumbs, navigation);
|
||||
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -118,4 +118,11 @@ public class WorkspaceExplorerController implements EventHandler{
|
|||
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
|
||||
return workspaceExplorerPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the wsExplorer
|
||||
*/
|
||||
public WorkspaceExplorer getWsExplorer() {
|
||||
return wsExplorer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.grid;
|
|||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItem;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
||||
|
@ -24,7 +25,7 @@ import com.google.gwt.view.client.SingleSelectionModel;
|
|||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2015
|
||||
*/
|
||||
public abstract class AbstractItemsCellTable {
|
||||
public abstract class AbstractItemsCellTable implements SelectionItem{
|
||||
|
||||
protected CellTable<Item> cellTable;
|
||||
protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>();
|
||||
|
@ -39,8 +40,7 @@ public abstract class AbstractItemsCellTable {
|
|||
* @param pagination
|
||||
* the pagination
|
||||
*/
|
||||
public abstract void initTable(AbstractCellTable<Item> ItemTable,
|
||||
final SimplePager pager, final Pagination pagination);
|
||||
public abstract void initTable(AbstractCellTable<Item> ItemTable, final SimplePager pager, final Pagination pagination);
|
||||
|
||||
/**
|
||||
* Instantiates a new abstract Item table.
|
||||
|
@ -66,7 +66,10 @@ public abstract class AbstractItemsCellTable {
|
|||
public void onSelectionChange(final SelectionChangeEvent event)
|
||||
{
|
||||
final Item selectedObject = ssm.getSelectedObject();
|
||||
if(selectedObject!=null){
|
||||
GWT.log("Clicked: "+selectedObject);
|
||||
selectedItem(selectedObject);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -14,8 +14,6 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|||
import com.github.gwtbootstrap.client.ui.Pagination;
|
||||
import com.google.gwt.cell.client.Cell.Context;
|
||||
import com.google.gwt.cell.client.ImageResourceCell;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.dom.client.NativeEvent;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
|
@ -34,11 +32,12 @@ import com.google.gwt.view.client.SingleSelectionModel;
|
|||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Feb 19, 2015
|
||||
*/
|
||||
public class ItemsTable extends AbstractItemsCellTable{
|
||||
public class ItemsTable extends AbstractItemsCellTable {
|
||||
|
||||
private Column<Item, ImageResource> icon;
|
||||
private TextColumn<Item> name;
|
||||
private TextColumn<Item> owner;
|
||||
private Item selectedItem = null;
|
||||
|
||||
/**
|
||||
* Instantiates a new items table.
|
||||
|
@ -206,4 +205,20 @@ public class ItemsTable extends AbstractItemsCellTable{
|
|||
// pagination.clear();
|
||||
|
||||
}
|
||||
|
||||
/* (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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,40 +3,49 @@
|
|||
*/
|
||||
package org.gcube.portlets.widgets.wsexplorer.client.load;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Modal;
|
||||
import com.github.gwtbootstrap.client.ui.ModalFooter;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.github.gwtbootstrap.client.ui.event.HideEvent;
|
||||
import com.github.gwtbootstrap.client.ui.event.HideHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.DialogBox;
|
||||
import com.google.gwt.user.client.ui.DockPanel;
|
||||
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The Class WorspaceNavigatorDialog.
|
||||
* The Class WorkspaceExplorerLoadDialog.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 24, 2015
|
||||
* Jun 29, 2015
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class WorkspaceExplorerLoadDialog extends Modal{
|
||||
public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceExplorerNotificationListener{
|
||||
|
||||
private Button cancel;
|
||||
private Button openButton;
|
||||
private WorkspaceExplorerLoadDialog INSTANCE = this;
|
||||
private boolean isValidHide;
|
||||
private boolean isSelect = false;
|
||||
private String captionTxt;
|
||||
private ModalFooter footer = new ModalFooter();
|
||||
private WorkspaceExplorerController controller = new WorkspaceExplorerController();
|
||||
private List<WorskpaceExplorerNotificationListener> listeners = new ArrayList<WorskpaceExplorerNotificationListener>();
|
||||
|
||||
/**
|
||||
* Instantiates a new worspace navigator dialog.
|
||||
*
|
||||
* @param captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
|
||||
*
|
||||
* Add {@link WorskpaceExplorerNotificationListener} to receive events
|
||||
*/
|
||||
public WorkspaceExplorerLoadDialog(String captionTxt) {
|
||||
this.captionTxt = (captionTxt==null || captionTxt.isEmpty())?WorkspaceExplorerConstants.WORKSPACE_EXPLORER_CAPTION:captionTxt;
|
||||
|
@ -44,11 +53,21 @@ public class WorkspaceExplorerLoadDialog extends Modal{
|
|||
setAnimation(false);
|
||||
setCloseVisible(true);
|
||||
setTitle(this.captionTxt);
|
||||
isValidHide = false;
|
||||
cancel = new Button("Close");
|
||||
openButton = new Button("Open");
|
||||
setWidth(710);
|
||||
// setHeight("650px");
|
||||
setMaxHeigth("500px");
|
||||
hide(false);
|
||||
|
||||
addHideHandler(new HideHandler() {
|
||||
|
||||
@Override
|
||||
public void onHide(HideEvent hideEvent) {
|
||||
if(!isSelect)
|
||||
notifyAborted();
|
||||
}
|
||||
});
|
||||
|
||||
// DockPanel dock = new DockPanel();
|
||||
// dock.setSpacing(5);
|
||||
|
||||
|
@ -80,21 +99,65 @@ public class WorkspaceExplorerLoadDialog extends Modal{
|
|||
//
|
||||
// }
|
||||
// });
|
||||
cancel.addClickHandler(new ClickHandler() {
|
||||
openButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
isValidHide = false;
|
||||
isSelect = false;
|
||||
Item item = controller.getWsExplorer().getItemSelected();
|
||||
if(item!=null){
|
||||
isSelect = true;
|
||||
INSTANCE.hide();
|
||||
notifySelectedItem(item);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
footer.add(cancel);
|
||||
footer.add(openButton);
|
||||
|
||||
add(footer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify selected item.
|
||||
*
|
||||
* @param selected the selected
|
||||
*/
|
||||
private void notifySelectedItem(Item selected){
|
||||
|
||||
for (WorskpaceExplorerNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||
worskpaceExplorerNotificationListener.onSelectedItem(selected);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify aborted.
|
||||
*
|
||||
* @param selected the selected
|
||||
*/
|
||||
private void notifyAborted(){
|
||||
|
||||
for (WorskpaceExplorerNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||
worskpaceExplorerNotificationListener.onAborted();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify failed.
|
||||
*
|
||||
* @param t the t
|
||||
*/
|
||||
private void notifyFailed(Throwable t){
|
||||
|
||||
for (WorskpaceExplorerNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||
worskpaceExplorerNotificationListener.onFailed(t);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the caption txt.
|
||||
*
|
||||
* @return the captionTxt
|
||||
*/
|
||||
public String getCaptionTxt() {
|
||||
|
@ -107,11 +170,36 @@ public class WorkspaceExplorerLoadDialog extends Modal{
|
|||
* @return the isValidHide
|
||||
*/
|
||||
public boolean isValidHide() {
|
||||
return isValidHide;
|
||||
return isSelect;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.github.gwtbootstrap.client.ui.Modal#show()
|
||||
*/
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
isSelect = false;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
|
||||
*/
|
||||
@Override
|
||||
public void addWorkspaceExplorerNotificationListener(WorskpaceExplorerNotificationListener handler) {
|
||||
if(handler!=null)
|
||||
listeners.add(handler);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
|
||||
*/
|
||||
@Override
|
||||
public void removeWorkspaceExplorerNotificationListener(WorskpaceExplorerNotificationListener handler) {
|
||||
if(handler!=null){
|
||||
if(listeners.contains(handler))
|
||||
listeners.remove(handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.widgets.wsexplorer.client.notification;
|
||||
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The Class SelectionItemNotification.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 29, 2015
|
||||
*/
|
||||
public interface SelectionItem {
|
||||
|
||||
/**
|
||||
* Gets the selected item.
|
||||
*
|
||||
* @return the selected item
|
||||
*/
|
||||
Item getSelectedItem();
|
||||
|
||||
/**
|
||||
* Selected item.
|
||||
*
|
||||
* @param item the item
|
||||
*/
|
||||
void selectedItem(Item item);
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.widgets.wsexplorer.client.notification;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
||||
|
||||
/**
|
||||
* The Class WorskpaceExplorerNotification.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 29, 2015
|
||||
*/
|
||||
public class WorskpaceExplorerNotification {
|
||||
|
||||
|
||||
/**
|
||||
* The listener interface for receiving worskpaceExplorerNotification events.
|
||||
* The class that is interested in processing a worskpaceExplorerNotification
|
||||
* event implements this interface, and the object created
|
||||
* with that class is registered with a component using the
|
||||
* component's <code>addWorskpaceExplorerNotificationListener<code> method. When
|
||||
* the worskpaceExplorerNotification event occurs, that object's appropriate
|
||||
* method is invoked.
|
||||
*
|
||||
* @see WorskpaceExplorerNotificationEvent
|
||||
*/
|
||||
public interface WorskpaceExplorerNotificationListener {
|
||||
|
||||
|
||||
/**
|
||||
* On selecte item.
|
||||
*
|
||||
* @param expressionWrapperNotification the expression wrapper notification
|
||||
*/
|
||||
void onSelectedItem(Item item);
|
||||
|
||||
|
||||
/**
|
||||
* On aborted.
|
||||
*/
|
||||
void onAborted();
|
||||
|
||||
|
||||
/**
|
||||
* On failed.
|
||||
*
|
||||
* @param throwable the throwable
|
||||
*/
|
||||
void onFailed(Throwable throwable);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The listener interface for receiving hasWorskpaceExplorerNotification events.
|
||||
* The class that is interested in processing a hasWorskpaceExplorerNotification
|
||||
* event implements this interface, and the object created
|
||||
* with that class is registered with a component using the
|
||||
* component's <code>addHasWorskpaceExplorerNotificationListener<code> method. When
|
||||
* the hasWorskpaceExplorerNotification event occurs, that object's appropriate
|
||||
* method is invoked.
|
||||
*
|
||||
* @see HasWorskpaceExplorerNotificationEvent
|
||||
*/
|
||||
public interface HasWorskpaceExplorerNotificationListener {
|
||||
|
||||
/**
|
||||
* Adds the workspace explorer notification listener.
|
||||
*
|
||||
* @param handler the handler
|
||||
*/
|
||||
public void addWorkspaceExplorerNotificationListener(WorskpaceExplorerNotificationListener handler);
|
||||
|
||||
|
||||
/**
|
||||
* Removes the workspace explorer notification listener.
|
||||
*
|
||||
* @param handler the handler
|
||||
*/
|
||||
public void removeWorkspaceExplorerNotificationListener(WorskpaceExplorerNotificationListener handler);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -216,8 +216,7 @@
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.cellTableKeyboardSelectedRow, .cellTableKeyboardSelectedRow td,
|
||||
.cellTableKeyboardSelectedRow th {
|
||||
.cellTableKeyboardSelectedRow, .cellTableKeyboardSelectedRow td, .cellTableKeyboardSelectedRow th {
|
||||
background: #3A87AD !important;
|
||||
}
|
||||
|
||||
|
@ -230,18 +229,15 @@
|
|||
|
||||
}
|
||||
|
||||
.cellTableSelectedRowCell, .cellTableSelectedRow td.cellTableSelectedRowCell
|
||||
{
|
||||
.cellTableSelectedRowCell, .cellTableSelectedRow td.cellTableSelectedRowCell {
|
||||
background: #3A87AD !important;
|
||||
}
|
||||
|
||||
.cellTableKeyboardSelectedRowCell, .cellTableKeyboardSelectedRow td.cellTableKeyboardSelectedRowCell
|
||||
{
|
||||
.cellTableKeyboardSelectedRowCell, .cellTableKeyboardSelectedRow td.cellTableKeyboardSelectedRowCell{
|
||||
background: #3A87AD !important;
|
||||
}
|
||||
|
||||
.cellTableKeyboardSelectedCell, .cellTableKeyboardSelectedRow td.cellTableKeyboardSelectedCell
|
||||
{
|
||||
.cellTableKeyboardSelectedCell, .cellTableKeyboardSelectedRow td.cellTableKeyboardSelectedCell{
|
||||
background: #3A87AD !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ public class WorkspaceExplorer {
|
|||
*/
|
||||
|
||||
protected ScrollPanel explorerPanel;
|
||||
private ItemsTable itTables;
|
||||
|
||||
public WorkspaceExplorer() {
|
||||
// as default all items are showable and selectable
|
||||
|
@ -186,7 +187,7 @@ public class WorkspaceExplorer {
|
|||
private void updateExplorer(ArrayList<Item> items){
|
||||
GWT.log("workspace explorer updating..");
|
||||
explorerPanel.clear();
|
||||
ItemsTable itTables = new ItemsTable();
|
||||
itTables = new ItemsTable();
|
||||
itTables.addItems(items);
|
||||
explorerPanel.add(itTables.getCellTable());
|
||||
GWT.log("workspace explorer updated");
|
||||
|
@ -195,9 +196,11 @@ public class WorkspaceExplorer {
|
|||
/**
|
||||
* @return the explorerPanel
|
||||
*/
|
||||
public ScrollPanel getExplorerPanel() {
|
||||
public ScrollPanel getPanel() {
|
||||
return explorerPanel;
|
||||
}
|
||||
|
||||
|
||||
public Item getItemSelected(){
|
||||
return itTables.getSelectedItem();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue