Accounting Manager

Added Tabs by Resources Configuration

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/accounting-manager@131691 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2016-09-22 16:47:29 +00:00
parent a320e72d19
commit 2a0b3cb7f3
5 changed files with 189 additions and 63 deletions

View File

@ -1,5 +1,6 @@
package org.gcube.portlets.admin.accountingmanager.client;
import org.gcube.portlets.admin.accountingmanager.client.event.EnableTabsEvent;
import org.gcube.portlets.admin.accountingmanager.client.filters.FiltersPanel;
import org.gcube.portlets.admin.accountingmanager.client.maindata.MainDataPanel;
import org.gcube.portlets.admin.accountingmanager.client.menu.AccountingManagerMenu;
@ -7,6 +8,7 @@ import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingMana
import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerService;
import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerServiceAsync;
import org.gcube.portlets.admin.accountingmanager.client.utils.UtilsGXT3;
import org.gcube.portlets.admin.accountingmanager.shared.tabs.EnableTabs;
import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper;
import com.allen_sauer.gwt.log.client.Log;
@ -38,6 +40,9 @@ public class AccountingManager implements EntryPoint {
private final AccountingManagerServiceAsync accountingManagerService = GWT
.create(AccountingManagerService.class);
private EventBus eventBus;
private AccountingManagerController controller;
// Main Panel
private static BorderLayoutContainer mainPanelLayout;
@ -86,13 +91,31 @@ public class AccountingManager implements EntryPoint {
}
private void bindToEvents() {
eventBus.addHandler(EnableTabsEvent.TYPE,
new EnableTabsEvent.EnableTabsEventHandler() {
@Override
public void onEnableTabs(EnableTabsEvent event) {
Log.debug("Catch Event EnableTabsEvent");
createMainInteface(event.getEnableTabs());
}
});
}
private void loadMainPanel() {
AccountingManagerResources.INSTANCE.accountingManagerCSS()
.ensureInjected();
// ScriptInjector.fromString(AccountingManagerResources.INSTANCE.jqueryJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
AccountingManagerController controller = new AccountingManagerController();
EventBus eventBus = controller.getEventBus();
controller = new AccountingManagerController();
eventBus = controller.getEventBus();
bindToEvents();
}
private void createMainInteface(EnableTabs enableTabs) {
// Layout
mainPanelLayout = new BorderLayoutContainer();
@ -108,7 +131,7 @@ public class AccountingManager implements EntryPoint {
// Menu
AccountingManagerMenu accountingManagerMenu = new AccountingManagerMenu(
eventBus);
enableTabs, eventBus);
BorderLayoutData menuData = new BorderLayoutData(58);
menuData.setMargins(new Margins(5));

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.Date;
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingMenuEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.EnableTabsEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.FiltersChangeEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEvent;
@ -60,6 +61,7 @@ public class AccountingManagerController {
@SuppressWarnings("unused")
private BorderLayoutContainer mainPanel;
private AccountingMonitor accountingMonitor;
private EnableTabs enableTabs;
public AccountingManagerController() {
eventBus = new SimpleEventBus();
@ -73,14 +75,13 @@ public class AccountingManagerController {
private void init() {
callHello();
checkSession();
bindToEvents();
}
private void checkSession() {
// if you do not need to something when the session expire
// CheckSession.getInstance().startPolling();
}
/*
* private void checkSession() { // if you do not need to something when the
* session expire // CheckSession.getInstance().startPolling(); }
*/
private void sessionExpiredShow() {
CheckSession.showLogoutDialog();
@ -116,40 +117,51 @@ public class AccountingManagerController {
public void onSuccess(UserInfo result) {
userInfo = result;
Log.info("Hello: " + userInfo.getUsername());
retrieveEnableTabs();
}
});
}
private void retrieveEnableTabs() {
AccountingManagerServiceAsync.INSTANCE
.getEnableTabs(new AsyncCallback<EnableTabs>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error retrieving enable tabs: " + caught.getLocalizedMessage());
Log.error("Error retrieving enable tabs: "
+ caught.getLocalizedMessage());
if (caught instanceof SessionExpiredException) {
UtilsGXT3.alert("Error", "Expired Session");
sessionExpiredShowDelayed();
} else {
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(EnableTabs enableTabs) {
Log.info("Enable Tabs: " + enableTabs);
doEnableTabs(enableTabs);
}
});
}
private void doEnableTabs(EnableTabs enableTabs) {
if (enableTabs == null || enableTabs.getTabs() == null
|| enableTabs.getTabs().isEmpty()) {
UtilsGXT3.alert("Attention",
"You don't have permissions to see Accounting Information in this scope!");
} else {
this.enableTabs=enableTabs;
EnableTabsEvent event = new EnableTabsEvent(enableTabs);
eventBus.fireEvent(event);
}
}
private void sessionExpiredShowDelayed() {
Timer timeoutTimer = new Timer() {
@ -277,7 +289,7 @@ public class AccountingManagerController {
}
public void showDefault() {
createDefaultChart(AccountingType.STORAGE);
createDefaultChart(enableTabs.getTabs().get(0).getAccountingType());
}
private void createDefaultChart(AccountingType accountingType) {
@ -447,7 +459,7 @@ public class AccountingManagerController {
}
//TODO save on workspace
// TODO save on workspace
@SuppressWarnings("unused")
private void doSaveDataOnWorkspace(ExportRequestEvent event) {
accountingMonitor = new AccountingMonitor();
@ -516,12 +528,13 @@ public class AccountingManagerController {
actionUrl.append(GWT.getModuleBaseURL());
actionUrl.append(Constants.EXPORT_SERVLET + "?"
+ Constants.EXPORT_SERVLET_TYPE_PARAMETER + "="
+ event.getExportType().name()+"&"
+ event.getExportType().name() + "&"
+ Constants.EXPORT_SERVLET_ACCOUNTING_TYPE_PARAMETER + "="
+ event.getAccountingType().name());
Log.debug("Retrieved link: " + actionUrl);
Window.open(actionUrl.toString(), event.getAccountingType().toString(), "");
Window.open(actionUrl.toString(), event.getAccountingType().toString(),
"");
}

View File

@ -0,0 +1,62 @@
package org.gcube.portlets.admin.accountingmanager.client.event;
import org.gcube.portlets.admin.accountingmanager.shared.tabs.EnableTabs;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
/**
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class EnableTabsEvent extends
GwtEvent<EnableTabsEvent.EnableTabsEventHandler> {
public static Type<EnableTabsEventHandler> TYPE = new Type<EnableTabsEventHandler>();
private EnableTabs enableTabs;
public interface EnableTabsEventHandler extends EventHandler {
void onEnableTabs(EnableTabsEvent event);
}
public interface HasEnableTabsEventHandler extends HasHandlers {
public HandlerRegistration addEnableTabsEventHandler(
EnableTabsEventHandler handler);
}
public EnableTabsEvent(EnableTabs enableTabs) {
this.enableTabs = enableTabs;
}
@Override
protected void dispatch(EnableTabsEventHandler handler) {
handler.onEnableTabs(this);
}
@Override
public Type<EnableTabsEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<EnableTabsEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, EnableTabsEvent enableTabsEvent) {
source.fireEvent(enableTabsEvent);
}
public EnableTabs getEnableTabs() {
return enableTabs;
}
@Override
public String toString() {
return "EnableTabsEvent [enableTabs=" + enableTabs + "]";
}
}

View File

@ -1,11 +1,12 @@
package org.gcube.portlets.admin.accountingmanager.client.menu;
import java.util.ArrayList;
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingMenuEvent;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
import org.gcube.portlets.admin.accountingmanager.shared.tabs.EnableTabData;
import org.gcube.portlets.admin.accountingmanager.shared.tabs.EnableTabs;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
@ -19,20 +20,21 @@ import com.sencha.gxt.widget.core.client.TabPanel;
/**
*
* @author giancarlo
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
* @author giancarlo email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class AccountingManagerMenu extends TabPanel {
//private AccountingManagerMenuMessages msgs;
// private AccountingManagerMenuMessages msgs;
private EventBus eventBus;
private ArrayList<AccountingType> enableTabs;
private EnableTabs enableTabs;
public AccountingManagerMenu(EventBus eventBus) {
super(GWT.<TabPanelAppearance>create(Css3BigTabPanelAppearance.class));
public AccountingManagerMenu(EnableTabs enableTabs, EventBus eventBus) {
super(GWT.<TabPanelAppearance> create(Css3BigTabPanelAppearance.class));
Log.debug("Create AccountingManagerMenu");
this.eventBus = eventBus;
//this.msgs = GWT.create(AccountingManagerMenuMessages.class);
this.enableTabs = enableTabs;
// this.msgs = GWT.create(AccountingManagerMenuMessages.class);
setBodyBorder(false);
setBorders(false);
setAnimScroll(false);
@ -42,49 +44,77 @@ public class AccountingManagerMenu extends TabPanel {
addTabs();
}
private void addTabs() {
TabItemConfig storageItemConf = new TabItemConfig("Storage", false);
storageItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingStorage48());
EmptyPanel storageCategory=new EmptyPanel(AccountingType.STORAGE.name());
add(storageCategory, storageItemConf);
TabItemConfig serviceItemConf = new TabItemConfig("Service", false);
serviceItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingService48());
EmptyPanel serviceCategory=new EmptyPanel(AccountingType.SERVICE.name());
add(serviceCategory, serviceItemConf);
TabItemConfig jobItemConf = new TabItemConfig("Job", false);
jobItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingJob48());
EmptyPanel jobCategory=new EmptyPanel(AccountingType.JOB.name());
add(jobCategory, jobItemConf);
for (EnableTabData enable : enableTabs.getTabs()) {
if (enable.getAccountingType() != null) {
switch (enable.getAccountingType()) {
case JOB:
TabItemConfig jobItemConf = new TabItemConfig("Job", false);
jobItemConf.setIcon(AccountingManagerResources.INSTANCE
.accountingJob48());
EmptyPanel jobCategory = new EmptyPanel(AccountingType.JOB.name());
add(jobCategory, jobItemConf);
break;
case PORTLET:
break;
case SERVICE:
TabItemConfig serviceItemConf = new TabItemConfig("Service", false);
serviceItemConf.setIcon(AccountingManagerResources.INSTANCE
.accountingService48());
EmptyPanel serviceCategory = new EmptyPanel(
AccountingType.SERVICE.name());
add(serviceCategory, serviceItemConf);
break;
case STORAGE:
TabItemConfig storageItemConf = new TabItemConfig("Storage", false);
storageItemConf.setIcon(AccountingManagerResources.INSTANCE
.accountingStorage48());
EmptyPanel storageCategory = new EmptyPanel(
AccountingType.STORAGE.name());
add(storageCategory, storageItemConf);
break;
case TASK:
break;
default:
break;
}
}
}
/*
TabItemConfig portletItemConf = new TabItemConfig("Portlet", false);
portletItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingPortlet48());
EmptyPanel portletCategory=new EmptyPanel(AccountingType.PORTLET.name());
add(portletCategory, portletItemConf);
TabItemConfig taskItemConf = new TabItemConfig("Task", false);
taskItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingTask48());
EmptyPanel taskCategory=new EmptyPanel(AccountingType.TASK.name());
add(taskCategory, taskItemConf);
*/
* TabItemConfig portletItemConf = new TabItemConfig("Portlet", false);
* portletItemConf
* .setIcon(AccountingManagerResources.INSTANCE.accountingPortlet48());
* EmptyPanel portletCategory=new
* EmptyPanel(AccountingType.PORTLET.name()); add(portletCategory,
* portletItemConf);
*
* TabItemConfig taskItemConf = new TabItemConfig("Task", false);
* taskItemConf
* .setIcon(AccountingManagerResources.INSTANCE.accountingTask48());
* EmptyPanel taskCategory=new EmptyPanel(AccountingType.TASK.name());
* add(taskCategory, taskItemConf);
*/
setActiveWidget(getWidget(0));
addSelectionHandler(new SelectionHandler<Widget>() {
@Override
public void onSelection(SelectionEvent<Widget> event) {
Widget widget = event.getSelectedItem();
if (widget instanceof EmptyPanel) {
EmptyPanel p=(EmptyPanel) widget;
AccountingMenuEvent accountMenuEvent=new AccountingMenuEvent(AccountingType.valueOf(p.getId()));
EmptyPanel p = (EmptyPanel) widget;
AccountingMenuEvent accountMenuEvent = new AccountingMenuEvent(
AccountingType.valueOf(p.getId()));
eventBus.fireEvent(accountMenuEvent);
} else {
@ -94,6 +124,4 @@ public class AccountingManagerMenu extends TabPanel {
});
}
}

View File

@ -10,7 +10,7 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
*/
public class Constants {
public static final boolean DEBUG_MODE = false;
public static final boolean TEST_ENABLE = true;
public static final boolean TEST_ENABLE = false;
public static final String APPLICATION_ID = "org.gcube.portlets.admin.accountingmanager.server.portlet.AccountingManagerPortlet";
public static final String ACCOUNTING_MANAGER_ID = "AccountingManagerId";