2013-02-27 19:33:07 +01:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This software is part of the gCube Project .
* Site : http : //www.gcube-system.org/
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* The gCube / gCore software is licensed as Free Open Source software
* conveying to the EUPL ( http : //ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors / distributors
* " as is " and no expressed or
* implied warranty is given for its use , quality or fitness for a
* particular case .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Filename : ResourceManagementPortlet . java
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @author < a href = " mailto:daniele.strollo@isti.cnr.it " > Daniele Strollo < / a >
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
package org.gcube.portlets.admin.resourcemanagement.client ;
2013-09-13 15:31:50 +02:00
import org.gcube.portlets.admin.ishealthmonitor.client.dialog.ISMonitor ;
2013-02-27 19:33:07 +01:00
import org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources.DeployVirtualCollection ;
import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry ;
import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands ;
import org.gcube.portlets.admin.resourcemanagement.client.utils.Messages ;
import org.gcube.portlets.admin.resourcemanagement.client.utils.OpCommands ;
import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceDetailsPanel ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsolePanel ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.dialogs.ExtendedMessageBox ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.DetachablePanel ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry ;
import org.gcube.portlets.admin.resourcemanagement.client.widgets.viewport.MainContainer ;
2013-09-20 12:04:05 +02:00
import org.gcube.portlets.admin.resourcesweeper.client.dialog.SweeperDialog ;
2013-02-27 19:33:07 +01:00
import org.gcube.resourcemanagement.support.client.Resource_support ;
import org.gcube.resourcemanagement.support.client.events.SetScopeEvent ;
import org.gcube.resourcemanagement.support.client.events.SetScopeEventHandler ;
import org.gcube.resourcemanagement.support.client.utils.CurrentStatus ;
2013-09-20 12:04:05 +02:00
import org.gcube.resourcemanagement.support.client.utils.LocalStatus ;
2013-02-27 19:33:07 +01:00
import org.gcube.resourcemanagement.support.client.utils.StatusHandler ;
import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException ;
import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations ;
import org.gcube.resourcemanagement.support.shared.types.RunningMode ;
import org.gcube.resourcemanagement.support.shared.types.UserGroup ;
2013-02-28 19:52:20 +01:00
import org.gcube.resourcemanagement.support.shared.util.Configuration ;
2013-02-27 19:33:07 +01:00
import com.extjs.gxt.ui.client.Style.LayoutRegion ;
import com.extjs.gxt.ui.client.Style.Scroll ;
import com.extjs.gxt.ui.client.event.ComponentEvent ;
import com.extjs.gxt.ui.client.event.Listener ;
import com.extjs.gxt.ui.client.event.MessageBoxEvent ;
2018-06-27 17:03:05 +02:00
import com.extjs.gxt.ui.client.event.SelectionChangedEvent ;
import com.extjs.gxt.ui.client.event.SelectionChangedListener ;
import com.extjs.gxt.ui.client.store.ListStore ;
2013-02-27 19:33:07 +01:00
import com.extjs.gxt.ui.client.util.Margins ;
2018-06-27 17:03:05 +02:00
import com.extjs.gxt.ui.client.widget.Component ;
2013-02-27 19:33:07 +01:00
import com.extjs.gxt.ui.client.widget.ContentPanel ;
import com.extjs.gxt.ui.client.widget.Dialog ;
2018-06-27 17:03:05 +02:00
import com.extjs.gxt.ui.client.widget.Html ;
2013-02-27 19:33:07 +01:00
import com.extjs.gxt.ui.client.widget.Label ;
import com.extjs.gxt.ui.client.widget.MessageBox ;
import com.extjs.gxt.ui.client.widget.ProgressBar ;
import com.extjs.gxt.ui.client.widget.Status ;
import com.extjs.gxt.ui.client.widget.Text ;
import com.extjs.gxt.ui.client.widget.button.Button ;
2018-06-27 17:03:05 +02:00
import com.extjs.gxt.ui.client.widget.form.ComboBox ;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction ;
2013-02-27 19:33:07 +01:00
import com.extjs.gxt.ui.client.widget.layout.AccordionLayout ;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout ;
import com.extjs.gxt.ui.client.widget.layout.FitLayout ;
import com.extjs.gxt.ui.client.widget.menu.CheckMenuItem ;
import com.extjs.gxt.ui.client.widget.menu.Menu ;
import com.extjs.gxt.ui.client.widget.menu.MenuBar ;
import com.extjs.gxt.ui.client.widget.menu.MenuBarItem ;
import com.extjs.gxt.ui.client.widget.menu.MenuItem ;
import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem ;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem ;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem ;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar ;
import com.google.gwt.core.client.EntryPoint ;
import com.google.gwt.core.client.GWT ;
import com.google.gwt.core.client.RunAsyncCallback ;
2018-06-27 17:03:05 +02:00
import com.google.gwt.dom.client.Style.Unit ;
2013-02-27 19:33:07 +01:00
import com.google.gwt.event.logical.shared.ResizeEvent ;
import com.google.gwt.event.logical.shared.ResizeHandler ;
import com.google.gwt.event.shared.HandlerManager ;
import com.google.gwt.user.client.Window ;
import com.google.gwt.user.client.rpc.AsyncCallback ;
import com.google.gwt.user.client.ui.RootPanel ;
2020-07-21 18:17:03 +02:00
import com.liferay.portal.kernel.xml.simple.Element ;
2013-02-27 19:33:07 +01:00
/ * *
* Entry point classes define < code > onModuleLoad ( ) < / code > .
* /
public class ResourceManagementPortlet implements EntryPoint {
public static final String CONTAINER_DIV = " MyUniqueDIV " ;
2013-09-20 12:04:05 +02:00
private final HandlerManager eventBus = new HandlerManager ( null ) ;
2013-02-27 19:33:07 +01:00
private void printStatus ( final CurrentStatus status ) {
ConsoleMessageBroker . trace ( this , " User: " + status . getCurrentUser ( ) ) ;
ConsoleMessageBroker . trace ( this , " Scope: " + status . getCurrentScope ( ) ) ;
ConsoleMessageBroker . trace ( this , " Credentials: " + status . getCredentials ( ) ) ;
2013-03-01 11:39:13 +01:00
ConsoleMessageBroker . trace ( this , " Running Mode: " + status . getRunningMode ( ) ) ;
2013-02-27 19:33:07 +01:00
}
/ * *
* events binder
* /
private void bind ( ) {
//set the eventbus to the support common classes
new Resource_support ( eventBus ) ;
2013-09-20 12:04:05 +02:00
2013-02-27 19:33:07 +01:00
eventBus . addHandler ( SetScopeEvent . TYPE , new SetScopeEventHandler ( ) {
@Override
public void onSetScope ( SetScopeEvent event ) {
Commands . setStatusScope ( event . getScope ( ) ) ;
}
} ) ;
}
/ * *
* This is the entry point method .
* /
public final void onModuleLoad ( ) {
//for event handling
bind ( ) ;
2013-09-20 12:04:05 +02:00
2013-02-27 19:33:07 +01:00
MainContainer vp = buildUI ( ) ;
RootPanel . get ( CONTAINER_DIV ) . add ( vp ) ;
Commands . mask ( " Waiting servlet initialization " , UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
ProxyRegistry . getProxyInstance ( ) . initStatus ( new AsyncCallback < CurrentStatus > ( ) {
// Received status
public void onSuccess ( final CurrentStatus result ) {
StatusHandler . setStatus ( result ) ;
printStatus ( result ) ;
Commands . mask ( " Contacting the Infrastructure, please wait " , UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
// loads the scopes
ProxyRegistry . getProxyInstance ( ) . initScopes ( true , new AsyncCallback < Void > ( ) {
public void onSuccess ( final Void result ) {
// Now that both scopes and user credentials have been loaded
// the menu and statusbar can be built.
buildMenu ( ) ;
buildStatusBar ( ) ;
2013-09-11 18:40:39 +02:00
Commands . mask ( " Loading infrastructure scopes " , UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
2013-02-27 19:33:07 +01:00
Commands . doGetAvailableScopes ( this ) ;
if ( StatusHandler . getStatus ( ) . getCurrentScope ( ) ! = null ) {
Commands . setStatusScope ( StatusHandler . getStatus ( ) . getCurrentScope ( ) ) ;
Commands . doLoadResourceTree ( this , StatusHandler . getStatus ( ) . getCurrentScope ( ) ) ;
}
}
public void onFailure ( final Throwable caught ) {
}
} ) ;
}
public void onFailure ( final Throwable caught ) {
MessageBox . info ( " Failure " , " cannot initialize servlet " , null ) ;
}
} ) ;
}
private MainContainer buildUI ( ) {
MainContainer viewport = new MainContainer ( ) ;
BorderLayout bl = new BorderLayout ( ) ;
viewport . setLayout ( bl ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID , viewport ) ;
2013-09-18 13:03:57 +02:00
MainPanel northPanel = new MainPanel ( 56 , " Main App " , LayoutRegion . NORTH ) {
2013-02-27 19:33:07 +01:00
@Override
public void init ( ) {
ConsoleMessageBroker . log ( this , " Initializing north panel " ) ;
this . setCollapsible ( false ) ;
this . setMargins ( new Margins ( 5 , 5 , 0 , 5 ) ) ;
this . setSplit ( false ) ;
this . hideHeader ( ) ;
}
} ;
MainPanel eastPanel = new MainPanel ( 150 , " Pinned Resources " , LayoutRegion . EAST ) {
@Override
public void init ( ) {
ConsoleMessageBroker . log ( this , " Initializing east panel " ) ;
this . setCollapsible ( true ) ;
this . setMargins ( new Margins ( 5 , 5 , 5 , 0 ) ) ;
this . getContainer ( ) . setScrollMode ( Scroll . AUTOY ) ;
this . getContainer ( ) . setHeight ( 100 ) ;
( ( ContentPanel ) this . getContainer ( ) ) . getBody ( ) . setStyleName ( " taskbar-pattern " ) ;
}
} ;
2013-09-11 18:40:39 +02:00
MainPanel westPanel = new MainPanel ( 200 , " Resources " , LayoutRegion . WEST ) {
2013-02-27 19:33:07 +01:00
@Override
public void init ( ) {
ConsoleMessageBroker . log ( this , " Initializing west panel " ) ;
2013-09-11 18:40:39 +02:00
this . setCollapsible ( false ) ;
2013-02-27 19:33:07 +01:00
this . setMargins ( new Margins ( 5 , 0 , 5 , 5 ) ) ;
Text widget = new Text ( ) ;
widget . setId ( " res-details-widget-fake " ) ;
widget . setStyleName ( " left-panel-tree-background " ) ;
this . getContainer ( ) . setLayout ( new AccordionLayout ( ) ) ;
ContentPanel cp = new ContentPanel ( ) ;
cp . setAnimCollapse ( false ) ;
cp . setHeading ( " Resources " ) ;
cp . setLayout ( new FitLayout ( ) ) ;
cp . add ( widget ) ;
this . getContainer ( ) . add ( cp ) ;
}
} ;
MainPanel southPanel = new MainPanel ( 180 , " Console (debug mode) " , LayoutRegion . SOUTH ) {
@Override
public void init ( ) {
ConsoleMessageBroker . log ( this , " Initializing south panel " ) ;
this . setCollapsible ( false ) ;
this . setSplit ( true ) ;
this . setMargins ( new Margins ( 0 , 0 , 0 , 0 ) ) ;
// Inserts the console
this . getContainer ( ) . setLayout ( new FitLayout ( ) ) ;
//this.getContainer().setScrollMode(Scroll.AUTOY);
try {
// Creates a detachable panel in which a console will be inserted
DetachablePanel consolePanel = new DetachablePanel (
this . getContainer ( ) ,
" Console (debug mode) " ,
UIIdentifiers . CONSOLE_COMPONENT_ID ,
false ) ;
ConsolePanel console = new ConsolePanel ( consolePanel ) ;
WidgetsRegistry . registerElem ( UIIdentifiers . CONSOLE_WIDGET_ID , console ) ;
// initially the console will be hidden
Commands . showHideConsole ( ) ;
} catch ( InvalidParameterException e ) {
e . printStackTrace ( ) ;
}
}
} ;
MainPanel centerPanel = new MainPanel ( LayoutRegion . CENTER ) {
@Override
public void init ( ) {
this . getContainer ( ) . setLayout ( new FitLayout ( ) ) ;
this . hideHeader ( ) ;
ConsoleMessageBroker . log ( this , " Initialiting center panel " ) ;
this . setMargins ( new Margins ( 5 ) ) ;
ResourceDetailsPanel resourceDetailGrid = new ResourceDetailsPanel ( ) ;
this . add ( resourceDetailGrid . getWidget ( ) , false ) ;
WidgetsRegistry . registerElem ( UIIdentifiers . RESOURCE_DETAIL_GRID_CONTAINER_ID , resourceDetailGrid ) ;
}
} ;
viewport . addPanel ( UIIdentifiers . GLOBAL_MENU_CONTAINER_PANEL , northPanel ) ;
viewport . addPanel ( UIIdentifiers . RESOURCE_NAVIGATION_PANEL , westPanel ) ;
viewport . addPanel ( UIIdentifiers . RESOURCE_DETAIL_GRID_PANEL , centerPanel ) ;
viewport . addPanel ( UIIdentifiers . TASKBAR_PANEL , eastPanel ) ;
viewport . addPanel ( UIIdentifiers . CONSOLE_PANEL_ID , southPanel ) ;
Window . addResizeHandler ( new ResizeHandler ( ) {
public void onResize ( final ResizeEvent event ) {
updateSize ( ) ;
}
} ) ;
// updates for the first time
updateSize ( ) ;
//viewport.setAutoHeight(false);
//viewport.setAutoWidth(false);
return viewport ;
}
private void updateSize ( ) {
RootPanel workspace = RootPanel . get ( CONTAINER_DIV ) ;
if ( workspace = = null ) {
return ;
}
int topBorder = workspace . getAbsoluteTop ( ) ;
int leftBorder = workspace . getAbsoluteLeft ( ) ;
int rightScrollBar = 17 ;
int rootHeight = Window . getClientHeight ( ) - topBorder - 4 ;
int rootWidth = ( Window . getClientWidth ( ) - 2 * leftBorder - rightScrollBar ) ;
ConsoleMessageBroker . debug ( this , " New workspace dimension Height: " + rootHeight + " Width: " + rootWidth ) ;
MainContainer viewport = ( MainContainer ) WidgetsRegistry . getWidget ( UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
viewport . setHeight ( rootHeight ) ;
viewport . setWidth ( rootWidth ) ;
}
/ * *
* Internally used to build up the main panel menu .
* @return the menu
* /
private void buildMenu ( ) {
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* MENU - OPTIONS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
Menu optionsMenu = new Menu ( ) ;
CheckMenuItem highlightInvalid = new CheckMenuItem ( " Highlight invalid fields " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . getResourceDetailPanel ( ) . toggleHighlightInvalidFields ( ) ;
}
} ;
highlightInvalid . setChecked ( false ) ;
optionsMenu . add ( highlightInvalid ) ;
CheckMenuItem showConsole = new CheckMenuItem ( " Show Console " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . showHideConsole ( ) ;
}
} ;
showConsole . setChecked ( false ) ;
// Checks that this menu item is permitted to the current user
Commands . evaluateCredentials (
showConsole ,
UserGroup . ADMIN , UserGroup . DEBUG ) ;
optionsMenu . add ( showConsole ) ;
CheckMenuItem superUser = new CheckMenuItem ( " Super User Mode " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
if ( this . isChecked ( ) ) {
ConsoleMessageBroker . info ( this , " Going in super user mode " ) ;
ExtendedMessageBox . password ( " Super User Authentication " , new Listener < MessageBoxEvent > ( ) {
public void handleEvent ( final MessageBoxEvent be ) {
String pwd = be . getValue ( ) ;
2017-02-26 17:47:20 +01:00
Commands . mask ( " Veryfing super user mode password, please wait ... " , UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
ProxyRegistry . getProxyInstance ( ) . enableSuperUserMode ( pwd , new AsyncCallback < Boolean > ( ) {
@Override
public void onFailure ( Throwable caught ) {
MessageBox . alert ( " Server error " , " Cannot reach server " , null ) ;
}
@Override
public void onSuccess ( Boolean result ) {
if ( result ) {
Commands . doSetSuperUser ( true ) ;
} else {
MessageBox . alert ( " Wrong code " , " Invalid Password entered. " , null ) ;
setChecked ( false ) ;
Commands . unmask ( UIIdentifiers . MAIN_CONTAINER_VIEWPORT_ID ) ;
}
}
} ) ;
2013-02-27 19:33:07 +01:00
}
} ) ;
//reloadMenu();
} else {
ConsoleMessageBroker . info ( this , " Going in debug mode " ) ;
Commands . doSetSuperUser ( false ) ;
//reloadMenu();
}
}
} ;
// Checks that this menu item is permitted to the current user
Commands . evaluateCredentials (
superUser ,
UserGroup . DEBUG ) ;
superUser . setChecked ( StatusHandler . getStatus ( ) . getCredentials ( ) = = UserGroup . ADMIN ) ;
optionsMenu . add ( superUser ) ;
CheckMenuItem useCache = new CheckMenuItem ( " Use Remote Cache " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
StatusHandler . getStatus ( ) . setUseCache ( this . isChecked ( ) ) ;
ProxyRegistry . getProxyInstance ( ) . setUseCache ( this . isChecked ( ) ,
new AsyncCallback < Void > ( ) {
public void onSuccess ( final Void result ) {
}
public void onFailure ( final Throwable caught ) {
}
} ) ;
}
} ;
useCache . setChecked ( StatusHandler . getStatus ( ) . useCache ( ) ) ;
optionsMenu . add ( useCache ) ;
CheckMenuItem openProfileOnLoad = new CheckMenuItem ( " Open Profile onLoad " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Configuration . openProfileOnLoad = ! Configuration . openProfileOnLoad ;
}
} ;
openProfileOnLoad . setChecked ( false ) ;
optionsMenu . add ( openProfileOnLoad ) ;
CheckMenuItem allowMultipleProfiles = new CheckMenuItem ( " Allow Multiple Profiles " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Configuration . allowMultipleProfiles = ! Configuration . allowMultipleProfiles ;
}
} ;
allowMultipleProfiles . setChecked ( false ) ;
optionsMenu . add ( allowMultipleProfiles ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* MENU - SEARCH
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
Menu searchMenu = new Menu ( ) ;
MenuItem getResource = new MenuItem ( " Get Resource By ID " ) {
protected void onClick ( final ComponentEvent be ) {
OpCommands . doGetResourceByID ( ) ;
} ;
} ;
getResource . setIconStyle ( " resources-icon " ) ;
Commands . evaluateCredentials (
getResource ,
SupportedOperations . SERVICE_GET_RESOURCE_BY_ID . getPermissions ( ) ) ;
searchMenu . add ( getResource ) ;
MenuItem getReport = new MenuItem ( " Get Report " ) {
protected void onClick ( final ComponentEvent be ) {
OpCommands . doGetDeployReport ( ) ;
} ;
} ;
getReport . setIconStyle ( " getreport-icon " ) ;
Commands . evaluateCredentials (
getReport ,
SupportedOperations . SERVICE_GET_REPORT . getPermissions ( ) ) ;
searchMenu . add ( getReport ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* MENU - TOOLS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
Menu toolsMenu = new Menu ( ) ;
MenuItem testIS = new MenuItem ( " Check IS Health " ) {
protected void onClick ( final ComponentEvent be ) {
2013-09-13 15:31:50 +02:00
super . onClick ( be ) ;
2013-09-20 12:04:05 +02:00
if ( LocalStatus . getInstance ( ) . getAvailableScopes ( ) = = null | | LocalStatus . getInstance ( ) . getAvailableScopes ( ) . isEmpty ( ) ) {
MessageBox . info ( " Sorry " , " This functionality is not available in logged-in mode. " , null ) ;
} else {
GWT . runAsync ( ISMonitor . class , new RunAsyncCallback ( ) {
@Override
public void onSuccess ( ) {
ISMonitor . pingIS ( ) ;
}
public void onFailure ( Throwable reason ) {
Window . alert ( " There are networks problem, please check your connection. " ) ;
}
} ) ;
}
2013-02-27 19:33:07 +01:00
} ;
} ;
testIS . setIconStyle ( " is-icon " ) ;
Commands . evaluateCredentials (
testIS ,
SupportedOperations . SERVICE_GET_RESOURCE_BY_ID . getPermissions ( ) ) ;
toolsMenu . add ( testIS ) ;
MenuItem cleanGHN = new MenuItem ( " Resource Sweeper " ) {
protected void onClick ( final ComponentEvent be ) {
2013-09-26 19:09:57 +02:00
super . onClick ( be ) ;
if ( SupportedOperations . SWEEP_GHN . isAllowed ( StatusHandler . getStatus ( ) . getCredentials ( ) ) ) {
GWT . runAsync ( SweeperDialog . class , new RunAsyncCallback ( ) {
@Override
public void onSuccess ( ) {
String currentScope = StatusHandler . getStatus ( ) . getCurrentScope ( ) ;
new SweeperDialog ( currentScope ) ;
}
public void onFailure ( Throwable reason ) {
Window . alert ( " There are networks problem, please check your connection. " ) ;
}
} ) ;
}
else
MessageBox . alert ( " Resource Sweeper " , " You are not allowed to execute this operation " , null ) ;
2013-02-27 19:33:07 +01:00
} ;
} ;
cleanGHN . setIconStyle ( " sweeper-icon " ) ;
toolsMenu . add ( cleanGHN ) ;
MenuItem createSub = new MenuItem ( " Create " ) ;
createSub . setIconStyle ( " new-icon " ) ;
Menu createMnu = new Menu ( ) ;
// Create Generic Resource
MenuItem createGR = new MenuItem ( " Generic Resource " ) {
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
OpCommands . doOpenGenericResourceForm ( ) ;
} ;
} ;
2013-09-26 19:09:57 +02:00
2013-02-27 19:33:07 +01:00
createGR . setIconStyle ( " genericresource-icon " ) ;
createMnu . add ( createGR ) ;
2013-09-26 19:09:57 +02:00
// Create Service Endpoint (former Runtime Resource)
MenuItem createSE = new MenuItem ( " Service Endpoint " ) {
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
OpCommands . doOpenServiceEndpointForm ( ) ;
} ;
} ;
createSE . setIconStyle ( " runtimeresource-icon " ) ;
createMnu . add ( createSE ) ;
2013-02-27 19:33:07 +01:00
// Create Generic Resource
MenuItem deployVirtualCollection = new MenuItem ( " Instantiate Virtual Collections " ) {
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
if ( SupportedOperations . GENERIC_RESOURCE_CREATE . isAllowed ( StatusHandler . getStatus ( ) . getCredentials ( ) ) ) {
new DeployVirtualCollection ( ) . show ( ) ;
} else {
MessageBox . alert ( " Instantiate Virtual Collections " , " You are not allowed to execute this operation " , null ) ;
}
} ;
} ;
deployVirtualCollection . setIconStyle ( " install-icon " ) ;
createMnu . add ( deployVirtualCollection ) ;
createSub . setSubMenu ( createMnu ) ;
Commands . evaluateCredentials (
createSub ,
SupportedOperations . CREATE_MENU_SHOW . getPermissions ( ) ) ;
toolsMenu . add ( createSub ) ;
toolsMenu . add ( new SeparatorMenuItem ( ) ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* SUBMENU - OPTIONS - > REFRESH
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
MenuItem sub = new MenuItem ( " Refresh " ) ;
sub . setIconStyle ( " refresh-icon " ) ;
Menu refresh = new Menu ( ) ;
refresh . add ( new MenuItem ( " Resource Navigation " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . refreshResourceTree ( ) ;
}
} ) ;
refresh . add ( new MenuItem ( " Resource Details Grid " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . refreshResourceGrid ( ) ;
}
} ) ;
refresh . add ( new MenuItem ( " Console (UI) " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . refreshConsole ( ) ;
}
} ) ;
refresh . add ( new MenuItem ( " Resource Details (UI) " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . refreshResourceDetails ( ) ;
}
} ) ;
refresh . add ( new MenuItem ( " Desktop (UI) " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Commands . refreshViewport ( ) ;
}
} ) ;
sub . setSubMenu ( refresh ) ;
toolsMenu . add ( sub ) ;
MenuItem emptyCache = new MenuItem ( " Empty Cache " ) {
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
ProxyRegistry . getProxyInstance ( ) . emptyCache ( new AsyncCallback < Void > ( ) {
public void onSuccess ( final Void result ) {
Commands . showPopup ( " Empty cache " , " The remote cache has been cleaned " ) ;
}
public void onFailure ( final Throwable caught ) {
Commands . showPopup ( " Empty cache error " , " The remote cache has not been cleaned " ) ;
}
} ) ;
} ;
} ;
emptyCache . setIconStyle ( " clear-icon " ) ;
toolsMenu . add ( emptyCache ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* MENU - ABOUT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
Menu helpMenu = new Menu ( ) ;
MenuItem aboutMnuItem = new MenuItem ( " About " ) {
@Override
protected void onClick ( final ComponentEvent be ) {
super . onClick ( be ) ;
Dialog dlg = new Dialog ( ) ;
dlg . setHeading ( " About - Resource Management " ) ;
dlg . addText ( " <br/>This software is part of the gCube Project.<br/> " +
" Site: <a href= \" http://www.gcube-system.org/ \" >http://www.gcube-system.org/</a> " +
" <p>The gCube/gCore software is licensed as Free Open Source software " +
" conveying to the EUPL (<a href= \" http://ec.europa.eu/idabc/eupl \" >http://ec.europa.eu/idabc/eupl</a>).</p><br/> " +
" <p>The software and documentation is provided by its authors/distributors " +
" \" as is \" and no expressed or " +
" implied warranty is given for its use, quality or fitness for a " +
" particular case.</p> " +
" " +
2013-09-20 12:04:05 +02:00
" <p><b>Issues</b> can be submitted <a href= \" https://support.d4science.research-infrastructures.eu/ \" >here</a>.</p> " +
" <p><b>Notice:</b> specify this Component: <br/><i>Repository Path: /org/gcube/portlets/admin/resource-management</i></p> " +
" <br/>This software was built over the <a href= \" http://gcube.wiki.gcube-system.org/gcube/index.php/Featherweight_Stack \" >gCube Featherweight Stack (FWS) </a> and <a href= \" http://www.gwtproject.org \" >Google Webtool Kit (GWT)</a> technologies.<br/> " +
2013-02-27 19:33:07 +01:00
" <br/> " ) ;
dlg . setClosable ( true ) ;
dlg . setModal ( true ) ;
dlg . setHideOnButtonClick ( true ) ;
dlg . show ( ) ;
}
} ;
aboutMnuItem . setIconStyle ( " about-icon " ) ;
helpMenu . add ( aboutMnuItem ) ;
MenuBar mb = new MenuBar ( ) ;
mb . add ( new MenuBarItem ( " Tools " , toolsMenu ) ) ;
mb . add ( new MenuBarItem ( " Options " , optionsMenu ) ) ;
mb . add ( new MenuBarItem ( " Search " , searchMenu ) ) ;
mb . add ( new MenuBarItem ( " Help " , helpMenu ) ) ;
MainPanel menuPanel = WidgetsRegistry . getPanel ( UIIdentifiers . GLOBAL_MENU_CONTAINER_PANEL ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . GLOBAL_MENUBAR_ID , mb ) ;
menuPanel . add ( mb , true ) ;
}
private void buildStatusBar ( ) {
MainPanel menuPanel = WidgetsRegistry . getPanel ( UIIdentifiers . GLOBAL_MENU_CONTAINER_PANEL ) ;
ToolBar statusbar = new ToolBar ( ) ;
statusbar . add ( new SeparatorToolItem ( ) ) ;
if ( StatusHandler . getStatus ( ) . getRunningMode ( ) ! = RunningMode . PORTAL ) {
2018-06-27 17:03:05 +02:00
//Your View Class
final ListStore < ContexClientModel > yourStore = new ListStore < ContexClientModel > ( ) {
@Override
public ContexClientModel findModel ( final ContexClientModel model ) {
if ( model . getId ( ) ! = null & & ! model . getId ( ) . isEmpty ( ) ) {
for ( final ContexClientModel m : all ) {
if ( model . getId ( ) . equals ( m . getId ( ) ) ) {
return m ;
}
}
}
return null ;
}
} ;
final ComboBox < ContexClientModel > select = new ComboBox < ContexClientModel > ( ) ;
select . setAllowBlank ( false ) ;
select . setStore ( yourStore ) ;
select . setDisplayField ( " name " ) ;
select . setValueField ( " id " ) ;
select . setTriggerAction ( TriggerAction . ALL ) ;
select . setMaxHeight ( 500 ) ;
select . setWidth ( " 310px " ) ;
select . setEmptyText ( " Available Contexts " ) ;
select . addSelectionChangedListener ( new SelectionChangedListener < ContexClientModel > ( ) {
@Override
public void selectionChanged ( SelectionChangedEvent < ContexClientModel > se ) {
Commands . doLoadResourceTree ( this , se . getSelectedItem ( ) . getId ( ) ) ;
GWT . log ( " doLoadResourceTree " ) ;
}
} ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . BUTTON_AVAILABLE_SCOPES_ID , select ) ;
2013-02-27 19:33:07 +01:00
// Checks that this menu item is permitted to the current user
2018-06-27 17:03:05 +02:00
statusbar . add ( new Html ( " " ) ) ;
statusbar . add ( select ) ;
2013-02-27 19:33:07 +01:00
} else {
statusbar . add ( new Label ( " Current role: " + StatusHandler . getStatus ( ) . getCredentials ( ) ) ) ;
}
//statusbar.add(new FillToolItem());
2020-07-21 18:17:03 +02:00
statusbar . add ( new Label ( " " ) ) ;
2013-02-27 19:33:07 +01:00
ProgressBar progressStatus = new ProgressBar ( ) ;
progressStatus . setWidth ( 200 ) ;
progressStatus . updateText ( " Updating Infrastructure... " ) ;
statusbar . add ( progressStatus ) ;
progressStatus . hide ( ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . STATUS_PROGRESS_BAR_ID , progressStatus ) ;
statusbar . add ( new FillToolItem ( ) ) ;
2020-07-22 14:54:01 +02:00
statusbar . add ( new Label ( " Current Context: " ) ) ;
2020-07-21 18:17:03 +02:00
Text scopeInfo = new Text ( Messages . NO_SCOPE_SELECTED ) ;
2013-02-27 19:33:07 +01:00
scopeInfo . setWidth ( 350 ) ;
statusbar . add ( scopeInfo ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . STATUS_SCOPE_INFO_ID , scopeInfo ) ;
2020-07-21 18:17:03 +02:00
Button copy2Clipboard = new Button ( ) {
@Override
protected void onClick ( final ComponentEvent ce ) {
copy2Clipboard ( ) ;
}
} ;
2013-02-27 19:33:07 +01:00
2020-07-21 18:17:03 +02:00
copy2Clipboard . setIconStyle ( " copy-clip-icon " ) ;
copy2Clipboard . setToolTip ( " Copy to Clipboard " ) ;
2020-07-22 10:03:18 +02:00
copy2Clipboard . setText ( " Copy " ) ;
copy2Clipboard . setStyleAttribute ( " margin-top " , " -12px " ) ;
2020-07-21 18:17:03 +02:00
statusbar . add ( copy2Clipboard ) ;
2020-07-22 10:03:18 +02:00
statusbar . add ( new Label ( " Resources No.: " ) ) ;
2013-02-27 19:33:07 +01:00
Status loadedResources = new Status ( ) ;
loadedResources . setWidth ( 35 ) ;
loadedResources . setText ( " 0 " ) ;
loadedResources . setBox ( true ) ;
2020-07-22 14:57:13 +02:00
loadedResources . setStyleAttribute ( " margin-top " , " -12px " ) ;
2013-02-27 19:33:07 +01:00
statusbar . add ( loadedResources ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . STATUS_LOADED_RESOURCES_ID , loadedResources ) ;
menuPanel . add ( statusbar , false ) ;
menuPanel . getContainer ( ) . setBorders ( false ) ;
menuPanel . getContainer ( ) . setShadow ( true ) ;
WidgetsRegistry . registerWidget ( UIIdentifiers . GLOBAL_STATUS_BAR_ID , statusbar ) ;
}
2020-07-21 18:17:03 +02:00
public static native void copy2Clipboard ( ) / * - {
var copyText = $wnd . document . getElementById ( " contextToCopy " ) ;
copyText . select ( ) ;
copyText . setSelectionRange ( 0 , 99999 ) ; //for mobile
$wnd . document . execCommand ( " copy " ) ;
} - * / ;
2013-02-27 19:33:07 +01:00
}