亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basicoutlookbarui.java

?? java swing控件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/**
 * L2FProd.com Common Components 6.9.1 License.
 *
 * Copyright 2005-2006 L2FProd.com
 *
 * Licensed 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 com.l2fprod.common.swing.plaf.basic;

import com.l2fprod.common.swing.JOutlookBar;
import com.l2fprod.common.swing.PercentLayout;
import com.l2fprod.common.swing.PercentLayoutAnimator;
import com.l2fprod.common.swing.plaf.OutlookBarUI;
import com.l2fprod.common.util.JVM;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.KeyboardFocusManager;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.LookAndFeel;
import javax.swing.Scrollable;
import javax.swing.SwingUtilities;
import javax.swing.plaf.ButtonUI;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

/**
 * BasicOutlookBarUI. <br>
 *  
 */
public class BasicOutlookBarUI extends BasicTabbedPaneUI implements
  OutlookBarUI {

  private static final String BUTTON_ORIGINAL_FOREGROUND = "TabButton/foreground";
  private static final String BUTTON_ORIGINAL_BACKGROUND = "TabButton/background";

  public static ComponentUI createUI(JComponent c) {
    return new BasicOutlookBarUI();
  }

  private ContainerListener tabListener;
  private Map buttonToTab;
  private Map tabToButton;
  private Component nextVisibleComponent;
  private PercentLayoutAnimator animator;
  
  public JScrollPane makeScrollPane(Component component) {
    // the component is not scrollable, wraps it in a ScrollableJPanel
    JScrollPane scroll = new JScrollPane();
    scroll.setBorder(BorderFactory.createEmptyBorder());
    if (component instanceof Scrollable) {
      scroll.getViewport().setView(component);
    } else {
      scroll.getViewport().setView(new ScrollableJPanel(component));
    }
    scroll.setOpaque(false);
    scroll.getViewport().setOpaque(false);
    return scroll;
  }

  protected void installDefaults() {
    super.installDefaults();

    TabLayout layout = new TabLayout();
    tabPane.setLayout(layout);
    // ensure constraints is correct for existing components
    layout.setLayoutConstraints(tabPane);
    updateTabLayoutOrientation();

    buttonToTab = new HashMap();
    tabToButton = new HashMap();

    LookAndFeel.installBorder(tabPane, "OutlookBar.border");
    LookAndFeel.installColors(tabPane, "OutlookBar.background",
      "OutlookBar.foreground");

    tabPane.setOpaque(true);
    
    // add buttons for the current components already added in this panel
    Component[] components = tabPane.getComponents();
    for (int i = 0, c = components.length; i < c; i++) {
      tabAdded(components[i]);
    }
  }

  protected void uninstallDefaults() {
    // remove all buttons created for components
    List tabs = new ArrayList(buttonToTab.values());
    for (Iterator iter = tabs.iterator(); iter.hasNext(); ) {
      Component tab = (Component)iter.next();
      tabRemoved(tab);
    }        
    super.uninstallDefaults();    
  }
  
  protected void installListeners() {
    tabPane.addContainerListener(tabListener = createTabListener());
    super.installListeners();
  }

  protected ContainerListener createTabListener() {
    return new ContainerTabHandler();
  }

  protected PropertyChangeListener createPropertyChangeListener() {
    return new PropertyChangeHandler();
  }

  protected void uninstallListeners() {
    super.uninstallListeners();
    tabPane.removeContainerListener(tabListener);
  }

  public Rectangle getTabBounds(JTabbedPane pane, int index) {
    Component tab = pane.getComponentAt(index);
    return tab.getBounds();
  }

  public int getTabRunCount(JTabbedPane pane) {
    return 0;
  }

  public int tabForCoordinate(JTabbedPane pane, int x, int y) {
    int index = -1;
    for (int i = 0, c = pane.getTabCount(); i < c; i++) {
      if (pane.getComponentAt(i).contains(x, y)) {
        index = i;
        break;
      }
    }
    return index;
  }

  protected int indexOfComponent(Component component) {
    int index = -1;
    Component[] components = tabPane.getComponents();
    for (int i = 0; i < components.length; i++) {
      if (components[i] == component) {
        index = i;
        break;
      }
    }
    return index;
  }

  protected TabButton createTabButton() {
    TabButton button = new TabButton();
    button.setOpaque(true);
    return button;
  }

  protected void tabAdded(final Component newTab) {
    TabButton button = (TabButton)tabToButton.get(newTab);
    if (button == null) {
      button = createTabButton();
      
      // save the button original color,
      // later they would be restored if the button colors are not customized on
      // the OutlookBar
      button.putClientProperty(BUTTON_ORIGINAL_FOREGROUND, button.getForeground());
      button.putClientProperty(BUTTON_ORIGINAL_BACKGROUND, button.getBackground());
      
      buttonToTab.put(button, newTab);
      tabToButton.put(newTab, button);
      button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          final Component current = getVisibleComponent();
          Component target = newTab;

          // animate the tabPane if there is a current tab selected and if the
          // tabPane allows animation
          if (((JOutlookBar)tabPane).isAnimated() && current != target
            && current != null && target != null) {
            if (animator != null) {
              animator.stop();
            }
            animator = new PercentLayoutAnimator(tabPane,
              (PercentLayout)tabPane.getLayout()) {
              protected void complete() {
                super.complete();
                tabPane.setSelectedComponent(newTab);
                nextVisibleComponent = null;
                // ensure the no longer visible component has its constraint
                // reset to 100% in the case it becomes visible again without
                // animation
                if (current.getParent() == tabPane) {
                  ((PercentLayout)tabPane.getLayout()).setConstraint(current,
                    "100%");
                }
              }
            };
            nextVisibleComponent = newTab;
            animator.setTargetPercent(current, 1.0f, 0.0f);
            animator.setTargetPercent(newTab, 0.0f, 1.0f);
            animator.start();
          } else {
            nextVisibleComponent = null;
            tabPane.setSelectedComponent(newTab);
          }
        }
      });
    } else {
      // the tab is already in the list, remove the button, it will be
      // added again later
      tabPane.remove(button);
    }

    // update the button with the tab information
    updateTabButtonAt(tabPane.indexOfComponent(newTab));

    int index = indexOfComponent(newTab);
    tabPane.add(button, index);

    // workaround for nullpointerexception in setRolloverTab
    // introduced by J2SE 5
    if (JVM.current().isOneDotFive()) {
      assureRectsCreated(tabPane.getTabCount());
    }
  }

  protected void tabRemoved(Component removedTab) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成在人线免费| 中文字幕第一区| 久久精品久久99精品久久| 欧美日本一区二区在线观看| 午夜伊人狠狠久久| 337p亚洲精品色噜噜| 麻豆精品国产91久久久久久| 久久久久成人黄色影片| 国产成人夜色高潮福利影视| 亚洲丝袜美腿综合| 欧美私模裸体表演在线观看| 日韩av中文字幕一区二区三区| 日韩精品一区二区三区视频在线观看| 韩国精品久久久| 国产精品进线69影院| 欧美三级三级三级爽爽爽| 美女在线视频一区| 欧美一级淫片007| 91麻豆精品在线观看| 2014亚洲片线观看视频免费| 国产精品夜夜嗨| 一区二区三区在线视频观看| 日韩一级黄色片| 成人永久免费视频| 亚洲妇熟xx妇色黄| 久久丝袜美腿综合| 色哟哟国产精品| 国产一区二区三区美女| 一区二区三区中文字幕| 91精品蜜臀在线一区尤物| 狠狠狠色丁香婷婷综合激情| 亚洲免费av网站| 精品美女一区二区| 日本韩国一区二区| 国产一区二区三区在线观看免费视频 | 色噜噜狠狠一区二区三区果冻| 亚洲女人小视频在线观看| 日韩美一区二区三区| 91丨porny丨国产入口| 麻豆精品久久久| 亚洲国产精品自拍| 国产精品天干天干在线综合| 欧美精品在线一区二区三区| 97久久久精品综合88久久| 九九精品视频在线看| 亚洲二区在线观看| 国产精品久久久久久久第一福利| 日韩亚洲电影在线| 欧美亚洲图片小说| 91视视频在线观看入口直接观看www| 久久精品国产亚洲5555| 亚洲成a人片综合在线| 国产欧美中文在线| 欧美tickling挠脚心丨vk| 欧美三级中文字幕在线观看| 99免费精品在线观看| 国产馆精品极品| 国产在线一区观看| 美国av一区二区| 日韩av二区在线播放| 亚洲成人免费观看| 亚洲精品一二三四区| 亚洲私人影院在线观看| 国产精品国产三级国产三级人妇 | 久久九九国产精品| 精品成a人在线观看| 日韩欧美卡一卡二| 欧美一区二区免费| 欧美色精品天天在线观看视频| 91亚洲午夜精品久久久久久| 国产精品白丝av| 国产一区二区三区电影在线观看| 经典三级一区二区| 精品亚洲porn| 韩国视频一区二区| 国产伦精品一区二区三区免费迷 | 成人免费视频网站在线观看| 国产精品一区二区91| 国产黄色精品网站| 不卡电影一区二区三区| 成人sese在线| 一本色道久久加勒比精品| 色猫猫国产区一区二在线视频| 91免费视频大全| 色综合久久天天| 欧美日韩午夜在线视频| 在线播放/欧美激情| 日韩一区二区三免费高清| 欧美久久久久久久久| 日韩情涩欧美日韩视频| 久久女同性恋中文字幕| 国产精品三级av| 亚洲情趣在线观看| 亚洲第一搞黄网站| 另类人妖一区二区av| 国产成人免费av在线| 99热精品国产| 欧美精品第1页| 久久精品一区八戒影视| 国产精品福利一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲另类色综合网站| 日韩在线一区二区| 国产资源精品在线观看| 99re8在线精品视频免费播放| 精品视频在线看| 欧美精品一区二区高清在线观看| 亚洲国产精品黑人久久久| 亚洲综合在线免费观看| 波多野结衣精品在线| 91九色02白丝porn| 精品日韩一区二区| 亚洲免费av高清| 久久99精品网久久| 91九色最新地址| 久久综合一区二区| 亚洲国产一区二区在线播放| 精品一区二区三区在线播放视频| 成人av午夜电影| 日韩欧美国产精品一区| 亚洲日本在线a| 久久99久久久欧美国产| 色婷婷av久久久久久久| 精品国产sm最大网站免费看| 亚洲欧洲另类国产综合| 久久成人免费网站| 色88888久久久久久影院野外 | 国产欧美日本一区视频| 亚洲成人动漫av| 99久久久久久99| 久久久www成人免费毛片麻豆| 一区二区三区在线播放| 国产精品一区在线观看乱码| 欧美精品一卡两卡| 亚洲视频小说图片| 国产精品夜夜嗨| 欧美一区二区视频观看视频| 一区二区三区免费看视频| 国产suv一区二区三区88区| 91精品在线免费| 亚洲精品欧美专区| 国产不卡视频一区| 精品sm捆绑视频| 日本女优在线视频一区二区| 在线区一区二视频| 中文字幕色av一区二区三区| 国产在线播放一区三区四| 91精品国产欧美一区二区18| 亚洲中国最大av网站| 99re这里都是精品| 国产精品全国免费观看高清| 国产精品一区二区视频| 日韩欧美三级在线| 日韩av不卡一区二区| 欧美三级电影一区| 亚洲男人的天堂在线观看| 97久久人人超碰| 亚洲欧美福利一区二区| 99国产精品一区| 亚洲色图色小说| 色综合色狠狠综合色| 亚洲伦理在线精品| 91年精品国产| 亚洲欧美另类在线| 在线视频国产一区| 亚洲综合一二区| 3d动漫精品啪啪一区二区竹菊| 婷婷一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 视频一区中文字幕国产| 制服丝袜av成人在线看| 日韩中文字幕区一区有砖一区 | 欧美一区日韩一区| 奇米精品一区二区三区在线观看| 777色狠狠一区二区三区| 日韩av中文字幕一区二区三区| 日韩一区二区三区在线| 美日韩一区二区| 久久久国产精品麻豆| 成人激情动漫在线观看| 成人免费一区二区三区视频| 91激情在线视频| 三级影片在线观看欧美日韩一区二区 | 精品在线免费观看| 日本一区二区三区免费乱视频| 成人开心网精品视频| 亚洲日本va在线观看| 久久先锋资源网| 成人精品国产福利| 亚洲精品成a人| 欧美一级片免费看| 国产精品一区在线观看你懂的| 中文字幕欧美一| 欧美揉bbbbb揉bbbbb| 久久99久久久久| 17c精品麻豆一区二区免费| 欧美精品久久99久久在免费线| 精品一区二区在线视频| 亚洲视频你懂的| 日韩精品在线一区|