Example usage for org.apache.wicket.markup.html.image Image Image

List of usage examples for org.apache.wicket.markup.html.image Image Image

Introduction

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

Prototype

public Image(final String id, final IResource imageResource, final IResource... imageResources) 

Source Link

Document

Constructs an image directly from an image resource.

Usage

From source file:com.socialsite.image.ImagePanel.java

License:Open Source License

/**
 * //w  w w .j av  a 2s  .c o  m
 * @param component
 *            component id
 * @param id
 *            id used to fetch the image
 * @param imageType
 *            type of the image (userimage , courseimage etc)
 * @param thumb
 *            will show thumb image if true
 * @param lastModified
 *            lastmodified date of the image
 */
public ImagePanel(final String component, final long id, final ImageType imageType, final Date lastModified,
        final boolean thumb, final boolean changeLink) {
    super(component);

    this.changeLink = changeLink;

    // allow the modal window to update the panel
    setOutputMarkupId(true);
    final ResourceReference imageResource = new ResourceReference(imageType.name());
    final Image userImage;
    final ValueMap valueMap = new ValueMap();
    valueMap.add("id", id + "");

    // the version is used to change the url dynamically if the image is
    // changed. This will allow the browser to cache images
    // reference http://code.google.com/speed/page-speed/docs/caching.html
    // #Use fingerprinting to dynamically enable caching.
    valueMap.add("version", lastModified.getTime() + "");
    if (thumb) {
        valueMap.add("thumb", "true");
    }
    add(userImage = new Image("userimage", imageResource, valueMap));
    userImage.setOutputMarkupId(true);

    final ModalWindow modal;
    add(modal = new ModalWindow("modal"));

    modal.setContent(new UploadPanel(modal.getContentId()) {

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

        @Override
        public String onFileUploaded(final FileUpload upload) {

            if (upload == null || upload.getSize() == 0) {
                // No image was provided
                error("Please upload an image.");
            } else if (!checkContentType(upload.getContentType())) {
                error("Only images of types png, jpg, and gif are allowed.");
            } else {
                saveImage(upload.getBytes());
            }

            return null;
        }

        @Override
        public void onUploadFinished(final AjaxRequestTarget target, final String filename,
                final String newFileUrl) {

            final ResourceReference imageResource = new ResourceReference(imageType.name());

            final ValueMap valueMap = new ValueMap();
            valueMap.add("id", id + "");
            // change the image lively
            valueMap.add("version", new Date().getTime() + "");
            if (thumb) {
                valueMap.add("thumb", "true");
            }

            userImage.setImageResourceReference(imageResource, valueMap);
            // update the image after the user changes it
            target.addComponent(userImage);
        }
    });
    modal.setTitle(" Select the image ");
    modal.setCookieName("modal");

    modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        public boolean onCloseButtonClicked(final AjaxRequestTarget target) {
            return true;
        }
    });

    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        public void onClose(final AjaxRequestTarget target) {
        }
    });

    add(new AjaxLink<Void>("changeimage") {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            if (changeLink) {
                // TODO allow admins to change the university image and
                // allow
                // staffs to change the course image
                // it. don't show it for thumb images
                return hasRole(SocialSiteRoles.OWNER) || hasRole(SocialSiteRoles.STAFF);
            }
            return false;

        }

        @Override
        public void onClick(final AjaxRequestTarget target) {
            modal.show(target);
        }
    });
}

From source file:com.socialsite.search.SearchUserInfoPanel.java

License:Open Source License

public SearchUserInfoPanel(final String id, final IModel<User> model) {
    super(id, model);
    final User user = model.getObject();
    final ResourceReference imageResource = new ResourceReference(ImageType.USER.name());
    add(new Image("userimage", imageResource, new ValueMap("id=" + user.getId())));
    // link to the home page
    final Link<User> home = new Link<User>("home", model) {

        /**//from   w  w  w  .j  av a 2 s  .co  m
         * 
         */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            final User user = getModelObject();
            SocialSiteSession.get().setUserId(user.getId());
            final SessionUser sessionUser = SocialSiteSession.get().getSessionUser();
            sessionUser.setRoles(userDao.getUsersRelation(user.getId(), sessionUser.getId()));
            setResponsePage(HomePage.class);
        }
    };
    add(home);
    final Profile profile = user.getProfile();
    home.add(new Label("name", user.getUserName()));
    add(new Label("city", profile.getCurrentCity().getValue()));
    add(new Label("sex", profile.getSex()));
}

From source file:com.userweave.application.images.ImageResource.java

License:Open Source License

public static Image createImage(String id, ImageBase image) {
    //Map<String, Object> map = new HashMap<String, Object>();
    PageParameters parameters = new PageParameters();

    Integer imageid = 0;//from w w w .j  av a  2  s  .  c  om
    if (image != null && image.getId() != null) {
        imageid = image.getId();
    }

    parameters.set(0, imageid);

    if (image != null && image.getVersion() != null) {
        parameters.set(1, image.getVersion());
    }

    return new Image(id, ImageResource.getResourceReference(), parameters);
}

From source file:net.kornr.swit.site.BasePage.java

License:Apache License

public BasePage() {
    this.add(new Label("page-title", "Swit - " + getPageTitle()));
    this.add(m_layout = new ThreeColumnsLayoutManager("layout", s_layout));
    m_layout.add(m_container = new TableImageBorder("outer-border", s_border, s_innerColor));

    ColumnPanel col = m_layout.getLeftColumn();
    col.setDefaultInlineCss(new Model<String>("text-align:center;"));

    Fragment frag = new Fragment(col.getContentId(), "imagefrag", this);
    frag.add(new Image("image", ButtonResource.getReference(),
            ButtonResource.getValueMap(s_logoTemplate, "SWIT")));
    col.addContent(frag);//from   ww  w  . j  a  v a 2s.com

    Menu menu = new Menu(col.getContentId());
    menu.setSelectedClass(this.getClass());
    col.addContent(menu);

}

From source file:net.kornr.swit.site.buttoneditor.ButtonEditor.java

License:Apache License

private void init() {
    this.innerAdd(new Image("logo", ButtonResource.getReference(),
            ButtonResource.getValueMap(s_logoTemplate, "The Swit Buttons Generator")));

    m_codeEncoder = new ButtonCodeMaker(m_selectedDescriptor, m_currentProperties,
            new PropertyModel<String>(this, "text"));

    final Form form = new Form("form") {

        @Override//  w w  w  .  ja v a2s. co m
        protected void onSubmit() {
            if (((WebRequest) (WebRequestCycle.get().getRequest())).isAjax() == false)
                createButton(null);
        }
    };
    this.innerAdd(form);

    Border sampleborder = new TableImageBorder("sampleborder", s_border3, Color.white);
    form.add(sampleborder);
    WebMarkupContainer samplecont = new WebMarkupContainer("samplecontainer");
    sampleborder.add(samplecont);
    samplecont.add((m_sample = new Image("sample")).setOutputMarkupId(true));
    sampleborder
            .add(new ColorPickerField("samplebgcolor", new PropertyModel<String>(this, "bgcolor"), samplecont));
    ImageButton submit = new ImageButton("submit", ButtonResource.getReference(),
            ButtonResource.getValueMap(s_buttonTemplate, "Update that button, now!"));
    sampleborder.add(submit);
    submit.add(new AjaxFormSubmitBehavior(form, "onclick") {
        @Override
        protected void onError(AjaxRequestTarget arg0) {
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            createButton(target);
        }

        @Override
        protected CharSequence getEventHandler() {
            return new AppendingStringBuffer(super.getEventHandler()).append("; return false;");
        }
    });
    sampleborder.add(m_downloadLink = new MutableResourceReferenceLink("downloadbutton",
            ButtonResource.getReference(), null));
    m_downloadLink.setOutputMarkupId(true);

    //      this.innerAdd(m_codeLabel = new Label("code", new PropertyModel(m_codeEncoder, "code")));
    //      m_codeLabel.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setEscapeModelStrings(false);
    //      m_codeLabel.setVisible(true);
    final ModalWindow codewindow = new ModalWindow("code");
    this.innerAdd(codewindow);
    Fragment codefrag = new Fragment(codewindow.getContentId(), "codepanel", this);
    Label lcode = new Label("code", new PropertyModel(m_codeEncoder, "code"));
    codefrag.add(lcode);
    codewindow.setContent(codefrag);
    codewindow.setTitle("Java Code");
    codewindow.setCookieName("switjavacodewindow");

    sampleborder.add(new AjaxLink("showwindowcode") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            codewindow.show(target);
        }
    });

    form.add((m_feedback = new FeedbackPanel("feedback")).setOutputMarkupId(true)
            .setOutputMarkupPlaceholderTag(true));

    ThreeColumnsLayoutManager layout = new ThreeColumnsLayoutManager("2col-layout", s_layout);
    form.add(layout);
    ColumnPanel rightcol = layout.getRightColumn();
    ColumnPanel leftcol = layout.getLeftColumn();

    Border textborder = new TableImageBorder("textborder", s_shadow, s_blocColor);
    layout.add(textborder);
    textborder.add(new TextField<String>("button-text", new PropertyModel<String>(this, "text")));

    Border buttonsborder = new TableImageBorder("buttonsborder", s_shadow, s_blocColor);
    layout.add(buttonsborder);
    buttonsborder.add(new ListView<ButtonDescriptor>("types", s_buttons) {
        @Override
        protected void populateItem(ListItem<ButtonDescriptor> item) {
            final IModel<ButtonDescriptor> model = item.getModel();
            ButtonDescriptor bd = item.getModelObject();

            ButtonTemplate tmpl = s_buttonsTemplates.get(bd.getName());
            if (tmpl == null) {
                tmpl = bd.createTemplate();
                try {
                    List<ButtonProperty> props = bd.getProperties();
                    bd.applyProperties(tmpl, props);
                    tmpl.setWidth(200);
                    tmpl.setFont(s_defaultButtonFont);
                    tmpl.setFontColor(Color.white);
                    tmpl.setShadowDisplayed(true);
                    tmpl.addEffect(new ShadowBorder(4, 0, 0, Color.black));
                    tmpl.setAutoExtend(true);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                s_buttonsTemplates.put(bd.getName(), tmpl);
            }

            ImageButton button = new ImageButton("sample", ButtonResource.getReference(),
                    ButtonResource.getValueMap(tmpl, bd.getName()));
            item.add(button);
            button.add(new AjaxFormSubmitBehavior(form, "onclick") {
                @Override
                protected void onError(AjaxRequestTarget arg0) {
                }

                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    m_selectedDescriptor = model.getObject();
                    m_currentProperties = m_selectedDescriptor.getProperties();
                    if (target != null) {
                        // target.addComponent(m_properties);
                    }
                    createButton(target);
                }

                @Override
                protected CharSequence getEventHandler() {
                    String hider = getJQueryCodeForPropertiesHiding(model.getObject());
                    return new AppendingStringBuffer(hider + ";" + super.getEventHandler())
                            .append("; return false;");
                }
            });

        }
    });

    m_properties = new TableImageBorder("propertiesborder", s_shadow, s_blocColor);
    layout.add(m_properties);
    m_properties.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
    m_currentProperties = m_selectedDescriptor.getProperties();

    m_propEditors = new ListView<ButtonDescriptor>("property", s_buttons) {
        @Override
        protected void populateItem(ListItem<ButtonDescriptor> item) {
            ButtonDescriptor desc = item.getModelObject();
            WebMarkupContainer container = new WebMarkupContainer("container");
            item.add(container);
            PropertyListEditor lst = new PropertyListEditor("lst", desc.getProperties());
            container.add(lst);
            container.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
            m_propertiesContainer.add(new Pair(desc.getName(), container));
        }
    };

    m_properties.add(m_propEditors);

    //      Border fontborder = new TableImageBorder("fontborder", s_shadow, s_blocColor);
    //      form.add(fontborder);
    //      fontborder.add(new ButtonPropertyEditorPanel("fontselector", PROPERTY_FONT, false));
    //      fontborder.add(new ButtonPropertyEditorPanel("fontcolor", PROPERTY_FONT_COLOR, false));
    //      fontborder.add(new ButtonPropertyEditorPanel("fontshadow", PROPERTY_FONT_SHADOW, true));

    rightcol.addContent(createFragment(ColumnPanel.CONTENT_ID,
            Arrays.asList(new Component[] { new ButtonPropertyEditorPanel("element", PROPERTY_WIDTH, true),
                    new ButtonPropertyEditorPanel("element", PROPERTY_HEIGHT, true),
                    new ButtonPropertyEditorPanel("element", PROPERTY_AUTO_EXTEND, true) }),
            "Button Size"));

    rightcol.addContent(createFragment(rightcol.CONTENT_ID,
            Arrays.asList(new Component[] { new ButtonPropertyEditorPanel("element", PROPERTY_FONT, false),
                    new ButtonPropertyEditorPanel("element", PROPERTY_FONT_COLOR, true),
                    new ButtonPropertyEditorPanel("element", PROPERTY_FONT_SHADOW, true) }),
            "Font Selection"));

    rightcol.addContent(createFragment(
            rightcol.CONTENT_ID, new EffectChoicePanel("element",
                    new PropertyModel<Integer>(this, "shadowEffect"), EffectUtils.getShadowEffects()),
            "Shadow Effect"));
    rightcol.addContent(createFragment(
            rightcol.CONTENT_ID, new EffectChoicePanel("element",
                    new PropertyModel<Integer>(this, "mirrorEffect"), EffectUtils.getMirrorEffects()),
            "Mirror Effect"));

    createButton(null);
}

From source file:net.kornr.swit.site.widget.EffectChoicePanel.java

License:Apache License

public EffectChoicePanel(String id, IModel<Integer> effectIndex,
        List<Pair<String, IModel<ButtonTemplate>>> templates) {
    super(id, effectIndex);
    m_choice = effectIndex.getObject();/*  ww w.ja v  a  2 s.  c om*/
    m_effectgroup = new RadioGroup<Integer>("effectgroup", new PropertyModel<Integer>(this, "choice"));
    this.add(m_effectgroup);
    m_effectgroup.add(new ListView<Pair<String, IModel<ButtonTemplate>>>("line", templates) {
        @Override
        protected void populateItem(ListItem<Pair<String, IModel<ButtonTemplate>>> item) {
            Integer index = item.getIndex();
            Pair<String, IModel<ButtonTemplate>> p = item.getModelObject();
            item.add(new Radio<Integer>("radio", new Model<Integer>(index)));
            ButtonTemplate template = p.getSecond().getObject();
            item.add(new Image("img", ButtonResource.getReference(),
                    ButtonResource.getValueMap(template, p.getFirst())));
        }
    });
}

From source file:net.kornr.swit.site.widget.FontSelectorPanel.java

License:Apache License

private void init() {
    RadioGroup fontgroup = new RadioGroup("fontgroup", new PropertyModel<String>(this, "fontName"));
    this.add(fontgroup);
    fontgroup.add(new ListView<String>("fontitem", s_fontsList) {
        @Override/*w  ww  .j  av  a2 s . co m*/
        protected void populateItem(ListItem<String> item) {
            String font = item.getModelObject();
            item.add(new Radio("radio", new Model<String>(font)));
            ButtonTemplate tmpl = s_templates.get(font);
            if (tmpl == null) {
                tmpl = new NothingButTextButton();
                tmpl.setFont(new Font(font, Font.PLAIN, 24));
                tmpl.setFontColor(Color.black);
                tmpl.setHeight(1);
                tmpl.setWidth(1);
                s_templates.put(font, tmpl);
            }

            item.add(
                    new Image("sample", ButtonResource.getReference(), ButtonResource.getValueMap(tmpl, font)));
        }
    });

    // this.add(new TextField("size", new PropertyModel<Integer>(this, "fontSize")));
    this.add(new IntegerField("size",
            new IntegerField.IntegerAdaptor(new PropertyModel<Integer>(this, "fontSize")), 1, false, 6d, 144d));
    this.add(new CheckBox("bold", new PropertyModel<Boolean>(this, "bold")));
    this.add(new CheckBox("italic", new PropertyModel<Boolean>(this, "italic")));
}

From source file:org.headsupdev.agile.app.dashboard.Account.java

License:Open Source License

public void layout() {
    super.layout();
    add(CSSPackageResource.getHeaderContribution(getClass(), "account.css"));

    user = getSession().getUser();/*from  w w w.  j  a va 2  s.  c  om*/
    String username = getPageParameters().getString("username");
    if (username != null) {
        user = getSecurityManager().getUserByUsername(username);

        if (user == null || user.equals(HeadsUpSession.ANONYMOUS_USER)) {
            notFoundError();
            return;
        }
    }

    final org.headsupdev.agile.api.User finalUser = user;
    boolean showTools = (user.equals(getSession().getUser()) && !user.equals(HeadsUpSession.ANONYMOUS_USER))
            || getSecurityManager().userHasPermission(getSession().getUser(), new AdminPermission(), null);
    final boolean timeEnabled = Boolean.parseBoolean(
            StoredProject.getDefault().getConfigurationValue(StoredProject.CONFIGURATION_TIMETRACKING_ENABLED));
    final boolean showVelocity = timeEnabled && showTools;

    WebMarkupContainer velocityPanel = new WebMarkupContainer("velocity");
    add(velocityPanel.setVisible(showVelocity));
    if (showVelocity) {
        Velocity velocity = getResourceManager().getUserVelocity(user);
        String velocityStr = "-";
        if (!velocity.equals(Velocity.INVALID)) {
            velocityStr = String.format("%.1f", velocity.getVelocity());
        }
        velocityPanel.add(new Label("velocity", velocityStr));

        Velocity currentVelocity = getResourceManager().getCurrentUserVelocity(user);
        String currentVelocityStr = "-";
        if (!currentVelocity.equals(Velocity.INVALID)) {
            currentVelocityStr = String.format("%.1f", currentVelocity.getVelocity());
        }
        velocityPanel.add(new Label("currentvelocity", currentVelocityStr));

        Velocity averageVelocity = getResourceManager().getAverageVelocity();
        String averageVelocityStr = "-";
        if (!averageVelocity.equals(Velocity.INVALID)) {
            averageVelocityStr = String.format("%.1f", averageVelocity.getVelocity());
        }
        velocityPanel.add(new Label("averagevelocity", averageVelocityStr));
    }

    PageParameters params = new PageParameters();
    params.add("username", user.getUsername());
    params.add("silent", "true");

    add(new Image("account", new ResourceReference("member.png"), params));

    add(new UserDetailsPanel("details", user, getProject(), shouldShowFullDetails()));

    if (showTools) {
        params = getPageParameters();

        addLink(new BookmarkableMenuLink(getPageClass("editaccount"), params, "edit"));
        addLink(new BookmarkableMenuLink(getPageClass("changepassword"), params, "change-password"));
        addLink(new BookmarkableMenuLink(getPageClass("subscriptions"), params, "subscriptions"));
    }

    add(new Label("issues-name", user.getFullnameOrUsername()));
    add(new IssueListPanel("issues", getIssuesWatchedBy(finalUser), this, false, false, null));

    Calendar calendar = Calendar.getInstance(user.getTimeZone());
    Date startOfToday = DateUtil.getStartOfToday(calendar);
    Date endOfToday = DateUtil.getEndOfToday(calendar);

    calendar.setTime(startOfToday);
    calendar.add(Calendar.DATE, -7);
    Date startOfWeek = calendar.getTime();

    Duration durationDay = getResourceManager().getLoggedTimeForUser(user, startOfToday, endOfToday);
    add(new Label("loggedtimeday", durationDay == null ? " - " : durationDay.toString()));
    Duration durationWeek = getResourceManager().getLoggedTimeForUser(user, startOfWeek, endOfToday);
    add(new Label("loggedtimeweek", durationWeek == null ? " - " : durationWeek.toString()));

    add(new ListView<DurationWorked>("comments",
            getResourceManager().getDurationWorkedForUser(user, startOfWeek, endOfToday)) {
        protected void populateItem(ListItem<DurationWorked> listItem) {
            DurationWorked worked = listItem.getModelObject();
            if (worked.getIssue() == null) {
                listItem.setVisible(false);
                return;
            }

            WebMarkupContainer workedTitle = new WebMarkupContainer("worked-title");
            listItem.add(new Image("icon", new ResourceReference(HeadsUpPage.class, "images/worked.png")));

            String time = "";
            if (worked.getWorked() != null) {
                time = worked.getWorked().toString();
            }
            workedTitle.add(new Label("worked", time));

            Issue related = worked.getIssue();
            PageParameters params = new PageParameters();
            params.put("project", related.getProject());
            params.put("id", related.getId());
            BookmarkablePageLink link = new BookmarkablePageLink("issue-link", getPageClass("issues/view"),
                    params);
            String issueId = related.getProject().getId() + ":" + related.getId();
            link.add(new Label("issue", "issue:" + issueId));
            workedTitle.add(link.add(new IssueStatusModifier("relatedstatus", related)));
            workedTitle.add(new Label("summary", related.getSummary())
                    .add(new IssueStatusModifier("relatedstatus", related)));

            workedTitle.add(new Label("username", worked.getUser().getFullnameOrUsername()));
            workedTitle.add(new Label("created",
                    new FormattedDateModel(worked.getDay(), ((HeadsUpSession) getSession()).getTimeZone())));

            listItem.add(workedTitle);
        }
    }.setVisible(showTools && timeEnabled));

    add(new Label("history-name", user.getFullnameOrUsername()));
    add(new HistoryPanel("events", getEventsForUser(user), true));
}

From source file:org.headsupdev.agile.app.dashboard.Accounts.java

License:Open Source License

public void layout() {
    super.layout();
    add(CSSPackageResource.getHeaderContribution(getClass(), "welcome.css"));

    List<org.headsupdev.agile.api.User> users = getSecurityManager().getUsers();
    Collections.sort(users);/* w  w  w . java 2  s .  c  om*/

    add(new ListView<User>("users", users) {
        protected void populateItem(ListItem<User> listItem) {
            User user = listItem.getModelObject();
            if (!user.canLogin()) {
                listItem.setVisible(false);
                return;
            }

            if (user.equals(HeadsUpSession.ANONYMOUS_USER)) {
                listItem.setVisible(false);
                return;
            }

            listItem.add(new Label("fullname", user.getFullname()));
            PageParameters params = new PageParameters();
            params.add("username", user.getUsername());
            params.add("silent", "true");
            BookmarkablePageLink link = new BookmarkablePageLink("user-link", getPageClass("account"), params);
            link.add(new Image("activity", new ResourceReference("member.png"), params));
            listItem.add(link);

            link = new BookmarkablePageLink("user-link2", getPageClass("account"), params);
            link.add(new Label("user-label", user.getUsername()));
            listItem.add(link);
            listItem.add(new GravatarLinkPanel("gravatar", user, ICON_EDGE_LENGTH));
        }
    });
}

From source file:org.headsupdev.agile.app.dashboard.Show.java

License:Open Source License

public void layout() {
    super.layout();
    add(CSSPackageResource.getHeaderContribution(getClass(), "welcome.css"));

    Project project = getProject();//from w  w w.  j  ava  2s .  c o  m
    if (project.equals(StoredProject.getDefault())) {
        setResponsePage(Welcome.class);
        return;
    }

    name = project.getAlias();
    add(new ProjectDetailsPanel("projectdetails", project));

    PageParameters params = new PageParameters();
    params.add("project", project.getId());
    params.add("time", ActivityGraph.TIME_MONTH);
    params.add("tree", "false");
    params.add("silent", "true");
    add(new Image("activity-month", new ResourceReference("activity.png"), params));

    params = new PageParameters();
    params.add("project", project.getId());
    params.add("time", ActivityGraph.TIME_YEAR);
    params.add("tree", "false");
    params.add("silent", "true");
    add(new Image("activity-year", new ResourceReference("activity.png"), params));

    if (project instanceof MavenTwoProject) {
        add(new MavenTwoProjectDetailsPanel("m2", (MavenTwoProject) project, false));
    } else {
        add(new WebMarkupContainer("m2").setVisible(false));
    }

    if (project instanceof XCodeProject) {
        add(new XCodeProjectDetailsPanel("xcode", (XCodeProject) project));
    } else {
        add(new WebMarkupContainer("xcode").setVisible(false));
    }

    add(new ListView<Project>("projectlist", new LinkedList<Project>(project.getChildProjects())) {
        protected void populateItem(ListItem<Project> listItem) {
            Project project = listItem.getModelObject();

            PageParameters params = new PageParameters();
            params.add("project", project.getId());
            Link projectLink = new BookmarkablePageLink("project-link", Show.class, params);
            params.add("time", ActivityGraph.TIME_MONTH);
            params.add("tree", "true");
            params.add("silent", "true");
            projectLink.add(new Image("activity", new ResourceReference("activity.png"), params));
            projectLink.add(new Label("name", project.getAlias()));
            listItem.add(projectLink);
        }
    });
}