001    package org.gwtbootstrap3.client.ui;
002    
003    /*
004     * #%L
005     * GwtBootstrap3
006     * %%
007     * Copyright (C) 2013 GwtBootstrap3
008     * %%
009     * Licensed under the Apache License, Version 2.0 (the "License");
010     * you may not use this file except in compliance with the License.
011     * You may obtain a copy of the License at
012     * 
013     *      http://www.apache.org/licenses/LICENSE-2.0
014     * 
015     * Unless required by applicable law or agreed to in writing, software
016     * distributed under the License is distributed on an "AS IS" BASIS,
017     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018     * See the License for the specific language governing permissions and
019     * limitations under the License.
020     * #L%
021     */
022    
023    import org.gwtbootstrap3.client.ui.base.AbstractListItem;
024    import org.gwtbootstrap3.client.ui.constants.Styles;
025    import org.gwtbootstrap3.client.ui.html.Text;
026    
027    import com.google.gwt.dom.client.Element;
028    import com.google.gwt.user.client.ui.HasText;
029    import com.google.gwt.user.client.ui.HasWidgets;
030    
031    /**
032     * Represents a list item with text contents
033     *
034     * @author Sven Jacobs
035     * @see DropDownMenu
036     * @see NavTabs
037     * @see NavPills
038     * @see Navbar
039     */
040    public class ListItem extends AbstractListItem implements HasWidgets, HasText {
041        private Text text;
042    
043        /**
044         * Creates a default list item element
045         */
046        public ListItem() {
047        }
048    
049        /**
050         * Creates a default list item element with the desired text
051         *
052         * @param text desired text for list item
053         */
054        public ListItem(final String text) {
055            this();
056            setText(text);
057        }
058    
059        /**
060         * {@inheritDoc}
061         */
062        @Override
063        public void setText(final String text) {
064            this.text = new Text(text);
065            add(this.text, (Element) getElement());
066        }
067    
068        /**
069         * {@inheritDoc}
070         */
071        @Override
072        public String getText() {
073            return text.getText();
074        }
075    
076        /**
077         * {@inheritDoc}
078         */
079        @Override
080        protected void onAttach() {
081            super.onAttach();
082    
083            // Adding styles to the list item depending on the parent
084            if (getParent() != null) {
085                if (getParent() instanceof MediaList) {
086                    addStyleName(Styles.MEDIA);
087                }
088            }
089        }
090    }