From 6a8c6ccdf18862c89b193d4fec21ee4826f8e463 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 15 Jan 2014 15:52:58 +0000 Subject: [PATCH] Minor Update git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-column-widget@90137 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 6 - .../ChangeToAnnotationColumnDialog.java | 180 ++++++++++++++++++ .../client/ColumnWidgetEntry.java | 3 + 3 files changed, 183 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeToAnnotationColumnDialog.java diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index dc69409..5030e3e 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,12 +4,6 @@ - - uses - - - uses - diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeToAnnotationColumnDialog.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeToAnnotationColumnDialog.java new file mode 100644 index 0000000..98dddae --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeToAnnotationColumnDialog.java @@ -0,0 +1,180 @@ +package org.gcube.portlets.user.td.columnwidget.client; + +import java.util.ArrayList; + +import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; +import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; +import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; + +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.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.widget.client.TextButton; +import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; +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.loader.ListLoadConfig; +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.ContentPanel; +import com.sencha.gxt.widget.core.client.FramedPanel; +import com.sencha.gxt.widget.core.client.Window; +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.ComboBox; +import com.sencha.gxt.widget.core.client.form.FieldLabel; +import com.sencha.gxt.widget.core.client.info.Info; + + +public class ChangeToAnnotationColumnDialog extends Window { + protected TRId trId; + protected ComboBox combo=null; + protected String columnName=null; + + public ChangeToAnnotationColumnDialog(TRId trId) { + create(trId, null); + } + + public ChangeToAnnotationColumnDialog(TRId trId, String columnName) { + create(trId, columnName); + } + + protected void create(TRId trId, String columnName) { + this.trId=trId; + this.columnName=columnName; + setBodyBorder(false); + // getHeader().setIcon(Resources.IMAGES.side_list()); + setHeadingText("Change To Annotation Column"); + setWidth(400); + setHeight(120); + setResizable(false); + + VerticalLayoutContainer basicLayout = new VerticalLayoutContainer(); + + ContentPanel panel = new ContentPanel(); + panel.setHeaderVisible(false); + //panel.setBodyStyle("margin: 0px;"); + + ColumnDataProperties props = GWT.create(ColumnDataProperties.class); + ListStore store = new ListStore(props.id()); + + Log.trace("Store created"); + RpcProxy> proxy = new RpcProxy>() { + + public void load(ListLoadConfig loadConfig, final AsyncCallback> callback) { + loadData(loadConfig, callback); + } + }; + final ListLoader> loader = new ListLoader>(proxy); + loader.setRemoteSort(false); + loader.addLoadHandler(new LoadResultListStoreBinding>(store)); + Log.trace("Loader created"); + + + combo = new ComboBox(store, + props.label()){ + @Override + protected void onAfterFirstAttach() { + super.onAfterFirstAttach(); + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + public void execute() { + loader.load(); + } + }); + } + }; + Log.trace("Combo created"); + + addHandlersForEventObservation(combo, props.label()); + + combo.setEmptyText("Select a column..."); + combo.setWidth(150); + combo.setTypeAhead(true); + combo.setTriggerAction(TriggerAction.ALL); + combo.setLoader(loader); + + FramedPanel form = new FramedPanel(); + form.setHeaderVisible(false); + //form.setWidth(350); + form.setBodyStyle("background: none;"); + + VerticalLayoutContainer v = new VerticalLayoutContainer(); + v.add(new FieldLabel(combo, "Column"), new VerticalLayoutData(1, -1)); + form.add(v); + form.addButton(new TextButton("Change")); + + + panel.add(form); + basicLayout.add(panel, new VerticalLayoutData(-1, -1, new Margins())); + add(basicLayout); + + } + + private void addHandlersForEventObservation(ComboBox combo, + final LabelProvider labelProvider) { + combo.addValueChangeHandler(new ValueChangeHandler() { + + public void onValueChange(ValueChangeEvent event) { + Info.display( + "Value Changed", + "New value: " + + (event.getValue() == null ? "nothing" + : labelProvider.getLabel(event + .getValue()) + "!")); + + } + }); + combo.addSelectionHandler(new SelectionHandler() { + public void onSelection(SelectionEvent event) { + Info.display( + "State Selected", + "You selected " + + (event.getSelectedItem() == null ? "nothing" + : labelProvider.getLabel(event + .getSelectedItem()) + "!")); + } + }); + } + + + + + + protected void loadData(ListLoadConfig loadConfig, + final AsyncCallback> callback) { + TDGWTServiceAsync.INSTANCE.getColumns(trId, new AsyncCallback>(){ + + public void onFailure(Throwable caught) { + Log.error("load combo failure:"+caught.getLocalizedMessage()); + callback.onFailure(caught); + } + + public void onSuccess(ArrayList result) { + Log.trace("loaded " + result.size() + " ColumnData"); + if(columnName!=null){ + for(ColumnData cd: result){ + if(cd.getName().compareTo(columnName)==0){ + combo.setValue(cd); + } + } + } + callback.onSuccess(new ListLoadResultBean( + result)); + + } + + }); + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ColumnWidgetEntry.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ColumnWidgetEntry.java index f726eab..59c3906 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ColumnWidgetEntry.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ColumnWidgetEntry.java @@ -12,12 +12,15 @@ public class ColumnWidgetEntry implements EntryPoint { public void onModuleLoad() { TRId trId=new TRId(); + //For example Tabular Resource 1 and table 1 trId.setId("1"); trId.setTableId("1"); RemoveColumnDialog dialog=new RemoveColumnDialog(trId); dialog.show(); ChangeLabelColumnDialog changeLabel=new ChangeLabelColumnDialog(trId); changeLabel.show(); + ChangeToAnnotationColumnDialog changeToAnnotation=new ChangeToAnnotationColumnDialog(trId); + changeToAnnotation.show(); Log.info("Hello!"); } }