001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.portalsite.menu;
018:
019: import java.util.Locale;
020: import java.util.MissingResourceException;
021: import java.util.ResourceBundle;
022:
023: import org.apache.jetspeed.om.folder.Folder;
024: import org.apache.jetspeed.om.folder.impl.StandardMenuDefinitionImpl;
025: import org.apache.jetspeed.portalsite.view.SiteView;
026:
027: /**
028: * This class provides a menu definition for the standard
029: * back menu.
030: *
031: * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
032: * @version $Id: StandardBackMenuDefinition.java 516448 2007-03-09 16:25:47Z ate $
033: */
034: public class StandardBackMenuDefinition extends
035: StandardMenuDefinitionImpl {
036: /**
037: * StandardBackMenuDefinition - constructor
038: */
039: public StandardBackMenuDefinition() {
040: super ();
041: }
042:
043: /**
044: * getName - get menu name
045: *
046: * @return menu name
047: */
048: public String getName() {
049: return SiteView.STANDARD_BACK_MENU_NAME;
050: }
051:
052: /**
053: * getOptions - get comma separated menu options if not specified as elements
054: *
055: * @return option paths specification
056: */
057: public String getOptions() {
058: // parent folder
059: return ".." + Folder.PATH_SEPARATOR;
060: }
061:
062: /**
063: * getSkin - get skin name for menu element
064: *
065: * @return skin name
066: */
067: public String getSkin() {
068: return "breadcrumbs";
069: }
070:
071: /**
072: * getTitle - get default title for menu
073: *
074: * @return title text
075: */
076: public String getTitle() {
077: // use locale defaults
078: return getMenuTitleText(null, getTitleResourceKey());
079: }
080:
081: /**
082: * getTitle - get locale specific title for menu from metadata
083: * protocol, with or without falback enabled
084: *
085: * @param locale preferred locale
086: * @param fallback whether to return default title
087: * @return title text
088: */
089: protected String getTitle(Locale locale, boolean fallback) {
090: // use specified locale or fallback if locale specific title not defined
091: String title = getMenuTitleText(locale, getTitleResourceKey());
092: if (title != null) {
093: return title;
094: }
095: return super .getTitle(locale, fallback);
096: }
097:
098: /**
099: * getTitleResourceKey - get resource key used to lookup menu titles
100: *
101: * @return resource key
102: */
103: protected String getTitleResourceKey() {
104: return "menu.title.back";
105: }
106:
107: /**
108: * getMenuTitleText - lookup resource bundle based on locale
109: * and use to extract menu title text
110: *
111: * @param locale preferred locale
112: * @param key message key for text
113: */
114: protected String getMenuTitleText(Locale locale, String key) {
115: try {
116: // get resource bundle
117: ResourceBundle bundle = null;
118: if (locale != null) {
119: bundle = ResourceBundle
120: .getBundle(
121: "org.apache.jetspeed.portalsite.menu.resources.MenuTitles",
122: locale);
123: } else {
124: bundle = ResourceBundle
125: .getBundle("org.apache.jetspeed.portalsite.menu.resources.MenuTitles");
126: }
127:
128: // lookup and return keyed message
129: return bundle.getString(key);
130: } catch (MissingResourceException mre) {
131: }
132: return null;
133: }
134: }
|