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:de.jetwick.ese.ui.FacetPanel.java

License:Apache License

public FacetPanel(String id) {
    super(id);/* w w w . jav  a 2  s  .  c  o  m*/

    tr.put("userName", "User");

    tagView = new ListView("filterNames", normalFacetFields) {

        @Override
        public void populateItem(final ListItem item) {
            final Entry<String, List<FacetHelper>> entry = (Entry<String, List<FacetHelper>>) item
                    .getModelObject();

            String keyValue = translate(entry.getKey());
            String filter = getFilterName(entry.getKey());
            if (filter != null) {
                item.add(new LabeledLink("filterName", "< " + keyValue) {

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        onFacetChange(target, entry.getKey(), null, true);
                    }
                }.add(new AttributeAppender("title", new Model("Remove all filters from '" + keyValue + "'"),
                        " ")));
            } else
                item.add(new Label("filterName", keyValue));

            item.add(new ListView("filterValues", entry.getValue()) {

                @Override
                protected void populateItem(ListItem li) {
                    final FacetHelper h = (FacetHelper) li.getModelObject();

                    final String filter = h.getFilter();
                    final boolean selected = alreadyFiltered.contains(filter);

                    Link link = new IndicatingAjaxFallbackLink("filterValueLink") {

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            onFacetChange(target, h.key, h.value, selected);
                        }
                    };
                    // change style if filter is selected
                    if (selected)
                        link.add(new AttributeAppender("class", new Model("filter-rm"), " "));
                    else
                        link.add(new AttributeAppender("class", new Model("filter-add"), " "));

                    link.add(new Label("filterValue", h.displayName));

                    // not clickable if filter would result in 0 docs
                    if (h.count == 0) {
                        link.setEnabled(false);
                        link.add(new AttributeAppender("class", new Model("gray"), " "));
                    }

                    li.add(new Label("filterCount", " (" + h.count + ")"));
                    li.add(link);
                }
            });
        }
    };

    add(tagView);
}

From source file:de.jetwick.ese.ui.ResultsPanel.java

License:Apache License

public ResultsPanel(String id) {
    super(id);// w  w w . j av  a2 s.c om

    add(new Label("qm", new PropertyModel(this, "queryMessage")));
    add(new Label("qmWarn", new PropertyModel(this, "queryMessageWarn")) {

        @Override
        public boolean isVisible() {
            return queryMessageWarn != null && queryMessageWarn.length() > 0;
        }
    });

    add(createSortLink("sortRelevance", ""));
    add(createSortLink("sortName", MySearch.NAME + " asc"));
    add(createSortLink("sortLatest", MySearch.CREATED_AT + " desc"));
    add(createSortLink("sortOldest", MySearch.CREATED_AT + " asc"));

    userView = new ListView("users", tweets) {

        @Override
        public void populateItem(final ListItem item) {
            final MyTweet tweet = (MyTweet) item.getModelObject();
            String twitterUrl = Helper.TURL + "/" + tweet.getUserName();

            ExternalLink userNameLink = new ExternalLink("userNameLink", twitterUrl, tweet.getUserName());
            item.add(userNameLink);
            item.add(new Label("tweetText", tweet.getText()));
            item.add(new Label("createdAt", Helper.toLocalDateTime(tweet.getCreatedAt())));
        }
    };

    add(userView);
}

From source file:de.jetwick.ui.FacetPanel.java

License:Apache License

public FacetPanel(String id) {
    super(id);/*from  ww  w  . java  2  s.  co m*/

    // No Massive Tweeter
    tr.put(USER, "Tweeters");
    tr.put("loc", "Location");
    tr.put(DATE, "Date");
    tr.put(LANG, "Language");
    tr.put(IS_RT, "Content");
    tr.put(IS_RT + ":true", "retweet");
    tr.put(IS_RT + ":false", "original");

    tr.put(DUP_COUNT, "Duplicates");
    tr.put(FILTER_NO_DUPS, "without");
    tr.put(FILTER_ONLY_DUPS, "only duplicated");

    tr.put(URL_COUNT, "Links");
    tr.put(FILTER_URL_ENTRY, "with");
    tr.put(FILTER_NO_URL_ENTRY, "without");

    tr.put(RT_COUNT, "Retweets");
    tr.put(RT_COUNT + ":[5 TO *]", "5 and more");
    tr.put(RT_COUNT + ":[20 TO *]", "20 and more");
    tr.put(RT_COUNT + ":[50 TO *]", "50 and more");

    tr.put(QUALITY, "Spam");
    tr.put(FILTER_NO_SPAM, "without");
    tr.put(FILTER_SPAM, "only spam");

    tr.put(LANG + ":" + UNKNOWN_LANG, "Other");
    tr.put(LANG + ":" + DE, "Deutsch");
    tr.put(LANG + ":" + EN, "English");
    tr.put(LANG + ":" + NL, "Nederlandse");
    tr.put(LANG + ":" + RU, "P??");
    tr.put(LANG + ":" + ES, "Espaol");
    // backward compatibility
    tr.put(LANG + ":sp", "Espaol");
    tr.put(LANG + ":" + FR, "Franais");
    tr.put(LANG + ":" + PT, "Portugus");

    tagView = new ListView("filterNames", normalFacetFields) {

        @Override
        public void populateItem(final ListItem item) {
            final Entry<String, List<FacetHelper>> entry = (Entry<String, List<FacetHelper>>) item
                    .getModelObject();

            String dtVal = translate(entry.getKey());
            String filter = getFilterName(entry.getKey());
            if (filter != null) {
                item.add(new LabeledLink("filterName", "< " + dtVal) {

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        onRemoveAllFilter(target, entry.getKey());
                    }
                }.add(new AttributeAppender("title", new Model("Remove all filters from '" + dtVal + "'"),
                        " ")));
            } else
                item.add(new Label("filterName", dtVal));

            item.add(new ListView("filterValues", entry.getValue()) {

                @Override
                protected void populateItem(ListItem li) {
                    final FacetHelper h = (FacetHelper) li.getModelObject();
                    final boolean selected = isAlreadyFiltered(h.getFilter());
                    final boolean excluded = isAlreadyExcluded(h.getFilter());
                    Link link = new IndicatingAjaxFallbackLink("filterValueLink") {

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            if (selected)
                                onFilterChange(target, h.key, h.value, null);
                            else
                                onFilterChange(target, h.key, h.value, false);
                        }
                    };
                    Link excludeLink = new IndicatingAjaxFallbackLink("filterExcludeLink") {

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            if (excluded)
                                onFilterChange(target, h.key, h.value, null);
                            else
                                onFilterChange(target, h.key, h.value, true);
                        }
                    };
                    li.add(new Label("filterCount", " (" + h.count + ")"));
                    li.add(link);
                    li.add(excludeLink);

                    /* exlude does not work for filter queries like RT_COUNT.contains(h.key)*/
                    if (USER.contains(h.key) || LANG.contains(h.key))
                        excludeLink.setVisible(true);
                    else
                        excludeLink.setVisible(false);

                    if (excluded)
                        link.add(new AttributeAppender("class", new Model("filter-ex"), " "));

                    // change style if filter is selected
                    if (selected)
                        link.add(new AttributeAppender("class", new Model("filter-rm"), " "));
                    else
                        link.add(new AttributeAppender("class", new Model("filter-add"), " "));

                    // TODO strike through if filter is excluded

                    link.add(new Label("filterValue", h.displayName));

                    // not clickable if filter would result in 0 docs
                    if (h.count == 0) {
                        link.setEnabled(false);
                        link.add(new AttributeAppender("class", new Model("gray"), " "));
                    }
                }
            });
        }
    };

    add(tagView);
}

From source file:de.jetwick.ui.jschart.JSDateFilter.java

License:Apache License

public JSDateFilter(String id) {
    super(id);//from w w  w  .ja v a 2s.c  o  m

    final String dtVal = "Date Filter";
    List<String> dateFilterList = new ArrayList<String>();
    dateFilterList.add(dtKey);

    // TODO WICKET update dateFilter even if we call only update(rsp)
    ListView dateFilter = new ListView("dateFilterParent", dateFilterList) {

        @Override
        public void populateItem(final ListItem item) {
            String filter = getFilterName(dtKey);
            if (filter != null) {
                item.add(new LabeledLink("dateFilter", "Click to remove custom date filter") {

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        onFilterChange(target, dtKey, null);
                    }
                }.add(new AttributeAppender("title", new Model("Remove all filters from '" + dtVal + "'"),
                        " ")));
            } else {
                String str = "";
                if (totalHits > 0)
                    str = "Select a date to filter results";
                Label label = new Label("dateFilter", str);
                label.add(new AttributeAppender("class", new Model("gray"), " "));
                item.add(label);
            }
        }
    };
    add(dateFilter);

    ListView items = new ListView("items", facetList) {

        @Override
        public void populateItem(final ListItem item) {
            float zoomer = MAX_HEIGHT_IN_PX / max;
            final FacetHelper entry = (FacetHelper) item.getModelObject();

            Label bar = new Label("itemSpan");
            String additionalDateInfo = entry.count + " tweets";
            String displayName = entry.displayName;
            try {
                Date date = Helper.toDate(displayName);
                int index = displayName.indexOf("T");
                if (index > 0)
                    additionalDateInfo += " on " + Helper.getMonthDay(date);

                displayName = Helper.getWeekDay(date);
            } catch (Exception ex) {
            }

            AttributeAppender app = new AttributeAppender("title", new Model(additionalDateInfo), " ");
            bar.add(app).add(new AttributeAppender("style",
                    new Model("height:" + (int) (zoomer * entry.count) + "px"), " "));
            final boolean selected = isAlreadyFiltered(entry.key, entry.value);
            Link link = new /*Indicating*/ AjaxFallbackLink("itemLink") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    JSDateFilter.this.onFilterChange(target, entry.getFilter(), !selected);
                }
            };
            link.add(app);
            Label label = new Label("itemLabel", displayName);
            link.add(bar).add(label);
            if (entry.count == 0) {
                link.setEnabled(false);
                link.add(new AttributeAppender("class", new Model("gray"), " "));
            }

            if (selected)
                link.add(new AttributeAppender("class", new Model("filter-rm"), " "));
            else
                link.add(new AttributeAppender("class", new Model("filter-add"), " "));
            item.add(link);
        }
    };

    add(items);
}

From source file:de.jetwick.ui.MobilePage.java

License:Apache License

private void doSearch() {
    Collection<JUser> users = new LinkedHashSet<JUser>();
    JetwickQuery query = new TweetQuery(queryString).setEscape(true)
            .setSort(ElasticTweetSearch.RT_COUNT, "desc").addLatestDateFilter(24).addNoDupsFilter()
            .addNoSpamFilter().addIsOriginalTweetFilter().setSize(10);

    long start = System.currentTimeMillis();
    long totalHits = 0;
    SearchResponse rsp = null;/*w  w w .  j av a2 s  .  c om*/
    try {
        rsp = getTweetSearch().query(users, query);
        totalHits = rsp.getHits().getTotalHits();
        logger.info(addIP("[mstats] " + totalHits + " hits for: " + query.toString()));
    } catch (Exception ex) {
        logger.error("Error while searching " + query.toString(), ex);
    }

    String msg = "";
    if (totalHits > 0) {
        float time = (System.currentTimeMillis() - start) / 100.0f;
        time = Math.round(time) / 10f;
        msg = totalHits + " tweets, " + time + " s";
    } else
        msg = "Sorry, nothing found";

    add(new Label("msg", msg));

    ListView userView = new ListView("users", new ArrayList(users)) {

        @Override
        public void populateItem(final ListItem item) {
            final JUser user = (JUser) item.getModelObject();
            String twitterUrl = Helper.TURL + "/" + user.getScreenName();
            item.add(new ExternalLink("userUrl", twitterUrl, user.getScreenName()));

            item.add(new ListView("tweets", new ArrayList<JTweet>(user.getOwnTweets())) {

                @Override
                public void populateItem(final ListItem item) {
                    final JTweet tweet = (JTweet) item.getModelObject();
                    final Label label = new Label("tweet", new Model<String>() {

                        @Override
                        public String getObject() {
                            return new Extractor().setTweet(tweet).setText(tweet.getText()).run().toString();
                            //                                return tweet.getText();
                        }
                    });
                    label.setEscapeModelStrings(false);
                    item.add(label);

                    item.add(new Label("tweetDate", Helper.toSimpleDateTime(tweet.getCreatedAt())));
                    item.add(new Label("retweets", "retweets: " + tweet.getRetweetCount()));
                }
            });
        }
    };
    //        for (JUser user : users) {
    //            res += user.getScreenName() + "=" + user.getOwnTweets().iterator().next().getText();
    //        }

    add(userView);
}

From source file:de.jetwick.ui.OneTweet.java

License:Apache License

public OneTweet init(IModel<JTweet> model, boolean showUser) {
    setOutputMarkupId(true);//  ww w. jav a2s  .  com
    final JTweet tweet = model.getObject();
    if (tweet == null) {
        setVisible(false);
        return this;
    }
    final JUser user = tweet.getFromUser();

    if (showUser) {
        LabeledLink userNameLink = new LabeledLink("userNameLink", user.getScreenName() + ":", false) {

            @Override
            public void onClick(AjaxRequestTarget target) {
                onUserClick(user.getScreenName());
            }
        };
        add(userNameLink);
    } else
        add(new Label("userNameLink", ""));

    WebMarkupContainer spamIndicator = new WebMarkupContainer("spamIndicator");
    spamIndicator.setVisible(tweet.isSpam());
    add(spamIndicator);

    //        final DialogUtilsBehavior dialogUtilsBehavior = new DialogUtilsBehavior();
    //        add(dialogUtilsBehavior);
    final Label label = new Label("tweetText", new Model<String>() {

        int counter = 0;

        @Override
        public String getObject() {
            return new Extractor() {

                @Override
                public String createTagMarkup(String tag, String cleanTag) {
                    //                        String url = Helper.TSURL + cleanTag;
                    return "<a class=\"i-tw-link tw-tag\" " + "clean=\"" + cleanTag + "\" " + "tag=\"" + tag
                            + " \" " + ">" + tag + "</a>";
                }
            }.setTweet(tweet).setText(translate(tweet)).run().toString();
        }
    });
    label.setEscapeModelStrings(false);
    label.setOutputMarkupId(true);
    add(label);

    ExternalLink dateLink = new ExternalLink("tweetDate",
            Helper.toTwitterHref(user.getScreenName(), tweet.getTwitterId()));

    String str = "status";
    if (tweet.getCreatedAt() != null)
        str = Helper.toSimpleDateTime(tweet.getCreatedAt());
    Label dateLabel = new Label("tweetDateLabel", str);
    dateLink.add(dateLabel);
    add(dateLink);

    add(new ExternalLink("tweetFav", Helper.twitterIntentFav(tweet.getTwitterId())));

    add(new ExternalLink("tweetReply", Helper.twitterIntentReply(tweet.getTwitterId())));

    add(new AjaxFallbackLink("tweetRetweet") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            onRetweet(tweet, target);
        }
    });
    IndicatingAjaxFallbackLink inReplyOfButton = new IndicatingAjaxFallbackLink("inreplyof") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target != null) {
                subTweets.clear();
                target.addComponent(OneTweet.this);
                if (!inReplyOfClicked)
                    subTweets.addAll(onInReplyOfClick(tweet.getInReplyTwitterId()));

                inReplyOfClicked = !inReplyOfClicked;
            }
        }
    };

    add(inReplyOfButton);
    if (JTweet.isDefaultInReplyId(tweet.getInReplyTwitterId()))
        inReplyOfButton.setVisible(false);

    IndicatingAjaxFallbackLink rtLink = new IndicatingAjaxFallbackLink("retweeters") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target != null) {
                subTweets.clear();
                target.addComponent(OneTweet.this);
                if (!rtClicked)
                    subTweets.addAll(onReplyClick(tweet.getTwitterId(), true));

                rtClicked = !rtClicked;
            }
        }
    };

    add(rtLink.add(new Label("retweetersLabel", "retweets " + tweet.getRetweetCount())));
    if (tweet.getRetweetCount() == 0)
        rtLink.setVisible(false);

    IndicatingAjaxFallbackLink replyLink = new IndicatingAjaxFallbackLink("replies") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target != null) {
                subTweets.clear();
                target.addComponent(OneTweet.this);
                if (!rpClicked)
                    subTweets.addAll(onReplyClick(tweet.getTwitterId(), false));

                rpClicked = !rpClicked;
            }
        }
    };

    add(replyLink
            .add(new Label("repliesLabel", "replies " + (tweet.getReplyCount() - tweet.getRetweetCount()))));
    if (tweet.getReplyCount() == tweet.getRetweetCount())
        replyLink.setVisible(false);

    add(new AjaxFallbackLink("similarLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            onFindSimilarClick(tweet, target);
        }
    });

    add(new IndicatingAjaxFallbackLink("translateLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target == null)
                return;

            clickedTranslate = !clickedTranslate;
            //translate(tweet, label);
            target.addComponent(label);
        }
    });

    ListView subTweetsView = new ListView("subtweets", new PropertyModel(this, "subTweets")) {

        @Override
        public void populateItem(final ListItem item) {
            item.add(new OneTweet("suboneTweet") {

                @Override
                public Collection<JTweet> onReplyClick(long id, boolean retweet) {
                    return OneTweet.this.onReplyClick(id, retweet);
                }

                @Override
                public void onUserClick(String screenName) {
                    OneTweet.this.onUserClick(screenName);
                }

                @Override
                public void onFindSimilarClick(JTweet tweet, AjaxRequestTarget target) {
                    OneTweet.this.onFindSimilarClick(tweet, target);
                }

                @Override
                public Collection<JTweet> onInReplyOfClick(long id) {
                    return OneTweet.this.onInReplyOfClick(id);
                }
            }.init(item.getModel(), true).setLanguage(language));
        }
    };
    add(subTweetsView);

    return this;
}

From source file:de.jetwick.ui.PrinterPage.java

License:Apache License

public PrinterPage() {
    add(new ListView("users", results) {

        @Override//w  w  w  .  j a v  a 2 s. c  om
        public void populateItem(final ListItem item) {
            final JTweet tw = (JTweet) item.getModelObject();

            item.add(new ExternalLink("userName",
                    Helper.JETWICK_URL + "?user=" + Helper.urlEncode(tw.getFromUser().getScreenName()),
                    tw.getFromUser().getScreenName()));

            item.add(new ExternalLink("statusLink",
                    Helper.toTwitterHref(tw.getFromUser().getScreenName(), tw.getTwitterId())));

            Label label = new Label("tweetText", new Extractor().setTweet(tw).run().toString());
            label.setEscapeModelStrings(false);
            item.add(label);
        }
    });
}

From source file:de.jetwick.ui.ResultsPanel.java

License:Apache License

public ResultsPanel(String id, final String toLanguage) {
    super(id);/*w ww .  j  a  va 2s.c o  m*/

    add(new Label("qm", new PropertyModel(this, "queryMessage")));
    add(new Label("qmWarn", new PropertyModel(this, "queryMessageWarn")) {

        @Override
        public boolean isVisible() {
            return queryMessageWarn != null && queryMessageWarn.length() > 0;
        }
    });

    add(createHitLink(15));
    add(createHitLink(30));
    add(createHitLink(60));

    Model qModel = new Model() {

        @Override
        public Serializable getObject() {
            if (query == null)
                return "";
            String str = query;
            if (str.length() > 20)
                str = str.substring(0, 20) + "..";
            return "Find origin of '" + str + "'";
        }
    };
    findOriginLink = new LabeledLink("findOriginLink", null, qModel, false) {

        @Override
        public void onClick(AjaxRequestTarget target) {
            PageParameters pp = new PageParameters();
            pp.add("findOrigin", query);
            setResponsePage(TweetSearchPage.class, pp);
        }
    };

    add(findOriginLink);
    translateAllLink = new LabeledLink("translateAllLink", null, new Model<String>() {

        @Override
        public String getObject() {
            if (translateAll)
                return "Show original language";
            else
                // get english name of iso language chars
                return "Translate tweets into " + new Locale(toLanguage).getDisplayLanguage(new Locale("en"));
        }
    }) {

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (target == null)
                return;

            translateAll = !translateAll;
            if (!translateAll)
                translateMap.clear();
            target.addComponent(ResultsPanel.this);
        }
    };

    add(translateAllLink);
    add(createSortLink("sortRelevance", ElasticTweetSearch.RELEVANCE, "desc"));
    add(createSortLink("sortRetweets", ElasticTweetSearch.RT_COUNT, "desc"));
    add(createSortLink("sortLatest", ElasticTweetSearch.DATE, "desc"));
    add(createSortLink("sortOldest", ElasticTweetSearch.DATE, "asc"));

    add(new DialogUtilsBehavior());

    userView = new ListView("users", users) {

        @Override
        public void populateItem(final ListItem item) {
            final JUser user = (JUser) item.getModelObject();
            String name = user.getScreenName();
            if (user.getRealName() != null)
                name = user.getRealName() + "  (" + name + ")";

            LabeledLink userNameLink = new LabeledLink("userNameLink", name, false) {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    onUserClick(user.getScreenName(), null);
                }
            };
            item.add(userNameLink);
            Link showLatestTweets = new Link("profileUrl") {

                @Override
                public void onClick() {
                    onUserClick(user.getScreenName(), null);
                }
            };
            item.add(showLatestTweets.add(new ContextImage("profileImg", user.getProfileImageUrl())));

            final List<JTweet> tweets = new ArrayList<JTweet>();
            int counter = 0;
            for (JTweet tw : user.getOwnTweets()) {
                if (tweetsPerUser > 0 && counter >= tweetsPerUser)
                    break;

                tweets.add(tw);
                allTweets.put(tw.getTwitterId(), tw);
                counter++;
            }
            ListView tweetView = new ListView("tweets", tweets) {

                @Override
                public void populateItem(final ListItem item) {
                    item.add(createOneTweet("oneTweet", toLanguage).init(item.getModel(), false));
                }
            };
            item.add(tweetView);
        }
    };

    add(userView);
    WebResource export = new WebResource() {

        @Override
        public IResourceStream getResourceStream() {
            return new StringResourceStream(getTweetsAsString(), "text/plain");
        }

        @Override
        protected void setHeaders(WebResponse response) {
            super.setHeaders(response);
            response.setAttachmentHeader("tweets.txt");
        }
    };

    export.setCacheable(false);
    add(new ResourceLink("exportTsvLink", export));
    add(new Link("exportHtmlLink") {

        @Override
        public void onClick() {
            onHtmlExport();
        }
    });
}

From source file:de.jetwick.ui.SavedSearchPanel.java

License:Apache License

public SavedSearchPanel(String id) {
    super(id);/* w  ww  .java 2  s  . com*/

    tr.put(SAVED_SEARCHES, "Saved Searches");
    Link saveSearch = new IndicatingAjaxFallbackLink("saveSearch") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            SavedSearchPanel.this.onSave(target, new Date().getTime());
        }
    };
    add(saveSearch);

    AjaxFallbackLink link = new IndicatingAjaxFallbackLink("saveInfo") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            SavedSearchPanel.this.onSave(target, new Date().getTime());
        }

        @Override
        public boolean isVisible() {
            return isInitialized && savedSearches.isEmpty();
        }
    };
    add(link.setOutputMarkupId(true));

    add(new WebMarkupContainer("indicatorImage") {

        @Override
        public boolean isVisible() {
            return !isInitialized;
        }
    }.setOutputMarkupId(true));

    // don't know how to utilize IAjaxIndicatorAware + getAjaxIndicatorMarkupId() { return indicator.getMarkupId();
    //add(indicator);

    savedSearchesView = new ListView("filterValues", savedSearches) {

        @Override
        protected void populateItem(ListItem li) {
            final FacetHelper<Long> h = (FacetHelper<Long>) li.getModelObject();
            long tmp = h.value;
            final long ssId = tmp;
            Link link = new IndicatingAjaxFallbackLink("filterValueLink") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    SavedSearchPanel.this.onClick(target, ssId);
                }
            };

            String name = h.displayName;
            if (name.length() > 20)
                name = name.substring(0, 20) + "..";
            else if (name.length() < 1)
                name = "<empty>";

            if (ssId == 0)
                name = "last:" + name;

            link.add(new Label("filterValue", name));
            link.add(new AttributeAppender("title", true, new Model(h.displayName), " "));
            Label label4count = new Label("filterCount", " (" + h.count + ")");
            if (h.count < 1) {
                link.add(new AttributeAppender("class", new Model("gray"), " "));
                label4count.add(new AttributeAppender("class", new Model("gray"), " "));
            }

            li.add(label4count);
            li.add(link);

            final Dialog dialog = new Dialog("confirmation").setWidth(400)
                    .setTitle("Delete Saved Search " + name + "?");
            dialog.add(new AjaxFallbackLink("button") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    dialog.close(target);
                    SavedSearchPanel.this.onRemove(target, ssId);
                }
            });
            li.add(dialog);
            Link removeLink = new AjaxFallbackLink("removeLink") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    if (target != null)
                        dialog.open(target);
                }
            };
            li.add(removeLink);
        }
    };
    add(savedSearchesView);

    // execute one time
    add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(0.1)) {

        @Override
        protected void onPostProcessTarget(AjaxRequestTarget target) {
            updateSSCounts(target);
            isInitialized = true;
            stop();
        }
    });

    // execute forever
    add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(60)) {

        @Override
        protected void onPostProcessTarget(AjaxRequestTarget target) {
            // update count of all queries
            updateSSCounts(target);
        }
    });
}

From source file:de.jetwick.ui.TagCloudPanel.java

License:Apache License

public TagCloudPanel(String id) {
    super(id);/*from   ww  w .j  a  va  2s. c o  m*/

    tagListView = new ListView("tags", tags) {

        @Override
        public void populateItem(final ListItem item) {
            final Entry<String, Long> tag = (Entry) item.getModelObject();
            Link link = new Link("tagLink") {

                @Override
                public void onClick() {
                    onTagClick(tag.getKey());
                }
            };
            link.add(new AttributeAppender("class", new Model("var-size-" + toInt(tag.getValue())), " "));
            link.add(new AttributeAppender("title", new Model("Search '" + tag.getKey() + "'"), " "));
            link.add(new Label("tagLabel", tag.getKey()));
            item.add(link);

            // no ajax
            Link originLink = new Link("tagOrigin") {

                @Override
                public void onClick() {
                    onFindOriginClick(tag.getKey());
                }
            };
            originLink.add(new AttributeAppender("title",
                    new Model("Find origin of trend '" + tag.getKey() + "'"), " "));
            item.add(originLink);
        }
    };

    add(tagListView);
}