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:gr.abiss.calipso.wicket.ItemList.java

License:Open Source License

private void addItemsTable() {
    //if no results, don't render the empty table
    //       if(resultCount == 0){
    //          add(new WebMarkupContainer("headings").setVisible(false));
    //          add(new WebMarkupContainer("itemList").setVisible(false));          
    //          return;
    //       }// w  ww.  ja v  a 2  s .c o m

    //====================== HEADER ========================================
    final List<ColumnHeading> columnHeadings = itemSearch.getColumnHeadingsToRender();

    ListView headings = new ListView("headings", columnHeadings) {
        protected void populateItem(ListItem listItem) {
            final ColumnHeading ch = (ColumnHeading) listItem.getModelObject();
            Link headingLink = new Link("heading") {
                public void onClick() {
                    if (ch.isDbField()) {
                        doSort(ch.getNameText());
                    } // if
                }
            };

            listItem.add(headingLink);
            String label = ch.isField() ? localize(ch.getLabel()) : localize("item_list." + ch.getNameText());
            headingLink.add(new Label("heading", label));
            if (ch.getNameText().equals(itemSearch.getSortFieldName())) {
                String order = itemSearch.isSortDescending() ? "order-down" : "order-up";
                listItem.add(new SimpleAttributeModifier("class", order));
            }
        }
    };
    add(headings);

    //======================== ITEMS =======================================

    final long selectedItemId = itemSearch.getSelectedItemId();

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView itemList = new ListView("itemList", itemListModel) {
        final private Date NOW = new Date();

        protected void populateItem(ListItem listItem) {
            // cast to AbstactItem - show history may be == true
            final AbstractItem item = (AbstractItem) listItem.getModelObject();

            if (selectedItemId == item.getId()) {
                listItem.add(new SimpleAttributeModifier("class", "selected"));
            } else if (listItem.getIndex() % 2 == 1) {
                listItem.add(sam);
            }

            final boolean showHistory = itemSearch.isShowHistory();

            ListView fieldValues = new ListView("columns", columnHeadings) {
                protected void populateItem(ListItem listItem) {
                    ColumnHeading ch = (ColumnHeading) listItem.getModelObject();
                    IModel value = null;

                    Map<StdField.Field, StdFieldMask> fieldMaskMap = null;
                    if (getPrincipal() != null) {
                        Space space = getCalipso().loadSpace(item.getSpace().getId());
                        fieldMaskMap = StdFieldsUtils.getStdFieldsForSpace(getPrincipal().getStdFields(), space,
                                this);
                    }

                    if (ch.isField() && item.getCustomValue(ch.getField()) == null) {
                        logger.warn("Found field '" + ch.getNameText()
                                + "' but it has no value. Perhaps it was added after initial space creation");
                    } else if (ch.isField()) {
                        if (ch.getField().getName().isOptionsType()) {
                            value = new ResourceModel("CustomAttributeLookupValue."
                                    + item.getCustomValue(ch.getField()).toString() + ".name");
                            //                              value = new Model(item.getCustomValue(ch.getField().getName()));
                        } else if (ch.getField().getName().isDate()) {
                            value = new Model(DateUtils
                                    .format(DateUtils.convert(item.getCustomValue(ch.getField()).toString())));
                            //                              value = new Model(item.getCustomValue(ch.getField().getName()));
                        } else if (ch.getField().getName().isCountry()) {
                            value = new Model(localize("country." + item.getCustomValue(ch.getField())));
                            //                              value = new Model(item.getCustomValue(ch.getField().getName()));
                        } else if (ch.getField().getName().isUser()) {
                            value = new Model(((User) item.getCustomValue(ch.getField())).getDisplayValue());
                            //                              value = new Model(item.getCustomValue(ch.getField().getName()));
                        } else if (ch.getField().getName().isOrganization()) {
                            value = new Model(((Organization) item.getCustomValue(ch.getField())).getName());
                            //                              value = new Model(item.getCustomValue(ch.getField().getName()));
                        } else if (ch.getField().getName().isFile()) {
                            value = new ResourceModel(
                                    item.getCustomValue(ch.getField()) != null ? "asset.customAttribute.yes"
                                            : "asset.customAttribute.no");
                        } else if (ch.getField().isMultivalue()) {
                            value = new Model(MultipleValuesTextField
                                    .toHtmlSafeLines(item.getCustomValue(ch.getField()).toString()));
                        } else {
                            value = new Model(item.getCustomValue(ch.getField()).toString());
                        }
                    } else {
                        // TODO optimize if-then for performance
                        Name name = ch.getName();
                        if (name == ID) {
                            final String UniqueRefId = item.getUniqueRefId();
                            Fragment refIdFrag = new Fragment("column", "refId", ItemList.this);
                            listItem.add(refIdFrag);

                            Link refIdLink = new BreadCrumbLink("refId", getBreadCrumbModel()) {
                                protected IBreadCrumbParticipant getParticipant(String componentId) {
                                    return new ItemViewPanel(componentId, getBreadCrumbModel(), UniqueRefId);
                                }
                            };

                            refIdFrag.add(refIdLink);
                            refIdLink.add(new Label("refId", UniqueRefId));
                            if (showHistory) {
                                int index = ((History) item).getIndex();
                                if (index > 0) {
                                    refIdFrag.add(new Label("index", " (" + index + ")"));
                                } else {
                                    refIdFrag.add(new WebMarkupContainer("index").setVisible(false));
                                }
                            } else {
                                refIdFrag.add(new WebMarkupContainer("index").setVisible(false));
                            }
                            return;
                        } else if (name == SUMMARY) {
                            value = new PropertyModel(item, "summary");
                        } else if (name == DETAIL) {
                            if (showHistory) {
                                Fragment detailFrag = new Fragment("column", "detail", ItemList.this);
                                final History history = (History) item;
                                // TODO
                                //detailFrag.add(new AttachmentLinkPanel("attachment", history.getAttachment()));
                                if (history.getIndex() > 0) {
                                    detailFrag.add(new Label("detail", new PropertyModel(history, "comment")));
                                } else {
                                    detailFrag.add(new Label("detail", new PropertyModel(history, "detail")));
                                }
                                listItem.add(detailFrag);
                                return;
                            } else {
                                value = new PropertyModel(item, "detail");
                            }
                        } else if (name == LOGGED_BY) {
                            //original plain name
                            //value = new PropertyModel(item, "loggedBy.name");

                            listItem.add(new UserViewLink("column", getBreadCrumbModel(), item.getLoggedBy()));

                            return;

                        } else if (name == REPORTED_BY) {
                            listItem.add(
                                    new UserViewLink("column", getBreadCrumbModel(), item.getReportedBy()));
                            return;
                        } else if (name == STATUS) {
                            value = new PropertyModel(item, "statusValue");
                        } else if (name == ASSIGNED_TO) {
                            if (item.getAssignedTo() == null && item.getStatus() != null
                                    && item.getStatus().intValue() != State.CLOSED) {
                                listItem.add(new Label("column", localize("item.unassigned"))
                                        .add(new SimpleAttributeModifier("class", "unassigned")));
                                return;
                            } else {
                                listItem.add(
                                        new UserViewLink("column", getBreadCrumbModel(), item.getAssignedTo()));
                                return;
                            }
                            // value = new PropertyModel(item, "assignedTo.name");
                        } else if (name == TOTAL_RESPONSE_TIME) {
                            value = new PropertyModel(item, "totalResponseTime");
                        } else if (name == TIME_FROM_CREATION_TO_FIRST_REPLY) {
                            if ((fieldMaskMap != null
                                    && fieldMaskMap
                                            .get(StdField.Field.TIME_FROM_CREATION_TO_FIRST_REPLY) != null
                                    && !fieldMaskMap.get(StdField.Field.TIME_FROM_CREATION_TO_FIRST_REPLY)
                                            .getMask().equals(StdFieldMask.Mask.HIDDEN))) {
                                value = new Model(ItemUtils.formatEffort(item.getTimeFromCreationToFirstReply(),
                                        localize("item_list.days"), localize("item_list.hours"),
                                        localize("item_list.minutes")));
                            } //if
                            else {
                                value = new Model(localize("fieldAccess.noReadAccess"));
                            }
                        } else if (name == TIME_FROM_CREATION_TO_CLOSE) {
                            if ((fieldMaskMap != null
                                    && fieldMaskMap.get(StdField.Field.TIME_FROM_CREATION_TO_CLOSE) != null
                                    && !fieldMaskMap.get(StdField.Field.TIME_FROM_CREATION_TO_CLOSE).getMask()
                                            .equals(StdFieldMask.Mask.HIDDEN))) {
                                value = new Model(ItemUtils.formatEffort(item.getTimeFromCreationToClose(),
                                        localize("item_list.days"), localize("item_list.hours"),
                                        localize("item_list.minutes")));
                            } //if
                            else {
                                value = new Model(localize("fieldAccess.noReadAccess"));
                            }
                        } else if (name == PLANNED_EFFORT) {
                            if ((fieldMaskMap != null && fieldMaskMap.get(StdField.Field.PLANNED_EFFORT) != null
                                    && !fieldMaskMap.get(StdField.Field.PLANNED_EFFORT).getMask()
                                            .equals(StdFieldMask.Mask.HIDDEN))) {
                                value = new Model("");
                                if (item.getPlannedEffort() != null) {
                                    //value = new Model(ItemUtils.formatEffort(item.getPlannedEffort() * 60 , localize("item_list.days"), localize("item_list.hours"), localize("item_list.minutes")));
                                    value = new Model(new Effort(item.getPlannedEffort()).formatEffort(
                                            localize("item_list.days"), localize("item_list.hours"),
                                            localize("item_list.minutes")));
                                } //if
                            } //if
                            else {
                                value = new Model(localize("fieldAccess.noReadAccess"));
                            }
                        } else if (name == DUE_TO) {
                            //logger.info("fieldMaskMap.get(StdField.Field.DUE_TO): "+fieldMaskMap.get(StdField.Field.DUE_TO));
                            if ((fieldMaskMap != null && fieldMaskMap.get(StdField.Field.DUE_TO) != null
                                    && !fieldMaskMap.get(StdField.Field.DUE_TO).getMask()
                                            .equals(StdFieldMask.Mask.HIDDEN))) {
                                //logger.info("DUE_TO 1");
                                // value = new Model(DateUtils.format(item.getDueTo()));
                                // if not closed yet
                                if (item.getStatus() != State.CLOSED) {
                                    //logger.info("DUE_TO 2");
                                    value = new Model(HumanTimeDurationConverter.denormalize(
                                            item.getDueToUserFriendly(NOW), this.getLocalizer(), this));
                                    // add style if needed
                                    if (item.getDueTo() != null
                                            && item.getDueTo().before(Calendar.getInstance().getTime())) {
                                        //logger.info("DUE_TO 3");
                                        listItem.add(new SimpleAttributeModifier("class", "dueToDate-alarm"));
                                    } //if
                                    else if (item.getDueTo() != null && item.getPlannedEffort() != null
                                            && item.getDueTo().after(NOW)) {
                                        //logger.info("DUE_TO 4");
                                        DateTime dueToDateTime = new DateTime(item.getDueTo());
                                        DateTime nowDateTime = new DateTime(NOW);
                                        long restTimeToDueTo = DateTime.diff(nowDateTime, dueToDateTime)
                                                .inSeconds() / 60;
                                        if (restTimeToDueTo < item.getPlannedEffort().longValue()) {
                                            //logger.info("DUE_TO 5");
                                            listItem.add(
                                                    new SimpleAttributeModifier("class", "dueToDate-warning"));
                                        } //if
                                    }
                                } else {
                                    //logger.info("DUE_TO 6");
                                    value = new Model("-");
                                }
                            } //if
                            else {
                                value = new Model(localize("fieldAccess.noReadAccess"));
                            } //else

                        } else if (name == ASSET_TYPE) {
                            ItemAssetTypesPanel itemAssetTypesPanel = new ItemAssetTypesPanel("assetTypesPanel",
                                    item);
                            Fragment assetTypesFragment = new Fragment("column", "assetTypesFragment",
                                    ItemList.this);
                            assetTypesFragment.add(itemAssetTypesPanel);
                            listItem.add(assetTypesFragment);
                            return;
                        } else if (name == TIME_STAMP) {
                            value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp()));
                        } else if (name == SPACE) {
                            if (showHistory) {
                                value = new PropertyModel(item, "parent.space.name");
                            } else {
                                value = new PropertyModel(item, "space.name");
                            }
                        } else {
                            throw new RuntimeException("Unexpected name: '" + name + "'");
                        }
                    }
                    Label columnValue = new Label("column", value);
                    if (ch.getName() == TIME_STAMP || (ch.isField() && ch.getField().getName().isDate())) {
                        columnValue.add(new SimpleAttributeModifier("class", "date"));
                    }
                    listItem.add(columnValue);
                }
            };
            listItem.add(fieldValues);
        }
    };
    add(itemList);

    //The no "data found message" should have as "colspan" value, the number of the columns of the results table 
    if (resultCount == 0) {
        WebMarkupContainer noData = new WebMarkupContainer("noData");
        add(noData);
        WebMarkupContainer noDataCell = new WebMarkupContainer("noDataCell");
        noDataCell.add(new SimpleAttributeModifier("colspan", String.valueOf(columnHeadings.size())));
        noData.add(noDataCell);
    } else {
        add(new WebMarkupContainer("noData").setVisible(false));
    }
}

From source file:gr.abiss.calipso.wicket.ItemSearchForm.java

License:Open Source License

private void addComponents() {
    final Form form = new Form("form");
    Space space = getCurrentSpace();/*w  w w  .j av a2s .  com*/
    final boolean hideSummary = space != null && !space.isItemSummaryEnabled();
    add(form);
    form.add(new FeedbackPanel("feedback"));
    form.setModel(new CompoundPropertyModel(itemSearch));
    List<Integer> sizes = Arrays.asList(new Integer[] { 5, 10, 15, 25, 50, 100 });
    DropDownChoice pageSizeChoice = new DropDownChoice("pageSize", sizes, new IChoiceRenderer() {
        public Object getDisplayValue(Object o) {
            return ((Integer) o) == -1 ? localize("item_search_form.noLimit") : o.toString();
        }

        public String getIdValue(Object o, int i) {
            return o.toString();
        }
    });
    form.add(pageSizeChoice);
    //form label for page size
    pageSizeChoice.setLabel(new ResourceModel("item_search_form.resultsPerPage"));
    form.add(new SimpleFormComponentLabel("pageSizeLabel", pageSizeChoice));

    //showHistoryLabel
    CheckBox showHistoryCheckBox = new CheckBox("showHistory");
    form.add(showHistoryCheckBox);
    //form label for showHistoryLabel
    showHistoryCheckBox.setLabel(new ResourceModel("item_search_form.showHistory"));
    form.add(new SimpleFormComponentLabel("showHistoryLabel", showHistoryCheckBox));

    form.add(new Button("search") {
        @Override
        public void onSubmit() {
            String refId = itemSearch.getRefId();
            if (refId != null) {
                // user can save typing by entering the refId number without the space prefixCode
                // and the space sequence number.
                // User also search by item number without to select a space. 
                try {
                    long id = Long.parseLong(refId);
                    //Load item in order to get first and last part from item  
                    Item item = getCalipso().loadItem(id);

                    //If item doesn't exists
                    if (item == null) {
                        //Set a dummy value, in order to raise "item not found" instead of "Invalid reference id" 
                        refId = "0-0-0";
                    } //if
                    else {
                        refId = item.getUniqueRefId();
                    } //else
                } catch (Exception e) {
                    // oops that didn't work, continue
                }

                try {
                    new ItemRefId(refId);
                } catch (InvalidRefIdException e) {
                    form.error(localize("item_search_form.error.refId.invalid"));
                    return;
                }
                final Item item = getCalipso().loadItem(Item.getItemIdFromUniqueRefId(refId));
                if (item == null) {
                    form.error(localize("item_search_form.error.refId.notFound"));
                    return;
                }
                setCurrentItemSearch(itemSearch);
                activate(new IBreadCrumbPanelFactory() {
                    public BreadCrumbPanel create(String componentId, IBreadCrumbModel breadCrumbModel) {
                        return new ItemViewPanel(componentId, breadCrumbModel, item.getUniqueRefId());
                    }

                });
                return;
            }
            String searchText = itemSearch.getSearchText();
            if (searchText != null) {
                if (!getCalipso().validateTextSearchQuery(searchText)) {
                    form.error(localize("item_search_form.error.summary.invalid"));
                    return;
                }
            }
            setCurrentItemSearch(itemSearch);
            activate(new IBreadCrumbPanelFactory() {
                public BreadCrumbPanel create(String componentId, IBreadCrumbModel breadCrumbModel) {
                    return new ItemListPanel(componentId, breadCrumbModel);
                }
            });
        }
    });
    form.add(new Link("expandAll") {
        public void onClick() {
            expandAll = true;
        }

        @Override
        public boolean isVisible() {
            return !expandAll;
        }
    });

    form.add(new ListView("columns", itemSearch.getColumnHeadings()) {
        protected void populateItem(final ListItem listItem) {
            final ColumnHeading ch = (ColumnHeading) listItem.getModelObject();
            boolean enabled = true;
            if (ch.getName() != null && ch.getName().equals(SUMMARY) && hideSummary) {
                enabled = false;
            }

            String label = ch.isField() ? localize(ch.getLabel()) : localize("item_list." + ch.getNameText());

            CheckBox visibleCheckBox = new CheckBox("visible", new PropertyModel(ch, "visible"));
            visibleCheckBox.setEnabled(enabled);

            listItem.add(visibleCheckBox);

            //form Label
            visibleCheckBox.setLabel(new ResourceModel("", label));
            listItem.add(new SimpleFormComponentLabel("columnLabel", visibleCheckBox));

            List<Expression> validExpressions = ch.getValidFilterExpressions();
            DropDownChoice expressionChoice = new IndicatingDropDownChoice("expression", validExpressions,
                    new IChoiceRenderer() {
                        public Object getDisplayValue(Object o) {
                            String key = ((Expression) o).getKey();
                            return localize("item_filter." + key);
                        }

                        public String getIdValue(Object o, int i) {
                            return ((Expression) o).getKey();
                        }
                    });
            expressionChoice.setEnabled(enabled);
            if (ch.getName() == ID) {
                ch.getFilterCriteria().setExpression(Expression.EQ);
            }
            Component fragParent = null;

            if (expandAll) {
                ch.getFilterCriteria().setExpression(validExpressions.get(0));
                fragParent = ch.getFilterUiFragment(form, getPrincipal(), getCurrentSpace(), getCalipso());
            } else {
                fragParent = getFilterUiFragment(form, ch);
            }

            fragParent.setOutputMarkupId(true);
            listItem.add(fragParent);
            expressionChoice.setModel(new PropertyModel(ch.getFilterCriteria(), "expression"));
            expressionChoice.setNullValid(true);
            listItem.add(expressionChoice);
            expressionChoice.add(new AjaxFormComponentUpdatingBehavior("onChange") {
                protected void onUpdate(AjaxRequestTarget target) {
                    if (!ch.getFilterCriteria().requiresUiFragmentUpdate()) {
                        return;
                    }

                    Component fragment = getFilterUiFragment(form, ch);
                    fragment.setOutputMarkupId(true);
                    listItem.replace(fragment);
                    target.addComponent(fragment);
                    target.appendJavaScript(
                            "document.getElementById('" + fragment.getMarkupId() + "').focus()");
                }
            });
        }
    });
}

From source file:gr.abiss.calipso.wicket.ItemView.java

License:Open Source License

private void addComponents(ItemRenderingTemplate tmpl, final Item item) {
    //Edit item is only possible for "global" administrator and current space administrator
    User currentUser = getPrincipal();/*from w ww  .  j  a v a 2s .  c  o m*/
    Space currentSpace = getCurrentSpace();
    if (tmpl != null && tmpl.getShowSpaceName()) {
        add(new Label("title", this.localize(currentSpace)));
    } else {
        add(new Label("title", "").setVisible(false));
    }

    WebMarkupContainer editContainer = new WebMarkupContainer("editContainer");
    add(editContainer.setRenderBodyOnly(true));
    editContainer.add(new Link("edit") {
        @Override
        public void onClick() {
            //breadcrum must be activated in the active panel, that is ItemViewPanel
            ((BreadCrumbPanel) getBreadCrumbModel().getActive()).activate(new IBreadCrumbPanelFactory() {
                @Override
                public BreadCrumbPanel create(String componentId, IBreadCrumbModel breadCrumbModel) {
                    return new ItemFormPanel(componentId, breadCrumbModel, item.getId());
                }
            });
        }
    });
    editContainer.setVisible(currentUser.isGlobalAdmin() || currentUser.isSpaceAdmin(currentSpace));
    if (hideLinks) {
        editContainer.setVisible(false);
    }

    add(new Link("printToPdf") {
        @Override
        public void onClick() {
            // TODO: pickup print template from DB if appropriate
            // TODO: is this needed?
            //panels that change with navigation
            //ItemViewPage itemViewPage = new ItemViewPage(refId, null);
            String markup = "error generating report";
            CharSequence resultCharSequence = renderPageHtmlInNewRequestCycle(ItemTemplateViewPage.class,
                    new PageParameters("0=" + item.getUniqueRefId()));

            markup = resultCharSequence.toString();
            if (StringUtils.isNotBlank(markup)) {
                markup = markup.replaceFirst("../../logo.png", "logo.png").replaceFirst("../logo.png",
                        "logo.png");
            }

            // logger.info("printToPdf: " + markup);
            getRequestCycle().scheduleRequestHandlerAfterCurrent(

                    new PdfRequestTarget(PdfUtils.getPdf(getCalipso(), item, markup, ItemView.this),
                            item.getRefId()));
        }
    });

    String refId = item.getUniqueRefId();

    Link refIdLink = new BookmarkablePageLink("uniqueRefId", ItemViewPage.class,
            new PageParameters("0=" + refId));
    add(refIdLink.add(new Label("uniqueRefId", refId)));

    //Relate Link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    WebMarkupContainer relatedContainer = new WebMarkupContainer("relatedContainer");
    add(relatedContainer);
    RelateLink relateLink1 = new RelateLink("relate1", item, getBreadCrumbModel(), currentUser, ItemView.this);
    //relateLink1.setVisible(!hideLinks);
    relatedContainer.add(relateLink1);

    if (currentUser.hasRegularRoleForSpace(item.getSpace())) {
        relatedContainer.setVisible(true);
    } else {
        relatedContainer.setVisible(false);
    }
    if (item.getRelatedItems() != null) {
        add(new ListView("relatedItems", new ArrayList(item.getRelatedItems())) {
            @Override
            protected void populateItem(ListItem listItem) {
                final ItemItem itemItem = (ItemItem) listItem.getModelObject();
                String message = null;
                if (itemItem.getType() == DUPLICATE_OF) {
                    message = localize("item_view.duplicateOf");
                } else if (itemItem.getType() == DEPENDS_ON) {
                    message = localize("item_view.dependsOn");
                } else if (itemItem.getType() == RELATED) {
                    message = localize("item_view.relatedTo");
                }
                final String refId = itemItem.getRelatedItem().getUniqueRefId();
                if (hideLinks) {
                    message = message + " " + refId;
                }
                listItem.add(new Label("message", message));
                Link link = new Link("link") {
                    @Override
                    public void onClick() {
                        setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId));
                    }
                };
                link.add(new Label("refId", refId));
                link.setVisible(!hideLinks);
                listItem.add(link);
                listItem.add(new Link("remove") {
                    @Override
                    public void onClick() {
                        setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem));
                    }
                }.setVisible(!hideLinks));
            }
        });
    } else {
        add(new WebMarkupContainer("relatedItems").setVisible(false));
    }

    if (item.getRelatingItems() != null) {
        add(new ListView("relatingItems", new ArrayList(item.getRelatingItems())) {
            @Override
            protected void populateItem(ListItem listItem) {
                final ItemItem itemItem = (ItemItem) listItem.getModelObject();
                // this looks very similar to related items block above
                // but the display strings could be different and in future handling of the 
                // inverse of the bidirectional link could be different as well                    
                String message = null;
                if (itemItem.getType() == DUPLICATE_OF) {
                    message = localize("item_view.duplicateOfThis");
                } else if (itemItem.getType() == DEPENDS_ON) {
                    message = localize("item_view.dependsOnThis");
                } else if (itemItem.getType() == RELATED) {
                    message = localize("item_view.relatedToThis");
                }
                //                    final String refId = itemItem.getItem().getRefId();
                final String refId = itemItem.getItem().getUniqueRefId();
                if (hideLinks) {
                    message = refId + " " + message;
                }
                listItem.add(new Label("message", message));
                Link link = new Link("link") {
                    @Override
                    public void onClick() {
                        setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId));
                    }
                };
                link.add(new Label("refId", refId));
                link.setVisible(!hideLinks);
                listItem.add(link);
                listItem.add(new Link("remove") {
                    @Override
                    public void onClick() {
                        setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem));
                    }
                }.setVisible(!hideLinks));
            }
        });
    } else {
        add(new WebMarkupContainer("relatingItems").setVisible(false));
    }

    add(new Label("status", new PropertyModel(item, "statusValue")));

    //user profile view link
    add(new UserViewLink("loggedBy", getBreadCrumbModel(), item.getLoggedBy())
            .setVisible(!getPrincipal().isAnonymous()));

    if (item.getAssignedTo() != null) {
        add(new UserViewLink("assignedTo", getBreadCrumbModel(), item.getAssignedTo())
                .setVisible(!getPrincipal().isAnonymous()));
    } else {
        Label assignedToLabel = new Label("assignedTo", localize("item.unassigned"));
        if (item.getStatus() != State.CLOSED) {
            assignedToLabel.add(new SimpleAttributeModifier("class", "unassigned"));
        }
        add(assignedToLabel);
    }

    add(new UserViewLink("reportedBy", getBreadCrumbModel(), item.getReportedBy()));

    WebMarkupContainer summaryContainer = new WebMarkupContainer("summaryContainer");
    summaryContainer.add(new Label("summary", new PropertyModel(item, "summary")));
    add(summaryContainer.setVisible(item.getSpace().isItemSummaryEnabled()));

    //detail commented out
    //add(new Label("detail", new PropertyModel(item, "detail")).setEscapeModelStrings(false));

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");
    // All custom fields of the fields that belong to the item and are viewable for 
    // the session user
    final Map<Field.Name, Field> viewableFieldsMap = item.getViewableFieldMap(currentUser);

    // pick up the non-file fields from the list above and put them here for a list view
    final List<Field> noFileViewableFieldNamesList = new ArrayList<Field>();
    // Separate list view for files
    List<Field> fileViewableFieldNamesList = new ArrayList<Field>();
    List<Field> simpleAtachmentViewableFieldNamesList = new ArrayList<Field>();
    for (Field field : viewableFieldsMap.values()) {
        if (!field.getName().isFile()) { // is not file and not hidden (since we got it from getViewbleFieldList)
            noFileViewableFieldNamesList.add(field);
        } else { // if file and not simple attachment, keep for later simpleAtachmentViewableFieldNamesList
            if (field.getName().getText().equals(Field.FIELD_TYPE_SIMPLE_ATTACHEMENT)) {
                simpleAtachmentViewableFieldNamesList.add(field);
            } else {
                fileViewableFieldNamesList.add(field);
            }
        }
    }
    Metadata metadata = getCalipso().getCachedMetadataForSpace(item.getSpace());
    final SimpleDateFormat dateFormat = metadata.getDateFormat(Metadata.DATE_FORMAT_LONG);
    List<FieldGroup> fieldGroupsList = metadata.getFieldGroups();
    @SuppressWarnings("unchecked")
    ListView fieldGroups = new ListView("fieldGroups", fieldGroupsList) {

        @Override
        protected void populateItem(ListItem listItem) {
            // get group
            FieldGroup fieldGroup = (FieldGroup) listItem.getModelObject();
            listItem.add(new Label("fieldGroupLabel", fieldGroup.getName()));
            List<Field> groupFields = fieldGroup.getFields();
            List<Field> viewbleFieldGroups = new LinkedList<Field>();
            // get group fields
            if (CollectionUtils.isNotEmpty(groupFields)) {
                for (Field field : groupFields) {
                    // is viewalble?
                    if (noFileViewableFieldNamesList.contains(field)) {
                        viewbleFieldGroups.add(field);
                    }
                }
            }
            ListView listView = new ListView("fields", viewbleFieldGroups) {
                @Override
                @SuppressWarnings("deprecation")
                protected void populateItem(ListItem listItem) {
                    addFieldValueDisplay(item, sam, dateFormat, listItem);
                }
            };
            if (viewbleFieldGroups.isEmpty()) {
                listItem.setVisible(false);
            }
            listView.setReuseItems(true);
            listItem.add(listView.setRenderBodyOnly(true));

        }

    };
    add(fieldGroups);

    // Iterates custom fields than are not type file
    //        add(new ListView("CustomFieldsListView", noFileViewableFieldNamesList) {
    //            protected void populateItem(ListItem listItem) {
    //                addFieldValueDisplay(item, sam, dateFormat, listItem);
    //            }
    //
    //         
    //        });

    if (fileViewableFieldNamesList.size() > 0) {
        // add custom field type file label
        add(new Label("fileFieldLabel", localize("files")));
        //add values for custom fields type file
        // check for if doesn't exist custom field type file
        // TODO: user should upload a file for every customField type file
        // get Attachments
        ArrayList<Attachment> itemAttachments = item.getAttachments() != null
                ? new ArrayList<Attachment>(item.getAttachments())
                : new ArrayList();
        //logger.info("Files to render: "+itemAttachments.size());
        ListView fileCustomFieldsListView = new ListView("fileCustomFieldsListView", itemAttachments) {
            @Override
            protected void populateItem(ListItem listItem) {
                Attachment tmpAttachment = (Attachment) listItem.getModelObject();
                listItem.add(new AttachmentDownLoadableLinkPanel("fileLink", tmpAttachment));
            }
        };
        add(fileCustomFieldsListView);
    } else {
        // add empty label
        add(new EmptyPanel("fileCustomFieldsListView").setVisible(false));
        // add custom field type file label
        add(new Label("fileFieldLabel", localize("files")));
    }

    // TODO: Dont think this actually checks for user roles rights within the State scope, 
    // plus the *readable* fields are needed instead to feed the historyEntry ("history" ListView) bellow
    //final List<Field> editable = item.getSpace().getMetadata().getEditableFields();
    final List<Field> readable = item.getSpace().getMetadata()
            .getReadableFields(currentUser.getSpaceRoles(item.getSpace()), item.getStatus());
    add(new ListView("labels", readable) {
        @Override
        protected void populateItem(ListItem listItem) {
            Field field = (Field) listItem.getModelObject();
            listItem.add(new Label("label", field.getLabel()));
        }
    });

    currentUser.setRoleSpaceStdFieldList(getCalipso().findSpaceFieldsForUser(currentUser));
    Map<StdField.Field, StdFieldMask> fieldMaskMap = currentUser.getStdFieldsForSpace(currentSpace);

    //Get user fields
    List<RoleSpaceStdField> stdFields = currentUser.getStdFields();

    //Standard fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //List of standard Fields
    List<RoleSpaceStdField> standardFields = StdFieldsUtils.filterFieldsBySpace(stdFields, fieldMaskMap,
            currentSpace);

    //Render Standard field
    add(new ListView("stdFields", standardFields) {
        @Override
        protected void populateItem(ListItem listItem) {
            RoleSpaceStdField stdField = (RoleSpaceStdField) listItem.getModelObject();
            boolean invisible = stdField.getStdField().getField().getFieldType().getType()
                    .equals(StdFieldType.Type.ASSET)
                    || stdField.getStdField().getField().getFieldType().getType()
                            .equals(StdFieldType.Type.ASSETTYPE)
                    || stdField.getStdField().getField().equals(StdField.Field.ACTUAL_EFFORT);

            listItem.add(new Label("label", localize("field." + stdField.getStdField().getField().getName()))
                    .setVisible(!invisible));
            IModel value = new Model("");

            if (stdField.getStdField().getField().getFieldType().getType()
                    .equals(StdFieldType.Type.STATISTIC)) {
                Method method = null;
                ReflectionUtils.buildFromProperty("get", stdField.getStdField().getField().getName());

                try {
                    method = item.getClass().getMethod(ReflectionUtils.buildFromProperty("get",
                            stdField.getStdField().getField().getName()));
                    value = new Model(ItemUtils.formatEffort(method.invoke(item), localize("item_list.days"),
                            localize("item_list.hours"), localize("item_list.minutes")));
                } catch (NoSuchMethodException noSuchMethodException) {
                    logger.error(noSuchMethodException);
                } catch (InvocationTargetException invocationTargetException) {
                    logger.error(invocationTargetException);
                } catch (IllegalAccessException illegalAccessException) {
                    logger.error(illegalAccessException);
                }
            } else if (stdField.getStdField().getField().getFieldType().getType()
                    .equals(StdFieldType.Type.INFO)) {
                if (stdField.getStdField().getField().equals(StdField.Field.DUE_TO)) {
                    value = new Model(new StringBuffer().append(DateUtils.format(item.getStateDueTo()))
                            .append(" / ").append(DateUtils.format(item.getDueTo())).toString());
                    if (item.getStatus() != State.CLOSED) {
                        if (item.getDueTo() != null
                                && item.getDueTo().before(Calendar.getInstance().getTime())) {
                            listItem.add(new SimpleAttributeModifier("class", "dueToDate-alarm"));
                        } //if
                        else if (item.getDueTo() != null && item.getPlannedEffort() != null
                                && item.getDueTo().after(Calendar.getInstance().getTime())) {
                            DateTime dueToDateTime = new DateTime(item.getDueTo());
                            DateTime nowDateTime = new DateTime(Calendar.getInstance().getTime());
                            long restTimeToDueTo = DateTime.diff(nowDateTime, dueToDateTime).inSeconds() / 60;
                            if (restTimeToDueTo < item.getPlannedEffort().longValue()) {
                                listItem.add(new SimpleAttributeModifier("class", "dueToDate-warning"));
                            } //if
                        }
                    }
                } //if
                else if (stdField.getStdField().getField().equals(StdField.Field.PLANNED_EFFORT)) {
                    if (item.getPlannedEffort() != null) {
                        value = new Model(
                                new Effort(item.getPlannedEffort()).formatEffort(localize("item_list.days"),
                                        localize("item_list.hours"), localize("item_list.minutes")));
                    }
                }
            }

            listItem.add(new Label("value", value).setVisible(!invisible));
        }
    });

    //Assets ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //Space is integrated with asset or space is not but was perhaps in the past integrated and at least one asset was bind with this item
    boolean userCanViewAssets = fieldMaskMap.get(StdField.Field.ASSET) != null
            && !fieldMaskMap.get(StdField.Field.ASSET).getMask().equals(StdFieldMask.Mask.HIDDEN);
    boolean spaceIsUIntegratedWithAsset = item.getSpace().isAssetEnabled();
    boolean userCanUpdateAssets = fieldMaskMap.get(StdField.Field.ASSET) != null
            && fieldMaskMap.get(StdField.Field.ASSET).getMask().equals(StdFieldMask.Mask.UPDATE);
    boolean userCanAdministrateAssetsForSpace = currentUser != null && currentUser.getId() != 0
            && (currentUser.isGlobalAdmin() || currentUser.isSpaceAdmin(currentSpace));
    boolean userCanSeeComments = currentUser.hasRegularRoleForSpace(currentSpace)
            || (currentSpace.getItemVisibility().equals(Space.ITEMS_VISIBLE_TO_LOGGEDIN_REPORTERS)
                    && currentUser.isGuestForSpace(currentSpace));
    if (userCanSeeComments) {
        // show history?
        userCanSeeComments = !(tmpl != null && tmpl.getHideHistory().booleanValue());
    }
    WebMarkupContainer assetsContainer = new WebMarkupContainer("assetsContainer");
    add(assetsContainer.setRenderBodyOnly(true));
    ItemAssetsPanel itemAssetsPanel = new ItemAssetsPanel("itemAssetsViewPanel", item);

    WebMarkupContainer editAssetContainer = new WebMarkupContainer("editAssetContainer");
    add(editContainer.setRenderBodyOnly(true));

    editAssetContainer.add(new Link("editAsset") {
        @Override
        public void onClick() {
            //breadCrumb must be activated in the active panel, that is ItemViewPanel
            ((BreadCrumbPanel) getBreadCrumbModel().getActive()).activate(new IBreadCrumbPanelFactory() {
                @Override
                public BreadCrumbPanel create(String componentId, IBreadCrumbModel breadCrumbModel) {
                    return new ItemAssetFormPanel(componentId, breadCrumbModel, item.getId());
                }
            });
        }
    });
    editAssetContainer.setVisible(userCanUpdateAssets);
    assetsContainer.add(editAssetContainer);

    if (hideLinks) {
        editAssetContainer.setVisible(false);
    }
    // --- Link to Asset administration for assets 
    SpaceAssetAdminLink spaceAssetAdminLink = new SpaceAssetAdminLink("asset", getBreadCrumbModel()) {
        @Override
        public void onLinkActivate() {
            //do nothing
        }
    };
    assetsContainer.add(spaceAssetAdminLink);
    spaceAssetAdminLink.setVisible(userCanAdministrateAssetsForSpace);
    if (hideLinks) {
        spaceAssetAdminLink.setVisible(false);
    }
    //Case 1:
    //Current space is integrated with assets and user can view these assets
    //Case 2:
    //Current space is NOT integrated with assets BUT was integrated with assets in the past and user can view these assets
    //============
    //Pseudo code:
    //============
    // if (Case 1 OR Case 2) then 
    //   showAssets();
    // fi
    // else
    //   doNotShowAssets();
    // esle

    boolean itemInvolvesAssets = itemAssetsPanel.getItemAssets() != null
            && itemAssetsPanel.getItemAssets().size() > 0;
    if ((spaceIsUIntegratedWithAsset && userCanViewAssets)
            || (!spaceIsUIntegratedWithAsset && itemInvolvesAssets && userCanViewAssets)) {
        itemAssetsPanel.renderItemAssets();
        assetsContainer.add(itemAssetsPanel);
    } //if
    else {
        assetsContainer.setVisible(false);
    } //else

    WebMarkupContainer historyContainer = new WebMarkupContainer("historyContainer");

    historyContainer.add(new WebMarkupContainer("historyComment").setVisible(userCanSeeComments));
    if (item.getHistory() != null && userCanSeeComments) {
        List<History> history = new ArrayList(item.getHistory());
        historyContainer.add(new ListView("history", history) {
            @Override
            protected void populateItem(ListItem listItem) {
                final History h = (History) listItem.getModelObject();

                //First history entry is empty => Add item detail to first history item for view harmonization.  
                if (listItem.getIndex() == 0) {
                    h.setComment(item.getDetail());
                    h.setHtmlComment(item.getHtmlDetail());
                }
                HistoryEntry historyEntry = new HistoryEntry("historyEntry", getBreadCrumbModel(), h, readable);
                if (listItem.getIndex() % 2 == 0) {
                    historyEntry.add(sam);
                }
                listItem.add(historyEntry);
            }
        }.setRenderBodyOnly(true));
    } else {
        historyContainer.add(new WebMarkupContainer("history").add(new WebMarkupContainer("historyEntry")));
        historyContainer.setVisible(false);
    }
    add(historyContainer);

}

From source file:gr.abiss.calipso.wicket.OrganizationListPanel.java

License:Open Source License

private void addComponents(IModel assetTypes) {
    ////////////////
    // Pagination //
    ////////////////

    PaginationPanel paginationPanel = new PaginationPanel("paginationPanel", getBreadCrumbModel(),
            this.organizationSearch) {
        IBreadCrumbPanelFactory breadCrumbPanelFactory = new IBreadCrumbPanelFactory() {
            public BreadCrumbPanel create(String id, IBreadCrumbModel breadCrumbModel) {
                //Remove last breadcrumb participant
                if (breadCrumbModel.allBreadCrumbParticipants().size() > 0) {
                    breadCrumbModel.allBreadCrumbParticipants()
                            .remove(breadCrumbModel.allBreadCrumbParticipants().size() - 1);
                } //if

                return new OrganizationListPanel(getBreadCrumbModel().getActive().getComponent().getId(),
                        getBreadCrumbModel(), OrganizationListPanel.this.organizationSearch);
            }/*from  w  w  w.j  av a2 s  . c om*/
        };

        public void onNextPageClick() {
            activate(breadCrumbPanelFactory);
        }

        public void onPreviousPageClick() {
            activate(breadCrumbPanelFactory);
        }

        public void onPageNumberClick() {
            activate(breadCrumbPanelFactory);
        }
    };

    add(paginationPanel);

    /////////////////
    // List header //
    /////////////////

    List<String> columnHeaders = this.organizationSearch.getColumnHeaders();

    ListView headings = new ListView("headings", columnHeaders) {
        protected void populateItem(ListItem listItem) {
            final String header = (String) listItem.getModelObject();

            Link headingLink = new Link("heading") {
                public void onClick() {
                    OrganizationListPanel.this.organizationSearch.doSort(header);
                }
            };
            listItem.add(headingLink);
            String label = localize("organization." + header);
            headingLink.add(new Label("heading", label));
            if (header.equals(OrganizationListPanel.this.organizationSearch.getSortFieldName())) {
                String order = OrganizationListPanel.this.organizationSearch.isSortDescending() ? "order-down"
                        : "order-up";
                listItem.add(new SimpleAttributeModifier("class", order));
            }
        }
    };

    add(headings);

    /////////////////////
    // Asset Type List //
    /////////////////////

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView listView = new ListView("organizationList", assetTypes) {
        protected void populateItem(ListItem listItem) {
            final Organization organization = (Organization) listItem.getModelObject();

            if (selectedOrganizationId == organization.getId()) {
                listItem.add(new SimpleAttributeModifier("class", "selected"));
            } else if (listItem.getIndex() % 2 != 0) {
                listItem.add(sam);
            } //if

            //listItem.add(new Label("description", organization.getName()));
            listItem.add(new OrganizationViewLink("description", getBreadCrumbModel(), organization));
            listItem.add(new Label("address", organization.getAddress()));
            listItem.add(new Label("zip", organization.getZip()));
            listItem.add(new Label("country", localize(organization.getCountry())));
            listItem.add(new Label("phone", organization.getPhone()));
            String url = organization.getWeb();
            if (StringUtils.isNotEmpty(url)) {
                Label webLink = new Label("web", url);
                webLink.add(new SimpleAttributeModifier("href", url));
                listItem.add(webLink);
            } else {
                listItem.add(new Label("web", "").setVisible(false));
            }

            listItem.add(new BreadCrumbLink("edit", getBreadCrumbModel()) {
                @Override
                protected IBreadCrumbParticipant getParticipant(String id) {
                    return new OrganizationFormPanel(id, getBreadCrumbModel(),
                            getCalipso().loadOrganization(organization.getId()));
                }

            });

        }//populateItem
    };//ListView      
    add(listView);
}

From source file:gr.abiss.calipso.wicket.regexp.ValidationExpressionListPanel.java

License:Open Source License

private void addComponents(IModel validationExpressions) {
    ////////////////
    // Pagination //
    ////////////////

    PaginationPanel paginationPanel = new PaginationPanel("paginationPanel", getBreadCrumbModel(),
            this.validationExpressionSearch) {
        IBreadCrumbPanelFactory breadCrumbPanelFactory = new IBreadCrumbPanelFactory() {
            public BreadCrumbPanel create(String id, IBreadCrumbModel breadCrumbModel) {
                //Remove last breadcrumb participant
                if (breadCrumbModel.allBreadCrumbParticipants().size() > 0) {
                    breadCrumbModel.allBreadCrumbParticipants()
                            .remove(breadCrumbModel.allBreadCrumbParticipants().size() - 1);
                } //if

                return new ValidationExpressionListPanel(
                        getBreadCrumbModel().getActive().getComponent().getId(), getBreadCrumbModel(),
                        ValidationExpressionListPanel.this.validationExpressionSearch);
            }//from w w  w  .j  a  va  2s .c  o  m
        };

        public void onNextPageClick() {
            activate(breadCrumbPanelFactory);
        }

        public void onPreviousPageClick() {
            activate(breadCrumbPanelFactory);
        }

        public void onPageNumberClick() {
            activate(breadCrumbPanelFactory);
        }
    };

    add(paginationPanel);

    List<String> columnHeaders = this.validationExpressionSearch.getColumnHeaders();

    ListView headings = new ListView("headings", columnHeaders) {
        protected void populateItem(ListItem listItem) {
            final String header = (String) listItem.getModelObject();

            Link headingLink = new Link("heading") {
                public void onClick() {
                    ValidationExpressionListPanel.this.validationExpressionSearch.doSort(header);
                }
            };
            listItem.add(headingLink);
            String label = localize("validation_Expression." + header);
            headingLink.add(new Label("heading", label));
            if (header
                    .equals(ValidationExpressionListPanel.this.validationExpressionSearch.getSortFieldName())) {
                String order = ValidationExpressionListPanel.this.validationExpressionSearch.isSortDescending()
                        ? "order-down"
                        : "order-up";
                listItem.add(new SimpleAttributeModifier("class", order));
            }
        }
    };

    add(headings);

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView listView = new ListView("validationExpressionList", validationExpressions) {
        protected void populateItem(ListItem listItem) {
            final ValidationExpression validationExpression = (ValidationExpression) listItem.getModelObject();

            if (selectedValidationExpressionId == validationExpression.getId()) {
                listItem.add(new SimpleAttributeModifier("class", "selected"));
            } else if (listItem.getIndex() % 2 != 0) {
                listItem.add(sam);
            } //if

            listItem.add(new Label("name", validationExpression.getName()));
            listItem.add(new Label("descriptionLabel", validationExpression.getDescription()));
            listItem.add(new Label("expressionLabel", validationExpression.getExpression()));

            listItem.add(new BreadCrumbLink("edit", getBreadCrumbModel()) {
                @Override
                protected IBreadCrumbParticipant getParticipant(String id) {
                    return new ValidationExpressionFormPanel(id, getBreadCrumbModel(),
                            getCalipso().loadValidationExpression(validationExpression.getId()));
                }

            });

        }//populateItem
    };//ListView      
    add(listView);
}

From source file:gr.abiss.calipso.wicket.SLAsPage.java

License:Open Source License

/**
 * SLA list/*from   w  w w  . j av a  2s  .c  o m*/
 * */
private void listSLAs() {
    LoadableDetachableModel slaListModel = new LoadableDetachableModel() {
        protected Object load() {
            List<Sla> slaList = new LinkedList<Sla>();
            slaList.add(new Sla(1, "SLA-QQ-123", new Date("10/01/2007"), new Date("10/01/2009"), "Notes 1-2-3",
                    13.0));
            slaList.add(new Sla(2, "SLA-QQ-789", new Date("10/01/2006"), new Date("10/01/2011"),
                    "Notes 78 GHGH gggg", 24.0));
            return slaList;
        }
    };

    ////////////////
    // Pagination //
    ////////////////
    long resultCount = 2;
    int pageCount = 3;
    final int currentPage = 1;

    String resultCountMessage = resultCount == 1 ? "sla.recordFound" : "sla.recordsFound";
    add(new Label("recordsFound", localize(resultCountMessage, String.valueOf(resultCount))));

    WebMarkupContainer pagination = new WebMarkupContainer("pagination");
    if (pageCount > 1) {
        Link prevOn = new Link("prevOn") {
            public void onClick() {
                setResponsePage(SLAsPage.class);
            }
        };
        prevOn.add(new Label("prevOn", "<<"));
        Label prevOff = new Label("prevOff", "<<");
        if (currentPage == 0) {
            prevOn.setVisible(false);
        } else {
            prevOff.setVisible(false);
        }
        pagination.add(prevOn);
        pagination.add(prevOff);

        List<Integer> pageNumbers = new ArrayList<Integer>(pageCount);
        for (int i = 0; i < pageCount; i++) {
            pageNumbers.add(new Integer(i));
        }

        ListView pages = new ListView("pages", pageNumbers) {
            protected void populateItem(ListItem listItem) {
                final Integer i = (Integer) listItem.getModelObject();
                String pageNumber = i + 1 + "";
                Link pageOn = new Link("pageOn") {
                    public void onClick() {
                        // TODO avoid next line, refresh pagination only
                        setResponsePage(SLAsPage.class);
                    }
                };
                pageOn.add(new Label("pageOn", pageNumber));
                Label pageOff = new Label("pageOff", pageNumber);
                if (i == currentPage) {
                    pageOn.setVisible(false);
                } else {
                    pageOff.setVisible(false);
                }
                listItem.add(pageOn);
                listItem.add(pageOff);
            }
        };
        pagination.add(pages);

        Link nextOn = new Link("nextOn") {
            public void onClick() {
                setResponsePage(SLAsPage.class);
            }
        };
        nextOn.add(new Label("nextOn", ">>"));
        Label nextOff = new Label("nextOff", ">>");
        if (currentPage == pageCount - 1) {
            nextOn.setVisible(false);
        } else {
            nextOff.setVisible(false);
        }
        pagination.add(nextOn);
        pagination.add(nextOff);
    } else { // if pageCount == 1
        pagination.setVisible(false);
    }

    add(pagination);

    //////////////
    // SLA List //
    //////////////

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView listView = new ListView("slaList", slaListModel) {
        @Override
        protected void populateItem(ListItem listItem) {
            if (listItem.getIndex() % 2 != 0) {
                listItem.add(sam);
            } //if

            final Sla sla = (Sla) listItem.getModelObject();
            listItem.add(new Label("slaCode", new PropertyModel(sla, "slaCode")));
            listItem.add(new Label("startDate", new PropertyModel(sla, "startDate")));
            listItem.add(new Label("endDate", new PropertyModel(sla, "endDate")));
            listItem.add(new Label("notes", new PropertyModel(sla, "notes")));
            listItem.add(new Label("responseTime", new PropertyModel(sla, "responseTime")));
            Link edit = new Link("edit") {
                public void onClick() {
                    //                       setResponsePage(new SLAFormPage(SLAsPage.this, String.valueOf(sla.getSlaId())));
                    setResponsePage(new SLAFormPage(SLAsPage.this, sla));
                }//onClick
            };
            listItem.add(edit);
        }//populateItem
    };

    add(listView);

}

From source file:gr.abiss.calipso.wicket.SpaceListPanel.java

License:Open Source License

public SpaceListPanel(String id, final IBreadCrumbModel breadCrumbModel) {
    super(id, breadCrumbModel);
    //BreadCrumbPanelLink createSpacePanelLink = new BreadCrumbPanelLink("create", this, SpaceFormPanel.class);

    user = getPrincipal();// w ww  .  j a  va2 s.  c o  m
    userIsSpaceAdmin = user.isSpaceAdmin();
    add(new BreadCrumbLink("create", getBreadCrumbModel()) {

        @Override
        protected IBreadCrumbParticipant getParticipant(String componentId) {
            return new SpacePanelLanguageSupport(componentId, getBreadCrumbModel());
        }
    });
    //add(createSpacePanelLink.setVisible(user.isAdminForAllSpaces()));

    LoadableDetachableModel spaceListModel = new LoadableDetachableModel() {
        protected Object load() {
            logger.debug("Loading space list from database...");

            if (userIsSpaceAdmin && !user.isGlobalAdmin()) {
                return user.getSpacesWhereUserIsAdmin();
            }

            return getCalipso().findAllSpaces();
        }
    };

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView listView = new ListView("spaces", spaceListModel) {
        protected void populateItem(ListItem listItem) {
            final Space space = (Space) listItem.getModelObject();
            if (selectedSpaceId == space.getId()) {
                listItem.add(new SimpleAttributeModifier("class", "selected"));
            } else if (listItem.getIndex() % 2 == 1) {
                listItem.add(sam);
            }
            listItem.add(new Label("prefixCode", new PropertyModel(space, "prefixCode")));
            listItem.add(new Label("name", localize(space)));

            //Edit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            listItem.add(new BreadCrumbLink("edit", getBreadCrumbModel()) {

                private static final long serialVersionUID = 1L;

                protected IBreadCrumbParticipant getParticipant(String componentId) {
                    Space temp = getCalipso().loadSpace(space.getId());
                    //temp.getMetadata().getXmlString();  // hack to override lazy loading
                    return new SpacePanelLanguageSupport(componentId, getBreadCrumbModel(), temp);
                }
            });

            //Description ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            listItem.add(new Label("description", new PropertyModel(space, "description")));

            // space group name

            listItem.add(new Label("spaceGroupName", new PropertyModel(space, "spaceGroup.name")));

            //Allocate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            listItem.add(new BreadCrumbLink("allocate", getBreadCrumbModel()) {
                private static final long serialVersionUID = 1L;

                protected IBreadCrumbParticipant getParticipant(String componentId) {
                    return new SpaceAllocatePanel(componentId, getBreadCrumbModel(), space.getId());
                }
            });

            //published ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            listItem.add(new Label("published", new PropertyModel(space, "published")));
            //Asset ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            if (space.isAssetEnabled() && (user.isGlobalAdmin() || user.isSpaceAdmin(space))) {
                listItem.add(new BreadCrumbLink("asset", breadCrumbModel) {
                    private static final long serialVersionUID = 1L;

                    protected IBreadCrumbParticipant getParticipant(String componentId) {
                        Asset asset = new Asset();
                        asset.setSpace(space);
                        return new AssetSpacePanel("panel", getBreadCrumbModel(), new AssetSearch(asset, this),
                                space.getId());
                    }
                });
            } else {
                listItem.add(new BlankPanel("asset").setVisible(true));
            }
        }
    };

    @SuppressWarnings("unchecked")
    boolean spacesExist = !((List<Space>) spaceListModel.getObject()).isEmpty();
    add(new WebMarkupContainer("listHead").setVisible(spacesExist));
    add(listView);
    WebMarkupContainer noData = new WebMarkupContainer("noData");
    noData.add(new BreadCrumbPanelLink("create", this, SpaceFormPanel.class).setVisible(user.isGlobalAdmin()));
    noData.setVisible(!spacesExist);

    add(noData);
}

From source file:gr.abiss.calipso.wicket.UserListPanel.java

License:Open Source License

public UserListPanel(String id, final IBreadCrumbModel breadCrumbModel) {
    super(id, breadCrumbModel);

    boolean isNodataVisible;

    this.user = getPrincipal();

    // BreadCrumb link to create new user
    add(new BreadCrumbLink("create", breadCrumbModel) {

        private static final long serialVersionUID = 1L;

        protected IBreadCrumbParticipant getParticipant(String componentId) {
            return new UserFormPanel(componentId, breadCrumbModel);
        }/* ww  w .  j a v a 2s.c  o  m*/
    });

    // add search form
    add(new SearchForm("form"));

    LoadableDetachableModel userListModel = new LoadableDetachableModel() {

        private static final long serialVersionUID = 1L;

        protected Object load() {
            if (searchText == null) { // find all uses
                // load all users
                List<User> userList = getCalipso().findAllUsers();
                // if admin for all spaces
                if (user.isGlobalAdmin()) {
                    if (noDataContainer != null) {
                        noDataContainer.setVisible(userList.size() == 0);
                    }
                    return userList;
                }

                List<User> returnList = new ArrayList<User>();
                for (User u : userList) {
                    if (!u.isGlobalAdmin()) {
                        List<Space> userSpaces = new ArrayList<Space>(u.getSpaces());
                        // check in which spaces user is admin and add to
                        // the list
                        for (Space us : userSpaces) {
                            if (user.getSpacesWhereUserIsAdmin().contains(us)) {
                                returnList.add(u);
                                break;
                            }
                        }
                    }
                }
                if (noDataContainer != null) {
                    noDataContainer.setVisible(returnList.size() == 0);
                }
                return returnList;
            } else {
                // user list of search results
                List<User> userList = getCalipso().findUsersMatching(searchText, searchOn);
                if (user.isGlobalAdmin()) {
                    if (noDataContainer != null) {
                        noDataContainer.setVisible(userList.size() == 0);
                    }
                    return userList;
                }

                List<User> returnList = new ArrayList<User>();
                for (User u : userList) {
                    List<Space> userSpaces = new ArrayList<Space>(u.getSpaces());
                    for (Space us : userSpaces) {
                        if (!u.isGlobalAdmin()) {
                            if (user.getSpacesWhereUserIsAdmin().contains(us)) {
                                returnList.add(u);
                                break;
                            }
                        }
                    }
                }
                if (noDataContainer != null) {
                    noDataContainer.setVisible(returnList.size() == 0);
                }
                return returnList;
            }
        }
    };

    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");
    ListView listView = new ListView("users", userListModel) {
        protected void populateItem(ListItem listItem) {
            final User user = (User) listItem.getModelObject();
            if (selectedUserId == user.getId()) {
                listItem.add(new SimpleAttributeModifier("class", "selected"));
            } else if (listItem.getIndex() % 2 == 1) {
                listItem.add(sam);
            }
            listItem.add(new UserViewLink("loginName", breadCrumbModel, user, false, false, true, false));
            listItem.add(new Label("name", new PropertyModel(user, "name")));
            listItem.add(new Label("lastname", new PropertyModel(user, "lastname")));
            listItem.add(new Label("email", new PropertyModel(user, "email")));
            // organization name
            listItem.add(new OrganizationViewLink("organization", breadCrumbModel, user.getOrganization()));
            // country name
            listItem.add(new Label("country", new PropertyModel(user, "country.name")));
            listItem.add(new Label("locale", new PropertyModel(user, "locale")));
            listItem.add(new WebMarkupContainer("locked").setVisible(user.isLocked()));

            // BreadCrumb link to edit user
            listItem.add(new BreadCrumbLink("edit", breadCrumbModel) {
                protected IBreadCrumbParticipant getParticipant(String componentId) {
                    return new UserFormPanel(componentId, breadCrumbModel, getCalipso().loadUser(user.getId()));
                }
            });

            // BreadCrumb link to UserAllocatePage
            listItem.add(new BreadCrumbLink("allocate", breadCrumbModel) {
                protected IBreadCrumbParticipant getParticipant(String componentId) {
                    return new UserAllocatePanel(componentId, breadCrumbModel, user.getId());
                }
            });
        }
    };
    add(listView);

    if (userListModel.getObject() != null) {
        try {
            isNodataVisible = ((List) userListModel.getObject()).size() == 0;
        } // try
        catch (Exception e) {// For casting
            isNodataVisible = true;
        } // catch
    } // if
    else {
        isNodataVisible = true;
    } // else

    noDataContainer = new WebMarkupContainer("noData");
    noDataContainer.setVisible(isNodataVisible);
    add(noDataContainer);
}

From source file:gr.abiss.calipso.wicket.UserViewPanel.java

License:Open Source License

private void init(IBreadCrumbModel breadCrumbModel, final User user) {
    if (user == null) {
        logger.error("No user was provided");
    }// w  ww .  j  av a2s  .c om
    final List<Space> userSpaces;
    if (Hibernate.isInitialized(user.getSpaces())) {
        userSpaces = new ArrayList<Space>(user.getSpaces());
    } else {// TODO: hql query
        userSpaces = new ArrayList<Space>(user.getSpaces());
    }
    final User currentUser = getPrincipal();

    WebMarkupContainer editContainer = new WebMarkupContainer("editContainer");
    editContainer.add(new BreadCrumbLink("edit", breadCrumbModel) {
        @Override
        protected IBreadCrumbParticipant getParticipant(String componentId) {
            return new UserFormPanel(componentId, getBreadCrumbModel(), user);
        }
    });
    add(editContainer.setVisible(false));

    if (currentUser.isGlobalAdmin()) {//if isAdmin
        editContainer.setVisible(true);
    } else if (currentUser.isSpaceAdmin()) {//if isSpaceAdmin
        //check if current user can edit this user
        //code from UserListPanel
        if (!user.isGlobalAdmin()) {
            for (Space us : userSpaces) {
                if (currentUser.getSpacesWhereUserIsAdmin().contains(us)) {
                    editContainer.setVisible(true);
                    break;
                }
            }
        }
    }

    add(new UserIconPanel("userIcon", user));
    add(new Label("loginName", user.getLoginName()));
    add(new Label("name", user.getName()));
    add(new Label("lastname", user.getLastname()));
    add(new Label("email", user.getEmail()));
    Country c = user.getCountry();
    add(new Label("country", c != null ? localize(c) : ""));
    add(new OrganizationViewLink("organization", breadCrumbModel, user.getOrganization()));
    add(new Label("address", user.getAddress()));
    add(new Label("phone", user.getPhone()));

    LoadableDetachableModel sharedSpacesListModel = new LoadableDetachableModel() {
        protected Object load() {
            List<Space> sharedSpacesList = new ArrayList<Space>();

            //get spaces for current user
            Set<Space> currentUserSpaces = currentUser.getSpaces();

            //find shared spaces
            for (Space currentUserSpace : currentUserSpaces) {
                if (userSpaces.contains(currentUserSpace)) {//if this space is shared for the 2 users
                    sharedSpacesList.add(currentUserSpace);
                }
            }
            return sharedSpacesList;
        }
    };

    if (CollectionUtils.isNotEmpty((List) sharedSpacesListModel.getObject())) {

        logger.debug("user has spaces");
        if (user.getLoginName().equals(getPrincipal().getLoginName())) {
            add(new Label("sharedSpaces", localize("UserViewPanel.yourSpaces")));
        } else {
            add(new Label("sharedSpaces", localize("UserViewPanel.yourSpaces", user.getName())));
        }
    } else {
        logger.debug("user has no spaces");
        add(new Label("sharedSpaces", ""));
    }
    final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt");

    ListView listView = new ListView("spaces", sharedSpacesListModel) {
        protected void populateItem(ListItem listItem) {
            final Space spaceItem = (Space) listItem.getModelObject();

            if (listItem.getIndex() % 2 == 1) {
                listItem.add(sam);
            }

            listItem.add(new Link("space") {
                @Override
                public void onClick() {
                    setCurrentSpace(spaceItem);
                    setResponsePage(SpacePage.class);
                }
            }.add(new Label("space", localize(spaceItem.getNameTranslationResourceKey()))));

        }
    };

    add(listView);

}

From source file:gr.eap.pages.ViewAnalysis.java

License:Open Source License

public ViewAnalysis(final PageParameters parameters) {
    if (parameters == null || parameters.isEmpty()) {
        analysis = ((EapSession) getSession()).getAnalysis();
    } else {/*from   w  ww .j a v  a 2s  .  co  m*/
        String code = parameters.get(0).toString();
        if (code == null) {
            getSession().warn(" .");
            setResponsePage(HomePage.class);
            return;
        }
        analysis = getDataStore().get(code);
        ((EapSession) getSession()).setAnalysis(analysis);
    }

    if (analysis == null) {
        getSession().error(" ? .");
        setResponsePage(HomePage.class);
        return;
    }

    add(new Label("title", analysis.getTitle()));
    add(new Label("usageEstimation", String.valueOf(analysis.getUsageEstimation())));
    add(new Label("description", analysis.getDescription()));
    add(new Label("keywords", analysis.getKeywords()));
    add(new Label("it_dept", getNaiOxi(analysis.isItDepartment())));
    add(new Label("key_users", getNaiOxi(analysis.isKeyusers())));
    add(new Label("sens_data", getNaiOxi(analysis.isSensitiveData())));

    analysis.prepareLyseisForCalculations();

    bestChoices = getBestChoices();

    final Anapty3hChoiceRenderer anapty3hChoiceRenderer = new Anapty3hChoiceRenderer();
    final Filo3eniaChoiceRenderer filo3eniaChoiceRenderer = new Filo3eniaChoiceRenderer();

    add(new PropertyListView<Lysh>("lyseis", analysis.getLyseis()) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<Lysh> item) {
            Lysh lysh = item.getModelObject();
            item.add(new Label("title"));

            setLabel(item, "totalCostF");
            setLabel(item, "kostosAnapty3hsF");
            setLabel(item, "ethsioKostosF");
            setLabel(item, "ethsioKostosMeKatToArxikoKostosF");
            setLabel(item, "xronosAnapty3hs");
            setLabel(item, "independence");
            setLabel(item, "independenceGain");

            WebMarkupContainer vsc = new WebMarkupContainer("viewSolutionContainer");
            vsc.setDefaultModel(new CompoundPropertyModel<Lysh>(lysh));
            vsc.add(new Label("title"));
            vsc.add(new Label("techDesc"));
            vsc.add(new Label("anapty3hBy",
                    anapty3hChoiceRenderer.getDisplayValue(lysh.getAnapty3hBy()).toString()));
            vsc.add(new Label("synthrhshBy",
                    anapty3hChoiceRenderer.getDisplayValue(lysh.getSynthrhshBy()).toString()));
            vsc.add(new Label("filo3eniaBy",
                    filo3eniaChoiceRenderer.getDisplayValue(lysh.getFilo3eniaBy()).toString()));
            vsc.add(new Label("diaxeirishBy",
                    anapty3hChoiceRenderer.getDisplayValue(lysh.getDiaxeirishBy()).toString()));
            vsc.add(new Label("kostosAnapty3hsF"));
            vsc.add(new Label("xronosAnapty3hs"));
            vsc.add(new Label("ethsioKostosSynthrhshsF"));
            vsc.add(new Label("ethsioKostosFilo3eniasF"));
            vsc.add(new Label("ethsioKostosDiaxeirishsF"));
            vsc.add(new Label("ethsioKostosAdeiwnF"));
            item.add(vsc);
        }
    });

    List<String> warnings = getWarnings();
    add(new WebMarkupContainer("no_warnings").setVisible(warnings.isEmpty()));
    add(new ListView<String>("warningList", warnings) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<String> item) {
            item.add(new Label("warning", item.getModelObject()));
        }
    });

}