blob: 8ff480a17bd674584f36cfccea39f7f6fd795689 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.myfaces.trinidaddemo;
import java.util.Collection;
import java.util.Map;
import org.apache.myfaces.trinidaddemo.support.util.EvalMapAdapter;
import org.apache.myfaces.trinidaddemo.support.ComponentDemoCategoryId;
import org.apache.myfaces.trinidaddemo.support.IComponentVariantDemo;
import org.apache.myfaces.trinidaddemo.support.IComponentDemo;
import org.apache.myfaces.trinidaddemo.support.IComponentDemoCategory;
import org.apache.myfaces.trinidaddemo.support.IFeatureDemoCategory;
import org.apache.myfaces.trinidaddemo.support.FeatureDemoCategoryId;
import org.apache.myfaces.trinidaddemo.support.IFeatureDemo;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.servlet.http.HttpServletRequest;
/**
* Central navigation handler bean.
*/
public class NavigationHandlerBean {
private String searchText;
private ComponentDemoCategoryId defaultDisclosedCategoryId = ComponentDemoCategoryId.layout;
private FeatureDemoCategoryId defaultFeatureDisclosedCategoryId = FeatureDemoCategoryId.changePersistence;
private IComponentVariantDemo currentComponentVariantDemo;
private IFeatureDemo currentFeatureDemo;
/**
* @return
*/
public String validateSearch() {
FacesContext fc = FacesContext.getCurrentInstance();
if (((HttpServletRequest) fc.getExternalContext().getRequest()).getLocalName().equals("localhost")) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Error Msg.", "Search doesn't work offline!");
fc.getViewRoot().setViewId("/pages/demoStart.xhtml");
fc.addMessage(null, msg);
return null;
}
else if ((searchText == null) || (searchText == "")) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Error Msg.", "The input Search field is empty!");
fc.getViewRoot().setViewId("/pages/demoStart.xhtml");
fc.addMessage(null, msg);
return null;
}
return "searchForm";
}
/**
* @return
*/
public String showComponentDemo() {
if (currentComponentVariantDemo != null) {
return currentComponentVariantDemo.getEntryPagePath();
}
return null;
}
/**
* @return
*/
public Map<String, Object> getCategoryDisclosed() {
return new CategoryDisclosedStateEvalMap();
}
/**
* @return
*/
public Map<String, Object> getFeatureCategoryDisclosed() {
return new FeatureCategoryDisclosedStateEvalMap();
}
/**
* @return
*/
public Map<String, Object> getComponentDemoSelected() {
return new ComponentDemoSelectedEvalMap();
}
/**
* @return
*/
public Map<String, Object> getFeatureDemoSelected() {
return new FeatureDemoSelectedEvalMap();
}
/**
* @return
*/
public Map<String, Object> getComponentVariantDemoSelected() {
return new ComponentVariantDemoSelectedEvalMap();
}
/**
* @return
*/
public IComponentDemo getCurrentComponentDemo() {
return getCurrentComponentVariantDemo() != null ?
ComponentDemoRegistry.getInstance().getComponentDemo(getCurrentComponentVariantDemo().getId()) :
null;
}
/**
* @return
*/
public IFeatureDemo getCurrentFeatureDemo() {
return currentFeatureDemo;
}
public void setCurrentFeatureDemo(IFeatureDemo featureDemo){
this.currentFeatureDemo = featureDemo;
}
/**
* @return
*/
public IComponentVariantDemo getCurrentComponentVariantDemo() {
return currentComponentVariantDemo;
}
/**
* @param componentVariantDemo
*/
public void setCurrentComponentVariantDemo(IComponentVariantDemo componentVariantDemo) {
this.currentComponentVariantDemo = componentVariantDemo;
}
/**
* @return
*/
public IComponentDemoCategory getCurrentCategory() {
return getCurrentComponentVariantDemo() != null ? getCurrentComponentVariantDemo().getCategory() : null;
}
/**
* @return
*/
public Collection<IComponentDemoCategory> getDemoCategories() {
return ComponentDemoRegistry.getInstance().getDemoCategories();
}
/**
* @return
*/
public Collection<IFeatureDemoCategory> getFeatureDemoCategories() {
return FeatureDemoRegistry.getInstance().getDemoCategories();
}
/**
* @return the searchText
*/
public String getSearchText() {
return searchText;
}
/**
* @param searchText the searchText to set
*/
public void setSearchText(String searchText) {
this.searchText = searchText;
}
/**
* @return
*/
public String getCurrentPageTitle() {
StringBuilder title = new StringBuilder();
title.append("Trinidad Components Showcase");
if (currentComponentVariantDemo != null) {
title.append(" - ");
title.append(currentComponentVariantDemo.getTitle());
title.append("");
}
return title.toString();
}
/**
* @return
*/
public String getCurrentPageDescription() {
if (currentComponentVariantDemo != null && currentComponentVariantDemo.getDescription() != null) {
return currentComponentVariantDemo.getDescription();
}
return "";
}
/**
*
*/
class CategoryDisclosedStateEvalMap extends EvalMapAdapter {
@Override
public Object get(Object key) {
IComponentDemoCategory category = (IComponentDemoCategory) key;
//if there is no concrete component demo selected yet, disclose the default category
if (currentComponentVariantDemo == null &&
defaultDisclosedCategoryId.equals(category.getId())) {
return true;
}
return category != null &&
currentComponentVariantDemo != null &&
category.equals(currentComponentVariantDemo.getCategory());
}
}
/**
*
*/
class FeatureCategoryDisclosedStateEvalMap extends EvalMapAdapter {
@Override
public Object get(Object key) {
IFeatureDemoCategory category = (IFeatureDemoCategory) key;
//if there is no concrete component demo selected yet, disclose the default category
if (currentFeatureDemo == null &&
defaultFeatureDisclosedCategoryId.equals(category.getId())) {
return true;
}
return category != null &&
currentFeatureDemo != null &&
category.equals(currentFeatureDemo.getCategory());
}
}
/**
*
*/
class ComponentVariantDemoSelectedEvalMap extends EvalMapAdapter {
@Override
public Object get(Object key) {
IComponentVariantDemo variantDemo = (IComponentVariantDemo) key;
return variantDemo != null &&
getCurrentComponentVariantDemo() != null &&
variantDemo.equals(getCurrentComponentVariantDemo());
}
}
/**
*
*/
class ComponentDemoSelectedEvalMap extends EvalMapAdapter {
@Override
public Object get(Object key) {
IComponentDemo componentDemo = (IComponentDemo) key;
return componentDemo != null &&
getCurrentComponentDemo() != null &&
componentDemo.equals(getCurrentComponentDemo());
}
}
class FeatureDemoSelectedEvalMap extends EvalMapAdapter {
@Override
public Object get(Object key) {
IFeatureDemo featureDemo = (IFeatureDemo) key;
return featureDemo != null &&
getCurrentFeatureDemo() != null &&
featureDemo.equals(getCurrentFeatureDemo());
}
}
}