Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java @ 9237:972e10522ed6
salix.supraregional ui
author | gernotbelger |
---|---|
date | Tue, 10 Jul 2018 11:24:12 +0200 |
parents | 34dc0163ad2d |
children | c08d5cfa4981 |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Fri Jul 06 17:56:18 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Tue Jul 10 11:24:12 2018 +0200 @@ -9,18 +9,9 @@ package org.dive4elements.river.client.client.ui; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.FLYSConstants; -import org.dive4elements.river.client.client.event.FilterHandler; -import org.dive4elements.river.client.client.event.RangeFilterEvent; -import org.dive4elements.river.client.client.event.StringFilterEvent; -import org.dive4elements.river.client.client.ui.range.DistanceInfoDataSource; -import org.dive4elements.river.client.client.ui.range.LocationsTable; -import org.dive4elements.river.client.client.ui.range.RangeTable; -import org.dive4elements.river.client.shared.model.ArtifactDescription; import org.dive4elements.river.client.shared.model.Data; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.DataList; @@ -29,34 +20,22 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.NumberFormat; -import com.smartgwt.client.data.AdvancedCriteria; -import com.smartgwt.client.data.Criteria; -import com.smartgwt.client.data.Criterion; import com.smartgwt.client.data.Record; -import com.smartgwt.client.types.Alignment; -import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; -import com.smartgwt.client.widgets.form.DynamicForm; -import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.form.fields.events.BlurEvent; import com.smartgwt.client.widgets.form.fields.events.BlurHandler; -import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; -import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.events.RecordClickEvent; import com.smartgwt.client.widgets.grid.events.RecordClickHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; -import com.smartgwt.client.widgets.tab.Tab; import com.smartgwt.client.widgets.tab.TabSet; -import com.smartgwt.client.widgets.tab.events.TabSelectedEvent; -import com.smartgwt.client.widgets.tab.events.TabSelectedHandler; /** Panel to allow input of distance for calculation range. */ -public class DistancePanel extends AbstractUIProvider implements BlurHandler, FilterHandler { +public class DistancePanel extends AbstractUIProvider implements BlurHandler { private static final long serialVersionUID = -883142387908664588L; @@ -68,8 +47,8 @@ protected FLYSConstants MSG = GWT.create(FLYSConstants.class); - protected RangeTable distancesTable; - protected LocationsTable locationsTable; + // protected RangeTable distancesTable; + // protected LocationsTable locationsTable; protected DoubleRangePanel distancePanel; @@ -299,11 +278,6 @@ return new DefaultData(field, null, null, new DataItem[] { item }); } - @Override - public void onBlur(final BlurEvent event) { - this.distancePanel.validateForm(); - } - protected void initMinMaxValues(final DataList data) { final Data f = getData(data.getAll(), getLowerField()); final Data t = getData(data.getAll(), getUpperField()); @@ -393,19 +367,10 @@ } protected void initHelperPanel() { - this.distancesTable = new RangeTable(); - this.locationsTable = new LocationsTable(); - final Config config = Config.getInstance(); - final String url = config.getServerUrl(); - final String river = getRiverName(); + final DistancePanelInputHelper helper = new DistancePanelInputHelper(this.MSG, this.helperContainer, this.getRiverName()); - this.distancesTable.setAutoFetchData(true); - this.locationsTable.setAutoFetchData(true); - this.distancesTable.setDataSource(new DistanceInfoDataSource(url, river, "distances")); - this.locationsTable.setDataSource(new DistanceInfoDataSource(url, river, "locations")); - - this.distancesTable.addRecordClickHandler(new RecordClickHandler() { + helper.getDistancesTable().addRecordClickHandler(new RecordClickHandler() { @Override public void onRecordClick(final RecordClickEvent e) { final Record r = e.getRecord(); @@ -423,7 +388,7 @@ } }); - this.locationsTable.addRecordClickHandler(new RecordClickHandler() { + helper.getLocationsTable().addRecordClickHandler(new RecordClickHandler() { @Override public void onRecordClick(final RecordClickEvent e) { final Record r = e.getRecord(); @@ -447,151 +412,11 @@ } }); - this.tabs = new TabSet(); - this.tabs.setWidth100(); - this.tabs.setHeight100(); - - final Tab locations = new Tab(this.MSG.locations()); - final Tab distances = new Tab(this.MSG.distance()); - - locations.setPane(this.locationsTable); - distances.setPane(this.distancesTable); - - this.tabs.addTab(locations, 0); - this.tabs.addTab(distances, 1); - - this.filterResultCount = new StaticTextItem(this.MSG.resultCount()); - this.filterResultCount.setTitleAlign(Alignment.LEFT); - this.filterResultCount.setTitleStyle("color: #000"); - - this.filterDescription = new TableFilter(); - this.filterDescription.setHeight("30px"); - this.filterDescription.addFilterHandler(this); - - this.filterRange = new RangeTableFilter(); - this.filterRange.setHeight("30px"); - this.filterRange.addFilterHandler(this); - this.filterRange.setVisible(false); - - final SelectItem filterCriteria = new SelectItem(); - filterCriteria.setShowTitle(false); - filterCriteria.setWidth(100); - filterCriteria.addChangedHandler(new ChangedHandler() { - @Override - public void onChanged(final ChangedEvent e) { - if (e.getValue().toString().equals("range")) { - DistancePanel.this.filterRange.setVisible(true); - DistancePanel.this.filterDescription.setVisible(false); - DistancePanel.this.filterDescription.clear(); - } else { - DistancePanel.this.filterRange.setVisible(false); - DistancePanel.this.filterRange.clear(); - DistancePanel.this.filterDescription.setVisible(true); - } - } - }); - - final LinkedHashMap<String, String> filterMap = new LinkedHashMap<String, String>(); - filterMap.put("description", this.MSG.description()); - filterMap.put("range", this.MSG.range()); - filterCriteria.setValueMap(filterMap); - filterCriteria.setValue("description"); - - final DynamicForm form = new DynamicForm(); - form.setFields(filterCriteria); - - final DynamicForm form2 = new DynamicForm(); - form2.setFields(this.filterResultCount); - - final HLayout filterLayout = new HLayout(); - filterLayout.addMember(form); - filterLayout.addMember(this.filterDescription); - filterLayout.addMember(this.filterRange); - filterLayout.setHeight(30); - this.tabs.addTabSelectedHandler(new TabSelectedHandler() { - @Override - public void onTabSelected(final TabSelectedEvent evt) { - DistancePanel.this.filterDescription.clear(); - DistancePanel.this.filterRange.clear(); - DistancePanel.this.filterResultCount.setValue(""); - - final Canvas c = evt.getTabPane(); - if (c instanceof ListGrid) { - DistancePanel.this.currentFiltered = (ListGrid) c; - } - } - }); - - this.helperContainer.addMember(this.tabs); - this.helperContainer.addMember(filterLayout); - this.helperContainer.addMember(form2); } @Override - public void onFilterCriteriaChanged(final StringFilterEvent event) { - final String search = event.getFilter(); - - if (search != null && search.length() > 0) { - final Criteria c = new Criteria("description", search); - this.locationsTable.filterData(c); - this.distancesTable.filterData(c); - this.filterResultCount.setValue(this.currentFiltered.getRecords().length); - } else { - this.locationsTable.clearCriteria(); - this.distancesTable.clearCriteria(); - this.filterResultCount.setValue(""); - } - } - - @Override - public void onFilterCriteriaChanged(final RangeFilterEvent event) { - final Float from = event.getFrom() - 0.001f; - final Float to = event.getTo() + 0.001f; - - Criterion combinedFilter = null; - Criterion locationFilter = null; - - if (from.equals(Float.NaN) && to.equals(Float.NaN)) { - this.locationsTable.clearCriteria(); - this.distancesTable.clearCriteria(); - this.filterResultCount.setValue(""); - return; - } - - if (from.equals(Float.NaN)) { - combinedFilter = new Criterion("to", OperatorId.LESS_OR_EQUAL, to); - - locationFilter = new Criterion("from", OperatorId.LESS_OR_EQUAL, to); - - this.locationsTable.filterData(locationFilter); - this.distancesTable.filterData(combinedFilter); - this.filterResultCount.setValue(this.currentFiltered.getRecords().length); - return; - } - - if (to.equals(Float.NaN)) { - combinedFilter = new Criterion("from", OperatorId.GREATER_OR_EQUAL, from); - } else { - final AdvancedCriteria c1 = new AdvancedCriteria(OperatorId.AND, - new Criterion[] { new Criterion("from", OperatorId.GREATER_OR_EQUAL, from), new Criterion("from", OperatorId.LESS_OR_EQUAL, to) }); - - final AdvancedCriteria c2 = new AdvancedCriteria(OperatorId.AND, - new Criterion[] { new Criterion("to", OperatorId.GREATER_OR_EQUAL, from), new Criterion("to", OperatorId.LESS_OR_EQUAL, to) }); - - final AdvancedCriteria c3 = new AdvancedCriteria(OperatorId.AND, - new Criterion[] { new Criterion("from", OperatorId.LESS_OR_EQUAL, to), new Criterion("to", OperatorId.GREATER_OR_EQUAL, from) }); - - combinedFilter = new AdvancedCriteria(OperatorId.OR, new Criterion[] { c1, c2, c3 }); - } - this.locationsTable.filterData(combinedFilter); - this.distancesTable.filterData(combinedFilter); - this.filterResultCount.setValue(this.currentFiltered.getRecords().length); - - } - - protected String getRiverName() { - final ArtifactDescription adescr = this.artifact.getArtifactDescription(); - return adescr.getRiver(); + public void onBlur(final BlurEvent event) { + this.distancePanel.validateForm(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :