Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java @ 805:f43d06d6a4a2
Refactored code of theme panel and added a MapThemePanel.
flys-client/trunk@2366 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 20 Jul 2011 07:52:19 +0000 |
parents | 374712890b94 |
children | 67c678903280 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java Tue Jul 19 16:32:52 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java Wed Jul 20 07:52:19 2011 +0000 @@ -1,81 +1,34 @@ package de.intevation.flys.client.client.ui.chart; -import java.util.ArrayList; -import java.util.List; - import com.google.gwt.core.client.GWT; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.types.ListGridFieldType; -import com.smartgwt.client.util.SC; -import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.grid.events.EditCompleteEvent; -import com.smartgwt.client.widgets.grid.events.EditCompleteHandler; -import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; -import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Collection; -import de.intevation.flys.client.shared.model.FacetRecord; -import de.intevation.flys.client.shared.model.OutputMode; import de.intevation.flys.client.shared.model.Theme; -import de.intevation.flys.client.shared.model.ThemeList; +import de.intevation.flys.client.shared.model.OutputMode; -import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.FLYSConstants; -import de.intevation.flys.client.client.event.HasOutputParameterChangeHandlers; -import de.intevation.flys.client.client.event.OnMoveEvent; -import de.intevation.flys.client.client.event.OnMoveHandler; -import de.intevation.flys.client.client.event.OutputParameterChangeEvent; -import de.intevation.flys.client.client.event.OutputParameterChangeHandler; -import de.intevation.flys.client.client.services.CollectionAttributeService; -import de.intevation.flys.client.client.services.CollectionAttributeServiceAsync; +import de.intevation.flys.client.client.ui.ThemePanel; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ -public class ChartThemePanel -extends Canvas -implements EditCompleteHandler, OnMoveHandler, - HasOutputParameterChangeHandlers -{ +public class ChartThemePanel extends ThemePanel { + /** The interface that provides i18n messages. */ private FLYSConstants MSG = GWT.create(FLYSConstants.class); - /** The service that is used to modify collection attributes.*/ - protected CollectionAttributeServiceAsync updater = - GWT.create(CollectionAttributeService.class); - - public static final String GRID_FIELD_ACTIVE = "active"; public static final String GRID_FIELD_NAME = "name"; - protected Collection collection; - - protected OutputMode mode; - - protected List<OutputParameterChangeHandler> outHandlers; - - protected ListGrid list; - - protected ChartOutputTab chartOut; - - protected ThemeNavigationPanel navigation; - - - public ChartThemePanel(Collection collection, OutputMode mode) { - this.collection = collection; - this.mode = mode; - this.outHandlers = new ArrayList<OutputParameterChangeHandler>(); - this.chartOut = chartOut; - this.list = new ListGrid(); - this.navigation = new ThemeNavigationPanel(); - this.navigation.addOnMoveHandler(this); + super(collection, mode); initGrid(); initLayout(); @@ -128,260 +81,9 @@ } - /** - * Replace the current collection with a new one. <b>NOTE: this operation - * triggers updateGrid() which modifies the themes in the grid.</b> - * - * @param collection The new collection object. - */ - protected void setCollection(Collection collection) { - this.collection = collection; - - updateGrid(); - } - - - /** - * Registers a new OutputParameterChangeHandler. - * - * @param h The new handler. - */ - public void addOutputParameterChangeHandler(OutputParameterChangeHandler h){ - if (h != null) { - outHandlers.add(h); - } - } - - - /** - * Returns the ThemeList of the current collection and output mode. - * - * @return the current ThemeList. - */ - public ThemeList getThemeList() { - return collection.getThemeList(mode.getName()); - } - - - /** - * A method that removes all records from theme grid. - */ - protected void clearGrid() { - ListGridRecord[] records = list.getRecords(); - - if (records == null || records.length == 0) { - return; - } - - for (ListGridRecord record: records) { - list.removeData(record); - } - } - - - /** - * This method is used to clear the current theme grid and add new updated - * data. - */ - protected void updateGrid() { - GWT.log("ChartThemePanel.updateGrid"); - - clearGrid(); - - ThemeList themeList = getThemeList(); - - if (themeList == null) { - GWT.log("ERROR: No theme list."); - return; - } - - int count = themeList.getThemeCount(); - - for (int i = 1; i <= count; i++) { - Theme theme = themeList.getThemeAt(i); - - if (theme == null) { - continue; - } - - list.addData(new FacetRecord(theme)); - } - - fireOutputParameterChanged(); - } - - - /** - * Called when the attribution of a chart changed. It informs the registered - * handlers about the changes. - */ - protected void fireOutputParameterChanged() { - OutputParameterChangeEvent evt = new OutputParameterChangeEvent(); - - for (OutputParameterChangeHandler handler: outHandlers) { - handler.onOutputParameterChanged(evt); - } - } - - - /** - * This method is called after a cell in the theme grid has been modified. - * - * @param event The event that stores information about the modified record. - */ - public void onEditComplete(EditCompleteEvent event) { - GWT.log("Edited record."); - - int row = event.getRowNum(); - FacetRecord rec = (FacetRecord) list.getRecord(row); - - Theme theme = rec.getTheme(); - theme.setActive(rec.getActive() ? 1 : 0); - - updateCollection(); - } - - - /** - * This method triggers the CollectionAttributeService. Based on the current - * collectin settings, the attribute of the collection is modified or not. - * But in every case, we will get a new collection object - which might be - * the same as the current one. - */ - public void updateCollection() { - final Config config = Config.getInstance(); - final String url = config.getServerUrl(); - final String loc = config.getLocale(); - - GWT.log("ChartThemePanel.updateCollection via RPC now"); - - // don't forget to enable the panel after the request has finished! - disable(); - - updater.update(collection, url, loc, new AsyncCallback<Collection>() { - public void onFailure(Throwable caught) { - GWT.log("Could not update collection attributes."); - SC.warn(MSG.getString(caught.getMessage())); - - enable(); - } - - - public void onSuccess(Collection collection) { - setCollection(collection); - - enable(); - } - }); - } - - - public void onMove(OnMoveEvent event) { - int type = event.getType(); - - GWT.log("ChartThemePanel.onMove: " + type); - - ListGridRecord[] records = list.getSelection(); - - if (records == null || records.length == 0) { - GWT.log("ChartThemePanel.onMove: No records selected."); - return; - } - - switch (type) { - case 0: moveRecordsTop(records); break; - case 1: moveRecordsUp(records); break; - case 2: moveRecordsDown(records); break; - case 3: moveRecordsBottom(records); break; - } - - updateCollection(); - } - - - /** - * Moves the selected grid records (themes) to the top of the grid. - * - * @param records The selected themes in the list. Null not permitted. - */ - protected void moveRecordsTop(ListGridRecord[] records) { - ThemeList themeList = getThemeList(); - - int idx = 1; - - for (ListGridRecord record: records) { - Theme theme = ((FacetRecord) record).getTheme(); - themeList.setThemePosition(theme, idx++); - } - - updateGrid(); - } - - - /** - * Moves the selected grid records (themes) one step up. - * - * @param records The selected themes in the list. Null not permitted. - */ - protected void moveRecordsUp(ListGridRecord[] records) { - ThemeList themeList = getThemeList(); - - int[] newPos = new int[records.length]; - - for (int i = 0; i < records.length ; i++) { - Theme theme = ((FacetRecord) records[i]).getTheme(); - newPos[i] = theme.getPosition() - 1; - } - - for (int i = 0; i < records.length ; i++) { - Theme theme = ((FacetRecord) records[i]).getTheme(); - themeList.setThemePosition(theme, newPos[i]); - } - - updateGrid(); - } - - - /** - * Moves the selected grid records (themes) one step down. - * - * @param records The selected themes in the list. Null not permitted. - */ - protected void moveRecordsDown(ListGridRecord[] records) { - ThemeList themeList = getThemeList(); - - int[] newPos = new int[records.length]; - - for (int i = records.length-1; i >= 0; i--) { - Theme theme = ((FacetRecord) records[i]).getTheme(); - newPos[i] = theme.getPosition()+1; - } - - for (int i = records.length-1; i >= 0; i--) { - Theme theme = ((FacetRecord) records[i]).getTheme(); - themeList.setThemePosition(theme, newPos[i]); - } - - updateGrid(); - } - - - /** - * Moves the selected grid records (themes) to the bottom of the grid. - * - * @param records The selected themes in the list. Null not permitted. - */ - protected void moveRecordsBottom(ListGridRecord[] records) { - ThemeList themeList = getThemeList(); - - int idx = themeList.getThemeCount(); - - for (int i = records.length-1; i >= 0; i--) { - Theme theme = ((FacetRecord) records[i]).getTheme(); - themeList.setThemePosition(theme, idx--); - } - - updateGrid(); + @Override + public void activateTheme(Theme theme, boolean active) { + theme.setActive(active ? 1 : 0); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :