137 lines
3.2 KiB
Java
137 lines
3.2 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.widgets.wsexplorer.client.view;
|
|
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|
|
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
/**
|
|
* The Class Breadcrumbs.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 23, 2015
|
|
*/
|
|
public class Breadcrumbs extends Composite {
|
|
|
|
public static final String DIVIDER = ">";
|
|
private LinkedHashMap<String, Item> hashFileModel = new LinkedHashMap<String, Item>();// Ordered-HashMap
|
|
private Item lastParent;
|
|
private static BreadcrumbsUiBinder uiBinder = GWT.create(BreadcrumbsUiBinder.class);
|
|
private NavLink homeLink = new NavLink("Home");
|
|
|
|
@UiField
|
|
com.github.gwtbootstrap.client.ui.Breadcrumbs breadcrumbs;
|
|
|
|
/**
|
|
* The Interface BreadcrumbsUiBinder.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 23,
|
|
* 2015
|
|
*/
|
|
interface BreadcrumbsUiBinder extends UiBinder<Widget, Breadcrumbs> {
|
|
}
|
|
|
|
/**
|
|
* Instantiates a new breadcrumbs.
|
|
*
|
|
* @param rootName
|
|
* the root name
|
|
*/
|
|
public Breadcrumbs() {
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
breadcrumbs.setDivider(DIVIDER);
|
|
initBreadcrumbs();
|
|
// initBreadcrumb(true);
|
|
this.addStyleName("breadcrumbs-navigator");
|
|
}
|
|
|
|
/**
|
|
* Sets the path.
|
|
*
|
|
* @param parents
|
|
* the new path
|
|
*/
|
|
public void setPath(List<Item> parents) {
|
|
initBreadcrumbs();
|
|
if (parents != null && parents.size() > 0) {
|
|
hashFileModel = new LinkedHashMap<String, Item>();
|
|
for (Item parent : parents) {
|
|
addNavigationLink(parent);
|
|
hashFileModel.put(parent.getId(), parent);
|
|
}
|
|
lastParent = parents.get(parents.size() - 1);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Reset breadcrumbs.
|
|
*/
|
|
private void initBreadcrumbs() {
|
|
breadcrumbs.clear();
|
|
breadcrumbs.add(new NavLink(""));// INIT
|
|
breadcrumbs.add(homeLink);// INIT
|
|
breadcrumbs.add(new NavLink("2"));// INIT
|
|
}
|
|
|
|
// @UiHandler("add")
|
|
/**
|
|
* Adds the navigation link.
|
|
*
|
|
* @param parent
|
|
* the parent
|
|
*/
|
|
public void addNavigationLink(Item parent) {
|
|
if (parent != null && parent.getParent() != null) {
|
|
final NavLink navLink = new NavLink(parent.getName());
|
|
navLink.setName(parent.getId());
|
|
breadcrumbs.add(navLink);
|
|
|
|
navLink.addClickHandler(new ClickHandler() {
|
|
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
|
|
Item target = hashFileModel.get(navLink.getName());
|
|
}
|
|
});
|
|
} else { // is Root
|
|
// final NavLink navLink = new NavLink("");
|
|
NavLink navLink = new NavLink("");
|
|
breadcrumbs.add(navLink);// INIT
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Breadcrumb is empty.
|
|
*
|
|
* @return true, if successful
|
|
*/
|
|
public boolean breadcrumbIsEmpty() {
|
|
|
|
if (hashFileModel.size() == 0)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Gets the last parent.
|
|
*
|
|
* @return the last parent
|
|
*/
|
|
public Item getLastParent() {
|
|
return lastParent;
|
|
}
|
|
|
|
} |