diff --git a/.gwt/.gwt-log b/.gwt/.gwt-log index 02f3149..dbdaa52 100644 --- a/.gwt/.gwt-log +++ b/.gwt/.gwt-log @@ -3048,3 +3048,53 @@ Compiling... Compilation completed in 0.00 seconds Removing invalidated units Finding entry point classes +Public resources found in... +Translatable source found in... +Found 0 cached/archived units. Used 0 / 2719 units from cache. +Compiling... + 50% complete (ETR: 4 seconds) + 50% complete (ETR: 4 seconds) + 50% complete (ETR: 4 seconds) + 50% complete (ETR: 4 seconds) + 50% complete (ETR: 4 seconds) + 50% complete (ETR: 4 seconds) + 60% complete (ETR: 4 seconds) + 70% complete (ETR: 3 seconds) + 80% complete (ETR: 2 seconds) + 90% complete (ETR: 1 seconds) + 100% complete (ETR: 0 seconds) + Compilation completed in 13.53 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 0 cached/archived units. Used 0 / 2719 units from cache. +Compiling... + 0% complete (ETR: 54 seconds) + 10% complete (ETR: 48 seconds) + 20% complete (ETR: 27 seconds) + 30% complete (ETR: 17 seconds) + 40% complete (ETR: 12 seconds) + 50% complete (ETR: 9 seconds) + 60% complete (ETR: 7 seconds) + 70% complete (ETR: 4 seconds) + 80% complete (ETR: 3 seconds) + 90% complete (ETR: 1 seconds) + 100% complete (ETR: 0 seconds) + Compilation completed in 18.49 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java index 5034353..141d530 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionDialog; import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionListener; import org.gcube.portlets.user.td.columnwidget.client.progress.ChangeColumnTypeProgressDialog; -import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataPropertiesCombo; import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataTypeProperties; import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnTypeCodeProperties; import org.gcube.portlets.user.td.columnwidget.client.properties.LocaleTypeProperties; @@ -126,8 +126,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements + " columnName: " + columnName + "]"); // Column Data - ColumnDataProperties propsColumnData = GWT - .create(ColumnDataProperties.class); + ColumnDataPropertiesCombo propsColumnData = GWT + .create(ColumnDataPropertiesCombo.class); ListStore storeCombo = new ListStore( propsColumnData.id()); @@ -287,8 +287,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel = new FieldLabel(comboDimensionType, "Codelist"); // ColumnReferenceType - ColumnDataProperties propsColumnReferenceType = GWT - .create(ColumnDataProperties.class); + ColumnDataPropertiesCombo propsColumnReferenceType = GWT + .create(ColumnDataPropertiesCombo.class); storeComboColumnReferenceType = new ListStore( propsColumnReferenceType.id()); diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/DeleteColumnPanel.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/DeleteColumnPanel.java index 4be98ac..4a90297 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/DeleteColumnPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/DeleteColumnPanel.java @@ -1,6 +1,7 @@ package org.gcube.portlets.user.td.columnwidget.client; import java.util.ArrayList; +import java.util.List; import org.gcube.portlets.user.td.columnwidget.client.progress.DeleteColumnProgressDialog; import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; @@ -14,34 +15,35 @@ import com.allen_sauer.gwt.log.client.Log; 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.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; +import com.sencha.gxt.core.client.IdentityValueProvider; +import com.sencha.gxt.core.client.Style.SelectionMode; +import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.data.client.loader.RpcProxy; -import com.sencha.gxt.data.shared.LabelProvider; import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.data.shared.event.StoreDataChangeEvent; +import com.sencha.gxt.data.shared.event.StoreDataChangeEvent.StoreDataChangeHandler; import com.sencha.gxt.data.shared.loader.ListLoadConfig; -import com.sencha.gxt.data.shared.loader.ListLoadConfigBean; import com.sencha.gxt.data.shared.loader.ListLoadResult; import com.sencha.gxt.data.shared.loader.ListLoadResultBean; import com.sencha.gxt.data.shared.loader.ListLoader; import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.box.AlertMessageBox; import com.sencha.gxt.widget.core.client.button.TextButton; +import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; +import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; 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.event.HideEvent; -import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; -import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.TextField; -import com.sencha.gxt.widget.core.client.info.Info; +import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; +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; /** * @@ -61,13 +63,17 @@ public class DeleteColumnPanel extends FramedPanel { protected TRId trId; protected String columnName; protected ColumnData column; - protected ComboBox comboColumn = null; - protected ListLoader> loader; protected TextButton delete; + + protected ListLoader> loader; + protected Grid grid; + protected CheckBoxSelectionModel sm; + protected FieldLabel columnsSelectLabel; protected DeleteColumnSession deleteColumnSession; protected DeleteColumnProgressDialog deleteColumnProgressDialog; + private ListStore store; public DeleteColumnPanel(TRId trId, String columnName, EventBus eventBus) { setWidth(WIDTH); @@ -80,14 +86,43 @@ public class DeleteColumnPanel extends FramedPanel { Log.debug("DeleteColumnPanel(): [" + trId.toString() + " columnName: " + columnName + "]"); - // Column Data - ColumnDataProperties propsColumnData = GWT - .create(ColumnDataProperties.class); - ListStore storeCombo = new ListStore( - propsColumnData.id()); + + build(); + } + + protected void build(){ + ColumnDataProperties props = GWT.create(ColumnDataProperties.class); - Log.trace("StoreCombo created"); + ColumnConfig labelCol = new ColumnConfig( + props.label()); + IdentityValueProvider identity = new IdentityValueProvider(); + sm = new CheckBoxSelectionModel(identity); + + List> l = new ArrayList>(); + l.add(sm.getColumn()); + l.add(labelCol); + ColumnModel cm = new ColumnModel(l); + + store = new ListStore(props.id()); + + store.addStoreDataChangeHandler(new StoreDataChangeHandler(){ + + @Override + public void onDataChange(StoreDataChangeEvent event) { + List cols=event.getSource().getAll(); + Log.debug("Columns:"+cols.size()); + for(ColumnData c:cols){ + if(c.getName().compareTo(columnName)==0){ + sm.select(c, false); + sm.refresh(); + break; + } + } + + } + }); + RpcProxy> proxy = new RpcProxy>() { public void load(ListLoadConfig loadConfig, @@ -95,80 +130,83 @@ public class DeleteColumnPanel extends FramedPanel { loadData(loadConfig, callback); } }; - loader = new ListLoader>( - proxy) { - @Override - protected ListLoadConfig newLoadConfig() { - return (ListLoadConfig) new ListLoadConfigBean(); - } - - }; + proxy); + loader.setRemoteSort(false); loader.addLoadHandler(new LoadResultListStoreBinding>( - storeCombo)); - Log.trace("LoaderCombo created"); - - comboColumn = new ComboBox(storeCombo, - propsColumnData.label()) { + store) { + }); + + grid = new Grid(store, cm) { + @Override protected void onAfterFirstAttach() { super.onAfterFirstAttach(); Scheduler.get().scheduleDeferred(new ScheduledCommand() { + public void execute() { loader.load(); + } }); } }; - Log.trace("Combo ColumnData created"); - - addHandlersForComboColumn(propsColumnData.label()); - - comboColumn.setLoader(loader); - comboColumn.setEmptyText("Select a column..."); - comboColumn.setWidth(150); - comboColumn.setTypeAhead(false); - comboColumn.setEditable(false); - comboColumn.setTriggerAction(TriggerAction.ALL); + sm.setSelectionMode(SelectionMode.MULTI); + grid.setLoader(loader); + grid.setSelectionModel(sm); + //grid.getView().setAutoExpandColumn(labelCol); + grid.setHeight(360); + grid.getView().setStripeRows(true); + grid.getView().setColumnLines(true); + grid.getView().setAutoFill(true); + grid.setBorders(false); + grid.setLoadMask(true); + grid.setColumnReordering(true); + grid.setColumnResize(false); - delete=new TextButton("Delete"); - delete.addSelectHandler(new SelectHandler() { - + // Delete Button + delete = new TextButton("Delete"); + SelectHandler deleteHandler = new SelectHandler() { + public void onSelect(SelectEvent event) { - onDeleteColumn(); - + onDeleteColumns(); + } - }); + }; + delete.addSelectHandler(deleteHandler); + + FieldLabel columnsLabel = new FieldLabel(null, "Columns"); + columnsLabel.getElement().applyStyles("font-weight:bold"); + HBoxLayoutContainer hBox=new HBoxLayoutContainer(); + hBox.add(delete,new BoxLayoutData(new Margins(2,5,2,5))); + VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(new FieldLabel(comboColumn, "Column"), new VerticalLayoutData(1, - -1)); - v.add(delete, new VerticalLayoutData(-1, -1, new Margins(10, 0, 10, 0))); - add(v, new VerticalLayoutData(-1, -1, new Margins())); + v.setScrollMode(ScrollMode.AUTO); + v.add(columnsLabel, new VerticalLayoutData(-1, -1, new Margins(2,1,5,1))); + v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); + v.add(hBox, new VerticalLayoutData(-1, -1, new Margins(10, 0, + 10, 0))); + add(v, new VerticalLayoutData(-1, -1, new Margins(0))); - } - protected void addHandlersForComboColumn( - final LabelProvider labelProvider) { - comboColumn.addSelectionHandler(new SelectionHandler() { - public void onSelection(SelectionEvent event) { - Info.display( - "Column Selected", - "You selected " - + (event.getSelectedItem() == null ? "nothing" - : labelProvider.getLabel(event - .getSelectedItem()) + "!")); - Log.debug("ComboColumn selected: " + event.getSelectedItem()); - ColumnData columnData = event.getSelectedItem(); - updateComboStatus(columnData); - } - - }); } + + protected ArrayList getSelectedItems() { + return new ArrayList(grid.getSelectionModel() + .getSelectedItems()); + + } + + public void update(TRId trId, String columnName) { + this.trId = trId; + this.columnName=columnName; + loader.load(); + } protected void loadData(ListLoadConfig loadConfig, final AsyncCallback> callback) { @@ -176,24 +214,15 @@ public class DeleteColumnPanel extends FramedPanel { new AsyncCallback>() { public void onFailure(Throwable caught) { - Log.error("load combo failure:" + Log.error("load columns failure:" + caught.getLocalizedMessage()); - AlertMessageBox d = new AlertMessageBox("Error", - "Error retrieving columns of tabular resource:" - + trId.getId()); - d.addHideHandler(new HideHandler() { - - public void onHide(HideEvent event) { - - } - }); - d.show(); + UtilsGXT3.alert("Error retrieving columns", + "Error retrieving columns"); callback.onFailure(caught); } public void onSuccess(ArrayList result) { Log.trace("loaded " + result.size() + " ColumnData"); - setComboStatus(result); callback.onSuccess(new ListLoadResultBean( result)); @@ -203,42 +232,23 @@ public class DeleteColumnPanel extends FramedPanel { } - protected void setComboStatus(ArrayList result) { - Log.debug("ColumnName:" + columnName); - if (columnName != null) { - for (ColumnData cd : result) { - Log.debug("ColumnData name:" + cd.getName()); - if (cd.getName().compareTo(columnName) == 0) { - updateComboStatus(cd); - } - } + + + + protected void onDeleteColumns() { + ArrayList columns=getSelectedItems(); + if(columns==null||columns.size()<1){ + UtilsGXT3.alert("Attention", + "Attention no column selected!"); + return; + } else { + callDeleteColumn(columns); } } - protected void updateComboStatus(ColumnData cd) { - Log.debug("ColumnData: " + cd.toString()); - deleteColumnSession = new DeleteColumnSession(); - deleteColumnSession.setColumnData(cd); - comboColumn.setValue(cd); - } - - public void update(TRId trId, String columnName) { - this.trId = trId; - this.columnName = columnName; - loader.load(); - } - - protected void onDeleteColumn() { - - ColumnData columnData = comboColumn.getCurrentValue(); - if(columnData!=null){ - callDeleteColumn(); - } else { - UtilsGXT3.alert("Attention", "Select a column!"); - } - } - - private void callDeleteColumn() { + private void callDeleteColumn(ArrayList columns) { + deleteColumnSession=new DeleteColumnSession(trId,columns); + TDGWTServiceAsync.INSTANCE.startDeleteColumn( deleteColumnSession, new AsyncCallback() { diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/LabelColumnPanel.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/LabelColumnPanel.java index 3ba74b2..0c84b84 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/LabelColumnPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/LabelColumnPanel.java @@ -3,7 +3,7 @@ package org.gcube.portlets.user.td.columnwidget.client; import java.util.ArrayList; import org.gcube.portlets.user.td.columnwidget.client.progress.LabelColumnProgressDialog; -import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataPropertiesCombo; import org.gcube.portlets.user.td.columnwidget.client.utils.UtilsGXT3; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; @@ -78,8 +78,8 @@ public class LabelColumnPanel extends FramedPanel { + " columnName: " + columnName + "]"); // Column Data - ColumnDataProperties propsColumnData = GWT - .create(ColumnDataProperties.class); + ColumnDataPropertiesCombo propsColumnData = GWT + .create(ColumnDataPropertiesCombo.class); ListStore storeCombo = new ListStore( propsColumnData.id()); diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/ConnectCodelistDialog.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/ConnectCodelistDialog.java index e95538b..19db4a3 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/ConnectCodelistDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/ConnectCodelistDialog.java @@ -2,7 +2,7 @@ package org.gcube.portlets.user.td.columnwidget.client.dimension; import java.util.ArrayList; -import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataPropertiesCombo; import org.gcube.portlets.user.td.columnwidget.client.properties.TabResourceProperties; import org.gcube.portlets.user.td.columnwidget.client.resources.ResourceBundle; import org.gcube.portlets.user.td.columnwidget.client.utils.UtilsGXT3; @@ -91,8 +91,8 @@ public class ConnectCodelistDialog extends Window implements comboDimensionTypeLabel = new FieldLabel(comboDimensionType, "Codelist"); // ColumnReferenceType - ColumnDataProperties propsColumnReferenceType = GWT - .create(ColumnDataProperties.class); + ColumnDataPropertiesCombo propsColumnReferenceType = GWT + .create(ColumnDataPropertiesCombo.class); storeComboColumnReferenceType = new ListStore( propsColumnReferenceType.id()); diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataProperties.java index f6c4477..27215da 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataProperties.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataProperties.java @@ -3,7 +3,7 @@ package org.gcube.portlets.user.td.columnwidget.client.properties; import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; import com.google.gwt.editor.client.Editor.Path; -import com.sencha.gxt.data.shared.LabelProvider; +import com.sencha.gxt.core.client.ValueProvider; import com.sencha.gxt.data.shared.ModelKeyProvider; import com.sencha.gxt.data.shared.PropertyAccess; @@ -19,7 +19,7 @@ public interface ColumnDataProperties extends @Path("id") ModelKeyProvider id(); - LabelProvider label(); + ValueProvider label(); } diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataPropertiesCombo.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataPropertiesCombo.java new file mode 100644 index 0000000..ef60fd9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataPropertiesCombo.java @@ -0,0 +1,25 @@ +package org.gcube.portlets.user.td.columnwidget.client.properties; + +import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; + +import com.google.gwt.editor.client.Editor.Path; +import com.sencha.gxt.data.shared.LabelProvider; +import com.sencha.gxt.data.shared.ModelKeyProvider; +import com.sencha.gxt.data.shared.PropertyAccess; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public interface ColumnDataPropertiesCombo extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + LabelProvider label(); + + +}