# HG changeset patch # User Ingo Weinzierl # Date 1302536323 0 # Node ID 35094660f91a280ec7961aaddc1fde1ef5913a2c # Parent 7523faf567e59d9172d92dfc515ee6bf34904a4e Implemented a context menu for the project list. flys-client/trunk@1663 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 7523faf567e5 -r 35094660f91a flys-client/ChangeLog --- a/flys-client/ChangeLog Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/ChangeLog Mon Apr 11 15:38:43 2011 +0000 @@ -1,3 +1,15 @@ +2011-04-11 Ingo Weinzierl + + * 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.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants.java: + Added strings that are used in the context menu of the project list. + + * src/main/java/de/intevation/flys/client/client/ui/ProjectList.java: + A right mouse click on a project opens a context menu with the options + to open / delete a project. + 2011-04-11 Ingo Weinzierl * src/main/java/de/intevation/flys/client/server/DistanceInfoServiceImpl.java, diff -r 7523faf567e5 -r 35094660f91a 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 Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Mon Apr 11 15:38:43 2011 +0000 @@ -18,6 +18,10 @@ String projects(); + String open_project(); + + String delete_project(); + String manage_projects(); String logout(); diff -r 7523faf567e5 -r 35094660f91a 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 Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Mon Apr 11 15:38:43 2011 +0000 @@ -4,6 +4,8 @@ guest = guest logout = Logout projects = Calculations +open_project = Open Project +delete_project = Delete Project manage_projects = Manage Projects switch_language = German info = Info diff -r 7523faf567e5 -r 35094660f91a 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 Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Mon Apr 11 15:38:43 2011 +0000 @@ -4,6 +4,8 @@ guest = Gast logout = Abmelden projects = Projekte +open_project = Projekt \u00d6ffnen +delete_project = Projekt l\u00f6schen manage_projects = Projekte verwalten switch_language = Englisch info = Info diff -r 7523faf567e5 -r 35094660f91a 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 Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Mon Apr 11 15:38:43 2011 +0000 @@ -4,6 +4,8 @@ guest = guest logout = Logout projects = Calculations +open_project = Open Project +delete_project = Delete Project manage_projects = Manage Projects switch_language = German info = Info diff -r 7523faf567e5 -r 35094660f91a 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 Mon Apr 11 14:32:36 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ProjectList.java Mon Apr 11 15:38:43 2011 +0000 @@ -3,12 +3,19 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; 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.RowContextClickEvent; +import com.smartgwt.client.widgets.grid.events.RowContextClickHandler; import com.smartgwt.client.widgets.layout.VLayout; +import com.smartgwt.client.widgets.menu.Menu; +import com.smartgwt.client.widgets.menu.MenuItem; +import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent; +import com.smartgwt.client.widgets.menu.events.ClickHandler; import com.smartgwt.client.types.VerticalAlignment; import de.intevation.flys.client.shared.model.Collection; @@ -79,6 +86,50 @@ name.setWidth(195); grid.setFields(date, name); + + grid.addRowContextClickHandler(new RowContextClickHandler() { + public void onRowContextClick(RowContextClickEvent event) { + CollectionRecord record = (CollectionRecord) event.getRecord(); + + Menu menu = createContextMenu(record); + grid.setContextMenu(menu); + menu.showContextMenu(); + + event.cancel(); + } + }); + } + + + /** + * Creates a new context menu that interacts with a CollectionRecord. + * + * @param record The selected record. + * + * @return the context menu with operations that interact with + * record. + */ + protected Menu createContextMenu(final CollectionRecord record) { + Menu menu = new Menu(); + + MenuItem open = new MenuItem(messages.open_project()); + open.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent evt) { + SC.say("Open project: " + record.getName()); + } + }); + + MenuItem del = new MenuItem(messages.delete_project()); + del.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent evt) { + SC.warn("Removing projects is not implemented."); + } + }); + + menu.addItem(open); + menu.addItem(del); + + return menu; }