001 /**
002 * Copyright 2010 The Kuali Foundation Licensed under the
003 * Educational Community License, Version 2.0 (the "License"); you may
004 * not use this file except in compliance with the License. You may
005 * obtain a copy of the License at
006 *
007 * http://www.osedu.org/licenses/ECL-2.0
008 *
009 * Unless required by applicable law or agreed to in writing,
010 * software distributed under the License is distributed on an "AS IS"
011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012 * or implied. See the License for the specific language governing
013 * permissions and limitations under the License.
014 */
015
016 package org.kuali.student.common.ui.client.widgets.search;
017
018 import java.util.List;
019
020 import org.kuali.student.common.ui.client.configurable.mvc.SectionTitle;
021 import org.kuali.student.common.ui.client.mvc.Callback;
022 import org.kuali.student.common.ui.client.widgets.KSLightBox;
023 import org.kuali.student.common.ui.client.widgets.buttongroups.ButtonEnumerations;
024 import org.kuali.student.common.ui.client.widgets.buttongroups.ButtonEnumerations.ButtonEnum;
025 import org.kuali.student.common.ui.client.widgets.field.layout.button.ActionCancelGroup;
026 import org.kuali.student.common.ui.client.widgets.field.layout.button.ButtonGroup;
027 import org.kuali.student.common.ui.client.widgets.layout.VerticalFlowPanel;
028 import org.kuali.student.r2.core.search.dto.SearchRequestInfo;
029
030 public class AdvancedSearchWindow {
031
032 private VerticalFlowPanel layout = new VerticalFlowPanel();
033 private KSLightBox dialog;
034 private SearchPanel searchPanel;
035
036 private ActionCancelGroup actionCancelButtons = new ActionCancelGroup(ButtonEnumerations.SearchCancelEnum.SEARCH, ButtonEnumerations.SearchCancelEnum.CANCEL);
037
038 public List<SelectedResults> getSelectedValues() {
039 return searchPanel.getSelectedValues();
040 }
041
042 public SearchRequestInfo getSearchRequest() {
043 return searchPanel.getSearchRequest();
044 }
045
046 public String getSelectedLookupName() {
047 return searchPanel.getSelectedLookupName();
048 }
049
050 public AdvancedSearchWindow(String title, SearchPanel panel){
051
052 actionCancelButtons.addStyleName("KS-Advanced-Search-Buttons");
053 addCancelCompleteCallback(null);
054 searchPanel = panel;
055 searchPanel.setActionCancelButtonGroup(actionCancelButtons);
056 searchPanel.setupButtons();
057
058 //dialog = new KSLightBox(title);
059 dialog = new KSLightBox();
060 layout.addStyleName("KS-Advanced-Search-Window");
061 SectionTitle sectionTitle = SectionTitle.generateH2Title(title);
062 dialog.setNonCaptionHeader(sectionTitle);
063 layout.add(panel);
064 layout.add(actionCancelButtons);
065 dialog.setMaxHeight(620);
066 ButtonGroup buttons = panel.getButtons();
067 buttons.removeFromParent();
068 dialog.addButtonGroup(buttons);
069 }
070
071 public void show(){
072 searchPanel.setupSearch();
073 dialog.setWidget(layout);
074 dialog.setMaxHeight(600);
075 dialog.show();
076 }
077
078 public void hide(){
079 dialog.hide();
080 }
081
082 public void addCancelCompleteCallback(final Callback<Boolean> callback){
083 //actionCompletedCallbacks.add(callback);
084 actionCancelButtons.addCallback(new Callback<ButtonEnumerations.ButtonEnum>(){
085 @Override
086 public void exec(ButtonEnum result) {
087 if (result == ButtonEnumerations.SearchCancelEnum.CANCEL) {
088 if (callback != null) {
089 callback.exec(true);
090 }
091 dialog.hide();
092 }
093 }
094 });
095 }
096
097 public void addActionCompleteCallback(Callback<Boolean> callback){
098 searchPanel.addActionCompleteCallback(callback);
099 }
100 }