158 lines
4.8 KiB
Java
158 lines
4.8 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
|
|
|
import gwt.material.design.client.constants.IconPosition;
|
|
import gwt.material.design.client.constants.IconType;
|
|
import gwt.material.design.client.ui.MaterialLink;
|
|
import gwt.material.design.client.ui.MaterialNavBar;
|
|
import gwt.material.design.client.ui.MaterialNavSection;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEvent;
|
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
|
|
|
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.event.shared.HandlerManager;
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
import com.google.gwt.user.client.Window;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
|
import com.google.gwt.user.client.ui.Image;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
|
|
/**
|
|
* The Class WorkspaceExplorerAppMainPanel.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
* Mar 2, 2016
|
|
*/
|
|
public class WorkspaceExplorerAppMainPanel extends Composite {
|
|
|
|
private static WorkspaceExplorerAppMainPanelUiBinder uiBinder =
|
|
GWT.create(WorkspaceExplorerAppMainPanelUiBinder.class);
|
|
|
|
/**
|
|
* The Interface WorkspaceExplorerAppMainPanelUiBinder.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
* Mar 8, 2016
|
|
*/
|
|
interface WorkspaceExplorerAppMainPanelUiBinder
|
|
extends UiBinder<Widget, WorkspaceExplorerAppMainPanel> {
|
|
}
|
|
|
|
@UiField
|
|
HTMLPanel explorer_main_container;
|
|
|
|
@UiField
|
|
HTMLPanel we_html_base_panel;
|
|
|
|
@UiField
|
|
MaterialNavBar we_nav_bar;
|
|
|
|
@UiField
|
|
MaterialNavSection we_nav_right;
|
|
|
|
@UiField
|
|
MaterialLink download_we;
|
|
|
|
@UiField
|
|
MaterialLink show_we;
|
|
|
|
@UiField
|
|
Image d4science_workspace_logo_180;
|
|
|
|
private HandlerManager handlerManager;
|
|
|
|
/**
|
|
* Because this class has a default constructor, it can
|
|
* be used as a binder template. In other words, it can be used in other
|
|
* *.ui.xml files as follows:
|
|
* <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
|
* xmlns:g="urn:import:**user's package**">
|
|
* <g:**UserClassName**>Hello!</g:**UserClassName>
|
|
* </ui:UiBinder>
|
|
* Note that depending on the widget that is used, it may be necessary to
|
|
* implement HasHTML instead of HasText.
|
|
*
|
|
* @param workspaceExplorerAppPanel the workspace explorer app panel
|
|
* @param handlerManager the handler manager
|
|
*/
|
|
public WorkspaceExplorerAppMainPanel(WorkspaceExplorerAppPanel workspaceExplorerAppPanel, HandlerManager handlerManager, DisplayField[] displayFields) {
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
this.handlerManager = handlerManager;
|
|
explorer_main_container.add(workspaceExplorerAppPanel);
|
|
we_nav_bar.getElement().setId("we_nav_bar");
|
|
we_nav_bar.getElement().setAttribute("id", "we_nav_bar");
|
|
|
|
final MaterialLink order = new MaterialLink("Order by");
|
|
order.setTitle("Order data for item selected");
|
|
order.setActivates("order_list");
|
|
order.setTextColor("white");
|
|
order.setIconType(IconType.ARROW_DROP_DOWN);
|
|
order.setIconPosition(IconPosition.RIGHT);
|
|
|
|
final List<MaterialLink> links = new ArrayList<MaterialLink>(displayFields.length);
|
|
for (final DisplayField field : displayFields) {
|
|
if(field.isSortable()){
|
|
MaterialLink link = new MaterialLink(field.getLabel());
|
|
link.addStyleName("under-line-onhover");
|
|
links.add(link);
|
|
}
|
|
}
|
|
|
|
final SortByContextMenu scm = new SortByContextMenu(this.handlerManager, links);
|
|
|
|
order.addClickHandler(new ClickHandler() {
|
|
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
GWT.log("clicked : "+event.getSource().toString());
|
|
scm.showRelativeTo(order);
|
|
}
|
|
});
|
|
|
|
we_nav_right.add(order);
|
|
download_we.addClickHandler(new ClickHandler() {
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
|
|
*/
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
WorkspaceExplorerAppMainPanel.this.handlerManager.fireEvent(new DownloadItemEvent(null, DownloadType.DOWNLOAD));
|
|
}
|
|
});
|
|
|
|
show_we.addClickHandler(new ClickHandler() {
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
|
|
*/
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
WorkspaceExplorerAppMainPanel.this.handlerManager.fireEvent(new DownloadItemEvent(null, DownloadType.OPEN));
|
|
}
|
|
});
|
|
|
|
d4science_workspace_logo_180.addClickHandler(new ClickHandler() {
|
|
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
|
|
Window.open("https://www.d4science.org", "_blank", null);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|