Example usage for org.apache.wicket.markup.html.list ListView ListView

List of usage examples for org.apache.wicket.markup.html.list ListView ListView

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.list ListView ListView.

Prototype

public ListView(final String id, final List<T> list) 

Source Link

Usage

From source file:com.tysanclan.site.projectewok.components.DonatorPanel.java

License:Open Source License

public DonatorPanel(String id, User user) {
    super(id);/*  ww  w  .  ja va2  s.  co m*/

    Calendar cal = DateUtil.getCalendarInstance();
    cal.add(Calendar.MONTH, -6);

    DonationFilter filter = new DonationFilter();
    filter.setFrom(cal.getTime());
    filter.setDonator(user);

    BigDecimal value = BigDecimal.ZERO;
    List<Donation> donations = donationDAO.findByFilter(filter);
    for (Donation donation : donations) {
        value = value.add(donation.getAmount());
    }

    List<BigDecimal> dollarsigns = new LinkedList<BigDecimal>();

    int max = Math.min(value.intValue(), 100);

    for (int i = 0; i < max; i += 20) {
        dollarsigns.add(value);
    }

    add(new ListView<BigDecimal>("dollars", dollarsigns) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<BigDecimal> item) {
            BigDecimal bdValue = item.getModelObject();

            String dollarLabel = NumberFormat.getCurrencyInstance(Locale.US).format(bdValue.doubleValue())
                    + " donated in the last 6 months";

            item.add(new ContextImage("dollar", "images/icons/money_dollar.png")
                    .add(AttributeModifier.replace("alt", dollarLabel))
                    .add(AttributeModifier.replace("title", dollarLabel)));
        }

    });

    setVisible(user != null && !dollarsigns.isEmpty());

}

From source file:com.tysanclan.site.projectewok.components.MentorPanel.java

License:Open Source License

public MentorPanel(String id, User mentor) {
    super(id, ModelMaker.wrap(mentor), "Pupils");

    setVisible(!mentor.getPupils().isEmpty());

    add(new Label("count", new Model<Integer>(mentor.getPupils().size())));

    add(new ListView<User>("pupils", ModelMaker.wrap(mentor.getPupils())) {
        private static final long serialVersionUID = 1L;

        /**//from   w  ww. j  a v a  2  s  .  c  o m
         * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
         */
        @Override
        protected void populateItem(ListItem<User> item) {
            item.add(new UserContactInfoPanel("pupil", item.getModelObject()));

        }
    });

    Date previousLogin = TysanSession.get().getPreviousLogin();

    if (previousLogin != null) {
        for (User pupil : getUser().getPupils()) {
            if (pupil.getJoinDate() != null && pupil.getJoinDate().after(previousLogin)) {
                super.requiresAttention();
                break;
            }
        }
    }
}

From source file:com.tysanclan.site.projectewok.components.PostPanel.java

License:Open Source License

private void addRealms(WebMarkupContainer parent, User poster) {
    List<UserGameRealm> realms = new LinkedList<UserGameRealm>();

    if (MemberUtil.isMember(poster)) {
        for (UserGameRealm ugr : poster.getPlayedGames()) {
            if (!ugr.getAccounts().isEmpty()) {
                realms.add(ugr);/*from   ww  w.j  av  a 2  s .  c om*/
            }
        }
    }

    parent.add(new ListView<UserGameRealm>("realms", ModelMaker.wrap(realms)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<UserGameRealm> item) {
            UserGameRealm ugr = item.getModelObject();

            StringBuilder accountList = new StringBuilder();

            for (GameAccount acc : ugr.getAccounts()) {
                if (accountList.length() > 0) {
                    accountList.append(", ");
                }

                accountList.append(acc.toString());
            }

            item.add(new Label("realm", ugr.getRealm().getName()));
            item.add(new Label("accounts", accountList.toString()));

        }
    });
}

From source file:com.tysanclan.site.projectewok.components.RealmGamePanel.java

License:Open Source License

/**
 * //w  w  w. ja  v a  2s.  c o m
 */
public RealmGamePanel(String id, Realm realm, Game game) {
    super(id);

    add(new Label("name", game.getName()));
    add(new Image("icon", new ByteArrayResource(ImageUtil.getMimeType(game.getImage()), game.getImage())));

    UserGameRealmFilter filter = new UserGameRealmFilter();
    filter.setRealm(realm);
    filter.setGame(game);

    List<UserGameRealm> ugrs = new LinkedList<UserGameRealm>();
    ugrs.addAll(userGameRealmDAO.findByFilter(filter));
    Set<UserGameRealm> removeUGR = new HashSet<UserGameRealm>();

    for (UserGameRealm ugr : ugrs) {
        if (!MemberUtil.isMember(ugr.getUser())) {
            removeUGR.add(ugr);
        }
    }

    ugrs.removeAll(removeUGR);

    if (ugrs.isEmpty()) {
        setVisible(false);
    }

    Collections.sort(ugrs, new Comparator<UserGameRealm>() {
        /**
         * @see java.util.Comparator#compare(java.lang.Object,
         *      java.lang.Object)
         */
        @Override
        public int compare(UserGameRealm o1, UserGameRealm o2) {
            return o1.getUser().getUsername().compareToIgnoreCase(o2.getUser().getUsername());
        }
    });

    add(new Label("count", new Model<Integer>(ugrs.size())));

    add(new ListView<UserGameRealm>("members", ModelMaker.wrap(ugrs)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<UserGameRealm> item) {
            UserGameRealm ugr = item.getModelObject();
            item.add(new MemberListItem("user", ugr.getUser()));

            StringBuilder builder = new StringBuilder();

            for (GameAccount account : ugr.getAccounts()) {
                if (builder.length() > 0) {
                    builder.append(", ");
                }
                builder.append(account.toString());
            }

            if (builder.length() == 0) {
                builder.append('-');
            }

            item.add(new Label("accounts", builder.toString()));
        }
    });

    List<GamingGroup> groups = new LinkedList<GamingGroup>();
    groups.addAll(realm.getGroups());
    groups.retainAll(game.getGroups());

    WebMarkupContainer container = new WebMarkupContainer("container");
    container.setVisible(!groups.isEmpty());

    add(container);

    container.add(new ListView<GamingGroup>("gaminggroups", ModelMaker.wrap(groups)) {
        private static final long serialVersionUID = 1L;

        /**
         * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
         */
        @Override
        protected void populateItem(ListItem<GamingGroup> item) {
            GamingGroup gg = item.getModelObject();

            item.add(new AutoGroupLink("grouplink", gg));

        }
    });

}

From source file:com.tysanclan.site.projectewok.components.TrialPanel.java

License:Open Source License

/**
 * /*www.j a va2  s .  c  o  m*/
 */
public TrialPanel(String id, Trial trial, User user) {
    super(id);

    if (MemberUtil.isMember(trial.getAccused())) {
        add(new MemberListItem("accused", trial.getAccused()));
    } else {
        add(new Label("accused", trial.getAccused().getUsername()));
    }

    add(new ListView<Regulation>("regulations", ModelMaker.wrap(trial.getRegulations())) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<Regulation> item) {
            Regulation regulation = item.getModelObject();
            item.add(new Label("name", regulation.getName()));

        }

    });

    if (MemberUtil.isMember(trial.getAccused())) {
        add(new MemberListItem("truthsayer", trial.getJudge()));
    } else {
        add(new Label("truthsayer", trial.getJudge().getUsername()));
    }

    add(new BBCodePanel("evidence", trial.getMotivation()).setVisible(trial.getJudge().equals(user)));

    ForumThread thread = trial.getTrialThread();

    Calendar cal = DateUtil.getMidnightCalendarInstance();
    Calendar cal2 = Calendar.getInstance();

    cal2.setTime(thread.getPostTime());

    cal2.add(Calendar.DAY_OF_MONTH, 1);
    cal.set(Calendar.DAY_OF_MONTH, cal2.get(Calendar.DAY_OF_MONTH));
    cal.set(Calendar.MONTH, cal2.get(Calendar.MONTH));
    cal.set(Calendar.YEAR, cal2.get(Calendar.YEAR));

    boolean canVerdictBePassed = trial.getAccused().getRank() == Rank.TRIAL || new Date().after(cal.getTime());
    boolean hasVerdict = trial.getVerdict() != null;
    boolean isJudge = user != null && user.equals(trial.getJudge());

    Form<Trial> verdictForm = new Form<Trial>("verdictForm", ModelMaker.wrap(trial)) {
        private static final long serialVersionUID = 1L;

        @SpringBean
        private LawEnforcementService lawEnforcementService;

        /**
         * @see org.apache.wicket.markup.html.form.Form#onSubmit()
         */
        @SuppressWarnings("unchecked")
        @Override
        protected void onSubmit() {
            Trial t = getModelObject();

            DropDownChoice<Verdict> verdictChoice = (DropDownChoice<Verdict>) get("verdict");

            Verdict verdict = verdictChoice.getModelObject();

            lawEnforcementService.passVerdict(t, verdict);

            setResponsePage(new ForumThreadPage(t.getTrialThread().getId(), 1, false));
        }

    };

    verdictForm.add(new DropDownChoice<Verdict>("verdict", new Model<Verdict>(Verdict.INNOCENT),
            Arrays.asList(Verdict.values()), new IChoiceRenderer<Verdict>() {

                /**
                * 
                */
                private static final long serialVersionUID = 1L;

                @Override
                public Object getDisplayValue(Verdict object) {
                    switch (object) {
                    case INNOCENT:
                        return "Member is innocent";
                    case MINOR:
                        return "Member is guilty, but will only be given a warning";
                    case MEDIUM:
                        return "Member is guilty, and will be reprimanded";
                    case MAJOR:
                        return "Member is guilty and will be banned immediately";
                    default:
                        return "I have no idea";
                    }

                }

                @Override
                public String getIdValue(Verdict object, int index) {
                    return object.toString();
                }
            }));

    verdictForm.setVisible(canVerdictBePassed && !hasVerdict && isJudge);

    add(new IconLink.Builder(trial.isRestrained() ? "images/icons/lock_delete.png" : "images/icons/lock.png",
            new DefaultClickResponder<Trial>(ModelMaker.wrap(trial)) {
                private static final long serialVersionUID = 1L;

                @SpringBean
                private LawEnforcementService lawEnforcementService;

                /**
                * @see com.tysanclan.site.projectewok.components.IconLink.DefaultClickResponder#onClick()
                */
                @Override
                public void onClick() {
                    Trial t = getModelObject();

                    if (t.isRestrained()) {
                        lawEnforcementService.unrestrainAccused(t);
                    } else {
                        lawEnforcementService.restrainAccused(t);
                    }

                    setResponsePage(new ForumThreadPage(t.getTrialThread().getId(), 1, false));
                }

            }).setText(trial.isRestrained() ? "Lift restraint" : "Restrain the accused").newInstance("restrain")
                    .setVisible(isJudge));

    if (hasVerdict) {
        switch (trial.getVerdict()) {
        case MAJOR:
            add(new Label("verdict", "Member was found guilty, and removed from the clan"));
            break;
        case MEDIUM:
            add(new Label("verdict", "Member was found guilty, and given a reprimand"));
            break;
        case MINOR:
            add(new Label("verdict", "Member was found guilty, and given a warning"));
            break;
        case INNOCENT:
            add(new Label("verdict", "Member was found innocent"));
            break;
        default:
            add(new WebMarkupContainer("verdict").setVisible(false));
        }
    } else {
        add(new WebMarkupContainer("verdict").setVisible(false));
    }

    add(verdictForm);
}

From source file:com.tysanclan.site.projectewok.components.TysanMemberPanel.java

License:Open Source License

/**
*/// ww  w.jav a2  s .co  m
private Dialog addMembersOnlineLink() {
    Dialog window = new Dialog("onlinewindow");
    window.setTitle("Members online");
    window.setOutputMarkupId(true);
    window.setOutputMarkupPlaceholderTag(true);
    window.setWidth(400);

    window.add(new OtterSniperPanel("otterSniperPanel", 4));

    AjaxLink<Dialog> link = new AjaxLink<Dialog>("online", new Model<Dialog>(window)) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target != null) {
                target.appendJavaScript(getModelObject().open().render().toString());
            }

        }

    };

    link.add(new Label("count", new MembersOnlineCountModel()).setOutputMarkupId(true));

    window.add(new ListView<User>("members", ModelMaker.wrap(userService.getMembersOnline())) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<User> item) {
            MemberListItem memberLink = new MemberListItem("link", item.getModelObject());

            item.add(memberLink);

        }

    });

    window.add(new ListView<MumbleServer>("servers", ModelMaker.wrap(serverDAO.findAll())) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<MumbleServer> item) {
            MumbleServer server = item.getModelObject();

            item.add(new WebMarkupContainer("server")
                    .add(AttributeModifier.replace("data-token", server.getApiToken()))
                    .add(AttributeModifier.replace("data-id", server.getServerID())));

            item.add(new ExternalLink("url", server.getUrl()).setBody(Model.of(server.getUrl())));
            item.add(new Label("password", server.getPassword()));

        }

    });

    add(link);
    add(window);
    return window;
}

From source file:com.tysanclan.site.projectewok.components.UserContactInfoPanel.java

License:Open Source License

public UserContactInfoPanel(String id, User user) {
    super(id, ModelMaker.wrap(user));

    add(new MemberListItem("user", user));

    String aimAddress = user.getProfile() != null ? user.getProfile().getInstantMessengerAddress() : "";

    add(new Label("aim", aimAddress)
            .add(AttributeModifier.replace("href", "aim:addbuddy?screenname=" + aimAddress))
            .setVisible(aimAddress != null && !aimAddress.isEmpty()));
    add(new DateLabel("lastlogin", user.getLastAction()));

    WebMarkupContainer accounts = new WebMarkupContainer("accounts");

    accounts.add(new ListView<UserGameRealm>("realms", ModelMaker.wrap(user.getPlayedGames())) {
        private static final long serialVersionUID = 1L;

        @Override//from w ww .j a v  a  2  s.c  om
        protected void populateItem(ListItem<UserGameRealm> item) {
            item.setModel(new CompoundPropertyModel<UserGameRealm>(item.getModel()));

            StringBuilder builder = new StringBuilder();

            for (GameAccount acc : item.getModelObject().getAccounts()) {
                if (builder.length() > 0) {
                    builder.append(", ");
                }

                builder.append(acc.toString());
            }

            item.add(new Label("realm.name"));
            item.add(new Label("accountlist", builder.length() > 0 ? builder.toString() : "-"));
        }
    });

    accounts.setVisible(!user.getPlayedGames().isEmpty());

    add(accounts);
}

From source file:com.tysanclan.site.projectewok.pages.AboutPage.java

License:Open Source License

public AboutPage() {
    super("About");

    UserFilter chancellorFilter = new UserFilter();
    chancellorFilter.addRank(Rank.CHANCELLOR);

    List<User> users = userDAO.findByFilter(chancellorFilter);

    User leader = null;// w  w  w  . j a va2s. com
    if (!users.isEmpty()) {
        leader = users.get(0);
        add(new MemberListItem("leader", leader));
    } else {
        add(new Label("leader", "<i>None</i>").setEscapeModelStrings(false));
    }

    UserFilter senateFilter = new UserFilter();
    senateFilter.addRank(Rank.SENATOR);

    List<User> senate = userDAO.findByFilter(senateFilter);
    add(new ListView<User>("senate", ModelMaker.wrap(senate)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<User> item) {
            User user = item.getModelObject();

            item.add(new MemberListItem("member", user));
        }

    });

    add(new ListView<Game>("games", ModelMaker.wrap(gameDAO.findAll())) {
        private static final long serialVersionUID = 1L;

        /**
         * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
         */
        @Override
        protected void populateItem(final ListItem<Game> item) {
            Game game = item.getModelObject();

            final int rowCount = game.getRealms().size();
            final String gameName = game.getName();

            item.add(new ListView<Realm>("realms", ModelMaker.wrap(game.getRealms())) {
                private static final long serialVersionUID = 1L;

                @SpringBean
                private GameService gameService;

                /**
                 * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
                 */
                @Override
                protected void populateItem(ListItem<Realm> innerItem) {
                    WebMarkupContainer iconContainer = new WebMarkupContainer("iconcontainer");
                    WebMarkupContainer supervisorContainer = new WebMarkupContainer("supervisorcontainer");
                    Label gameNameLabel = new Label("name", gameName);

                    if (innerItem.getIndex() != 0) {
                        iconContainer.setVisible(false);
                        gameNameLabel.setVisible(false);
                        supervisorContainer.setVisible(false);
                    } else {
                        AttributeModifier mod = AttributeModifier.replace("rowspan",
                                Integer.toString(rowCount));
                        iconContainer.add(mod);
                        gameNameLabel.add(mod);
                        supervisorContainer.add(mod);
                    }

                    innerItem.add(iconContainer);
                    innerItem.add(gameNameLabel);
                    innerItem.add(supervisorContainer);

                    Realm realm = innerItem.getModelObject();
                    Game _game = item.getModelObject();

                    PageParameters params = new PageParameters();
                    params.add("id", Long.toString(realm.getId()));

                    Link<Realm> realmLink = new BookmarkablePageLink<Realm>("realm", RealmPage.class, params);

                    realmLink.add(new Label("name", realm.getName()));

                    innerItem.add(
                            new Label("playercount", Integer.toString(gameService.countPlayers(_game, realm))));

                    innerItem.add(realmLink);

                    iconContainer.add(new Image("icon",
                            new ByteArrayResource(ImageUtil.getMimeType(_game.getImage()), _game.getImage())));

                    if (_game.getCoordinator() != null) {

                        supervisorContainer.add(new MemberListItem("supervisor", _game.getCoordinator()));
                    } else {
                        supervisorContainer.add(new Label("supervisor", "-"));
                    }

                }
            });

        }
    });

    UserFilter activeMemberFilter = new UserFilter();
    activeMemberFilter.addRank(Rank.CHANCELLOR);
    activeMemberFilter.addRank(Rank.SENATOR);
    activeMemberFilter.addRank(Rank.TRUTHSAYER);
    activeMemberFilter.addRank(Rank.REVERED_MEMBER);
    activeMemberFilter.addRank(Rank.SENIOR_MEMBER);
    activeMemberFilter.addRank(Rank.FULL_MEMBER);
    activeMemberFilter.addRank(Rank.JUNIOR_MEMBER);
    activeMemberFilter.addRank(Rank.TRIAL);
    activeMemberFilter.setRetired(false);

    add(new Label("activecount", new Model<Long>(userDAO.countByFilter(activeMemberFilter))));

    UserFilter allMemberFilter = new UserFilter();
    allMemberFilter.addRank(Rank.CHANCELLOR);
    allMemberFilter.addRank(Rank.SENATOR);
    allMemberFilter.addRank(Rank.TRUTHSAYER);
    allMemberFilter.addRank(Rank.REVERED_MEMBER);
    allMemberFilter.addRank(Rank.SENIOR_MEMBER);
    allMemberFilter.addRank(Rank.FULL_MEMBER);
    allMemberFilter.addRank(Rank.JUNIOR_MEMBER);
    allMemberFilter.addRank(Rank.TRIAL);

    add(new Label("membercount", new Model<Long>(userDAO.countByFilter(allMemberFilter))));

    addRank(Rank.CHANCELLOR, "The leader of the Clan, has executive power");
    addRank(Rank.SENATOR, "A member of the Senate, has legislative power");
    addRank(Rank.TRUTHSAYER, "Upholder of justice, has judiciary power");
    addRank(Rank.REVERED_MEMBER, "A member who has been with Tysan for more than 5 years");
    addRank(Rank.SENIOR_MEMBER, "A member who has been with Tysan for more than 2 years");
    addRank(Rank.FULL_MEMBER, "A member who has been with Tysan for more than 4 months");
    addRank(Rank.JUNIOR_MEMBER,
            "A member who has passed his Trial period and gained at least 60% votes in favor");
    addRank(Rank.TRIAL, "A member who is currently in his Trial period");

    add(new ListView<Rank>("ranks", ranks) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<Rank> item) {
            Rank rank = item.getModelObject();
            item.add(new RankIcon("icon", rank));
            item.add(new Label("name", rank.toString()));
            item.add(new Label("description", rankDescriptions.get(rank)));

        }

    });

    UserFilter heroFilter = new UserFilter();
    heroFilter.addRank(Rank.HERO);

    List<User> heroes = userDAO.findByFilter(heroFilter);

    add(new ListView<User>("heroes", heroes) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<User> item) {
            item.add(new MemberListItem("user", item.getModelObject()));
        }
    }.setVisible(!heroes.isEmpty()));

}

From source file:com.tysanclan.site.projectewok.pages.forum.ForumThreadSplitPage.java

License:Open Source License

public ForumThreadSplitPage(ForumThread thread) {
    super("Split thread: " + thread.getTitle());

    TysanSession sess = (TysanSession) Session.get();
    User u = sess != null ? sess.getUser() : null;

    List<ForumPost> posts = forumService.filterPosts(u, false, thread.getPosts());
    ForumPost firstPost = posts.get(0);//w  ww .  j  ava  2 s  .c  o m
    List<ForumPost> filtered = new ArrayList<ForumPost>(posts.size() - 1);

    for (ForumPost post : posts) {
        if (!firstPost.equals(post)) {
            filtered.add(post);
        }
    }

    final ListView<PostSelectionPair> postselection = new ListView<PostSelectionPair>("postselection",
            new PostSelectionPairModel(posts)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<PostSelectionPair> item) {
            IModel<PostSelectionPair> model = item.getModel();

            item.add(new CheckBox("checkbox", new PropertyModel<Boolean>(model, "selected")));
            item.add(new PostPanel("postpanel", model.getObject().getPost()));
        }

    };

    final TextField<String> titleField = new TextField<String>("title", new Model<String>(""));

    final ForumPostEditorPanel editor = new ForumPostEditorPanel("editor", "");

    Form<ForumThread> form = new Form<ForumThread>("splitform", ModelMaker.wrap(thread)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            ForumThread t = getModelObject();

            TysanSession session = (TysanSession) Session.get();
            User user = session != null ? session.getUser() : null;

            List<PostSelectionPair> pairsLIst = postselection.getModelObject();
            List<ForumPost> postList = new LinkedList<ForumPost>();
            for (PostSelectionPair pair : pairsLIst) {
                if (pair.getSelected() == true) {
                    postList.add(pair.getPost());
                }
            }

            if (titleField.getModelObject() == null || titleField.getModelObject().trim().isEmpty()) {
                error("Title may not be empty!");
            } else if (editor.getEditorContent().trim().isEmpty()) {
                error("Thread opening may not be empty");
            } else if (postList.isEmpty()) {
                error("You must select at least 1 post to move to the new thread");
            } else {
                if (forumService.isModerator(user, t.getForum())) {

                    ForumThread result = forumService.splitThread(t, postList, titleField.getModelObject(),
                            editor.getEditorContent(), user);
                    if (result == null) {
                        error("Could not split thread: permission denied!");
                    }
                } else {
                    error("Could not split thread: permission denied!");
                }

                setResponsePage(new ForumThreadPage(t.getId(), 1, false));
            }
        }
    };

    form.add(editor);

    form.add(titleField);

    form.add(postselection);

    form.add(new PostPanel("threadstart", firstPost, false));

    form.add(new ThreadLink("no", thread));

    add(form);
}

From source file:com.tysanclan.site.projectewok.pages.forum.ReplyPage.java

License:Open Source License

public ReplyPage(ForumThread thread, int currentPage) {
    super("Reply to thread");

    final ForumPostEditorPanel editor = new ForumPostEditorPanel("editor", "");

    Form<Long> form = new Form<Long>("replyform", new Model<Long>(thread.getId())) {
        private static final long serialVersionUID = 1L;

        @SpringBean// ww  w. j  a v a 2 s. co  m
        private ForumThreadDAO threadDAO;

        @SpringBean
        private TrialDAO trialDAO;

        @SpringBean
        private MembershipService mService;

        @Override
        protected void onSubmit() {
            ForumThread ft = threadDAO.load(getModelObject());
            User currentUser = TysanSession.get().getUser();

            Calendar oneWeekAgo = DateUtil.getCalendarInstance();
            oneWeekAgo.add(Calendar.WEEK_OF_YEAR, -1);

            TrialFilter filter = new TrialFilter();
            filter.setStartAfter(oneWeekAgo.getTime());
            filter.setRestrained(true);
            filter.setAccused(currentUser);

            List<Trial> trials = trialDAO.findByFilter(filter);
            boolean hasThread = false;
            for (Trial trial : trials) {
                if (trial.getTrialThread().equals(ft)) {
                    hasThread = true;
                    break;
                }
            }

            if (trials.isEmpty() || hasThread
                    || (!ft.getPosts().isEmpty() && ft.getPosts().get(0).getPoster().equals(getUser()))) {
                ForumPost post = forumService.replyToThread(ft, editor.getEditorContent(), currentUser);

                forumService.markForumPostRead(currentUser, post);

                int page = ((ft.getPosts().size() - 1) / ForumThread.POSTS_PER_PAGE) + 1;

                mService.registerAction(currentUser);

                setResponsePage(new ForumThreadPage(ft.getId(), page, false));
            } else {
                error("Your posting privileges have been revoked due to a currently running trial, you can only post in your Trial threads");
            }
        }

    };

    form.add(editor);

    List<ForumPost> revList = new LinkedList<ForumPost>();
    revList.addAll(thread.getPosts());
    Collections.reverse(revList);
    for (int i = revList.size() - 1; i >= 5; i--) {
        revList.remove(i);
    }

    ListView<ForumPost> backwards = new ListView<ForumPost>("topicbackwards", ModelMaker.wrap(revList)) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<ForumPost> item) {
            item.add(new PostPanel("post", item.getModelObject()));
        }

    };

    add(form);
    add(backwards);

    add(new ThreadLink("backtothread", thread, currentPage, false));
}