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.mvc;
17  
18  import java.util.List;
19  
20  import com.google.gwt.user.client.ui.Composite;
21  import com.google.gwt.user.client.ui.Widget;
22  
23  /**
24   * Abstract class implementing the View interface, which has a handle to it's controller.
25   * 
26   * @author Kuali Student Team
27   */
28  public abstract class ViewComposite extends Composite implements View {
29      private final Controller controller;
30      private final String name;
31      private final Enum<?> viewType;
32  
33      /**
34       * Constructs a new view with an associated controller and view name
35       * 
36       * @param controller
37       *            the controller associated with the view
38       * @param name
39       *            the view name
40       */
41      public ViewComposite(Controller controller, String name, Enum<?> viewType) {
42          this.controller = controller;
43          this.name = name;
44          this.viewType = viewType;
45      }
46  
47      /**
48       * Called by controller before the view is displayed to allow lazy initialization or any other preparatory work to be
49       * done.
50       */
51      @Override
52      public void beforeShow(final Callback<Boolean> onReadyCallback) {
53      	// do nothing
54      	onReadyCallback.exec(true);
55      }
56  
57      /**
58       * Called by the controller before the view is hidden to allow the view to perform cleanup or request confirmation from
59       * the user, etc. Can cancel the action by returning false.
60       * 
61       * @return true if the view can be hidden, or false to cancel the action.
62       */
63      @Override
64      public boolean beforeHide() {
65          return true;
66      }
67  
68      /**
69       * Returns the controller associated with the view
70       * 
71       * @see org.kuali.student.common.ui.client.mvc.View#getController()
72       */
73      @Override
74      public Controller getController() {
75          return controller;
76      }
77  
78      /**
79       * Returns the view's name
80       * 
81       * @see org.kuali.student.common.ui.client.mvc.View#getName()
82       */
83      @Override
84      public String getName() {
85          return name;
86      }
87  
88      /**
89       * Used to clear view - does nothing currently
90       * 
91       * @see org.kuali.student.common.ui.client.mvc.View#clear()
92       */
93      public void clear(){
94          //do nothing
95      }
96      
97      
98      /**
99       * Update the model that is associated with this view. This will normally be
100      * called by the controller.
101      *  
102      * @see org.kuali.student.common.ui.client.mvc.View#updateModel()
103      */
104     public void updateModel(){        
105     }
106     
107     @Override
108 	public String collectHistory(String historyStack) {
109 		return historyStack;
110 	}
111 
112 	@Override
113 	public void onHistoryEvent(String historyStack) {
114 
115 	}
116 	
117 	@Override
118 	public void collectBreadcrumbNames(List<String> names) {
119 		names.add(this.getName());
120 	}
121 
122 	@Override
123     public Enum<?> getViewEnum() {
124 		return viewType;
125     	
126     };
127     
128     @Override
129     public Widget asWidget() {
130     	// TODO Auto-generated method stub
131     	return this;
132     }
133 }