Updated MainBox
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-mainbox-widget@100588 82a268e6-3cf1-43bd-a215-b396298e98cf
22
pom.xml
|
@ -106,6 +106,25 @@
|
||||||
<version>3.0.1</version>
|
<version>3.0.1</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Portal -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.core</groupId>
|
||||||
|
<artifactId>common-scope-maps</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.portal</groupId>
|
||||||
|
<artifactId>custom-portal-handler</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.applicationsupportlayer</groupId>
|
||||||
|
<artifactId>aslcore</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- tabular-data-gwt-service -->
|
<!-- tabular-data-gwt-service -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -124,12 +143,11 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<!-- TDX Source -->
|
<!-- TDX Source -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>tabular-data-widgetx-tdx-source</artifactId>
|
<artifactId>tabular-data-widgetx-tdx-source</artifactId>
|
||||||
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,13 @@ package org.gcube.portlets.user.td.mainboxwidget.client;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.user.td.mainboxwidget.client.tdx.TDXPanel;
|
import org.gcube.portlets.user.td.mainboxwidget.client.tdx.TDXPanel;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.DataViewActiveEvent;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataView;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataView;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
||||||
|
|
||||||
import com.allen_sauer.gwt.log.client.Log;
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionHandler;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.google.web.bindery.event.shared.EventBus;
|
import com.google.web.bindery.event.shared.EventBus;
|
||||||
import com.sencha.gxt.widget.core.client.TabItemConfig;
|
import com.sencha.gxt.widget.core.client.TabItemConfig;
|
||||||
|
@ -29,9 +32,15 @@ public class MainBox extends TabPanel {
|
||||||
public MainBox(String name, EventBus eventBus, MainBoxPanel mainBoxPanel) {
|
public MainBox(String name, EventBus eventBus, MainBoxPanel mainBoxPanel) {
|
||||||
super();
|
super();
|
||||||
Log.debug("Create MainBox");
|
Log.debug("Create MainBox");
|
||||||
|
setId(name);
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.mainBoxPanel = mainBoxPanel;
|
this.mainBoxPanel = mainBoxPanel;
|
||||||
setId(name);
|
init();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void init(){
|
||||||
setBodyBorder(false);
|
setBodyBorder(false);
|
||||||
setBorders(false);
|
setBorders(false);
|
||||||
setAnimScroll(true);
|
setAnimScroll(true);
|
||||||
|
@ -40,7 +49,21 @@ public class MainBox extends TabPanel {
|
||||||
|
|
||||||
tdxPanelList = new ArrayList<TDXPanel>();
|
tdxPanelList = new ArrayList<TDXPanel>();
|
||||||
// setResizeTabs(true);
|
// setResizeTabs(true);
|
||||||
|
addSelectionHandler(new SelectionHandler<Widget>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Widget> event) {
|
||||||
|
Widget widget=event.getSelectedItem();
|
||||||
|
if(widget instanceof TDXPanel){
|
||||||
|
TDXPanel tdxPanel=(TDXPanel) widget;
|
||||||
|
TabularResourceDataView tabularResourceDataView=tdxPanel.getTabularResourceDataView();
|
||||||
|
DataViewActiveEvent dataViewActiveEvent=new DataViewActiveEvent(tabularResourceDataView);
|
||||||
|
eventBus.fireEvent(dataViewActiveEvent);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startTabs() {
|
public void startTabs() {
|
||||||
|
@ -118,11 +141,11 @@ public class MainBox extends TabPanel {
|
||||||
TabItemConfig tdxPanelItemConf = new TabItemConfig(
|
TabItemConfig tdxPanelItemConf = new TabItemConfig(
|
||||||
tabularResourceDataView.getTrId().getId(), true);
|
tabularResourceDataView.getTrId().getId(), true);
|
||||||
|
|
||||||
final TDXPanel tdxPanel = new TDXPanel(tabularResourceDataView,
|
final TDXPanel tdxPanel = new TDXPanel(eventBus);
|
||||||
eventBus);
|
tdxPanel.open(tabularResourceDataView);
|
||||||
tdxPanelList.add(tdxPanel);
|
tdxPanelList.add(tdxPanel);
|
||||||
add(tdxPanel, tdxPanelItemConf);
|
add(tdxPanel, tdxPanelItemConf);
|
||||||
|
|
||||||
addBeforeCloseHandler(new BeforeCloseHandler<Widget>() {
|
addBeforeCloseHandler(new BeforeCloseHandler<Widget>() {
|
||||||
|
|
||||||
public void onBeforeClose(BeforeCloseEvent<Widget> event) {
|
public void onBeforeClose(BeforeCloseEvent<Widget> event) {
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package org.gcube.portlets.user.td.mainboxwidget.client;
|
package org.gcube.portlets.user.td.mainboxwidget.client;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.rpc.TabularDataServiceAsync;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent;
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType;
|
import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
||||||
|
|
||||||
import com.allen_sauer.gwt.log.client.Log;
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
import com.google.web.bindery.event.shared.EventBus;
|
import com.google.web.bindery.event.shared.EventBus;
|
||||||
import com.google.web.bindery.event.shared.SimpleEventBus;
|
import com.google.web.bindery.event.shared.SimpleEventBus;
|
||||||
|
@ -13,6 +15,25 @@ import com.google.web.bindery.event.shared.SimpleEventBus;
|
||||||
public class MainBoxEntry implements EntryPoint {
|
public class MainBoxEntry implements EntryPoint {
|
||||||
|
|
||||||
public void onModuleLoad() {
|
public void onModuleLoad() {
|
||||||
|
|
||||||
|
TabularDataServiceAsync.INSTANCE.hello(new AsyncCallback<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String result) {
|
||||||
|
loadDataView();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
caught.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void loadDataView() {
|
||||||
// For example Tabular Resource 7 and table 402
|
// For example Tabular Resource 7 and table 402
|
||||||
TRId trId = new TRId("220", "3555");
|
TRId trId = new TRId("220", "3555");
|
||||||
|
|
||||||
|
@ -33,4 +54,5 @@ public class MainBoxEntry implements EntryPoint {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ package org.gcube.portlets.user.td.mainboxwidget.client;
|
||||||
|
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.event.DataViewRequestEvent;
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.DataViewRequestEvent;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent;
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.type.DataViewRequestType;
|
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType;
|
import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataView;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataView;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataViewType;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
||||||
|
|
||||||
import com.allen_sauer.gwt.log.client.Log;
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
@ -18,7 +18,7 @@ public class MainBoxPanel extends ContentPanel {
|
||||||
protected MainBox mainBox;
|
protected MainBox mainBox;
|
||||||
protected MainBoxPanelState state;
|
protected MainBoxPanelState state;
|
||||||
protected UIStateType uiStateType;
|
protected UIStateType uiStateType;
|
||||||
protected DataViewRequestType dataViewRequestType;
|
protected DataView dataView;
|
||||||
|
|
||||||
public MainBoxPanel(String name, EventBus eventBus) {
|
public MainBoxPanel(String name, EventBus eventBus) {
|
||||||
super();
|
super();
|
||||||
|
@ -99,14 +99,19 @@ public class MainBoxPanel extends ContentPanel {
|
||||||
|
|
||||||
protected void manageDataViewRequestEvents(DataViewRequestEvent event) {
|
protected void manageDataViewRequestEvents(DataViewRequestEvent event) {
|
||||||
Log.debug("MainBox recieved event: "
|
Log.debug("MainBox recieved event: "
|
||||||
+ event.getDataViewRequestType().toString());
|
+ event.getDataView().toString());
|
||||||
dataViewRequestType = event.getDataViewRequestType();
|
dataView = event.getDataView();
|
||||||
switch (event.getDataViewRequestType()) {
|
if(dataView==null|| dataView.getDataViewType()==null){
|
||||||
case RESOURCE:
|
return;
|
||||||
break;
|
}
|
||||||
|
DataViewType dataViewType=dataView.getDataViewType();
|
||||||
|
|
||||||
|
switch (dataViewType) {
|
||||||
case TABULARRESOURCE:
|
case TABULARRESOURCE:
|
||||||
doTabularResourceTab(event);
|
doTabularResourceTab(event);
|
||||||
break;
|
break;
|
||||||
|
case TABLE:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.client.grid;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.resource.MainboxResources;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridContextMenuItemEvent;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.CellData;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.GridOperationId;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.grid.model.RowRaw;
|
||||||
|
import org.gcube.portlets.user.tdwx.client.TabularDataXGridPanel;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionHandler;
|
||||||
|
import com.google.web.bindery.event.shared.EventBus;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.Item;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.Menu;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.MenuItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
* Defines the context menu of grid
|
||||||
|
*/
|
||||||
|
public class GridContextMenu {
|
||||||
|
protected Menu tableContextMenu;
|
||||||
|
protected final TabularDataXGridPanel gridPanel;
|
||||||
|
protected EventBus eventBus;
|
||||||
|
|
||||||
|
public GridContextMenu(final TabularDataXGridPanel gridPanel,
|
||||||
|
final EventBus eventBus) {
|
||||||
|
this.gridPanel = gridPanel;
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
tableContextMenu = new Menu();
|
||||||
|
|
||||||
|
MenuItem addRowItem = new MenuItem("Add Row");
|
||||||
|
addRowItem.setId(GridOperationId.ROWADD.toString());
|
||||||
|
addRowItem.setIcon(MainboxResources.INSTANCE.rowInsert());
|
||||||
|
addRowItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
Log.debug("gridPanel is: " + gridPanel);
|
||||||
|
if (gridPanel != null) {
|
||||||
|
GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent(
|
||||||
|
GridOperationId.ROWADD);
|
||||||
|
eventBus.fireEvent(eventGridContextMenu);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tableContextMenu.add(addRowItem);
|
||||||
|
|
||||||
|
MenuItem editRowItem = new MenuItem("Edit Row");
|
||||||
|
editRowItem.setId(GridOperationId.ROWEDIT.toString());
|
||||||
|
editRowItem.setIcon(MainboxResources.INSTANCE.rowEdit());
|
||||||
|
editRowItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
Log.debug("gridPanel is: " + gridPanel);
|
||||||
|
if (gridPanel != null) {
|
||||||
|
|
||||||
|
RowRaw row = gridPanel.getSelectedRowAsRaw();
|
||||||
|
if (row != null) {
|
||||||
|
GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent(
|
||||||
|
GridOperationId.ROWEDIT, row);
|
||||||
|
eventBus.fireEvent(eventGridContextMenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tableContextMenu.add(editRowItem);
|
||||||
|
|
||||||
|
MenuItem deleteRowItem = new MenuItem("Delete Row");
|
||||||
|
deleteRowItem.setId(GridOperationId.ROWDELETE.toString());
|
||||||
|
deleteRowItem.setIcon(MainboxResources.INSTANCE.rowRemove());
|
||||||
|
deleteRowItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
Log.debug("gridPanel is: " + gridPanel);
|
||||||
|
if (gridPanel != null) {
|
||||||
|
ArrayList<String> rows = gridPanel.getSelectedRowsId();
|
||||||
|
GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent(
|
||||||
|
GridOperationId.ROWDELETE, rows);
|
||||||
|
eventBus.fireEvent(eventGridContextMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tableContextMenu.add(deleteRowItem);
|
||||||
|
|
||||||
|
MenuItem replaceRowsItem = new MenuItem("Replace Value");
|
||||||
|
replaceRowsItem.setId(GridOperationId.REPLACE.toString());
|
||||||
|
replaceRowsItem.setIcon(MainboxResources.INSTANCE.columnReplace());
|
||||||
|
replaceRowsItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
Log.debug("gridPanel is: " + gridPanel);
|
||||||
|
if (gridPanel != null) {
|
||||||
|
CellData cellData = gridPanel.getSelectedCell();
|
||||||
|
if (cellData != null) {
|
||||||
|
GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent(
|
||||||
|
GridOperationId.REPLACE, cellData);
|
||||||
|
eventBus.fireEvent(eventGridContextMenu);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tableContextMenu.add(replaceRowsItem);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return context menu for grid
|
||||||
|
*/
|
||||||
|
public Menu getMenu() {
|
||||||
|
return tableContextMenu;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.client.grid;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.resource.MainboxResources;
|
||||||
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.GridHeaderOperationId;
|
||||||
|
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.MenuItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the menu for column on the grid
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi"
|
||||||
|
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GridHeaderColumnMenu {
|
||||||
|
|
||||||
|
protected final ArrayList<MenuItem> menuItems;
|
||||||
|
|
||||||
|
public GridHeaderColumnMenu() {
|
||||||
|
menuItems = new ArrayList<MenuItem>();
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem changeLabelItem = new MenuItem("Labels");
|
||||||
|
changeLabelItem.setId(GridHeaderOperationId.COLUMNLABEL
|
||||||
|
.toString());
|
||||||
|
changeLabelItem.setIcon(MainboxResources.INSTANCE.columnLabel());
|
||||||
|
menuItems.add(changeLabelItem);
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem addColumnItem = new MenuItem("Add Column");
|
||||||
|
addColumnItem.setId(GridHeaderOperationId.COLUMNADD.toString());
|
||||||
|
addColumnItem.setIcon(MainboxResources.INSTANCE.columnAdd());
|
||||||
|
menuItems.add(addColumnItem);
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem deleteColumnItem = new MenuItem("Delete Column");
|
||||||
|
deleteColumnItem.setId(GridHeaderOperationId.COLUMNDELETE.toString());
|
||||||
|
deleteColumnItem.setIcon(MainboxResources.INSTANCE.columnDelete());
|
||||||
|
menuItems.add(deleteColumnItem);
|
||||||
|
|
||||||
|
MenuItem splitColumnItem = new MenuItem("Split Column");
|
||||||
|
splitColumnItem.setId(GridHeaderOperationId.COLUMNSPLIT.toString());
|
||||||
|
splitColumnItem.setIcon(MainboxResources.INSTANCE.columnSplit());
|
||||||
|
menuItems.add(splitColumnItem);
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem mergeColumnItem = new MenuItem("Merge Column");
|
||||||
|
mergeColumnItem.setId(GridHeaderOperationId.COLUMNMERGE.toString());
|
||||||
|
mergeColumnItem.setIcon(MainboxResources.INSTANCE.columnMerge());
|
||||||
|
menuItems.add(mergeColumnItem);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem changeToTypeItem = new MenuItem("Change Type");
|
||||||
|
changeToTypeItem.setId(GridHeaderOperationId.COLUMNTYPE.toString());
|
||||||
|
changeToTypeItem.setIcon(MainboxResources.INSTANCE.columnType());
|
||||||
|
menuItems.add(changeToTypeItem);
|
||||||
|
|
||||||
|
MenuItem filterItem = new MenuItem("Filter");
|
||||||
|
filterItem.setId(GridHeaderOperationId.COLUMNFILTER.toString());
|
||||||
|
filterItem.setIcon(MainboxResources.INSTANCE.columnFilter());
|
||||||
|
menuItems.add(filterItem);
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem replaceValueBatchItem = new MenuItem("Replace Batch");
|
||||||
|
replaceValueBatchItem.setId(GridHeaderOperationId.COLUMNBATCHREPLACE.toString());
|
||||||
|
replaceValueBatchItem.setIcon(MainboxResources.INSTANCE.columnReplaceBatch());
|
||||||
|
menuItems.add(replaceValueBatchItem);
|
||||||
|
|
||||||
|
|
||||||
|
MenuItem replaceValueOnConditionItem = new MenuItem("Replace By Expression");
|
||||||
|
replaceValueOnConditionItem.setId(GridHeaderOperationId.COLUMNREPLACEBYEXPRESSION.toString());
|
||||||
|
replaceValueOnConditionItem.setIcon(MainboxResources.INSTANCE.columnReplaceByExpression());
|
||||||
|
menuItems.add(replaceValueOnConditionItem);
|
||||||
|
|
||||||
|
|
||||||
|
/*MenuItem newAnnotationColumnItem = new MenuItem("Annotation");
|
||||||
|
newAnnotationColumnItem.setId(GridHeaderOperationId.ANNOTATIONADD.toString());
|
||||||
|
newAnnotationColumnItem.setIcon(TabularDataResources.INSTANCE.annotationAdd());
|
||||||
|
menuItems.add(newAnnotationColumnItem);*/
|
||||||
|
|
||||||
|
/*MenuItem columnDuplicateValidationItem = new MenuItem("Duplicate Detection");
|
||||||
|
columnDuplicateValidationItem.setId(GridHeaderOperationId.DUPLICATEDETECTION.toString());
|
||||||
|
columnDuplicateValidationItem.setIcon(TabularDataResources.INSTANCE.tableDuplicateRows());
|
||||||
|
menuItems.add(columnDuplicateValidationItem);*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return the list of menu items to be added
|
||||||
|
*/
|
||||||
|
public List<MenuItem> getMenu() {
|
||||||
|
return menuItems;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.client.resource;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface MainboxResources extends ClientBundle {
|
||||||
|
|
||||||
|
public static final MainboxResources INSTANCE = GWT
|
||||||
|
.create(MainboxResources.class);
|
||||||
|
|
||||||
|
@Source("column-type_32.png")
|
||||||
|
ImageResource columnType32();
|
||||||
|
|
||||||
|
@Source("column-type.png")
|
||||||
|
ImageResource columnType();
|
||||||
|
|
||||||
|
@Source("column-label_32.png")
|
||||||
|
ImageResource columnLabel32();
|
||||||
|
|
||||||
|
@Source("column-label.png")
|
||||||
|
ImageResource columnLabel();
|
||||||
|
|
||||||
|
@Source("column-filter_32.png")
|
||||||
|
ImageResource columnFilter32();
|
||||||
|
|
||||||
|
@Source("column-filter.png")
|
||||||
|
ImageResource columnFilter();
|
||||||
|
|
||||||
|
@Source("column-edit_32.png")
|
||||||
|
ImageResource columnEdit32();
|
||||||
|
|
||||||
|
@Source("column-edit.png")
|
||||||
|
ImageResource columnEdit();
|
||||||
|
|
||||||
|
@Source("column-delete_32.png")
|
||||||
|
ImageResource columnDelete32();
|
||||||
|
|
||||||
|
@Source("column-delete.png")
|
||||||
|
ImageResource columnDelete();
|
||||||
|
|
||||||
|
@Source("column-add_32.png")
|
||||||
|
ImageResource columnAdd32();
|
||||||
|
|
||||||
|
@Source("column-add.png")
|
||||||
|
ImageResource columnAdd();
|
||||||
|
|
||||||
|
@Source("column-replace.png")
|
||||||
|
ImageResource columnReplace();
|
||||||
|
|
||||||
|
@Source("column-replace_32.png")
|
||||||
|
ImageResource columnReplace32();
|
||||||
|
|
||||||
|
@Source("column-replace-batch.png")
|
||||||
|
ImageResource columnReplaceBatch();
|
||||||
|
|
||||||
|
@Source("column-replace-batch_32.png")
|
||||||
|
ImageResource columnReplaceBatch32();
|
||||||
|
|
||||||
|
@Source("pencil_32.png")
|
||||||
|
ImageResource rowEdit32();
|
||||||
|
|
||||||
|
@Source("pencil.png")
|
||||||
|
ImageResource rowEdit();
|
||||||
|
|
||||||
|
@Source("table-row-insert_32.png")
|
||||||
|
ImageResource rowInsert32();
|
||||||
|
|
||||||
|
@Source("table-row-insert.png")
|
||||||
|
ImageResource rowInsert();
|
||||||
|
|
||||||
|
@Source("table-row-delete_32.png")
|
||||||
|
ImageResource rowRemove32();
|
||||||
|
|
||||||
|
@Source("table-row-delete.png")
|
||||||
|
ImageResource rowRemove();
|
||||||
|
|
||||||
|
@Source("column-split_32.png")
|
||||||
|
ImageResource columnSplit32();
|
||||||
|
|
||||||
|
@Source("column-split.png")
|
||||||
|
ImageResource columnSplit();
|
||||||
|
|
||||||
|
@Source("column-merge_32.png")
|
||||||
|
ImageResource columnMerge32();
|
||||||
|
|
||||||
|
@Source("column-merge.png")
|
||||||
|
ImageResource columnMerge();
|
||||||
|
|
||||||
|
@Source("column-replace-by-expression_32.png")
|
||||||
|
ImageResource columnReplaceByExpression32();
|
||||||
|
|
||||||
|
@Source("column-replace-by-expression.png")
|
||||||
|
ImageResource columnReplaceByExpression();
|
||||||
|
|
||||||
|
}
|
After Width: | Height: | Size: 855 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 867 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 808 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 742 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 874 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 843 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 799 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 761 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 941 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 760 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 799 B |
After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 997 B |
After Width: | Height: | Size: 581 B |
After Width: | Height: | Size: 986 B |
|
@ -0,0 +1,15 @@
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.client.rpc;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.rpc.RemoteService;
|
||||||
|
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi"
|
||||||
|
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@RemoteServiceRelativePath("tds")
|
||||||
|
public interface TabularDataService extends RemoteService {
|
||||||
|
String hello() throws IllegalArgumentException;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.client.rpc;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi"
|
||||||
|
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface TabularDataServiceAsync {
|
||||||
|
|
||||||
|
public static TabularDataServiceAsync INSTANCE = (TabularDataServiceAsync) GWT
|
||||||
|
.create(TabularDataService.class);
|
||||||
|
|
||||||
|
|
||||||
|
void hello(AsyncCallback<String> callback);
|
||||||
|
|
||||||
|
}
|
|
@ -1,7 +1,8 @@
|
||||||
package org.gcube.portlets.user.td.mainboxwidget.client.tdx;
|
package org.gcube.portlets.user.td.mainboxwidget.client.tdx;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.grid.GridContextMenu;
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.grid.GridHeaderColumnMenu;
|
||||||
import org.gcube.portlets.user.td.mainboxwidget.client.utils.Constants;
|
import org.gcube.portlets.user.td.mainboxwidget.client.utils.Constants;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.DataView;
|
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.dataview.TabularResourceDataView;
|
||||||
import org.gcube.portlets.user.tdwx.client.TabularDataX;
|
import org.gcube.portlets.user.tdwx.client.TabularDataX;
|
||||||
import org.gcube.portlets.user.tdwx.client.TabularDataXGridPanel;
|
import org.gcube.portlets.user.tdwx.client.TabularDataXGridPanel;
|
||||||
|
@ -9,7 +10,9 @@ import org.gcube.portlets.user.tdwx.client.event.FailureEvent;
|
||||||
import org.gcube.portlets.user.tdwx.client.event.FailureEventHandler;
|
import org.gcube.portlets.user.tdwx.client.event.FailureEventHandler;
|
||||||
import org.gcube.portlets.user.tdwx.shared.model.TableId;
|
import org.gcube.portlets.user.tdwx.shared.model.TableId;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
import com.google.web.bindery.event.shared.EventBus;
|
import com.google.web.bindery.event.shared.EventBus;
|
||||||
|
import com.sencha.gxt.core.client.Style.SelectionMode;
|
||||||
import com.sencha.gxt.widget.core.client.FramedPanel;
|
import com.sencha.gxt.widget.core.client.FramedPanel;
|
||||||
import com.sencha.gxt.widget.core.client.info.Info;
|
import com.sencha.gxt.widget.core.client.info.Info;
|
||||||
|
|
||||||
|
@ -19,19 +22,17 @@ public class TDXPanel extends FramedPanel {
|
||||||
protected TabularResourceDataView tabularResourceDataView;
|
protected TabularResourceDataView tabularResourceDataView;
|
||||||
protected TabularDataX tabularData;
|
protected TabularDataX tabularData;
|
||||||
|
|
||||||
public TDXPanel(TabularResourceDataView tabularResourceDataView,
|
public TDXPanel(EventBus eventBus) {
|
||||||
EventBus eventBus) {
|
|
||||||
super();
|
super();
|
||||||
this.tabularResourceDataView = tabularResourceDataView;
|
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
forceLayoutOnResize = true;
|
forceLayoutOnResize = true;
|
||||||
setBodyBorder(false);
|
setBodyBorder(false);
|
||||||
setBorders(false);
|
setBorders(false);
|
||||||
setHeaderVisible(false);
|
setHeaderVisible(false);
|
||||||
setWidth(500);
|
// setWidth(500);
|
||||||
setHeight(500);
|
// setHeight(500);
|
||||||
addGrid();
|
addGrid();
|
||||||
|
forceLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addGrid() {
|
public void addGrid() {
|
||||||
|
@ -40,43 +41,47 @@ public class TDXPanel extends FramedPanel {
|
||||||
tabularData.addFailureHandler(new FailureEventHandler() {
|
tabularData.addFailureHandler(new FailureEventHandler() {
|
||||||
|
|
||||||
public void onFailure(FailureEvent event) {
|
public void onFailure(FailureEvent event) {
|
||||||
Throwable e=event.getCaught();
|
Throwable e = event.getCaught();
|
||||||
Info.display("Error: " + event.getMessage(), e.getLocalizedMessage());
|
Info.display("Error: " + event.getMessage(),
|
||||||
|
e.getLocalizedMessage());
|
||||||
|
Log.error("Error: " + e.getLocalizedMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Grid Panel
|
// Grid Panel
|
||||||
final TabularDataXGridPanel gridPanel = tabularData.getGridPanel();
|
TabularDataXGridPanel gridPanel = tabularData.getGridPanel();
|
||||||
gridPanel.setHeaderVisible(false);
|
gridPanel.setHeaderVisible(false);
|
||||||
|
|
||||||
/*
|
GridHeaderColumnMenu columnHeaderMenu = new GridHeaderColumnMenu();
|
||||||
* GridHeaderColumnMenu columnHeaderMenu = new
|
gridPanel.addGridHeaderContextMenuItems(columnHeaderMenu.getMenu(),
|
||||||
* GridHeaderColumnMenu();
|
eventBus);
|
||||||
* gridPanel.addGridHeaderContextMenuItems(columnHeaderMenu
|
|
||||||
* .getMenu(), eventBus);
|
|
||||||
*
|
|
||||||
* GridContextMenu gridContextMenu = new GridContextMenu(gridPanel,
|
|
||||||
* eventBus);
|
|
||||||
* gridPanel.setGridContextMenu(gridContextMenu.getMenu());
|
|
||||||
*
|
|
||||||
* gridPanel.setSelectionModel(SelectionMode.MULTI);
|
|
||||||
*/
|
|
||||||
this.add(gridPanel);
|
|
||||||
|
|
||||||
TableId tableOpening = new TableId(
|
GridContextMenu gridContextMenu = new GridContextMenu(gridPanel,
|
||||||
Constants.TDX_DATASOURCE_FACTORY_ID,
|
eventBus);
|
||||||
tabularResourceDataView.getTrId().getTableId());
|
gridPanel.setGridContextMenu(gridContextMenu.getMenu());
|
||||||
tabularData.openTable(tableOpening);
|
|
||||||
|
gridPanel.setSelectionModel(SelectionMode.MULTI);
|
||||||
|
|
||||||
|
this.add(gridPanel);
|
||||||
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(TabularResourceDataView tabularResourceDataViewTemp) {
|
public void open(TabularResourceDataView dataView) {
|
||||||
if (isDataViewRequest(tabularResourceDataViewTemp)) {
|
tabularResourceDataView = dataView;
|
||||||
tabularResourceDataView = tabularResourceDataViewTemp;
|
TableId tableOpening = new TableId(Constants.TDX_DATASOURCE_FACTORY_ID,
|
||||||
|
tabularResourceDataView.getTrId().getTableId());
|
||||||
|
tabularData.openTable(tableOpening);
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(TabularResourceDataView dataView) {
|
||||||
|
if (isDataViewRequest(dataView)) {
|
||||||
|
tabularResourceDataView = dataView;
|
||||||
TableId tableOpening = new TableId(
|
TableId tableOpening = new TableId(
|
||||||
Constants.TDX_DATASOURCE_FACTORY_ID,
|
Constants.TDX_DATASOURCE_FACTORY_ID,
|
||||||
tabularResourceDataView.getTrId().getTableId());
|
tabularResourceDataView.getTrId().getTableId());
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
package org.gcube.portlets.user.td.mainboxwidget.server;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
|
import org.gcube.application.framework.core.session.SessionManager;
|
||||||
|
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.Constants;
|
||||||
|
import org.gcube.portlets.user.td.mainboxwidget.client.rpc.TabularDataService;
|
||||||
|
import org.gcube.portlets.user.tdwx.datasource.td.TDXDataSourceFactory;
|
||||||
|
import org.gcube.portlets.user.tdwx.server.datasource.DataSourceXFactoryRegistry;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The server side implementation of the RPC service.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class TabularDataServiceImpl extends RemoteServiceServlet implements TabularDataService {
|
||||||
|
|
||||||
|
protected static Logger logger = LoggerFactory.getLogger(TabularDataServiceImpl.class);
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void init() throws ServletException {
|
||||||
|
super.init();
|
||||||
|
|
||||||
|
/*System.out.println("initializing the TabularDataImportManager");
|
||||||
|
TabularDataImporterManager importerManager = new TabularDataImporterManager();
|
||||||
|
//importerManager.scanAvailableImporters();
|
||||||
|
importerManager.add(new CSVTDImporter());
|
||||||
|
importerManager.setupImporters();
|
||||||
|
*/
|
||||||
|
//register the demo csv target
|
||||||
|
//CSVTargetRegistry.getInstance().add(new DemoCSVTarget());
|
||||||
|
//System.out.println("Registered DemoCSVTarget");
|
||||||
|
|
||||||
|
//ScopeProvider.instance.get();
|
||||||
|
System.out.println("Fix JAXP: jdk.xml.entityExpansionLimit=0");
|
||||||
|
System.setProperty("jdk.xml.entityExpansionLimit", "0");
|
||||||
|
|
||||||
|
System.out.println("initializing TDXDataSourceFactory");
|
||||||
|
DataSourceXFactoryRegistry.getInstance().add(new TDXDataSourceFactory());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected static ASLSession getAslSession(HttpSession httpSession)
|
||||||
|
{
|
||||||
|
String username = (String) httpSession
|
||||||
|
.getAttribute(ScopeHelper.USERNAME_ATTRIBUTE);
|
||||||
|
ASLSession session;
|
||||||
|
if (username == null) {
|
||||||
|
logger.warn("no user found in session, using test one");
|
||||||
|
/*throw new Exception("Session Expired!");*/
|
||||||
|
|
||||||
|
// Remove comment for Test
|
||||||
|
|
||||||
|
username = Constants.DEFAULT_USER;
|
||||||
|
String scope = Constants.DEFAULT_SCOPE;
|
||||||
|
|
||||||
|
httpSession.setAttribute(ScopeHelper.USERNAME_ATTRIBUTE, username);
|
||||||
|
session = SessionManager.getInstance().getASLSession(
|
||||||
|
httpSession.getId(), username);
|
||||||
|
session.setScope(scope);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
session = SessionManager.getInstance().getASLSession(
|
||||||
|
httpSession.getId(), username);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info("SessionUtil: aslSession " + session.getUsername() + " "
|
||||||
|
+ session.getScope());
|
||||||
|
|
||||||
|
return session;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public String hello() throws IllegalArgumentException {
|
||||||
|
ASLSession aslSession=getAslSession(this.getThreadLocalRequest().getSession());
|
||||||
|
return "Hello "+aslSession.getUsername();
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,13 +5,21 @@
|
||||||
|
|
||||||
<web-app>
|
<web-app>
|
||||||
|
|
||||||
<!-- Servlets -->
|
<!-- Servlets -->
|
||||||
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>jUnitHostImpl</servlet-name>
|
<servlet-name>jUnitHostImpl</servlet-name>
|
||||||
<servlet-class>com.google.gwt.junit.server.JUnitHostImpl</servlet-class>
|
<servlet-class>com.google.gwt.junit.server.JUnitHostImpl</servlet-class>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
|
<!-- Base Service -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>tdservlet</servlet-name>
|
||||||
|
<servlet-class>org.gcube.portlets.user.td.mainboxwidget.server.TabularDataServiceImpl</servlet-class>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- TDWidget -->
|
<!-- TDWidget -->
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>tdwxService</servlet-name>
|
<servlet-name>tdwxService</servlet-name>
|
||||||
|
@ -24,13 +32,20 @@
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
<!-- Servlets Mapping -->
|
<!-- Servlets Mapping -->
|
||||||
|
<!-- JUnit -->
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>jUnitHostImpl</servlet-name>
|
<servlet-name>jUnitHostImpl</servlet-name>
|
||||||
<url-pattern>TDMainBoxManagerWidgets/junithost/*</url-pattern>
|
<url-pattern>TDMainBoxManagerWidgets/junithost/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- Base Service -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>tdservlet</servlet-name>
|
||||||
|
<url-pattern>/MainBox/tds</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
|
||||||
<!-- TDWidget -->
|
<!-- TDWidget -->
|
||||||
|
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>tdwxService</servlet-name>
|
<servlet-name>tdwxService</servlet-name>
|
||||||
<url-pattern>/MainBox/tdwx</url-pattern>
|
<url-pattern>/MainBox/tdwx</url-pattern>
|
||||||
|
|