# HG changeset patch # User Ingo Weinzierl # Date 1308737697 0 # Node ID 14e5e51a7de43aa8bc2b98dacbf08622d9b443e4 # Parent 3f094045d5126d9a6b2299f438a4a1e978629639 Improved the project list - listeners are notified after setting the name and ttl of a project. flys-client/trunk@2199 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/ChangeLog --- a/flys-client/ChangeLog Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/ChangeLog Wed Jun 22 10:14:57 2011 +0000 @@ -1,3 +1,22 @@ +2011-06-22 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/shared/model/DefaultCollection.java, + src/main/java/de/intevation/flys/client/shared/model/Collection.java: + There are setter methods for 'name' and 'ttl' now. The project list + requires this to set those attribute to a new value. + + * src/main/java/de/intevation/flys/client/client/FLYSConstants.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants.java: + Added strings for the project list's context menu item "rename project". + + * src/main/java/de/intevation/flys/client/client/ui/ProjectList.java: + Added a context menu item to rename the selected project and listeners + to trigger setting 'name' and 'ttl' to a new value. + + TODO: We still need to write RPC services to update those values! + 2011-06-22 Ingo Weinzierl * src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties: diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Wed Jun 22 10:14:57 2011 +0000 @@ -22,6 +22,8 @@ String delete_project(); + String rename_project(); + String manage_projects(); String logout(); diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Wed Jun 22 10:14:57 2011 +0000 @@ -6,6 +6,7 @@ projects = Projects open_project = Open Project delete_project = Delete Project +rename_project = Rename Project manage_projects = Manage Projects switch_language = German info = Info diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Wed Jun 22 10:14:57 2011 +0000 @@ -4,8 +4,9 @@ guest = Gast logout = Abmelden projects = Projekte -open_project = Projekt \u00d6ffnen +open_project = Projekt \u00f6ffnen delete_project = Projekt l\u00f6schen +rename_project = Projekt umbenennen manage_projects = Projekte verwalten switch_language = Englisch info = Info diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Wed Jun 22 10:14:57 2011 +0000 @@ -6,6 +6,7 @@ projects = Projects open_project = Open Project delete_project = Delete Project +rename_project = Rename Project manage_projects = Manage Projects switch_language = German info = Info diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/client/ui/ProjectList.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ProjectList.java Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ProjectList.java Wed Jun 22 10:14:57 2011 +0000 @@ -1,6 +1,7 @@ package de.intevation.flys.client.client.ui; import java.util.Date; +import java.util.Map; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.DateTimeFormat; @@ -8,6 +9,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.types.Alignment; +import com.smartgwt.client.types.ListGridEditEvent; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.SortDirection; import com.smartgwt.client.util.SC; @@ -17,8 +19,12 @@ 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.grid.events.CellClickEvent; +import com.smartgwt.client.widgets.grid.events.CellClickHandler; import com.smartgwt.client.widgets.grid.events.CellDoubleClickEvent; import com.smartgwt.client.widgets.grid.events.CellDoubleClickHandler; +import com.smartgwt.client.widgets.grid.events.EditCompleteEvent; +import com.smartgwt.client.widgets.grid.events.EditCompleteHandler; import com.smartgwt.client.widgets.grid.events.RowContextClickEvent; import com.smartgwt.client.widgets.grid.events.RowContextClickHandler; import com.smartgwt.client.widgets.layout.VLayout; @@ -48,7 +54,7 @@ */ public class ProjectList extends VLayout -implements CollectionChangeHandler +implements CollectionChangeHandler, EditCompleteHandler { /** Interval to refresh the user's projects.*/ public static final int UPDATE_INTERVAL = 30000; @@ -87,6 +93,8 @@ init(); initTimer(); + grid.addEditCompleteHandler(this); + updateUserCollections(); } @@ -102,6 +110,9 @@ grid.setHeight100(); grid.setSortDirection(SortDirection.DESCENDING); grid.setSortField(0); + grid.setCanEdit(false); + grid.setEditByCell(true); + grid.setEditEvent(ListGridEditEvent.NONE); ListGridField date = buildDateField(); ListGridField name = buildNameField(); @@ -109,6 +120,22 @@ grid.setFields(date, name, fav); + // add a handler to set / unset the favorite state of a project + grid.addCellClickHandler(new CellClickHandler() { + public void onCellClick(CellClickEvent event) { + if (event.getColNum() != 2) { + return; + } + + CollectionRecord r = (CollectionRecord) event.getRecord(); + Collection c = r.getCollection(); + + c.setTTL(c.getTTL() == 0 ? -1 : 0); + updateCollectionTTL(c); + } + }); + + // add a handler to open a project grid.addCellDoubleClickHandler(new CellDoubleClickHandler() { public void onCellDoubleClick(CellDoubleClickEvent e) { CollectionRecord record = (CollectionRecord) e.getRecord(); @@ -119,6 +146,7 @@ } }); + // add a handler to open a context menu grid.addRowContextClickHandler(new RowContextClickHandler() { public void onRowContextClick(RowContextClickEvent event) { CollectionRecord record = (CollectionRecord) event.getRecord(); @@ -186,8 +214,17 @@ } }); + MenuItem rename = new MenuItem(messages.rename_project()); + rename.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent evt) { + int row = grid.getRecordIndex(record); + grid.startEditing(row, 1, false); + } + }); + menu.addItem(open); menu.addItem(del); + menu.addItem(rename); return menu; } @@ -233,6 +270,61 @@ } + public void onEditComplete(EditCompleteEvent event) { + if (event.getColNum() != 1) { + return; + } + + int row = event.getRowNum(); + + CollectionRecord r = (CollectionRecord) grid.getRecord(row); + Collection c = r.getCollection(); + + Map newValues = event.getNewValues(); + String name = (String) newValues.get("name"); + + c.setName(name); + + updateCollectionName(c); + } + + + /** + * Set the name of the collection c to a new value. If the update + * process succeeded, the project list is refreshed. + * + * @param c The Collection with a new name. + */ + protected void updateCollectionName(Collection c) { + if (c == null) { + return; + } + + GWT.log("Update Collection name: " + c.identifier()); + GWT.log("=> New name = " + c.getName()); + + // TODO IMPLEMENT ME + } + + + /** + * Set the ttl of the collection c to a new value. If the update + * process succeeded, the project list is refreshed. + * + * @param c The Collection with a new ttl. + */ + protected void updateCollectionTTL(Collection c) { + if (c == null) { + return; + } + + GWT.log("Update Collection TTL: " + c.identifier()); + GWT.log("=> New ttl = " + c.getTTL()); + + // TODO IMPLEMENT ME + } + + protected void updateUserCollections() { GWT.log("==> ProjectList updates user collections!"); @@ -290,6 +382,7 @@ protected ListGridField buildDateField() { ListGridField date = new ListGridField("creationTime", "creationTime"); date.setType(ListGridFieldType.DATE); + date.setCanEdit(false); date.setCellFormatter(new CellFormatter() { public String format(Object value, ListGridRecord rec, int r, int c) { @@ -325,12 +418,12 @@ String n = (String) value; int len = n.length(); - if (len < 30) { + if (len < 26) { return n; } - int sec = len - 15; - return n.substring(0, 14) + "..." + n.substring(sec, len-1); + int sec = len - 13; + return n.substring(0, 12) + "..." + n.substring(sec, len-1); } }); @@ -349,6 +442,7 @@ fav.setImageURLSuffix(".png"); fav.setWidth(30); fav.setAlign(Alignment.RIGHT); + fav.setCanEdit(false); return fav; } diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/shared/model/Collection.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/Collection.java Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/Collection.java Wed Jun 22 10:14:57 2011 +0000 @@ -16,12 +16,16 @@ public String getName(); + public void setName(String name); + public Date getCreationTime(); public Date getLastAccess(); public long getTTL(); + public void setTTL(long ttl); + public void addItem(CollectionItem item); public int getItemLength(); diff -r 3f094045d512 -r 14e5e51a7de4 flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultCollection.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultCollection.java Wed Jun 22 08:06:19 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultCollection.java Wed Jun 22 10:14:57 2011 +0000 @@ -110,11 +110,21 @@ } + public void setTTL(long ttl) { + this.ttl = ttl; + } + + public String getName() { return name; } + public void setName(String name) { + this.name = name; + } + + public void addItem(CollectionItem item) { if (item != null) { items.add(item);