Minor Update

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-column-widget@97871 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2014-06-26 16:02:14 +00:00
parent 60c933b91a
commit 87c4241e97
3 changed files with 269 additions and 11 deletions

View File

@ -2,6 +2,7 @@ package org.gcube.portlets.user.td.columnwidget.client.mapping;
import java.util.ArrayList;
import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionListener;
import org.gcube.portlets.user.td.columnwidget.client.resources.ResourceBundle;
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource;
@ -104,5 +105,24 @@ public class ColumnMappingDialog extends Window {
listeners.remove(listener);
}
public void fireSelectedColumnMapping(ColumnMappingList columnMappingData) {
for (ColumnMappingListener listener : listeners)
listener.selectedColumnMapping(columnMappingData);
hide();
}
public void fireAbortedColumnMapping() {
for (ColumnMappingListener listener : listeners)
listener.abortedColumnMapping();
hide();
}
public void fireFailedColumnMapping(String reason, String detail) {
for (ColumnMappingListener listener : listeners)
listener.failedColumnMapping(reason, detail);
hide();
}
}

View File

@ -14,7 +14,7 @@ public interface ColumnMappingListener {
/**
* Called when created column mapping without errors
*/
public void selectedColumnMappingListener(ColumnMappingList columnMappingData);
public void selectedColumnMapping(ColumnMappingList columnMappingData);
/**
* Called when the column mapping operation is aborted by the user.

View File

@ -18,16 +18,22 @@ import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
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.button.TextButton;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
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.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;
@ -42,7 +48,8 @@ public class ColumnMappingPanel extends FramedPanel {
protected static final String WIDTH = "560px";
protected static final String HEIGHT = "520px";
protected static final String COMBOWIDTH ="120px";
protected String CONTAINERHEIGHT = "520px";
protected ColumnMappingPanel thisPanel;
@ -61,7 +68,10 @@ public class ColumnMappingPanel extends FramedPanel {
protected ColumnMappingList columnMappingList;
protected ArrayList<ColumnMappingData> mapping;
private TextButton btnSave;
private TextButton btnClose;
/**
*
*
@ -88,16 +98,77 @@ public class ColumnMappingPanel extends FramedPanel {
+ ", eventBus:" + eventBus + "]");
columnMappingList = new ColumnMappingList();
mapping = new ArrayList<ColumnMappingData>();
create();
}
protected void setup() {
protected void create() {
itemIdSourceValueArg = "SourceArg" + selectedColumn.getName();
itemIdTargetValueArg = "TargetArg" + selectedColumn.getName();
SimpleContainer container = new SimpleContainer();
container.setHeight(CONTAINERHEIGHT);
btnSave = new TextButton("Save");
btnSave.setIcon(ResourceBundle.INSTANCE.save());
btnSave.setIconAlign(IconAlign.RIGHT);
btnSave.setTitle("Save");
btnSave.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
Log.debug("Pressed Save");
btnSave.disable();
save();
}
});
btnClose = new TextButton("Close");
btnClose.setIcon(ResourceBundle.INSTANCE.close());
btnClose.setIconAlign(IconAlign.RIGHT);
btnClose.setTitle("Close");
btnClose.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
Log.debug("Pressed Close");
close();
}
});
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
flowButton.setPack(BoxLayoutPack.CENTER);
flowButton.add(btnSave, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
vert = new VerticalLayoutContainer();
vert.setScrollMode(ScrollMode.AUTO);
vert.setAdjustForScroll(true);
setColumnMappingData();
container.add(vert);
container.forceLayout();
VerticalLayoutContainer vPanel = new VerticalLayoutContainer();
vPanel.add(container, new VerticalLayoutData(1, -1));
vPanel.add(flowButton, new VerticalLayoutData(1, -1, new Margins(1)));
add(vPanel);
}
protected void save(){
}
protected void close(){
}
protected void setColumnMappingData() {
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
// Source Combo
@ -249,7 +320,7 @@ public class ColumnMappingPanel extends FramedPanel {
Log.debug("Clicked btnDel");
vert.remove(horiz);
if (vert.getWidgetCount() == 0) {
setup();
setColumnMappingData();
} else {
}
@ -260,7 +331,179 @@ public class ColumnMappingPanel extends FramedPanel {
});
btnDel.setVisible(false);
horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
horiz.setPack(BoxLayoutPack.START);
horiz.add(comboSourceValue, new BoxLayoutData(new Margins(2, 4, 2, 4)));
horiz.add(comboTargetValue, new BoxLayoutData(new Margins(2, 4, 2, 4)));
horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 4, 2, 4)));
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 4, 2, 4)));
vert.add(horiz);
}
protected void addColumnMappingData() {
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
// Source Combo
DimensionRowsProperties propsSource = GWT
.create(DimensionRowsProperties.class);
ListStore<DimensionRow> storeComboSourceValue = new ListStore<DimensionRow>(
propsSource.rowId());
final ComboBox<DimensionRow> comboSourceValue = new ComboBox<DimensionRow>(
storeComboSourceValue, propsSource.value());
comboSourceValue.setItemId(itemIdSourceValueArg);
Log.debug("ComboSourceValue created");
final DimensionRowSelectionListener sourceValueSelectedListener = new DimensionRowSelectionListener() {
@Override
public void selectedDimensionRow(DimensionRow dimensionRow) {
Log.debug("Source DimensionRow selected: " + dimensionRow);
comboSourceValue.setValue(dimensionRow, true);
}
@Override
public void abortedDimensionRowSelection() {
Log.debug("Source DimensionRow selection aborted");
}
@Override
public void failedDimensionRowSelection(String reason, String detail) {
Log.error("Source DimensionRow selection error: " + reason);
}
};
comboSourceValue.addTriggerClickHandler(new TriggerClickHandler() {
@Override
public void onTriggerClick(TriggerClickEvent event) {
Log.debug("ComboSourceValue TriggerClickEvent");
comboSourceValue.collapse();
CellData cellData = new CellData("", selectedColumn.getName(),
selectedColumn.getColumnId(),
selectedColumn.getLabel(), null, 0, 0);
DimensionRowSelectionDialog dimensionRowSelectionDialog = new DimensionRowSelectionDialog(
selectedColumn, cellData, false, eventBus);
dimensionRowSelectionDialog
.addListener(sourceValueSelectedListener);
dimensionRowSelectionDialog.show();
}
});
comboSourceValue.setEmptyText("Select a source...");
comboSourceValue.setWidth(COMBOWIDTH);
comboSourceValue.setEditable(false);
comboSourceValue.setTriggerAction(TriggerAction.ALL);
//Target Combo
DimensionRowsProperties propsTarget = GWT
.create(DimensionRowsProperties.class);
ListStore<DimensionRow> storeComboTargetValue = new ListStore<DimensionRow>(
propsTarget.rowId());
final ComboBox<DimensionRow> comboTargetValue = new ComboBox<DimensionRow>(
storeComboTargetValue, propsTarget.value());
comboTargetValue.setItemId(itemIdTargetValueArg);
Log.debug("ComboTargetValue created");
final DimensionRowSelectionListener targetValueSelectedListener = new DimensionRowSelectionListener() {
@Override
public void selectedDimensionRow(DimensionRow dimensionRow) {
Log.debug("Target DimensionRow selected: " + dimensionRow);
comboTargetValue.setValue(dimensionRow, true);
}
@Override
public void abortedDimensionRowSelection() {
Log.debug("Target DimensionRow selection aborted");
}
@Override
public void failedDimensionRowSelection(String reason, String detail) {
Log.error("Target DimensionRow selection error: " + reason);
}
};
comboTargetValue.addTriggerClickHandler(new TriggerClickHandler() {
@Override
public void onTriggerClick(TriggerClickEvent event) {
Log.debug("ComboTargetValue TriggerClickEvent");
comboTargetValue.collapse();
CellData cellData = new CellData("", referenceColumn.getName(),
referenceColumn.getColumnId(),
referenceColumn.getLabel(), null, 0, 0);
DimensionRowSelectionDialog dimensionRowSelectionDialog = new DimensionRowSelectionDialog(
referenceColumn, cellData, true, eventBus);
dimensionRowSelectionDialog
.addListener(targetValueSelectedListener);
dimensionRowSelectionDialog.show();
}
});
comboTargetValue.setEmptyText("Select a target...");
comboTargetValue.setWidth(COMBOWIDTH);
comboTargetValue.setEditable(false);
comboTargetValue.setTriggerAction(TriggerAction.ALL);
final IconButton btnAdd = new IconButton();
btnAdd.setItemId(itemIdBtnAdd);
btnAdd.setIcon(ResourceBundle.INSTANCE.add());
btnAdd.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Log.debug("Clicked btnAdd");
addColumnMappingData();
thisPanel.forceLayout();
vert.forceLayout();
}
});
btnAdd.setVisible(true);
final IconButton btnDel = new IconButton();
btnDel.setItemId(itemIdBtnDel);
btnDel.setIcon(ResourceBundle.INSTANCE.delete());
btnDel.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Log.debug("Clicked btnDel");
vert.remove(horiz);
if (vert.getWidgetCount() == 0) {
setColumnMappingData();
} else {
}
thisPanel.forceLayout();
vert.forceLayout();
}
});
btnDel.setVisible(false);
horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
horiz.setPack(BoxLayoutPack.START);
@ -271,11 +514,6 @@ public class ColumnMappingPanel extends FramedPanel {
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 4, 2, 4)));
vert.add(horiz);
add(vert);
}
protected void addColumnMappingData() {
}
}