001 /*
002 * Copyright 2012 GWT-Bootstrap
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package com.github.gwtbootstrap.client.ui;
017
018 import com.github.gwtbootstrap.client.ui.base.DropdownBase;
019 import com.github.gwtbootstrap.client.ui.base.IconAnchor;
020 import com.github.gwtbootstrap.client.ui.constants.ButtonType;
021 import com.github.gwtbootstrap.client.ui.constants.IconType;
022 import com.github.gwtbootstrap.client.ui.resources.ButtonSize;
023 import com.google.gwt.event.dom.client.ClickHandler;
024 import com.google.gwt.event.dom.client.HasClickHandlers;
025 import com.google.gwt.event.shared.HandlerRegistration;
026
027 //@formatter:off
028 /**
029 * Dropdown button.
030 *
031 * @author Dominik Mayer
032 * @since 2.0.4.0
033 * @see <a
034 * href="http://twitter.github.com/bootstrap/components.html#buttonDropdowns">Bootstrap
035 * documentation</a>
036 *
037 */
038 //@formatter:on
039 public class SplitDropdownButton extends DropdownBase implements
040 HasClickHandlers {
041
042 private Button button;
043
044 private Button trigger;
045
046 public SplitDropdownButton() {
047 super("div");
048 addStyleName("btn-group");
049 }
050
051 public SplitDropdownButton(String text) {
052 this();
053 setText(text);
054 }
055
056 @Override
057 public void setText(String text) {
058 button.setText(text);
059 }
060
061 @Override
062 protected IconAnchor createTrigger() {
063 button = new Button();
064 addWidget(button);
065 trigger = new Button();
066 trigger.setCaret(true);
067 return trigger;
068 }
069
070 public void setSize(ButtonSize size) {
071 trigger.setSize(size);
072 }
073
074 public void setType(ButtonType type) {
075 trigger.setType(type);
076 }
077
078 public void setIcon(IconType type) {
079 button.setIcon(type);
080 }
081
082 public HandlerRegistration addClickHandler(ClickHandler handler) {
083 return button.addClickHandler(handler);
084 }
085 }