From fee49c8272ea837bceb57dcc9712eff603558577 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 26 Feb 2014 18:03:05 +0000 Subject: [PATCH] Minor Updated git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-column-widget@92360 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/ChangeColumnTypePanel.java | 28 +++- .../dimension/CodelistSelectionListener.java | 32 +++++ .../dimension/DialogCodelistSelection.java | 134 ++++++++++++------ 3 files changed, 148 insertions(+), 46 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/CodelistSelectionListener.java 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 6fa1816..91046ac 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 @@ -2,6 +2,7 @@ package org.gcube.portlets.user.td.columnwidget.client; import java.util.ArrayList; +import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionListener; import org.gcube.portlets.user.td.columnwidget.client.dimension.DialogCodelistSelection; import org.gcube.portlets.user.td.columnwidget.client.progress.ChangeColumnTypeProgressDialog; import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; @@ -24,8 +25,6 @@ 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.BeforeSelectionEvent; -import com.google.gwt.event.logical.shared.BeforeSelectionHandler; import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -46,13 +45,11 @@ 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.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; -import com.sencha.gxt.widget.core.client.event.BeforeShowContextMenuEvent; -import com.sencha.gxt.widget.core.client.event.TriggerClickEvent; -import com.sencha.gxt.widget.core.client.event.BeforeShowContextMenuEvent.BeforeShowContextMenuHandler; 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.event.TriggerClickEvent; import com.sencha.gxt.widget.core.client.event.TriggerClickEvent.TriggerClickHandler; import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.FieldLabel; @@ -68,7 +65,7 @@ import com.sencha.gxt.widget.core.client.info.Info; * href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it * */ -public class ChangeColumnTypePanel extends FramedPanel { +public class ChangeColumnTypePanel extends FramedPanel implements CodelistSelectionListener { protected String WIDTH = "640px"; protected String HEIGHT = "520px"; protected EventBus eventBus; @@ -613,7 +610,26 @@ public class ChangeColumnTypePanel extends FramedPanel { protected void callDialogCodelistSelection() { DialogCodelistSelection dialogCodelistSelection = new DialogCodelistSelection( eventBus); + dialogCodelistSelection.addListener(this); dialogCodelistSelection.show(); } + @Override + public void selected(TabResource tabResource) { + Log.debug("Selected Codelist: "+tabResource); + + } + + @Override + public void aborted() { + Log.debug("Select Codelist Aborted"); + + } + + @Override + public void failed(String reason, String detail) { + Log.error("Select Codelist Failed[reason: "+reason+" , detail:"+detail+"]"); + + } + } diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/CodelistSelectionListener.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/CodelistSelectionListener.java new file mode 100644 index 0000000..4d77000 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/CodelistSelectionListener.java @@ -0,0 +1,32 @@ +package org.gcube.portlets.user.td.columnwidget.client.dimension; + +import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource; + + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public interface CodelistSelectionListener { + + /** + * Called when selected codelist without errors + */ + public void selected(TabResource tabResource); + + /** + * Called when the select operation is aborted by the user. + */ + public void aborted(); + + /** + * Called when the something in the wizard is failed. + * + * @param reason + * @param detail + */ + public void failed(String reason, String detail); + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/DialogCodelistSelection.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/DialogCodelistSelection.java index b222318..2b4ac75 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/DialogCodelistSelection.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/dimension/DialogCodelistSelection.java @@ -23,6 +23,7 @@ import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.web.bindery.event.shared.EventBus; import com.sencha.gxt.core.client.IdentityValueProvider; import com.sencha.gxt.core.client.Style.SelectionMode; import com.sencha.gxt.core.client.resources.ThemeStyles; @@ -54,14 +55,14 @@ import com.sencha.gxt.widget.core.client.grid.LiveGridView; import com.sencha.gxt.widget.core.client.grid.LiveToolItem; import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; -import com.google.web.bindery.event.shared.EventBus; public class DialogCodelistSelection extends Window { protected static final int WIDTH = 550; protected static final int HEIGHT = 520; protected static final int CACHE_SIZE = 200; - - + + protected ArrayList listeners; + private static final TabResourcesProperties properties = GWT .create(TabResourcesProperties.class); @@ -71,17 +72,18 @@ public class DialogCodelistSelection extends Window { properties.agency(), 50, "Agency"); protected static final ColumnConfig dateColumn = new ColumnConfig( properties.date(), 50, "Date"); - + protected EventBus eventBus; protected Grid grid; protected ExtendedLiveGridView liveGridView; protected PagingLoader> loader; protected String filter; - + protected ResourceBundle res; - + private TextButton select; + public DialogCodelistSelection(EventBus eventBus) { - this.eventBus=eventBus; + this.eventBus = eventBus; Log.info("Dialog CodelistSelection"); setWidth(WIDTH); setHeight(HEIGHT); @@ -89,12 +91,13 @@ public class DialogCodelistSelection extends Window { setBodyBorder(false); setResizable(true); setHeadingText("Select Codelist"); + listeners = new ArrayList(); initLoad(); - + } - - protected void create(){ - + + protected void create() { + FramedPanel panel = new FramedPanel(); panel.setHeaderVisible(false); panel.setBodyBorder(false); @@ -130,8 +133,8 @@ public class DialogCodelistSelection extends Window { public void onKeyUp(KeyUpEvent event) { Log.trace("searchTerm: " + searchField.getCurrentValue()); - filter=searchField.getCurrentValue(); - if(filter!=null&& !filter.isEmpty()){ + filter = searchField.getCurrentValue(); + if (filter != null && !filter.isEmpty()) { loader.load(0, liveGridView.getCacheSize()); } } @@ -142,7 +145,7 @@ public class DialogCodelistSelection extends Window { public void load(PagingLoadConfig loadConfig, final AsyncCallback> callback) { loadData(loadConfig, callback); - + } }; loader = new PagingLoader>( @@ -196,7 +199,19 @@ public class DialogCodelistSelection extends Window { v.add(baseToolBar, new VerticalLayoutData(1, 25)); panel.add(v); - panel.addButton(new TextButton("Select")); + + select = new TextButton("Select"); + select.disable(); + select.addSelectHandler(new SelectHandler() { + + @Override + public void onSelect(SelectEvent event) { + fireCompleted(getSelected()); + + } + }); + + panel.addButton(select); add(panel); forceLayout(); @@ -249,30 +264,30 @@ public class DialogCodelistSelection extends Window { } }); - } - - protected void initLoad(){ - TDGWTServiceAsync.INSTANCE.setCodelistsPagingLoader(new AsyncCallback(){ - @Override - public void onFailure(Throwable caught) { - Log.debug("Error in setCodelistsPagingLoader", - caught.getMessage()); - caught.printStackTrace(); - alert("Error Retrieving Codelist", - "Error error in retrieving the codelists during the initialization phase!"); - - } + protected void initLoad() { + TDGWTServiceAsync.INSTANCE + .setCodelistsPagingLoader(new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + Log.debug("Error in setCodelistsPagingLoader", + caught.getMessage()); + caught.printStackTrace(); + alert("Error Retrieving Codelist", + "Error error in retrieving the codelists during the initialization phase!"); + + } + + @Override + public void onSuccess(Void result) { + create(); + + } + + }); - @Override - public void onSuccess(Void result) { - create(); - - } - - }); - } protected HandlerRegistration addSelectionHandler( @@ -280,16 +295,14 @@ public class DialogCodelistSelection extends Window { SelectionHandler hand = new SelectionHandler() { public void onSelection(SelectionEvent event) { - // tabResourcesSelectionPanel.getSelectedItem(); - // getWizardWindow().setEnableNextButton(true); + select.enable(); } }; - return grid.getSelectionModel().addSelectionHandler(hand); } - public TabResource getSelectedItem() { + protected TabResource getSelected() { return grid.getSelectionModel().getSelectedItem(); } @@ -314,4 +327,45 @@ public class DialogCodelistSelection extends Window { } + /** + * {@inheritDoc} + */ + @Override + protected void initTools() { + super.initTools(); + + closeBtn.addSelectHandler(new SelectHandler() { + + + public void onSelect(SelectEvent event) { + fireAborted(); + hide(); + } + }); + + } + + public void addListener(CodelistSelectionListener listener) { + listeners.add(listener); + } + + public void removeListener(CodelistSelectionListener listener) { + listeners.remove(listener); + } + + public void fireCompleted(TabResource tabResource) { + for (CodelistSelectionListener listener : listeners) + listener.selected(tabResource); + } + + public void fireAborted() { + for (CodelistSelectionListener listener : listeners) + listener.aborted(); + } + + public void fireFailed(String reason, String details) { + for (CodelistSelectionListener listener : listeners) + listener.failed(reason, details); + } + }