EditSession.pdf

download EditSession.pdf

of 15

Transcript of EditSession.pdf

  • 8/11/2019 EditSession.pdf

    1/15

    package com.scholarone.s1agxt.client.session.popup;

    import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.data.ModelData;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.BaseObservable;import com.extjs.gxt.ui.client.event.ButtonEvent;import com.extjs.gxt.ui.client.event.ContainerEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.event.MessageBoxEvent;import com.extjs.gxt.ui.client.event.SelectionListener;import com.extjs.gxt.ui.client.event.TabPanelEvent;import com.extjs.gxt.ui.client.event.WindowEvent;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.store.StoreEvent;import com.extjs.gxt.ui.client.widget.Info;import com.extjs.gxt.ui.client.widget.MessageBox;import com.extjs.gxt.ui.client.widget.TabItem;import com.extjs.gxt.ui.client.widget.TabPanel;import com.extjs.gxt.ui.client.widget.Viewport;import com.extjs.gxt.ui.client.widget.Window;import com.extjs.gxt.ui.client.widget.button.Button;import com.extjs.gxt.ui.client.widget.layout.FitLayout;

    import com.google.gwt.user.client.DOM;import com.google.gwt.user.client.Element;import com.google.gwt.user.client.rpc.AsyncCallback;import com.google.gwt.user.client.ui.AbstractImagePrototype;import com.google.gwt.user.client.ui.RootPanel;import com.scholarone.s1agxt.client.S1AMain;import com.scholarone.s1agxt.client.S1AServiceAsync;import com.scholarone.s1agxt.client.common.constants.IConstants;import com.scholarone.s1agxt.client.common.constants.IParameterNames;import com.scholarone.s1agxt.client.common.constants.IResourceNames;import com.scholarone.s1agxt.client.model.ProgramItem;import com.scholarone.s1agxt.client.model.SessionHostItem;import com.scholarone.s1agxt.client.model.SessionItem;

    import com.scholarone.s1agxt.client.model.search.AbstractSummaryItem;import com.scholarone.s1agxt.client.utility.ClientUtility;import com.scholarone.s1agxt.client.utility.DisplayUtility;import com.scholarone.s1agxt.client.utility.event.S1AEvents;

    import java.util.Map;

    /** * @author *

    */public class EditSession extends BaseObservable{

    // Variable declarations for the popup Window w;

    TabPanel tabsMain;

    public TabItem tabItemSessionInfo;

    public TabItem tabItemAddEditHosts;

  • 8/11/2019 EditSession.pdf

    2/15

    public TabItem tabItemAddRemoveAbstracts;

    public EditSession_Tab_SessionInfo sessionInfoTab;

    public EditSession_Tab_Hosts sessionHostsTab = new EditSession_Tab_Hosts();

    public EditSession_Tab_Abstracts sessionAbstractsTab = new EditSession_Tab_Abstracts();

    public SessionItem selectedSessionEventItem;

    Button button_Save = null;

    Button button_Close = null;

    int performActionAfterSave = 0;

    boolean sessionTypeChangedFl = false;

    private String source; // US-000052

    boolean switchInfoTabFl = false;

    boolean switchAbstractsTabFl = false;

    boolean hideWindow = false;

    /** * EditSession constructor * US-000052 *

    * @param source */ public EditSession(String sourceEl) { this.source = sourceEl; this.sessionInfoTab = new EditSession_Tab_SessionInfo(sourceEl);

    } AsyncCallback sessionEditSaveCallback = new AsyncCallback() { public void onSuccess(Object result) { // take the result coming from the server Integer sessionId = (Integer)result; if (sessionId != null) { // Successful save...

    if (selectedSessionEventItem.getSessionId() == null)

    { selectedSessionEventItem.setSessionId(sessionId); sessionInfoTab.refreshSessionInfoFromDB(); // SF-10566 }

    S1AMain.sessionsAndEventsRenderer.sessionsEventsGrid.reloadGrid();

    Info.display("Information", "Successfully Saved");

    // US-000053 s

  • 8/11/2019 EditSession.pdf

    3/15

    StoreEvent event = new StoreEvent(null); event.setModel(selectedSessionEventItem); fireEvent(S1AEvents.SaveSuccess, event); // US-000053 e

    if (performActionAfterSave == IConstants.SESSION_EVENT_TAB_HOSTS.intValue()) { tabItemAddEditHosts.enable(); tabsMain.setSelection(tabItemAddEditHosts);

    performActionAfterSave = 0; }

    if (performActionAfterSave == IConstants.SESSION_EVENT_TAB_ADD_REMOVE_ ABSTRACTS.intValue()) { tabItemAddRemoveAbstracts.enable(); tabsMain.setSelection(tabItemAddRemoveAbstracts);

    performActionAfterSave = 0; }

    if (performActionAfterSave == IConstants.SESSION_EVENT_TAB_SHOW_OWNERS _WINDOW.intValue())

    {

    sessionInfoTab.openSessionOwnersWindow(); performActionAfterSave = 0; }

    sessionTypeChangedFl = false;

    w.setHeading(getWindowHeading()); sessionInfoTab.prepareSessionInfoTabComponents(); // SF_10608 } else { MessageBox.alert("Error", IConstants.STANDARD_GENERIC_ERROR_MESSAGE, null);

    } }

    public void onFailure(Throwable caught) { MessageBox.alert("Error", IConstants.STANDARD_GENERIC_ERROR_MESSAGE, null); } };

    Listener switchTabSaveSessionListener = new Listener() {

    public void handleEvent(MessageBoxEvent ce) { Button btn = ce.getButtonClicked();

    if (IConstants.MESSAGE_BOX_YES_STR.equals(btn.getText())) { sessionTypeChangedFl = false; saveSessionInfo();

    } else

  • 8/11/2019 EditSession.pdf

    4/15

    { onCancelSaveSession(); } }

    };

    /** * Gets the main edit session or event window *

    * @param siIn * @param showTabNo * @return */ public Window getAddEditSessionWindow(SessionItem siIn, int showTabNo) { selectedSessionEventItem = siIn;

    performActionAfterSave = 0;

    w = new Window(); w.setSize(940, 600); w.setPlain(true); w.setModal(true); w.setHeading(getWindowHeading());

    w.setLayout(new FitLayout()); w.setMaximizable(true);

    Viewport viewport = new Viewport(); viewport.setLayout(new FitLayout());

    boolean isReadOnlyFl = DisplayUtility.getIsSessionEventPopupReadOnly();

    tabsMain = new TabPanel(); tabsMain.setMinTabWidth(215);

    tabsMain.setAutoHeight(true); tabsMain.setResizeTabs(true);

    // SF_10582 s tabsMain.addListener(Events.Select, new Listener(){

    public void handleEvent(TabPanelEvent event) { event.getItem().layout(true); } }); // SF_10582 e

    tabItemSessionInfo = new TabItem("Information"); tabItemSessionInfo.addStyleName("pad-text"); tabsMain.add(tabItemSessionInfo);

    tabItemSessionInfo.addListener(Events.Show, new Listener() { public void handleEvent(BaseEvent event) { tabItemSessionInfo.layout(true); } });

    tabItemSessionInfo.addListener(Events.BeforeSelect, new Listener()

  • 8/11/2019 EditSession.pdf

    5/15

  • 8/11/2019 EditSession.pdf

    6/15

  • 8/11/2019 EditSession.pdf

    7/15

    ieldChanged() && tabItemSessionInfo.equals(tabsMain.getSelectedItem())) // SF-15043. check only on switching from // 'Information' tab) { performActionAfterSave = IConstants.SESSION_EVENT_TAB_ADD_REMOVE_ABSTRACTS.intValue();

    String itemName = ClientUtility.getResourceValue(IResourceNames.SESSION).toLowerCase(); if (S1AMain.isSymposiaBuilder) itemName = ClientUtility.getResourceValue(IResourceNames.SYMPOSIA).toLowerCase();

    MessageBox.confirm("Confirm", "The " + itemName + " is not saved. Ok to save it before switching tabs?", switchTabSaveSessionListener); event.setCancelled(true); } else { Map params = ClientUtility.getParamsForService();

    sessionInfoTab.saveFields(params); sessionAbstractsTab.refreshDurationLabel(); } if (!switchAbstractsTabFl && validateHostRolesOnSwitch()) { Listener ignoreErrorListener = new Listener() { public void handleEvent(MessageBoxEvent mbe) { if (IConstants.MESSAGE_BOX_YES_STR.equals(mbe.getButtonClicked().getText())) {

    tabItemAddRemoveAbstracts.enable(); switchAbstractsTabFl = true; switchInfoTabFl = true; hideWindow = true; tabsMain.setSelection(tabItemAddRemoveAbstracts); //switchAbstractsTabFl = false; } else { switchAbstractsTabFl = false; } } };

    String error = ClientUtility.getResourceValue(IResourceNames.HOST) + " Role is not set for one or more assigned " + ClientUtility.getResourceValue(IResourceNames.HOSTS) + ".";

    MessageBox.confirm("Confirm", error + " Do you want to continue?", ignoreErrorListener); event.setCancelled(true); } }

  • 8/11/2019 EditSession.pdf

    8/15

    } }); tabsMain.add(tabItemAddRemoveAbstracts); tabItemAddRemoveAbstracts.addListener(Events.Show, new Listener() { public void handleEvent(BaseEvent event) { tabItemAddRemoveAbstracts.layout(true); } });

    sessionAbstractsTab.addAddRemoveAbstractsTabComponents(tabItemAddRemoveAbstracts); }

    viewport.add(tabsMain); w.add(viewport);

    if (showTabNo == IConstants.SESSION_EVENT_TAB_DETAILS.intValue()) { tabsMain.setSelection(tabItemSessionInfo); } else if (showTabNo == IConstants.SESSION_EVENT_TAB_HOSTS.intValue()) {

    tabsMain.setSelection(tabItemAddEditHosts); } else if (showTabNo == IConstants.SESSION_EVENT_TAB_ADD_REMOVE_ABSTRACTS.intValue()) { tabsMain.setSelection(tabItemAddRemoveAbstracts); sessionAbstractsTab.refreshSearchButton(); }

    button_Save = new Button("Save", new SelectionListener() { public void componentSelected(ButtonEvent ce) {

    saveSessionInfo(); // SF-12186. remove check for max/min number of abstract/host limits } }); button_Save.setIcon(AbstractImagePrototype.create(S1AMain.icons.disk()));

    if (!isReadOnlyFl) w.addButton(button_Save);

    button_Close = new Button("Close", new SelectionListener() { public void componentSelected(ButtonEvent ce) {

    // SF-12186 s. revert session type if it was changed but not saved if (sessionTypeChangedFl) { sessionInfoTab.revertSessionTypeToPreviousValue(); }

    w.hide(); } });

  • 8/11/2019 EditSession.pdf

    9/15

    button_Close.setIcon(AbstractImagePrototype.create(S1AMain.icons.cancel())); w.addButton(button_Close);

    w.addListener(Events.BeforeHide, new Listener() { public void handleEvent(BaseEvent be) { if (!hideWindow && validateHostRolesOnSwitch()) { Listener ignoreErrorListener = new Listener() { public void handleEvent(MessageBoxEvent mbe) { if (IConstants.MESSAGE_BOX_YES_STR.equals(mbe.getButtonClicked().getText())) { hideWindow = true; w.hide(); } else

    { hideWindow = false; }

    } }; String error = ClientUtility.getResourceValue(IResourceNames.HOST) + " Role is not set for one or more assigned " + ClientUtility.getResourceValue(IResourceNames.HOSTS) + ".";

    MessageBox.confirm("Confirm", error + " Do you want to continue?", ignoreErrorListener); be.setCancelled(true); }

    } });

    // // This does a lot for now. Might want to try to do it a different way // It resizes components in the edit session/event popup when the main window

    // is resized. // w.addListener(Events.Resize, new Listener() { public void handleEvent(final WindowEvent event) { boolean isMaximizedFl = event.getWindow().isMaximized();

    // Info tab resizing here...

    sessionInfoTab.lc.setWidth(event.getWidth() - 16); sessionInfoTab.lc.setHeight(event.getHeight() - 100); sessionInfoTab.lc.layout(true);

    // Hosts tab resizing here... sessionHostsTab.cpOuter.setWidth(event.getWidth() - 16); sessionHostsTab.cpOuter.setHeight(event.getHeight() - 100);

    sessionHostsTab.cpAvailableHosts.setWidth(event.getWidth() - 44); sessionHostsTab.cpAvailableHosts.layout(true);

  • 8/11/2019 EditSession.pdf

    10/15

    sessionHostsTab.cpCurrentHosts.setWidth(event.getWidth() - 44);

    sessionHostsTab.cpCurrentHosts.layout(true);

    sessionHostsTab.cpOuter.layout(true);

    // Abstracts tab resizing here (Only sessions have the add/remove abstract tabs)

    if (selectedSessionEventItem.getSessionKindId().equals(IConstants.KIND_SESSION) || selectedSessionEventItem.getSessionKindId().equals(IConstants.KIND_SYMPOSIA)) { sessionAbstractsTab.cpOuter.setWidth(event.getWidth() - 16); sessionAbstractsTab.cpOuter.setHeight(event.getHeight() - 100);

    sessionAbstractsTab.cpSearchAbstracts.setWidth(event.getWidth() - 44); sessionAbstractsTab.cpSearchAbstracts.layout(true);

    sessionAbstractsTab.cpSearchResultsGrid.setWidth(event.getWidth() - 44); sessionAbstractsTab.cpSearchResultsGrid.layout(true);

    sessionAbstractsTab.cpCurrentlyAssignedAbstracts.setWidth(event.getWid

    th() - 44); sessionAbstractsTab.cpCurrentlyAssignedAbstracts.layout(true);

    sessionAbstractsTab.refreshSearchButton(); sessionAbstractsTab.refreshDurationLabel(); }

    tabItemSessionInfo.layout(true);sessionInfoTab.refreshButtons();

    } });

    w.addListener(Events.Hide, new Listener()

    { public void handleEvent(final WindowEvent event) { // Must be bug in EXT GWT. We need to put scrollbars back on the main window... Element e = RootPanel.get().getBodyElement(); DOM.setStyleAttribute(e, "overflow", "auto"); } });

    viewport.addListener(Events.AfterLayout, new Listener() { public void handleEvent(final ContainerEvent event)

    { if (selectedSessionEventItem.getSessionKindId().equals(IConstants.KIND_SESSION)) sessionAbstractsTab.refreshSearchButton(); } }); //SF-9924 Set focus w.setFocusWidget(sessionInfoTab.field_sessionTitle); return w; }

  • 8/11/2019 EditSession.pdf

    11/15

    /**

    * Saves the session info. Called from other methods. */ public void saveSessionInfo() { // SF-11675 s. Check session duration for 0. Integer newDuration = ClientUtility.getIntegerFromString(sessionInfoTab.field_sessionDuration.getRawValue());

    // 0 duration and session or event (not symposia) if (new Integer(0).equals(newDuration) && !IConstants.KIND_SYMPOSIA.equals(selectedSessionEventItem.getSessionKindId())) { String kind = ClientUtility.getResourceValue(IResourceNames.SESSION); if (IConstants.KIND_EVENT.equals(selectedSessionEventItem.getSessionKindId())) kind = ClientUtility.getResourceValue(IResourceNames.EVENT);

    MessageBox.confirm("Comfirm", "You are about to save " + kind+ " with duration set to 0. Are you sure you want to continue?", new L

    istener() { public void handleEvent(MessageBoxEvent be)

    { Button btn = be.getButtonClicked(); if (IConstants.MESSAGE_BOX_YES_STR.equals(btn.getText())) { saveSessionInfoWithCheckedDuration(); } else { onCancelSaveSession(); } } }); }

    else { saveSessionInfoWithCheckedDuration(); } // SF-11675 e }

    /** * Saves Session info. Called after session duration check. * SF-11675 */ protected void saveSessionInfoWithCheckedDuration() {

    final S1AServiceAsync service = (S1AServiceAsync) Registry.get(S1AMain.SERVICE);

    // US-000053 s Integer newDuration = ClientUtility.getIntegerFromString(sessionInfoTab.field_sessionDuration.getRawValue()); if (newDuration == null) newDuration = new Integer(0);

    Integer prevDuration = selectedSessionEventItem.getSessionDuration();

  • 8/11/2019 EditSession.pdf

    12/15

    if (prevDuration == null) prevDuration = new Integer(0);

    boolean isDurationChanged = (!newDuration.equals(prevDuration)); // US-000053 e

    // SF-10692. If the session is already scheduled and its duration is changed,

    // then display a confirmation message box. if (selectedSessionEventItem.getSessionLocationId() != null // is scheduled && isDurationChanged == true // is changed && sessionInfoTab.isDurationEditable() == false) // US-000053 { String sessionEvent = ClientUtility.getResourceValue(IResourceNames.SESSION); if (IConstants.KIND_EVENT.equals(selectedSessionEventItem.getSessionKindId())) sessionEvent = ClientUtility.getResourceValue(IResourceNames.EVENT); else if (IConstants.KIND_SYMPOSIA.equals(selectedSessionEventItem.getSessionKindId())) sessionEvent = ClientUtility.getResourceValue(IResourceNames.SYMPOSIA);

    MessageBox.confirm("Confirm", "Changing the duration will remove the " + sessionEvent + " from the P

    rogram. Are you sure?", new Listener() { public void handleEvent(MessageBoxEvent event) { Button btn = event.getButtonClicked(); if (IConstants.MESSAGE_BOX_YES_STR.equals(btn.getText())) { if (DisplayUtility.isCanScheduleSession( selectedSessionEventItem, S1AMain.userId, IConstants.Y.equals(S1AMain.sessionAdminPermissionFl))) { Map params = ClientUtility.getParamsForService

    (); sessionInfoTab.saveFields(params); service.saveSession(params, selectedSessionEventItem, sessionEditSaveCallback); } else { String sessionEvent = ClientUtility.getResourceValue(IResourceNames.SESSION); if (IConstants.KIND_EVENT.equals(selectedSessionEventItem.getSessionKindId())) sessionEvent = ClientUtility.getResourceValue(IResourceNames.EVENT);

    else if (IConstants.KIND_SYMPOSIA.equals(selectedSessionEventItem.getSessionKindId())) sessionEvent = ClientUtility.getResourceValue(IResourceNames.SYMPOSIA);

    MessageBox.alert("Error", "You are not able to remove the " +sessionEvent + ".", null); onCancelSaveSession(); } }

  • 8/11/2019 EditSession.pdf

    13/15

    else { onCancelSaveSession(); } } }); } else { Map params = ClientUtility.getParamsForService();

    // SF-13925 s. do not save incorrect duration. show warning message instead if (sessionInfoTab.isDurationEditable()) { ProgramItem currentProgramItem = S1AMain.programSchedulerRenderer.getSchedulerGrid().getCurrentProgramItem(); int programInterval = (currentProgramItem.getInterval() != null && currentProgramItem.getInterval() > 0) ? currentProgramItem.getInterval() : 1;

    if (newDuration % programInterval != 0) { MessageBox.alert("Warning", "The session Duration could not be saved.

    The Program Time Interval " + "is currently set to " + programInterval + " minutes and the Duration must be divisible by this value. " + "For example, if your Time Interval is 30 minutes, you cannot save a Session Duration of 35 minutes.", null); return; }

    params.put(IParameterNames.GRID_SCHEDULER_FL, true); } // SF-13925 e

    sessionInfoTab.saveFields(params);

    // US-000053 s if (isDurationChanged == true && selectedSessionEventItem.getSessionLocationId() != null && sessionInfoTab.isDurationEditable() == true) // if the flag is setthen do not save duration to base // because it can has a conflict. { selectedSessionEventItem.setSessionDuration(prevDuration); } // US-000053 e

    service.saveSession(params, selectedSessionEventItem, sessionEditSaveCallback); selectedSessionEventItem.setSessionDuration(newDuration); // US-000053 } }

    /** * Get window heading text * SCRPSE-003.0, SCRPSE-004.0 *

  • 8/11/2019 EditSession.pdf

    14/15

    * @return */ private String getWindowHeading() { String createOrEditStr = "Edit";

    if (DisplayUtility.getIsSessionEventPopupReadOnly()) { createOrEditStr = "View"; } else if (selectedSessionEventItem.getSessionId() == null || selectedSessionEventItem.getSessionId().intValue() == 0) { createOrEditStr = "Create"; }

    if (selectedSessionEventItem.getSessionKindId().equals(IConstants.KIND_SESSION)) { createOrEditStr = createOrEditStr + " " + ClientUtility.getResourceValue(IResourceNames.SESSION); } else if (selectedSessionEventItem.getSessionKindId().equals(IConstants.KIND_ EVENT))

    { createOrEditStr = createOrEditStr + " " + ClientUtility.getResourceValue(IResourceNames.EVENT); } else { createOrEditStr = createOrEditStr + " " + ClientUtility.getResourceValue(IResourceNames.SYMPOSIA); }

    boolean isHeadingFieldsEmpty = true;

    if (selectedSessionEventItem.getSessionClientId() != null)

    { createOrEditStr = createOrEditStr + ": " + selectedSessionEventItem.getSessionClientId(); isHeadingFieldsEmpty = false; }

    if (selectedSessionEventItem.getSessionAbbrv() != null && selectedSessionEventItem.getSessionAbbrv().length() > 0) { if (!isHeadingFieldsEmpty) { createOrEditStr = createOrEditStr + " - "; }

    else { createOrEditStr = createOrEditStr + ": "; } createOrEditStr = createOrEditStr + selectedSessionEventItem.getSessionAbbrv(); isHeadingFieldsEmpty = false; } if (selectedSessionEventItem.getSessionName() != null && selectedSessionEventItem.getSessionName().length() > 0)

  • 8/11/2019 EditSession.pdf

    15/15

    { if (!isHeadingFieldsEmpty) { createOrEditStr = createOrEditStr + " - "; } else { createOrEditStr = createOrEditStr + ": "; }

    createOrEditStr = createOrEditStr + selectedSessionEventItem.getSessionName(); }

    createOrEditStr = ClientUtility.encodeHtmlSpecialCharsAllowPalette(ClientUtility.limitString(createOrEditStr, 80)); //SF_10616, SF-14191

    return createOrEditStr; }

    /** * This method is called when a saving of session is canceled. * */ protected void onCancelSaveSession()

    { performActionAfterSave = 0; }

    /** * Return error message if host roles are not set. * *

    * @return */ private Boolean validateHostRolesOnSwitch() { for (ModelData model : sessionHostsTab.getCurrentlyAssignedHostsGrid().getStore().getModels())

    { SessionHostItem host = (SessionHostItem) model; if (host.getSessionHostRoleId() == null) { return true; } } return false; }

    }