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

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

?? basictaskpanegroupui.java

?? 精美開源Swing組件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/**
 * L2FProd.com Common Components 7.3 License.
 *
 * Copyright 2005-2007 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.JCollapsiblePane;
import com.l2fprod.common.swing.JLinkButton;
import com.l2fprod.common.swing.JTaskPaneGroup;
import com.l2fprod.common.swing.icons.EmptyIcon;
import com.l2fprod.common.swing.plaf.TaskPaneGroupUI;

import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;
import javax.swing.plaf.ActionMapUIResource;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicGraphicsUtils;

/**
 * Base implementation of the <code>JTaskPaneGroup</code> UI.
 */
public class BasicTaskPaneGroupUI extends TaskPaneGroupUI {

  private static FocusListener focusListener = new RepaintOnFocus();

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

  protected static int TITLE_HEIGHT = 25;
  protected static int ROUND_HEIGHT = 5;
  
  protected JTaskPaneGroup group;

  protected boolean mouseOver;
  protected MouseInputListener mouseListener;

  protected PropertyChangeListener propertyListener;
  
  public void installUI(JComponent c) {
    super.installUI(c);
    group = (JTaskPaneGroup)c;

    installDefaults();
    installListeners();
    installKeyboardActions();
  }

  protected void installDefaults() {
    group.setOpaque(true);
    group.setBorder(createPaneBorder());
    ((JComponent)group.getContentPane()).setBorder(createContentPaneBorder());

    LookAndFeel.installColorsAndFont(
      group,
      "TaskPaneGroup.background",
      "TaskPaneGroup.foreground",
      "TaskPaneGroup.font");

    LookAndFeel.installColorsAndFont(
      (JComponent)group.getContentPane(),
      "TaskPaneGroup.background",
      "TaskPaneGroup.foreground",
      "TaskPaneGroup.font");    
  }

  protected void installListeners() {
    mouseListener = createMouseInputListener();
    group.addMouseMotionListener(mouseListener);
    group.addMouseListener(mouseListener);

    group.addFocusListener(focusListener);
    propertyListener = createPropertyListener();
    group.addPropertyChangeListener(propertyListener);
  }

  protected void installKeyboardActions() {
    InputMap inputMap = (InputMap)UIManager.get("TaskPaneGroup.focusInputMap");
    if (inputMap != null) {
      SwingUtilities.replaceUIInputMap(
        group,
        JComponent.WHEN_FOCUSED,
        inputMap);
    }

    ActionMap map = getActionMap();
    if (map != null) {
      SwingUtilities.replaceUIActionMap(group, map);
    }
  }

  ActionMap getActionMap() {
    ActionMap map = new ActionMapUIResource();
    map.put("toggleExpanded", new ToggleExpandedAction());
    return map;
  }

  public void uninstallUI(JComponent c) {
    uninstallListeners();
    super.uninstallUI(c);
  }

  protected void uninstallListeners() {
    group.removeMouseListener(mouseListener);
    group.removeMouseMotionListener(mouseListener);
    group.removeFocusListener(focusListener);
    group.removePropertyChangeListener(propertyListener);
  }

  protected MouseInputListener createMouseInputListener() {
    return new ToggleListener();
  }

  protected PropertyChangeListener createPropertyListener() {
    return new ChangeListener();
  }
  
  protected boolean isInBorder(MouseEvent event) {
    return event.getY() < getTitleHeight();
  }

  protected final int getTitleHeight() {
    return TITLE_HEIGHT;
  }

  protected Border createPaneBorder() {
    return new PaneBorder();
  }

  public Dimension getPreferredSize(JComponent c) {
    Component component = group.getComponent(0);
    if (!(component instanceof JCollapsiblePane)) {
      // something wrong in this JTaskPaneGroup
      return super.getPreferredSize(c);
    }
    
    JCollapsiblePane collapsible = (JCollapsiblePane)component;
    Dimension dim = collapsible.getPreferredSize();
    
    Border groupBorder = group.getBorder();
    if (groupBorder instanceof PaneBorder) {
      Dimension border = ((PaneBorder)groupBorder).getPreferredSize(group);
      dim.width = Math.max(dim.width, border.width);
      dim.height += border.height;
    } else {
      dim.height += getTitleHeight();
    }      
    
    return dim;
  }
  
  protected Border createContentPaneBorder() {
    Color borderColor = UIManager.getColor("TaskPaneGroup.borderColor");
    return new CompoundBorder(new ContentPaneBorder(borderColor), BorderFactory
      .createEmptyBorder(10, 10, 10, 10));
  }
  
  public Component createAction(Action action) {
    JLinkButton link = new JLinkButton(action) {
      public void updateUI() {
        super.updateUI();
        // ensure the ui of this link is correctly update on l&f changes
        if (BasicTaskPaneGroupUI.this != null)
          configure(this);
      }

    };
    configure(link);
    return link;
  }
  
  protected void configure(JLinkButton link) {
    link.setOpaque(false);
    link.setBorder(null);
    link.setBorderPainted(false);
    link.setFocusPainted(true);
    link.setForeground(UIManager.getColor("TaskPaneGroup.titleForeground"));
  }

  protected void ensureVisible() {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        group.scrollRectToVisible(        
          new Rectangle(group.getWidth(), group.getHeight()));
      }
    });
  }
  
  static class RepaintOnFocus implements FocusListener {
    public void focusGained(FocusEvent e) {
      e.getComponent().repaint();
    }
    public void focusLost(FocusEvent e) {
      e.getComponent().repaint();
    }
  }
  
  class ChangeListener implements PropertyChangeListener {
    public void propertyChange(PropertyChangeEvent evt) {
      // if group is expanded but not animated
      // or if animated has reached expanded state
      // scroll to visible if scrollOnExpand is enabled
      if ((JTaskPaneGroup.EXPANDED_CHANGED_KEY.equals(evt.getPropertyName()) && Boolean.TRUE
        .equals(evt.getNewValue()) && !group.isAnimated())
        || (JCollapsiblePane.ANIMATION_STATE_KEY.equals(evt.getPropertyName()) && "expanded"
          .equals(evt.getNewValue()))) {
        if (group.isScrollOnExpand()) {
          ensureVisible();
        }
      } else if (JTaskPaneGroup.ICON_CHANGED_KEY.equals(evt.getPropertyName())
        || JTaskPaneGroup.TITLE_CHANGED_KEY.equals(evt.getPropertyName())
        || JTaskPaneGroup.SPECIAL_CHANGED_KEY.equals(evt.getPropertyName())
        || JTaskPaneGroup.COLLAPSABLE_CHANGED_KEY.equals(evt.getPropertyName())) {
        // icon, title, special must lead to a repaint()
        group.repaint();
      }
    }
  }
  
  class ToggleListener extends MouseInputAdapter {
    public void mouseEntered(MouseEvent e) {
      if (isInBorder(e)) {
        e.getComponent().setCursor(
          Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      } else {
        mouseOver = false;
        group.repaint();
      }
    }
    public void mouseExited(MouseEvent e) {
      e.getComponent().setCursor(null);
      mouseOver = false;
      group.repaint();
    }
    public void mouseMoved(MouseEvent e) {
      if (isInBorder(e) && group.isCollapsable()) {
        e.getComponent().setCursor(
          Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        mouseOver = true;
        group.repaint();
      } else {
        e.getComponent().setCursor(null);
        mouseOver = false;
        group.repaint();
      }
    }
    public void mouseReleased(MouseEvent e) {
      if (isInBorder(e) && group.isCollapsable()) {
        group.setExpanded(!group.isExpanded());
      }
    }
  }
  
  class ToggleExpandedAction extends AbstractAction {
    public ToggleExpandedAction() {
      super("toggleExpanded");
    }
    public void actionPerformed(ActionEvent e) {
      group.setExpanded(!group.isExpanded());
    }
    public boolean isEnabled() {
      return group.isVisible() && group.isCollapsable();
    }
  }

  protected static class ChevronIcon implements Icon {
    boolean up = true;
    public ChevronIcon(boolean up) {
      this.up = up;
    }
    public int getIconHeight() {
      return 3;
    }
    public int getIconWidth() {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
51午夜精品国产| 免费看日韩a级影片| 日韩电影在线免费| 成人av在线一区二区| 日韩欧美一区中文| 一区二区三区四区不卡在线| 久久99精品国产91久久来源| 欧美日韩一区不卡| 国产精品毛片久久久久久久 | 欧美日产在线观看| 国产精品萝li| 国产高清一区日本| 日韩欧美高清一区| 天堂久久一区二区三区| 91蜜桃免费观看视频| 中文字幕av不卡| 国产精品一区二区三区四区| 日韩写真欧美这视频| 午夜精品123| 欧美亚男人的天堂| 国产精品卡一卡二卡三| 懂色av一区二区三区免费看| 日韩欧美一级精品久久| 日本伊人精品一区二区三区观看方式 | 国产精品自拍av| 精品少妇一区二区三区日产乱码| 石原莉奈在线亚洲二区| 91极品视觉盛宴| 国产精品嫩草影院av蜜臀| 国产激情精品久久久第一区二区| 久久久久久久久岛国免费| 国产成人免费网站| 国产欧美一区二区精品久导航| 国产一区二区三区在线看麻豆| 精品少妇一区二区三区在线视频| 久久国产精品99精品国产| 日韩欧美中文字幕精品| 激情偷乱视频一区二区三区| 国产三级一区二区| www.亚洲色图.com| 亚洲制服丝袜av| 717成人午夜免费福利电影| 男女男精品网站| 精品欧美黑人一区二区三区| 国产制服丝袜一区| 夜夜嗨av一区二区三区| 91麻豆国产福利在线观看| 亚洲精品中文在线| 欧美日韩精品二区第二页| 蜜桃av一区二区三区电影| 欧美精品一区二区蜜臀亚洲| 不卡一区在线观看| 亚洲成人自拍网| 精品久久久久一区| 不卡影院免费观看| 午夜久久久影院| 日韩精品一区二区三区视频| 成人网男人的天堂| 亚洲国产成人91porn| 精品福利一二区| 91视视频在线直接观看在线看网页在线看| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩夫妻久久| 国模无码大尺度一区二区三区| 亚洲天堂av一区| 91.麻豆视频| 成人久久视频在线观看| 日韩成人免费看| 国产精品人人做人人爽人人添| 欧美性xxxxx极品少妇| 国产精品乡下勾搭老头1| 一区二区三区美女| 国产亚洲精品资源在线26u| 欧美专区亚洲专区| 成人夜色视频网站在线观看| 日韩在线卡一卡二| 亚洲欧美在线高清| 日韩精品一区在线| 欧美色倩网站大全免费| 成人黄色综合网站| 激情小说欧美图片| 午夜精品123| 亚洲女性喷水在线观看一区| 精品不卡在线视频| 欧美日韩精品一区二区三区蜜桃 | 国产在线精品国自产拍免费| 一级精品视频在线观看宜春院| 久久影院午夜片一区| 欧美日韩在线三区| 91网站在线播放| 国产美女在线精品| 日本视频在线一区| 亚洲一二三区视频在线观看| 国产精品免费久久| 国产欧美日韩三区| 久久久久久久久久久黄色| 日韩精品在线一区二区| 欧美午夜精品免费| 色婷婷激情一区二区三区| 成人免费视频国产在线观看| 狠狠色丁香婷婷综合久久片| 日本一道高清亚洲日美韩| 亚洲国产日韩a在线播放| 亚洲日本乱码在线观看| 国产精品免费视频网站| 国产精品青草久久| 国产免费久久精品| 国产欧美日韩精品在线| 日本一区二区三区视频视频| 国产视频一区二区三区在线观看| 欧美成人r级一区二区三区| 日韩免费观看高清完整版在线观看| 欧美日韩精品欧美日韩精品一| 欧美中文字幕一区二区三区亚洲| 色就色 综合激情| 色婷婷亚洲婷婷| 91福利视频在线| 在线观看国产精品网站| 欧美三级三级三级| 欧美一区二区三区成人| 日韩免费视频一区| 久久欧美中文字幕| 中文字幕的久久| 亚洲欧美另类小说| 亚洲一二三专区| 日韩精品乱码av一区二区| 久久国产精品无码网站| 国产精品66部| eeuss鲁片一区二区三区| 成人av网站在线观看免费| 色综合久久综合| 在线免费观看日本欧美| 91精品国产一区二区三区香蕉 | 国产午夜亚洲精品午夜鲁丝片 | 日韩免费一区二区三区在线播放| 精品久久人人做人人爽| 国产女同性恋一区二区| 亚洲综合激情网| 精品亚洲成av人在线观看| 成人精品一区二区三区中文字幕| 91视视频在线直接观看在线看网页在线看| 欧美在线免费播放| 日韩欧美成人午夜| 亚洲人亚洲人成电影网站色| 午夜精品久久久久久久久| 久久99国产精品久久| 91一区一区三区| 欧美一级理论性理论a| 日本一区二区三级电影在线观看 | 亚洲视频你懂的| 日韩国产欧美在线播放| 国产乱理伦片在线观看夜一区 | eeuss鲁片一区二区三区 | 精彩视频一区二区三区| av在线播放成人| 91精品国产综合久久久久| 国产精品久久久久一区二区三区| 亚洲成人av在线电影| 成人爱爱电影网址| 欧美mv和日韩mv国产网站| 亚洲色图19p| 国产真实乱对白精彩久久| 欧美最猛性xxxxx直播| 国产日韩精品一区| 三级成人在线视频| 色婷婷综合视频在线观看| 国产日韩欧美激情| 日本视频免费一区| 91成人免费在线| 久久精品欧美日韩精品| 蜜桃一区二区三区四区| 欧美色图激情小说| 亚洲色图视频网| 高清国产一区二区三区| 欧美电影免费观看高清完整版| 亚洲人午夜精品天堂一二香蕉| 国产一区二区伦理片| 日韩你懂的在线观看| 午夜精品久久久久久久久久久| 一本一道久久a久久精品| 国产精品伦一区| 国产乱码精品一品二品| 精品88久久久久88久久久| 男女男精品视频网| 制服丝袜中文字幕亚洲| 亚洲一区二区三区影院| 日本国产一区二区| 亚洲同性同志一二三专区| 成人免费的视频| 国产精品色噜噜| 成人激情图片网| 国产精品久久久久一区二区三区| 国产高清在线精品| 亚洲国产精品精华液2区45| 丁香网亚洲国际| 国产欧美日韩在线视频| 成人精品在线视频观看| 国产精品久久久久久久久图文区| 粉嫩av一区二区三区| 国产精品午夜春色av|