184 lines
5.9 KiB
Java
184 lines
5.9 KiB
Java
package org.gcube.portlets.user.dataminermanager.client.info;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.service.ServiceInfo;
|
|
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
|
|
import org.gcube.portlets.user.dataminermanager.client.events.ServiceInfoEvent;
|
|
import org.gcube.portlets.user.dataminermanager.client.events.ServiceInfoRequestEvent;
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
|
|
import com.sencha.gxt.core.client.util.Margins;
|
|
import com.sencha.gxt.data.shared.ListStore;
|
|
import com.sencha.gxt.widget.core.client.FramedPanel;
|
|
import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.MarginData;
|
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
|
import com.sencha.gxt.widget.core.client.form.FieldSet;
|
|
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
|
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
|
|
import com.sencha.gxt.widget.core.client.grid.Grid;
|
|
|
|
/**
|
|
*
|
|
* @author Giancarlo Panichi
|
|
*
|
|
*
|
|
*/
|
|
public class ServiceInfoPanel extends FramedPanel {
|
|
|
|
private static final ServiceInfoDataProperties props = GWT.create(ServiceInfoDataProperties.class);
|
|
private VerticalLayoutContainer v;
|
|
private VerticalLayoutContainer environmentVBox;
|
|
|
|
public ServiceInfoPanel() {
|
|
super();
|
|
Log.debug("ServiceInfoPanel");
|
|
init();
|
|
create();
|
|
bind();
|
|
EventBusProvider.INSTANCE.fireEvent(new ServiceInfoRequestEvent());
|
|
|
|
}
|
|
|
|
private void init() {
|
|
setItemId("ServiceInfoPanel");
|
|
forceLayoutOnResize = true;
|
|
setBodyBorder(false);
|
|
setBorders(false);
|
|
setBodyStyle("backgroundColor:white;");
|
|
setHeaderVisible(false);
|
|
setResize(true);
|
|
setHeadingText("Service Info");
|
|
setBodyStyle("backgroundColor:white;");
|
|
|
|
}
|
|
|
|
private void create() {
|
|
try {
|
|
v = new VerticalLayoutContainer();
|
|
v.setScrollMode(ScrollMode.AUTO);
|
|
add(v);
|
|
createView();
|
|
forceLayout();
|
|
} catch (Throwable e) {
|
|
Log.error("Error creating ServiceInfoPanel: " + e.getLocalizedMessage(), e);
|
|
}
|
|
}
|
|
|
|
private void bind() {
|
|
|
|
EventBusProvider.INSTANCE.addHandler(ServiceInfoEvent.TYPE, new ServiceInfoEvent.ServiceInfoEventHandler() {
|
|
|
|
@Override
|
|
public void onRequest(ServiceInfoEvent event) {
|
|
Log.debug("Catch ServiceInfoEvent");
|
|
showServiceInfo(event.getServiceInfo());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
private void createView() {
|
|
|
|
SimpleContainer sectionTitle = new SimpleContainer();
|
|
// title
|
|
HtmlLayoutContainer title = new HtmlLayoutContainer(
|
|
"<center style='font-size:16px;font-weight:bold;'>Service Info</center>");
|
|
sectionTitle.add(title, new MarginData());
|
|
sectionTitle.getElement().getStyle().setMarginRight(20, Unit.PX);
|
|
// v.add(sectionTitle, new VerticalLayoutData(1, -1, new
|
|
// Margins(0)));
|
|
v.add(sectionTitle, new VerticalLayoutData(-1, -1, new Margins(10)));
|
|
|
|
FieldSet environmentFieldSet = environmentView();
|
|
v.add(environmentFieldSet, new VerticalLayoutData(-1, -1, new Margins(10)));
|
|
|
|
}
|
|
|
|
private FieldSet environmentView() {
|
|
try {
|
|
environmentVBox = new VerticalLayoutContainer();
|
|
|
|
FieldSet configurationFieldSet = new FieldSet();
|
|
configurationFieldSet.setHeadingText("Environment");
|
|
configurationFieldSet.setCollapsible(true);
|
|
configurationFieldSet.add(environmentVBox);
|
|
configurationFieldSet.getElement().getStyle().setMarginRight(20, Unit.PX);
|
|
return configurationFieldSet;
|
|
} catch (Throwable e) {
|
|
Log.error("Error in ServiceInfoPanel in environment: " + e.getLocalizedMessage(), e);
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
private void showServiceInfo(ServiceInfo serviceInfo) {
|
|
|
|
if (serviceInfo != null && serviceInfo.getServiceProperties() != null
|
|
&& !serviceInfo.getServiceProperties().isEmpty()) {
|
|
ArrayList<ServiceInfoData> serviceInfoDataList = new ArrayList<>();
|
|
for (String key : serviceInfo.getServiceProperties().keySet()) {
|
|
ServiceInfoData serviceInfoData = new ServiceInfoData(key, serviceInfo.getServiceProperties().get(key));
|
|
serviceInfoDataList.add(serviceInfoData);
|
|
}
|
|
|
|
Grid<ServiceInfoData> grid = createInfoGrid(serviceInfoDataList);
|
|
environmentVBox.add(grid, new VerticalLayoutData(1, -1, new Margins(0, 4, 0, 4)));
|
|
|
|
} else {
|
|
HtmlLayoutContainer emptyInfoContainer = new HtmlLayoutContainer(
|
|
"<div class='service-property'><p>No Info Available.</p></div>");
|
|
|
|
environmentVBox.add(emptyInfoContainer, new VerticalLayoutData(1, -1, new Margins(0, 4, 0, 4)));
|
|
}
|
|
|
|
forceLayout();
|
|
|
|
}
|
|
|
|
private Grid<ServiceInfoData> createInfoGrid(ArrayList<ServiceInfoData> serviceInfoDataList) {
|
|
|
|
ColumnConfig<ServiceInfoData, String> keyCol = new ColumnConfig<ServiceInfoData, String>(props.key(), 100,
|
|
"Key");
|
|
ColumnConfig<ServiceInfoData, String> valueCol = new ColumnConfig<ServiceInfoData, String>(props.value(), 100,
|
|
"Value");
|
|
|
|
List<ColumnConfig<ServiceInfoData, ?>> columns = new ArrayList<ColumnConfig<ServiceInfoData, ?>>();
|
|
columns.add(keyCol);
|
|
columns.add(valueCol);
|
|
|
|
ColumnModel<ServiceInfoData> cm = new ColumnModel<ServiceInfoData>(columns);
|
|
|
|
ListStore<ServiceInfoData> store = new ListStore<ServiceInfoData>(props.id());
|
|
store.addAll(serviceInfoDataList);
|
|
|
|
Grid<ServiceInfoData> grid = new Grid<ServiceInfoData>(store, cm);
|
|
|
|
grid.setAllowTextSelection(false);
|
|
grid.getView().setAutoFill(true);
|
|
grid.getView().setAutoExpandColumn(valueCol);
|
|
grid.getView().setEmptyText("No info retrieved");
|
|
grid.setAllowTextSelection(true);
|
|
grid.getView().setStripeRows(true);
|
|
grid.getView().setColumnLines(true);
|
|
grid.setBorders(false);
|
|
grid.setColumnReordering(false);
|
|
|
|
// Stage manager, turn on state management
|
|
grid.setStateful(true);
|
|
grid.setStateId("gridServiceInfoData");
|
|
|
|
return grid;
|
|
|
|
}
|
|
|
|
}
|