/*
* 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);
}
}