View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
14   */
15  
16  package org.kuali.student.common.ui.client.widgets;
17  
18  import org.kuali.student.common.ui.client.mvc.Callback;
19  import org.kuali.student.common.ui.client.mvc.Controller;
20  
21  import com.google.gwt.event.dom.client.ClickEvent;
22  import com.google.gwt.event.dom.client.ClickHandler;
23  import com.google.gwt.event.dom.client.KeyDownEvent;
24  import com.google.gwt.event.dom.client.KeyDownHandler;
25  import com.google.gwt.user.client.Window;
26  
27  public abstract class NavigationHandler implements ClickHandler, KeyDownHandler {
28  	private final String url;
29  	 private final Controller controller;
30  	 private final String navigationKey;
31  	 private final Enum<?> navEnum;
32  	 
33  	 public NavigationHandler(String url) {
34  	  this.url = url;
35  	  this.controller = null;
36  	  this.navigationKey = null;
37  	  this.navEnum = null;
38  	 }
39  	 
40  	 public NavigationHandler(Controller controller, String navigationKey) {
41  	  this.url = null;
42  	  this.controller = controller;
43  	  this.navigationKey = navigationKey;
44  	  this.navEnum = null;
45  	 }
46  	 
47  	 public NavigationHandler(Controller controller, Enum<?> navigationEnum) {
48  		  this.url = null;
49  		  this.controller = controller;
50  		  this.navigationKey = null;
51  		  this.navEnum = navigationEnum;
52  	 }
53  	 
54  	 public void onClick(ClickEvent event) {
55  		 doNavigate();
56  	 }
57  
58  	 public void onKeyDown(KeyDownEvent event) {
59  		 doNavigate();
60  	 }
61  	 
62  	 protected void doNavigate() {
63  		 beforeNavigate(new Callback<Boolean>() {
64  
65  		   @Override
66  		   	public void exec(Boolean result) {
67  			    if (result) {
68  				     if (url != null) {
69  				    	 Window.Location.assign(url);
70  				     }
71  				}
72  			}
73  		   
74  		 });
75  	 }
76  	 
77  	 
78  		 
79  	 public String getUrl() {
80  		return url;
81  	}
82  
83  	public Controller getController() {
84  		return controller;
85  	}
86  
87  	public String getNavigationKey() {
88  		return navigationKey;
89  	}
90  
91  	public Enum<?> getNavEnum() {
92  		return navEnum;
93  	}
94  
95  	public abstract void beforeNavigate(Callback<Boolean> callback);
96  }