Package org.eurekastreams.web.client.ui.common.pagedlist

Source Code of org.eurekastreams.web.client.ui.common.pagedlist.PersonRequestingGroupMembershipRenderer

/*
* Copyright (c) 2010 Lockheed Martin Corporation
*
* 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 org.eurekastreams.web.client.ui.common.pagedlist;

import org.eurekastreams.server.action.request.profile.RequestForGroupMembershipRequest;
import org.eurekastreams.server.action.request.profile.SetFollowingStatusRequest;
import org.eurekastreams.server.domain.EntityType;
import org.eurekastreams.server.domain.Follower;
import org.eurekastreams.server.search.modelview.PersonModelView;
import org.eurekastreams.web.client.jsni.WidgetJSNIFacadeImpl;
import org.eurekastreams.web.client.model.GroupMembersModel;
import org.eurekastreams.web.client.model.GroupMembershipRequestModel;
import org.eurekastreams.web.client.ui.common.PersonPanel;
import org.eurekastreams.web.client.ui.pages.master.StaticResourceBundle;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;

/**
* Renders people who are requesting group membership.
*/
public class PersonRequestingGroupMembershipRenderer implements ItemRenderer<PersonModelView>
{
    /** Group id for group renderer is used for. */
    private long groupId;

    /** Group shortname for group renderer is used for. */
    private String groupShortname;

    /**
     * Constructor.
     *
     * @param inGroupId
     *            Group id for group renderer is used for.
     * @param inGroupShortname
     *            Group shortname for group renderer is used for.
     */
    public PersonRequestingGroupMembershipRenderer(final long inGroupId, final String inGroupShortname)
    {
        groupId = inGroupId;
        groupShortname = inGroupShortname;
    }

    /**
     * {@inheritDoc}
     */
    public Panel render(final PersonModelView item)
    {
        Panel panel = new FlowPanel();
        panel.addStyleName(StaticResourceBundle.INSTANCE.coreCss().pendingGroupMembershipItem());

        // -- build UI --

        // buttons panel (left side)

        final Panel buttonsPanel = new FlowPanel();
        buttonsPanel.addStyleName(StaticResourceBundle.INSTANCE.coreCss().pendingButtons());

        final Label approveButton = new Label("Approve");
        approveButton.addStyleName(StaticResourceBundle.INSTANCE.coreCss().approveButton());
        buttonsPanel.add(approveButton);

        final Label denyButton = new Label("Deny");
        denyButton.addStyleName(StaticResourceBundle.INSTANCE.coreCss().denyButton());
        buttonsPanel.add(denyButton);

        // person panel (right side)
        panel.add(new PersonPanel(item, false, true));
        panel.add(buttonsPanel);

        // -- wire events --

        approveButton.addClickHandler(new ClickHandler()
        {
            public void onClick(final ClickEvent event)
            {
                buttonsPanel.addStyleName(StaticResourceBundle.INSTANCE.coreCss().waitActive());

                GroupMembersModel.getInstance().insert(
                        new SetFollowingStatusRequest(item.getAccountId(), groupShortname, EntityType.GROUP, false,
                                Follower.FollowerStatus.FOLLOWING));
            }
        });

        denyButton.addClickHandler(new ClickHandler()
        {
            public void onClick(final ClickEvent event)
            {
                if (new WidgetJSNIFacadeImpl().confirm("Are you sure you want to deny this user membership?"))
                {
                    buttonsPanel.addStyleName(StaticResourceBundle.INSTANCE.coreCss().waitActive());

                     GroupMembershipRequestModel.getInstance().delete(
                            new RequestForGroupMembershipRequest(groupId, item.getEntityId()));
                }
            }
        });

        return panel;
    }
}
TOP

Related Classes of org.eurekastreams.web.client.ui.common.pagedlist.PersonRequestingGroupMembershipRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.