256: Workspace explorer
Task-Url: https://support.d4science.org/issues/256 Fixed breadcrumbs Added user full name and pom dependency git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@115683 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
fffde66498
commit
65a2f0da41
8
pom.xml
8
pom.xml
|
@ -110,6 +110,12 @@
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.dvos</groupId>
|
||||||
|
<artifactId>usermanagement-core</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- LOGGER -->
|
<!-- LOGGER -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>log4j</groupId>
|
<groupId>log4j</groupId>
|
||||||
|
@ -131,6 +137,8 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
|
@ -17,8 +17,10 @@ import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.view.Navigation;
|
import org.gcube.portlets.widgets.wsexplorer.client.view.Navigation;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
|
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||||
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.event.shared.EventHandler;
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
@ -50,9 +52,9 @@ public class WorkspaceExplorerController implements EventHandler {
|
||||||
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation);
|
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadRoot(){
|
// public void loadRoot(){
|
||||||
wsExplorer.loadRoot();
|
// wsExplorer.loadRoot();
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bind events.
|
* Bind events.
|
||||||
|
@ -76,7 +78,22 @@ public class WorkspaceExplorerController implements EventHandler {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadRoot(LoadRootEvent loadRootEvent) {
|
public void onLoadRoot(LoadRootEvent loadRootEvent) {
|
||||||
wsExplorer.loadRoot();
|
wsExplorer.loadRoot();
|
||||||
breadcrumbs.init();
|
|
||||||
|
workspaceNavigatorService.getItemByCategory(ItemCategory.HOME, new AsyncCallback<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log(caught.getMessage());
|
||||||
|
breadcrumbs.clear();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Item result) {
|
||||||
|
result.setName(WorkspaceExplorerConstants.HOME_LABEL); //FORCE SET NAME LIKE "HOME_LABEL"
|
||||||
|
breadcrumbs.init(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -85,7 +102,19 @@ public class WorkspaceExplorerController implements EventHandler {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent) {
|
public void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent) {
|
||||||
wsExplorer.loadMySpecialFolder();
|
wsExplorer.loadMySpecialFolder();
|
||||||
breadcrumbs.init();
|
|
||||||
|
workspaceNavigatorService.getItemByCategory(ItemCategory.VRE_FOLDER, new AsyncCallback<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log(caught.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Item result) {
|
||||||
|
breadcrumbs.init(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -100,12 +129,12 @@ public class WorkspaceExplorerController implements EventHandler {
|
||||||
|
|
||||||
GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
|
GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
|
||||||
|
|
||||||
workspaceNavigatorService.getListParentsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback<List<Item>>() {
|
workspaceNavigatorService.getBreadcrumbsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback<List<Item>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
// TODO Auto-generated method stub
|
GWT.log(caught.getMessage());
|
||||||
|
wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class WorkspaceExplorerPanel extends DockPanel{
|
||||||
|
|
||||||
public int width = 550;
|
public int width = 550;
|
||||||
public int height = 400;
|
public int height = 400;
|
||||||
public int west_width = 130;
|
public int west_width = 150;
|
||||||
|
|
||||||
private ScrollPanel westPanel = new ScrollPanel();
|
private ScrollPanel westPanel = new ScrollPanel();
|
||||||
private ScrollPanel centerScrollable = new ScrollPanel();
|
private ScrollPanel centerScrollable = new ScrollPanel();
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
||||||
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener;
|
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.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||||
|
@ -23,17 +24,18 @@ import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class WorkspaceExplorerLoadDialog.
|
* The Class WorkspaceExplorerLoadDialog.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Jun 29, 2015
|
* Jun 30, 2015
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceExplorerNotificationListener{
|
public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceExplorerNotificationListener{
|
||||||
|
|
||||||
|
public static final String SELECT = "Select";
|
||||||
|
public static final String MAX_HEIGHT_DIALOG = "500px";
|
||||||
|
public static final int WIDHT_DIALOG = 720;
|
||||||
|
|
||||||
private Button selectButton;
|
private Button selectButton;
|
||||||
private WorkspaceExplorerLoadDialog INSTANCE = this;
|
private WorkspaceExplorerLoadDialog INSTANCE = this;
|
||||||
private boolean isSelect = false;
|
private boolean isSelect = false;
|
||||||
|
@ -42,15 +44,61 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
|
||||||
private WorkspaceExplorerController controller = new WorkspaceExplorerController();
|
private WorkspaceExplorerController controller = new WorkspaceExplorerController();
|
||||||
private List<WorskpaceExplorerNotificationListener> listeners = new ArrayList<WorskpaceExplorerNotificationListener>();
|
private List<WorskpaceExplorerNotificationListener> listeners = new ArrayList<WorskpaceExplorerNotificationListener>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new worspace navigator dialog.
|
* Instantiates a new workspace explorer load dialog.
|
||||||
*
|
*
|
||||||
* @param captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
|
* @param captionTxt the caption txt
|
||||||
*
|
* You can implement {@link WorskpaceExplorerNotificationListener} to receive events
|
||||||
* Add {@link WorskpaceExplorerNotificationListener} to receive events
|
|
||||||
*/
|
*/
|
||||||
public WorkspaceExplorerLoadDialog(String captionTxt) {
|
public WorkspaceExplorerLoadDialog(String captionTxt) {
|
||||||
controller.loadRoot();
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
|
||||||
|
initDialog(captionTxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer load dialog.
|
||||||
|
*
|
||||||
|
* @param captionTxt the caption txt
|
||||||
|
* @param showOnlyFolders the show only folders
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerLoadDialog(String captionTxt, boolean showOnlyFolders) {
|
||||||
|
|
||||||
|
if(showOnlyFolders){
|
||||||
|
ItemType[] itemsType = new ItemType[2];
|
||||||
|
itemsType[0] = ItemType.ROOT;
|
||||||
|
itemsType[1] = ItemType.FOLDER;
|
||||||
|
setSelectableTypes(itemsType);
|
||||||
|
setShowableTypes(itemsType);
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
|
||||||
|
initDialog(captionTxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer load dialog.
|
||||||
|
*
|
||||||
|
* @param captionTxt captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
|
||||||
|
* @param selectableTypes the selectable types
|
||||||
|
* @param showableTypes the showable types
|
||||||
|
*
|
||||||
|
* You can implement {@link WorskpaceExplorerNotificationListener} to receive events
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerLoadDialog(String captionTxt, List<ItemType> selectableTypes, List<ItemType> showableTypes) {
|
||||||
|
if(selectableTypes!=null){
|
||||||
|
ItemType[] itemsType = new ItemType[selectableTypes.size()];
|
||||||
|
itemsType = selectableTypes.toArray(itemsType);
|
||||||
|
setSelectableTypes(selectableTypes.toArray(itemsType));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(showableTypes!=null){
|
||||||
|
ItemType[] itemsType = new ItemType[showableTypes.size()];
|
||||||
|
itemsType = showableTypes.toArray(itemsType);
|
||||||
|
setShowableTypes(showableTypes.toArray(itemsType));
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
|
||||||
initDialog(captionTxt);
|
initDialog(captionTxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,11 +113,10 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
|
||||||
setAnimation(false);
|
setAnimation(false);
|
||||||
setCloseVisible(true);
|
setCloseVisible(true);
|
||||||
setTitle(this.captionTxt);
|
setTitle(this.captionTxt);
|
||||||
selectButton = new Button("Select");
|
selectButton = new Button(SELECT);
|
||||||
selectButton.setType(ButtonType.PRIMARY);
|
selectButton.setType(ButtonType.PRIMARY);
|
||||||
setWidth(710);
|
setWidth(WIDHT_DIALOG);
|
||||||
// setHeight("650px");
|
setMaxHeigth(MAX_HEIGHT_DIALOG);
|
||||||
setMaxHeigth("500px");
|
|
||||||
hide(false);
|
hide(false);
|
||||||
|
|
||||||
addHideHandler(new HideHandler() {
|
addHideHandler(new HideHandler() {
|
||||||
|
@ -80,41 +127,8 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
|
||||||
notifyAborted();
|
notifyAborted();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// DockPanel dock = new DockPanel();
|
|
||||||
// dock.setSpacing(5);
|
|
||||||
|
|
||||||
// dock.add(okButton, DockPanel.SOUTH);
|
|
||||||
// dock.add(cancel, DockPanel.SOUTH);
|
|
||||||
|
|
||||||
// HorizontalPanel hp = new HorizontalPanel();
|
|
||||||
// hp.setStyleName("margin-auto");
|
|
||||||
////// hp.add(okButton);
|
|
||||||
//// hp.setWidth("50%");
|
|
||||||
//// hp.setStyleAttribute("margin", "0 auto");
|
|
||||||
// hp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
||||||
// cancel.getElement().getStyle().setMarginTop(5.0, Unit.PX);
|
|
||||||
//// cancel.getElement().getStyle().setMarginBottom(5.0, Unit.PX);
|
|
||||||
//// hp.getElement().getStyle().setMarginLeft("0 auto", Unit.PCT);
|
|
||||||
// hp.add(cancel);
|
|
||||||
// dock.add(hp, DockPanel.SOUTH);
|
|
||||||
//
|
|
||||||
// dock.add(controller.getWorkspaceExplorerPanel(), DockPanel.CENTER);
|
|
||||||
//
|
|
||||||
// dock.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
||||||
// dock.setWidth("100%");
|
|
||||||
|
|
||||||
|
|
||||||
add(controller.getWorkspaceExplorerPanel());
|
add(controller.getWorkspaceExplorerPanel());
|
||||||
|
|
||||||
// okButton.addClickHandler(new ClickHandler() {
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onClick(ClickEvent event) {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
selectButton.addClickHandler(new ClickHandler() {
|
selectButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -131,37 +145,7 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
|
||||||
});
|
});
|
||||||
|
|
||||||
footer.add(selectButton);
|
footer.add(selectButton);
|
||||||
|
|
||||||
add(footer);
|
add(footer);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new workspace explorer load dialog.
|
|
||||||
*
|
|
||||||
* @param captionTxt captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
|
|
||||||
* @param selectableTypes the selectable types
|
|
||||||
* @param showableTypes the showable types
|
|
||||||
*
|
|
||||||
* Add {@link WorskpaceExplorerNotificationListener} to receive events
|
|
||||||
*/
|
|
||||||
public WorkspaceExplorerLoadDialog(String captionTxt, List<ItemType> selectableTypes, List<ItemType> showableTypes) {
|
|
||||||
if(selectableTypes!=null){
|
|
||||||
ItemType[] itemsType = new ItemType[selectableTypes.size()];
|
|
||||||
itemsType = selectableTypes.toArray(itemsType);
|
|
||||||
setSelectableTypes(selectableTypes.toArray(itemsType));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(showableTypes!=null){
|
|
||||||
ItemType[] itemsType = new ItemType[showableTypes.size()];
|
|
||||||
itemsType = showableTypes.toArray(itemsType);
|
|
||||||
setShowableTypes(showableTypes.toArray(itemsType));
|
|
||||||
}
|
|
||||||
|
|
||||||
controller.loadRoot();
|
|
||||||
initDialog(captionTxt);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Notify selected item.
|
* Notify selected item.
|
||||||
|
|
|
@ -23,7 +23,7 @@ public interface WorkspaceExplorerService extends RemoteService {
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
List<Item> getListParentsByItemIdentifier(String itemIdentifier,
|
List<Item> getBreadcrumbsByItemIdentifier(String itemIdentifier,
|
||||||
boolean includeItemAsParent) throws Exception;
|
boolean includeItemAsParent) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -66,15 +66,16 @@ public interface WorkspaceExplorerServiceAsync {
|
||||||
boolean purgeEmpyFolders, FilterCriteria filterCriteria,
|
boolean purgeEmpyFolders, FilterCriteria filterCriteria,
|
||||||
AsyncCallback<Item> callback);
|
AsyncCallback<Item> callback);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list parents by item identifier.
|
* Gets the breadcrumbs by item identifier.
|
||||||
*
|
*
|
||||||
* @param itemIdentifier the item identifier
|
* @param itemIdentifier the item identifier
|
||||||
* @param includeItemAsParent the include item as parent
|
* @param includeItemAsParent the include item as parent
|
||||||
* @param asyncCallback the callback
|
* @param asyncCallback the async callback
|
||||||
* @return the list parents by item identifier
|
* @return the breadcrumbs by item identifier
|
||||||
*/
|
*/
|
||||||
public void getListParentsByItemIdentifier(String itemIdentifier,
|
public void getBreadcrumbsByItemIdentifier(String itemIdentifier,
|
||||||
boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -45,14 +45,11 @@ public class Breadcrumbs extends Composite {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new breadcrumbs.
|
* Instantiates a new breadcrumbs.
|
||||||
*
|
|
||||||
* @param rootName
|
|
||||||
* the root name
|
|
||||||
*/
|
*/
|
||||||
public Breadcrumbs() {
|
public Breadcrumbs() {
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
breadcrumbs.setDivider(DIVIDER);
|
breadcrumbs.setDivider(DIVIDER);
|
||||||
init();
|
// init();
|
||||||
// initBreadcrumb(true);
|
// initBreadcrumb(true);
|
||||||
this.addStyleName("breadcrumbs-navigator");
|
this.addStyleName("breadcrumbs-navigator");
|
||||||
}
|
}
|
||||||
|
@ -66,18 +63,27 @@ public class Breadcrumbs extends Composite {
|
||||||
public void setPath(List<Item> parents) {
|
public void setPath(List<Item> parents) {
|
||||||
resetBreadcrumbs();
|
resetBreadcrumbs();
|
||||||
if (parents != null && parents.size() > 0) {
|
if (parents != null && parents.size() > 0) {
|
||||||
hashListItems = new LinkedHashMap<String, Item>();
|
|
||||||
for (Item parent : parents) {
|
for (Item parent : parents) {
|
||||||
|
// if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
|
||||||
|
// addNavigationLink(parent);
|
||||||
|
// hashListItems.put(parent.getId(), parent);
|
||||||
|
// }
|
||||||
|
|
||||||
if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
|
// if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
|
||||||
addNavigationLink(parent);
|
addNavigationLink(parent);
|
||||||
hashListItems.put(parent.getId(), parent);
|
hashListItems.put(parent.getId(), parent);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
lastParent = parents.get(parents.size() - 1);
|
lastParent = parents.get(parents.size() - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is root or special folder.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
* @return true, if is root or special folder
|
||||||
|
*/
|
||||||
private boolean isRootOrSpecialFolder(Item item){
|
private boolean isRootOrSpecialFolder(Item item){
|
||||||
GWT.log(item.getName() +" is root "+(item.getParent()==null));
|
GWT.log(item.getName() +" is root "+(item.getParent()==null));
|
||||||
GWT.log(item.getName() +" is special folder "+item.isSpecialFolder());
|
GWT.log(item.getName() +" is special folder "+item.isSpecialFolder());
|
||||||
|
@ -89,35 +95,29 @@ public class Breadcrumbs extends Composite {
|
||||||
*/
|
*/
|
||||||
private void resetBreadcrumbs() {
|
private void resetBreadcrumbs() {
|
||||||
breadcrumbs.clear();
|
breadcrumbs.clear();
|
||||||
|
hashListItems.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// @UiHandler("add")
|
// @UiHandler("add")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the navigation link.
|
* Adds the navigation link.
|
||||||
*
|
*
|
||||||
* @param parent
|
* @param parent the parent
|
||||||
* the parent
|
|
||||||
*/
|
*/
|
||||||
public void addNavigationLink(Item parent) {
|
private void addNavigationLink(Item parent) {
|
||||||
// if (parent != null && parent.getParent() != null && !parent.isSpecialFolder() && !parent.getParent().isSpecialFolder()) {
|
final NavLink navLink = new NavLink(parent.getName());
|
||||||
final NavLink navLink = new NavLink(parent.getName());
|
navLink.setName(parent.getId());
|
||||||
navLink.setName(parent.getId());
|
breadcrumbs.add(navLink);
|
||||||
breadcrumbs.add(navLink);
|
navLink.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
navLink.addClickHandler(new ClickHandler() {
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
@Override
|
Item target = hashListItems.get(navLink.getName());
|
||||||
public void onClick(ClickEvent event) {
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
|
||||||
|
}
|
||||||
Item target = hashListItems.get(navLink.getName());
|
});
|
||||||
WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// } else { //IS ROOT OR SPECIAL FOLDER
|
|
||||||
// // final NavLink navLink = new NavLink("");
|
|
||||||
// NavLink navLink = new NavLink("");
|
|
||||||
// breadcrumbs.add(navLink);// INIT
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -142,12 +142,23 @@ public class Breadcrumbs extends Composite {
|
||||||
return lastParent;
|
return lastParent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Inits the.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
*/
|
*/
|
||||||
public void init() {
|
public void init(Item item) {
|
||||||
resetBreadcrumbs();
|
resetBreadcrumbs();
|
||||||
breadcrumbs.add(new NavLink("/"));
|
addNavigationLink(item);
|
||||||
|
hashListItems.put(item.getId(), item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear.
|
||||||
|
*/
|
||||||
|
public void clear() {
|
||||||
|
resetBreadcrumbs();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -75,7 +75,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setAlert(String html, AlertType type){
|
public void setAlert(String html, AlertType type){
|
||||||
explorerPanel.clear();
|
explorerPanel.clear();
|
||||||
alert.setHTML(html);
|
alert.setHTML(html);
|
||||||
alert.setType(type);
|
alert.setType(type);
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class ItemBuilder {
|
||||||
itemName = "My VRE Folders";
|
itemName = "My VRE Folders";
|
||||||
}
|
}
|
||||||
|
|
||||||
Item item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItem.getPath(), workspaceItem.getOwner().getPortalLogin(), workspaceItem.isFolder());
|
Item item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItem.getPath(), UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), workspaceItem.isFolder());
|
||||||
item.setSharedFolder(workspaceItem.getType()==WorkspaceItemType.SHARED_FOLDER);
|
item.setSharedFolder(workspaceItem.getType()==WorkspaceItemType.SHARED_FOLDER);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -146,9 +146,7 @@ public class ItemBuilder {
|
||||||
* @param item the item
|
* @param item the item
|
||||||
* @return the folder item type
|
* @return the folder item type
|
||||||
*/
|
*/
|
||||||
protected static ItemType getFolderItemType(FolderItem item)
|
protected static ItemType getFolderItemType(FolderItem item){
|
||||||
{
|
|
||||||
//System.out.println("getFolderItemType "+item.getFolderItemType().toString());
|
|
||||||
return ItemType.valueOf(item.getFolderItemType().toString());
|
return ItemType.valueOf(item.getFolderItemType().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,8 +159,7 @@ public class ItemBuilder {
|
||||||
* @return true, if successful
|
* @return true, if successful
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws InternalErrorException the internal error exception
|
||||||
*/
|
*/
|
||||||
protected static boolean filterItem(ItemType type, WorkspaceItem item, FilterCriteria filterCriteria) throws InternalErrorException
|
protected static boolean filterItem(ItemType type, WorkspaceItem item, FilterCriteria filterCriteria) throws InternalErrorException {
|
||||||
{
|
|
||||||
boolean mimeTypeCheck = checkAllowedMimeTypes(type, item, filterCriteria.getAllowedMimeTypes());
|
boolean mimeTypeCheck = checkAllowedMimeTypes(type, item, filterCriteria.getAllowedMimeTypes());
|
||||||
if (!mimeTypeCheck) return false;
|
if (!mimeTypeCheck) return false;
|
||||||
|
|
||||||
|
@ -178,8 +175,7 @@ public class ItemBuilder {
|
||||||
* @param allowedMimeTypes the allowed mime types
|
* @param allowedMimeTypes the allowed mime types
|
||||||
* @return true, if successful
|
* @return true, if successful
|
||||||
*/
|
*/
|
||||||
protected static boolean checkAllowedMimeTypes(ItemType type, WorkspaceItem item, List<String> allowedMimeTypes)
|
protected static boolean checkAllowedMimeTypes(ItemType type, WorkspaceItem item, List<String> allowedMimeTypes){
|
||||||
{
|
|
||||||
if (allowedMimeTypes.size()==0) return true;
|
if (allowedMimeTypes.size()==0) return true;
|
||||||
|
|
||||||
if (type == ItemType.EXTERNAL_FILE || type == ItemType.EXTERNAL_IMAGE || type == ItemType.EXTERNAL_PDF_FILE) {
|
if (type == ItemType.EXTERNAL_FILE || type == ItemType.EXTERNAL_IMAGE || type == ItemType.EXTERNAL_PDF_FILE) {
|
||||||
|
@ -228,8 +224,10 @@ public class ItemBuilder {
|
||||||
String name = "";
|
String name = "";
|
||||||
boolean isSpecialFolder = false;
|
boolean isSpecialFolder = false;
|
||||||
|
|
||||||
//MANAGEMENT SHARED FOLDER NAME
|
|
||||||
if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
|
if(wsFolder.isRoot()){ //IS ROOT
|
||||||
|
name = WorkspaceExplorerConstants.HOME_LABEL;
|
||||||
|
}else if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ //MANAGEMENT SHARED FOLDER NAME
|
||||||
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
|
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
|
||||||
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
|
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
|
||||||
//MANAGEMENT SPECIAL FOLDER
|
//MANAGEMENT SPECIAL FOLDER
|
||||||
|
@ -238,8 +236,9 @@ public class ItemBuilder {
|
||||||
isSpecialFolder = true;
|
isSpecialFolder = true;
|
||||||
}else
|
}else
|
||||||
name = wsFolder.getName();
|
name = wsFolder.getName();
|
||||||
|
|
||||||
Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, "", wsFolder.getOwner().getPortalLogin(), wsFolder.isFolder());
|
//BUILDS A SIMPLE ITEM FOR BREADCRUMB
|
||||||
|
Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, "", null, true);
|
||||||
item.setSpecialFolder(isSpecialFolder);
|
item.setSpecialFolder(isSpecialFolder);
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
package org.gcube.portlets.widgets.wsexplorer.server;
|
||||||
|
|
||||||
|
import org.gcube.vomanagement.usermanagement.UserManager;
|
||||||
|
import org.gcube.vomanagement.usermanagement.exception.UserManagementPortalException;
|
||||||
|
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
|
||||||
|
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
|
||||||
|
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager;
|
||||||
|
import org.gcube.vomanagement.usermanagement.model.UserModel;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
import com.liferay.portal.service.UserLocalServiceUtil;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class UserUtil.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 30, 2015
|
||||||
|
*/
|
||||||
|
public class UserUtil {
|
||||||
|
|
||||||
|
private static UserManager um = new LiferayUserManager();
|
||||||
|
private static Logger logger = org.slf4j.LoggerFactory.getLogger(UserUtil.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the user full name.
|
||||||
|
*
|
||||||
|
* @param portalLogin the portal login
|
||||||
|
* @return the user full name
|
||||||
|
*/
|
||||||
|
public static String getUserFullName(String portalLogin){
|
||||||
|
logger.trace("Get user full name for: "+portalLogin);
|
||||||
|
if(portalLogin==null)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
if (isWithinPortal()) { //INTO PORTAL
|
||||||
|
UserModel curr = null;
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
curr = um.getUserByScreenName(portalLogin);
|
||||||
|
} catch (UserManagementSystemException e) {
|
||||||
|
logger.error("An error occurred in getUserFullName "+e,e);
|
||||||
|
} catch (UserRetrievalFault e) {
|
||||||
|
logger.error("An error occurred in getUserFullName "+e,e);
|
||||||
|
}
|
||||||
|
} catch (UserManagementPortalException ume) {
|
||||||
|
logger.error("An error occurred in getUserFullName "+ume,ume);
|
||||||
|
}catch (Exception e) {
|
||||||
|
logger.error("An error occurred in getUserFullName "+e,e);
|
||||||
|
logger.warn("Return portal login "+portalLogin);
|
||||||
|
return portalLogin;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curr != null)
|
||||||
|
return curr.getFullname();
|
||||||
|
}else{
|
||||||
|
logger.trace("DEVELOPEMENT MODE ON");
|
||||||
|
logger.trace("Returning portal login: "+portalLogin);
|
||||||
|
return portalLogin;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.trace("Returning portal login: "+portalLogin);
|
||||||
|
return portalLogin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is within portal.
|
||||||
|
*
|
||||||
|
* @return true if you're running into the portal, false if in development
|
||||||
|
*/
|
||||||
|
public static boolean isWithinPortal() {
|
||||||
|
try {
|
||||||
|
UserLocalServiceUtil.getService();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
logger.trace("Development Mode ON");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
*/
|
*/
|
||||||
public static final Logger _log = LoggerFactory.getLogger(WorkspaceExplorerServiceImpl.class);
|
public static final Logger _log = LoggerFactory.getLogger(WorkspaceExplorerServiceImpl.class);
|
||||||
public static final String USERNAME_ATTRIBUTE = "username";
|
public static final String USERNAME_ATTRIBUTE = "username";
|
||||||
|
public static final String TEST_USER = "francesco.mangiacrapa";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,7 +66,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
|
|
||||||
//for test only
|
//for test only
|
||||||
// user = "test.user";
|
// user = "test.user";
|
||||||
user = "francesco.mangiacrapa";
|
user = TEST_USER;
|
||||||
httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
|
httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
|
||||||
ASLSession session = SessionManager.getInstance().getASLSession(sessionID, user);
|
ASLSession session = SessionManager.getInstance().getASLSession(sessionID, user);
|
||||||
session.setScope("/gcube/devsec/devVRE");
|
session.setScope("/gcube/devsec/devVRE");
|
||||||
|
@ -182,7 +183,13 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
case HOME:{
|
case HOME:{
|
||||||
WorkspaceItem root = workspace.getRoot();
|
WorkspaceItem root = workspace.getRoot();
|
||||||
ASLSession session = getASLSession(this.getThreadLocalRequest().getSession());
|
ASLSession session = getASLSession(this.getThreadLocalRequest().getSession());
|
||||||
item = new Item(null, root.getId(), session.getUsername()+"'s", ItemType.ROOT, root.getPath(), root.getOwner().getPortalLogin(), root.isFolder());
|
String fullName = UserUtil.getUserFullName(session.getUsername());
|
||||||
|
if(fullName.indexOf(" ")>0){
|
||||||
|
fullName = fullName.substring(0, fullName.indexOf(" "));
|
||||||
|
}else if(fullName.indexOf(".")>0){
|
||||||
|
fullName = fullName.substring(0, fullName.indexOf("."));
|
||||||
|
}
|
||||||
|
item = new Item(null, root.getId(), fullName+"'s", ItemType.ROOT, root.getPath(), root.getOwner().getPortalLogin(), root.isFolder());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VRE_FOLDER:{
|
case VRE_FOLDER:{
|
||||||
|
@ -269,7 +276,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list parents by item identifier.
|
* Gets Breadcrumbs (the list of parents) by item identifier.
|
||||||
*
|
*
|
||||||
* @param itemIdentifier the item identifier
|
* @param itemIdentifier the item identifier
|
||||||
* @param includeItemAsParent - if parameter is true and item passed in input is a folder, the folder is included in path returned as last parent
|
* @param includeItemAsParent - if parameter is true and item passed in input is a folder, the folder is included in path returned as last parent
|
||||||
|
@ -277,29 +284,35 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Item> getListParentsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
|
public List<Item> getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
|
||||||
List<Item> listParents = new ArrayList<Item>();
|
List<Item> listParents = new ArrayList<Item>();
|
||||||
_log.trace("ListParents By Item Identifier "+ itemIdentifier);
|
_log.trace("ListParents By Item Identifier "+ itemIdentifier);
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Workspace workspace = getWorkspace();
|
Workspace workspace = getWorkspace();
|
||||||
|
|
||||||
WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
|
WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
|
||||||
|
|
||||||
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
||||||
|
|
||||||
// String nameSpecialFolder = getNameForSpecialFolder();
|
|
||||||
|
|
||||||
if(includeItemAsParent==true && wsItem.isFolder()){
|
if(includeItemAsParent==true && wsItem.isFolder()){
|
||||||
listParents.add(ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsItem, null));
|
listParents.add(ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsItem, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
while(wsItem!=null && wsItem.getParent()!=null){
|
while(wsItem!=null && wsItem.getParent()!=null){
|
||||||
WorkspaceFolder wsFolder = wsItem.getParent();
|
WorkspaceFolder wsFolder = wsItem.getParent();
|
||||||
listParents.add(ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsFolder, null));
|
Item parent = ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsFolder, null);
|
||||||
|
listParents.add(parent);
|
||||||
|
if(parent.isSpecialFolder()) //SKIP HOME PARENT TO MY_SPECIAL_FOLDER
|
||||||
|
break;
|
||||||
wsItem = wsFolder;
|
wsItem = wsFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.reverse(listParents);
|
Collections.reverse(listParents);
|
||||||
|
|
||||||
|
System.out.println("Parent's:");
|
||||||
|
for (Item item : listParents) {
|
||||||
|
System.out.println(item);
|
||||||
|
}
|
||||||
|
|
||||||
//SET PARENTS
|
//SET PARENTS
|
||||||
for(int i=0; i<listParents.size()-1; i++){
|
for(int i=0; i<listParents.size()-1; i++){
|
||||||
|
|
Loading…
Reference in New Issue