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 }