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.IconAnchor; 019 import com.github.gwtbootstrap.client.ui.constants.Constants; 020 import com.google.gwt.user.client.DOM; 021 import com.google.gwt.user.client.Element; 022 023 /** 024 * The TabLink for {@link TabPanel} 025 * @author ohashi keisuke 026 * 027 */ 028 public class TabLink extends NavWidget { 029 030 private TabPane pane; 031 private boolean createTabPane = true; 032 033 /** 034 * Create widget with set Effective TabPane 035 * @param pane effective tabPane 036 */ 037 public TabLink(TabPane pane) { 038 this(); 039 setText(pane.getHeading()); 040 setTablePane(pane); 041 } 042 043 /** 044 * Create empty widget 045 */ 046 public TabLink() { 047 super(); 048 IconAnchor anchor = getAnchor(); 049 anchor.getElement().setAttribute(Constants.DATA_TOGGLE, "tab"); 050 } 051 052 public void setCreateTabPane(boolean createTabPane) { 053 this.createTabPane = createTabPane; 054 } 055 056 public boolean isCreateTabPane() { 057 return this.createTabPane; 058 } 059 060 /** 061 * Set Effective TabPane 062 * @param pane 063 */ 064 public void setTablePane(TabPane pane) { 065 this.pane = pane; 066 067 if(pane.getId() == null || pane.getId().isEmpty()) { 068 pane.setHref(DOM.createUniqueId()); 069 } 070 071 setDataTarget(pane.getId()); 072 073 this.setActive(pane.isActive()); 074 } 075 076 public void setDataTarget(String id) { 077 getAnchor().getElement().setAttribute(Constants.DATA_TARGET,"#" + id); 078 } 079 080 /** 081 * Get Effective TabPane 082 * @return effective TabPane 083 */ 084 public TabPane getTabPane() { 085 return pane; 086 } 087 088 @Override 089 protected void onAttach() { 090 super.onAttach(); 091 092 if(isActive()) { 093 show(); 094 } 095 } 096 097 @Override 098 public void setActive(boolean active) { 099 super.setActive(active); 100 101 if(pane != null) { 102 pane.setActive(active); 103 } 104 105 } 106 107 /** 108 * show tab pane 109 */ 110 public void show() { 111 setActive(true); 112 show(getAnchor().getElement()); 113 } 114 115 //@formatter:off 116 private native void show(Element e)/*-{ 117 $wnd.jQuery(e).tab('show'); 118 }-*/; 119 //@formatter:on 120 121 }