ckan-content-moderator-widget/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/MainTabPanel.java

189 lines
4.3 KiB
Java
Raw Normal View History

2021-06-18 12:10:49 +02:00
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
import java.util.ArrayList;
import java.util.List;
2021-06-22 17:38:42 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util.UtilFunct;
2021-06-18 12:10:49 +02:00
import com.github.gwtbootstrap.client.ui.Tab;
import com.github.gwtbootstrap.client.ui.TabPanel;
2021-06-22 17:38:42 +02:00
import com.github.gwtbootstrap.client.ui.constants.IconType;
2021-06-18 12:10:49 +02:00
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
2021-06-28 15:40:53 +02:00
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
2021-06-18 12:10:49 +02:00
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
2021-06-28 15:40:53 +02:00
import com.google.gwt.user.client.Element;
2021-06-18 12:10:49 +02:00
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
2021-06-22 18:09:16 +02:00
// TODO: Auto-generated Javadoc
2021-06-18 12:10:49 +02:00
/**
* The Class MainTabPanel.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
2021-06-22 18:09:16 +02:00
* Jun 18, 2021
2021-06-18 12:10:49 +02:00
*/
public class MainTabPanel extends Composite {
private static MainTabPanelUiBinder uiBinder = GWT.create(MainTabPanelUiBinder.class);
/**
* The Interface MainTabPanelUiBinder.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
2021-06-22 18:09:16 +02:00
* Jun 18, 2021
2021-06-18 12:10:49 +02:00
*/
interface MainTabPanelUiBinder extends UiBinder<Widget, MainTabPanel> {
}
private List<Tab> results = new ArrayList<Tab>();
@UiField
TabPanel mainTabPanel;
@UiField
Tab homeTab;
/**
* Instantiates a new main tab panel.
*/
public MainTabPanel() {
initWidget(uiBinder.createAndBindUi(this));
results.add(homeTab);
}
/**
* Adds the home widget.
*
* @param w the w
*/
public void addHomeWidget(Widget w) {
homeTab.add(w);
}
/**
* Adds the tab.
*
* @param heading the heading
2021-06-22 18:09:16 +02:00
* @param w the w
2021-06-18 12:10:49 +02:00
* @return the tab
*/
2021-06-22 18:09:16 +02:00
public Tab addTab(String heading, Widget w) {
2021-06-28 15:40:53 +02:00
final Tab tab = new Tab();
if (w instanceof CkanFramePanel) {
tab.setCustomIconStyle("icon-rotate-right icon-spin");
CkanFramePanel ckanFramePanel = (CkanFramePanel) w;
ckanFramePanel.getFrame().addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
tab.setIcon(IconType.BOOK);
setNoSpinner(tab);
}
});
}
2021-06-18 12:10:49 +02:00
tab.addClickHandler(new ClickHandler() {
2021-06-22 18:09:16 +02:00
2021-06-18 12:10:49 +02:00
@Override
public void onClick(ClickEvent event) {
}
});
2021-06-28 15:40:53 +02:00
2021-06-22 17:38:42 +02:00
String shortTitle = UtilFunct.ellipsis(heading, 20, false);
tab.asWidget().setTitle(heading);
tab.setHeading(shortTitle);
2021-06-22 18:09:16 +02:00
if (w != null)
2021-06-18 12:10:49 +02:00
tab.add(w);
2021-06-22 18:09:16 +02:00
2021-06-18 12:10:49 +02:00
results.add(tab);
mainTabPanel.add(tab);
2021-06-28 15:40:53 +02:00
// activeTabPanels(false);
2021-06-22 18:09:16 +02:00
2021-06-18 12:10:49 +02:00
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
2021-06-28 15:40:53 +02:00
// mainTabPanel.selectTab(results.size() - 1);
2021-06-18 12:10:49 +02:00
}
});
2021-06-22 18:09:16 +02:00
2021-06-18 12:10:49 +02:00
return tab;
}
/**
* Active tab panels.
*
* @param bool the bool
*/
private void activeTabPanels(boolean bool) {
for (Tab tab : results) {
tab.setActive(false);
}
}
/**
* Count tab.
*
* @return the int
*/
public int countTab() {
return results.size();
}
2021-06-22 18:09:16 +02:00
/**
* Close tabs.
*/
public void closeTabs() {
int tabSize = results.size();
GWT.log("tab size is: " + tabSize);
for (int i = 1; i < tabSize; i++) {
2021-06-28 15:40:53 +02:00
// each remove shifts any subsequent elements to the left, so I'm removing
// always the first element
mainTabPanel.remove(1);
2021-06-22 18:09:16 +02:00
results.remove(1);
}
2021-06-28 15:40:53 +02:00
// selecting Home Tab
2021-06-22 18:09:16 +02:00
selectTab(0);
}
2021-06-25 16:56:43 +02:00
public void selectTab(int tabIndex) {
2021-06-22 18:09:16 +02:00
if (tabIndex <= results.size()) {
mainTabPanel.selectTab(tabIndex);
}
}
2021-06-28 15:40:53 +02:00
/**
* Sets the no spinner.
*
* @param tab the new no spinner
*/
private void setNoSpinner(Tab tab) {
try{
tab.asTabLink().getAnchor().removeStyleName("icon-spin");
tab.asTabLink().getAnchor().removeStyleName("icon-rotate-right");
Element anchorElem = tab.asTabLink().getAnchor().asWidget().getElement();
anchorElem.getFirstChildElement().removeClassName("icon-spin");
anchorElem.getFirstChildElement().removeClassName("icon-rotate-right");
}catch(Exception e){
//silent
}
tab.asTabLink().getAnchor().setIcon(IconType.BOOK);
//tab.asTabLink().getAnchor().setVisible(false);
//if(tab.asTabLink().getAnchor().setVisible(false);)
}
2021-06-22 18:09:16 +02:00
2021-06-18 12:10:49 +02:00
}