/*
* Copyright (c) 2011 PonySDK
* Owners:
* Luciano Broussal <luciano.broussal AT gmail.com>
* Mathieu Barbier <mathieu.barbier AT gmail.com>
* Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com>
*
* WebSite:
* http://code.google.com/p/pony-sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.ponysdk.sample.client;
import com.ponysdk.core.ui.basic.Element;
import com.ponysdk.core.ui.basic.PAnchor;
import com.ponysdk.core.ui.basic.PDialogBox;
import com.ponysdk.core.ui.basic.PLabel;
import com.ponysdk.core.ui.basic.PPopupPanel;
import com.ponysdk.core.ui.basic.PVerticalPanel;
import com.ponysdk.core.ui.basic.PWidget;
import com.ponysdk.core.ui.basic.event.PClickEvent;
import com.ponysdk.core.ui.basic.event.PClickHandler;
import com.ponysdk.core.ui.rich.POptionPane;
import com.ponysdk.core.ui.rich.POptionPane.PActionHandler;
import com.ponysdk.core.ui.rich.POptionPane.POption;
import com.ponysdk.core.ui.rich.POptionPane.POptionType;
import com.ponysdk.impl.webapplication.header.HeaderActivity;
import com.ponysdk.sample.client.datamodel.User;
import com.ponysdk.sample.client.event.UserLoggedOutEvent;
public class SampleHeaderActivity extends HeaderActivity implements PClickHandler {
private PPopupPanel popup;
@Override
public void buildView() {
// view.addActionWidget(createUserAccountMenu(user));
}
private PWidget createUserAccountMenu(final User userLogged) {
final PAnchor optionsAnchor = Element.newPAnchor(userLogged.getLogin());
optionsAnchor.ensureDebugId("options_anchor");
// optionsAnchor.addStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU);
popup = Element.newPPopupPanel();
getView().asWidget().getWindow().add(popup);
// popup.addStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_POPUP);
final PVerticalPanel panel = Element.newPVerticalPanel();
final PLabel userName = Element.newPLabel(userLogged.getName());
// userName.addStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_POPUP_USER_NAME);
panel.add(userName);
final PLabel userLogin = Element.newPLabel(userLogged.getLogin());
// userLogin.addStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_POPUP_USER_LOGIN);
panel.add(userLogin);
final PAnchor signOutAnchor = Element.newPAnchor("Sign out");
panel.add(signOutAnchor);
popup.setWidget(panel);
signOutAnchor.ensureDebugId("sign_out_anchor");
signOutAnchor.addClickHandler(clickEvent -> {
// optionsAnchor.removeStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_SELECTED);
popup.hide();
final POptionPane optionPane = POptionPane.showConfirmDialog(getView().asWidget().getWindow(), new PActionHandler() {
@Override
public void onAction(final PDialogBox dialogBox, final String option) {
if (POption.YES_OPTION.equals(option)) {
dialogBox.hide();
final UserLoggedOutEvent userLoggedOutEvent = new UserLoggedOutEvent(this, userLogged);
fireEvent(userLoggedOutEvent);
} else {
dialogBox.hide();
}
}
}, "Really logout user " + userLogged.getName() + " ?", "Sign out", POptionType.YES_NO_OPTION);
optionPane.asWidget().ensureDebugId("sign_out_dialog");
});
optionsAnchor.addClickHandler(clickEvent -> {
if (popup.isShowing()) {
popup.hide();
} else {
// optionsAnchor.addStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_SELECTED);
popup.setPopupPositionAndShow((offsetWidth, offsetHeight, windowWidth, windowHeight) -> {
final int left = windowWidth - 250;
popup.setPopupPosition(left, 26);
// PonySession.getCurrent().getRootLayoutPanel().addDomHandler(SampleHeaderActivity.this,
// PClickEvent.TYPE);
});
}
});
popup.addDomHandler(SampleHeaderActivity.this, PClickEvent.TYPE);
popup.addCloseHandler(closeEvent -> {
// optionsAnchor.removeStyleName(PonySDKTheme.HEADER_ACCOUNT_MENU_SELECTED);
// PonySession.getCurrent().getRootLayoutPanel().removeHandler(SampleHeaderActivity.this,
// PClickEvent.TYPE);
});
return optionsAnchor;
}
@Override
public void onClick(final PClickEvent event) {
if (popup.isShowing()) popup.hide();
}
}