net.tirasa.hct.editor.widgets.AjaxBreadCrumbPanelLink.java Source code

Java tutorial

Introduction

Here is the source code for net.tirasa.hct.editor.widgets.AjaxBreadCrumbPanelLink.java

Source

/*
 * Copyright (C) 2012 Tirasa
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.tirasa.hct.editor.widgets;

import org.apache.wicket.extensions.breadcrumb.IBreadCrumbModel;
import org.apache.wicket.extensions.breadcrumb.IBreadCrumbParticipant;
import org.apache.wicket.extensions.breadcrumb.panel.BreadCrumbPanel;
import org.apache.wicket.model.IModel;
import org.hippoecm.frontend.plugin.IPluginContext;

public class AjaxBreadCrumbPanelLink extends AjaxBreadCrumbLink {

    private static final long serialVersionUID = 1105443743788954451L;

    /**
     * The bread crumb model.
     */
    private final IBreadCrumbModel breadCrumbModel;

    /**
     * factory for creating bread crumbs panels.
     */
    private final AjaxBreadCrumbPanelFactory breadCrumbPanelFactory;

    /**
     * the plugin context
     */
    private final IModel model;

    private String siteName;

    public AjaxBreadCrumbPanelLink(final String id, final IPluginContext context, final BreadCrumbPanel caller,
            final Class panelClass, final String siteName) {
        this(id, caller.getBreadCrumbModel(), new AjaxBreadCrumbPanelFactory(context, panelClass), siteName);
    }

    public AjaxBreadCrumbPanelLink(final String id, final IBreadCrumbModel breadCrumbModel,
            final AjaxBreadCrumbPanelFactory breadCrumbPanelFactory, final String siteName) {
        super(id, breadCrumbModel, siteName);

        if (breadCrumbModel == null) {
            throw new IllegalArgumentException("argument breadCrumbModel must be not null");
        }
        if (breadCrumbPanelFactory == null) {
            throw new IllegalArgumentException("argument breadCrumbPanelFactory must be not null");
        }

        this.siteName = siteName;
        this.model = null;
        this.breadCrumbModel = breadCrumbModel;
        this.breadCrumbPanelFactory = breadCrumbPanelFactory;
    }

    public AjaxBreadCrumbPanelLink(final String id, final IBreadCrumbModel breadCrumbModel,
            final AjaxBreadCrumbPanelFactory breadCrumbPanelFactory, final IModel model, final String siteName) {
        super(id, breadCrumbModel, siteName);

        if (breadCrumbModel == null) {
            throw new IllegalArgumentException("argument breadCrumbModel must be not null");
        }
        if (model == null) {
            throw new IllegalArgumentException("argument model must be not null");
        }
        if (breadCrumbPanelFactory == null) {
            throw new IllegalArgumentException("argument breadCrumbPanelFactory must be not null");
        }

        this.siteName = siteName;
        this.model = model;
        this.breadCrumbModel = breadCrumbModel;
        this.breadCrumbPanelFactory = breadCrumbPanelFactory;
    }

    @Override
    protected final IBreadCrumbParticipant getParticipant(final String componentId, final String siteName) {
        if (model != null) {
            return breadCrumbPanelFactory.create(componentId, breadCrumbModel, model, siteName);
        }
        return breadCrumbPanelFactory.create(componentId, breadCrumbModel, siteName);

    }
}