From a298411b475995f4a73d94a50e49bd5f7b86fb64 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 28 Jul 2014 14:21:45 +0000 Subject: [PATCH] fixed breadcrumbs https://support.d4science.research-infrastructures.eu/ticket/813#comment:2 git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace@99039 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 5 +- pom.xml | 9 +- .../workspace/client/WorkspacePortlet.java | 3 +- .../view/panels/GxtBorderLayoutPanel.java | 7 +- .../view/panels/GxtSeachAndFilterPanel.java | 20 ++- .../client/view/toolbars/Breadcrumbs.java | 118 +++++++++++++ .../client/view/toolbars/Breadcrumbs.ui.xml | 18 ++ .../view/toolbars/GxtBreadcrumbPathPanel.java | 161 ++---------------- .../user/workspace/WorkspacePortlet.gwt.xml | 3 + src/main/webapp/workspaceportlet.css | 22 ++- 10 files changed, 203 insertions(+), 163 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.java create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.ui.xml diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 96de530..438a6d8 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -5,7 +5,10 @@ - + + uses + + uses diff --git a/pom.xml b/pom.xml index 187c15f..f4c05ab 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.gcube.portlets.user workspace war - 6.6.6-SNAPSHOT + 6.6.7-SNAPSHOT gCube Workspace Portlet gcube Workspace Portlet is a portlet for users workspace management @@ -56,6 +56,13 @@ 2.9.1 provided + + + com.github.gwtbootstrap + gwt-bootstrap + 2.2.1.0 + + com.google.gwt gwt-user diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/WorkspacePortlet.java b/src/main/java/org/gcube/portlets/user/workspace/client/WorkspacePortlet.java index 22ea3ea..2951139 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/WorkspacePortlet.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/WorkspacePortlet.java @@ -40,7 +40,8 @@ public class WorkspacePortlet implements EntryPoint { }); updateSize(); - showGuidedTour(); + +// showGuidedTour(); } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtBorderLayoutPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtBorderLayoutPanel.java index b0e69ba..a2fc633 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtBorderLayoutPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtBorderLayoutPanel.java @@ -50,6 +50,8 @@ public class GxtBorderLayoutPanel extends ContentPanel { private void initLayout(){ north.setId("NorthPanel"); +// north.setStyleAttribute("background-color", "#d0def0"); + north.setLayout(new FitLayout()); west.setId("WestPanel"); west.setLayout(new FitLayout()); @@ -83,8 +85,8 @@ public class GxtBorderLayoutPanel extends ContentPanel { // center.add(this.gridFilter); - BorderLayoutData northData = new BorderLayoutData(LayoutRegion.NORTH, 55, 55, 70); - northData.setCollapsible(true); + BorderLayoutData northData = new BorderLayoutData(LayoutRegion.NORTH, 70, 70, 70); + northData.setCollapsible(true); northData.setSplit(true); //Split bar between regions // northData.setFloatable(true); @@ -112,6 +114,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { southData.setMargins(new Margins(1, 0, 0, 0)); north.add(this.searchAndFilterContainer); + north.setScrollMode(Scroll.AUTOY); west.add(this.expPanel); 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 2790b82..c89d4c4 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 @@ -66,19 +66,21 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { setLayout(new FitLayout()); setBorders(true); - setId("SearchAndFilter"); - + this.setId("SearchAndFilter"); + this.setBorders(false); +// this.setStyleAttribute("background-color", "#d0def0"); this.comboBoxGxt = new GxtComboBox(); this.cbViewScope = this.comboBoxGxt.getComboViewScope(); this.cbNameFilter = this.comboBoxGxt.getComboStringFilter(); - + this.textSearch.setId("TextSearch"); +// this.textSearch.setStyleAttribute("margin-bottom", "0px"); this.cbViewScope.setWidth(360); // this.cbViewScope.setAutoWidth(true); this.toolbarPahtPanel = toolBarPathPanel; verticalPanel.add(this.toolbarPahtPanel.getToolBarPathPanel()); - hp.setStyleAttribute("padding", "2px"); + hp.setStyleAttribute("margin-left", "2px"); seVisibleButtonsCancelSave(false); @@ -104,13 +106,17 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { // hp.add(bCancel); hp.add(bSave); + hp.setHeight(20); + hpMain.setHeight(20); + + bSearch.setWidth("70px"); bSave.setWidth("70px"); hp2.setHorizontalAlign(HorizontalAlignment.RIGHT); hp2.setVerticalAlign(VerticalAlignment.MIDDLE); //hp2.add(txtViewScope); - hp2.add(cbViewScope); +// hp2.add(cbViewScope); cbViewScope.setStyleAttribute("margin-left", "132px"); cbViewScope.setStyleAttribute("margin-top", "2px"); @@ -120,9 +126,11 @@ public class GxtSeachAndFilterPanel extends LayoutContainer { //SOLUTION FOR SCOPE INVISIBLE cbViewScope.setVisible(false); - hpMain.add(hp2); +// hpMain.add(hp2); +// verticalPanel.setLayout(new FitLayout()); verticalPanel.add(hpMain); +// verticalPanel.setStyleAttribute("background-color", "#d0def0"); this.addListeners(); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.java new file mode 100644 index 0000000..b3f0810 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.java @@ -0,0 +1,118 @@ +/** + * + */ +package org.gcube.portlets.user.workspace.client.view.toolbars; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.gcube.portlets.user.workspace.client.AppController; +import org.gcube.portlets.user.workspace.client.event.PathElementSelectedEvent; +import org.gcube.portlets.user.workspace.client.model.FileModel; + +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; + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @Jul 28, 2014 + * + */ +public class Breadcrumbs extends Composite { + + /** + * + */ + public static final String DIVIDER = ">"; + private String rootName; + private LinkedHashMap hashFileModel = new LinkedHashMap();// Ordered-HashMap + private FileModel lastParent; + private static BreadcrumbsUiBinder uiBinder = GWT.create(BreadcrumbsUiBinder.class); + + @UiField + com.github.gwtbootstrap.client.ui.Breadcrumbs breadcrumbs; + + interface BreadcrumbsUiBinder extends UiBinder { + } + + public Breadcrumbs(String rootName) { + this.rootName = rootName; + initWidget(uiBinder.createAndBindUi(this)); + breadcrumbs.setDivider(DIVIDER); + // initBreadcrumb(true); + this.addStyleName("Breadcrumbs-Personal"); + } + + public void setPath(List parents) { + + resetBreadcrumbs(); + + if (parents != null && parents.size() > 0) { + + hashFileModel = new LinkedHashMap(); + + for (FileModel parent : parents) { + addNavigationLink(parent); + hashFileModel.put(parent.getIdentifier(), parent); + } + + lastParent = parents.get(parents.size() - 1); + } + } + + /** + * + */ + private void initBreadcrumb(boolean addFakeRootName) { + resetBreadcrumbs(); + if (addFakeRootName) { + NavLink navLink = new NavLink(rootName); + breadcrumbs.add(navLink); + } + } + + private void resetBreadcrumbs() { + + breadcrumbs.clear(); + } + + // @UiHandler("add") + public void addNavigationLink(FileModel parent) { + + final NavLink navLink = new NavLink(parent.getName()); + navLink.setName(parent.getIdentifier()); + breadcrumbs.add(navLink); + + navLink.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + FileModel target = hashFileModel.get(navLink.getName()); + AppController.getEventBus().fireEvent( + new PathElementSelectedEvent(target)); + + } + }); + } + + public boolean breadcrumbIsEmpty() { + + if (hashFileModel.size() == 0) + return true; + + return false; + } + + public FileModel getLastParent() { + return lastParent; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.ui.xml b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.ui.xml new file mode 100644 index 0000000..4f59da5 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/Breadcrumbs.ui.xml @@ -0,0 +1,18 @@ + + + + .pretty { + background-color: #d0def0; + } + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBreadcrumbPathPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBreadcrumbPathPanel.java index 222e662..3e2cd62 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBreadcrumbPathPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBreadcrumbPathPanel.java @@ -1,23 +1,10 @@ package org.gcube.portlets.user.workspace.client.view.toolbars; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import org.gcube.portlets.user.workspace.client.AppController; -import org.gcube.portlets.user.workspace.client.event.PathElementSelectedEvent; import org.gcube.portlets.user.workspace.client.model.FileModel; -import org.gcube.portlets.user.workspace.client.resources.Resources; -import com.extjs.gxt.ui.client.event.ButtonEvent; -import com.extjs.gxt.ui.client.event.Events; -import com.extjs.gxt.ui.client.event.Listener; -import com.extjs.gxt.ui.client.widget.HorizontalPanel; -import com.extjs.gxt.ui.client.widget.Text; -import com.extjs.gxt.ui.client.widget.WidgetComponent; -import com.extjs.gxt.ui.client.widget.button.Button; -import com.google.gwt.core.shared.GWT; -import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Composite; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it @@ -26,161 +13,33 @@ import com.google.gwt.user.client.ui.Image; public class GxtBreadcrumbPathPanel { private static final String ROOT_NAME = "Workspace"; - - private HorizontalPanel hpToolBar = new HorizontalPanel(); - private Text txtPath = new Text("PATH "); - private LinkedHashMap hashFileModel = new LinkedHashMap();// Ordered-HashMap - boolean rootAdded = false; - protected WidgetComponent hardDiskIcon = new WidgetComponent(new Image (Resources.getImageHardDisk())); - - private FileModel lastParent; + private Breadcrumbs breadCrumbs = new Breadcrumbs(ROOT_NAME); + public GxtBreadcrumbPathPanel() { - hpToolBar = new HorizontalPanel(); -// hpToolBar.setScrollMode(Scroll.AUTOX); - hpToolBar.setId("myToolbarPath"); - hpToolBar.setHeight("25px"); - initToolbar(); } - - - /* - * private void createScrollers() { int h = hpToolBar.getHeight(); El - * scrollLeft = - * hpToolBar.el().insertFirst("
"); - * addStyleOnOver(scrollLeft.dom, "x-tab-scroller-left-over"); - * scrollLeft.setHeight(h); - * - * El scrollRight = - * hpToolBar.el().insertFirst("
"); - * addStyleOnOver(scrollRight.dom, "x-tab-scroller-right-over"); - * scrollRight.setHeight(h); - * - * } - * - * public El fly(Element elem) { return El.fly(elem, "component"); } - * - * private Map overElements; - * - * - * protected void addStyleOnOver(Element elem, String style) { if - * (overElements == null) { overElements = new FastMap(); } - * overElements.put(fly(elem).getId(), style); } - */ - - public HorizontalPanel getToolBarPathPanel() { - return hpToolBar; + public Composite getToolBarPathPanel() { + return breadCrumbs; } public void setPath(List parents) { - - initToolbarWithoutFakeRoot(); - -// refreshSize(); - - if (parents != null && parents.size() > 0) { - - ArrayList