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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? propertysheettablemodel.java.orig

?? java swing控件
?? ORIG
?? 第 1 頁 / 共 2 頁
字號:
          try {
            result = item.getProperty().getValue();
          } catch (Exception e) {
            e.printStackTrace();
          }
          break;
          
        default:
          // should not happen
      }
    }
    else {
      result = item;
    }
    return result;
  }

  /**
   * Sets the value at the specified row and column.  This will have
   * no effect unless the row is a property and the column is
   * {@link #VALUE_COLUMN}.
   * 
   * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
   */
  public void setValueAt(Object value, int rowIndex, int columnIndex) {
    Item item = getPropertySheetElement(rowIndex);
    if (item.isProperty() ) {
      if (columnIndex == VALUE_COLUMN) {
        try {
          item.getProperty().setValue(value);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }

  /**
   * Add a {@link PropertyChangeListener} to the current model.
   */
  public void addPropertyChangeListener(PropertyChangeListener listener) {
    listeners.addPropertyChangeListener(listener);
  }

  public void removePropertyChangeListener(PropertyChangeListener listener) {
    listeners.removePropertyChangeListener(listener);
  }

  public void propertyChange(PropertyChangeEvent evt) {
    // forward the event to registered listeners
    listeners.firePropertyChange(evt);
  }

  protected void visibilityChanged() {
    publishedModel.clear();
    for (Iterator iter = model.iterator(); iter.hasNext();) {
      Item item = (Item) iter.next();
      Item parent = item.getParent();
      if (parent == null || parent.isVisible())
        publishedModel.add(item);
    }
    fireTableDataChanged();
  }
  
  private void buildModel() {
    model.clear();

    publishedModel.clear();

    if (properties != null && properties.size() > 0) {
      List sortedProperties = sortProperties(properties);
      
      switch (mode) {
        case PropertySheet.VIEW_AS_FLAT_LIST:
          // just add all the properties without categories
          addPropertiesToModel(sortedProperties, null);
          break;
          
        case PropertySheet.VIEW_AS_CATEGORIES: {
          // add properties by category
          List categories = sortCategories(getPropertyCategories(sortedProperties));
          
          for (Iterator iter = categories.iterator(); iter.hasNext();) {
            String category = (String) iter.next();
            Item categoryItem = new Item(category, null);
            model.add(categoryItem);
            addPropertiesToModel(
                sortProperties(getPropertiesForCategory(properties, category)),
                categoryItem);
          }
          break;
        }
        
        default:
          // should not happen
      }
    }

    visibilityChanged();
    fireTableDataChanged();
  }

  protected List sortProperties(List localProperties) {
    List sortedProperties = new ArrayList(localProperties);
    if (sortingProperties) {
      if (propertySortingComparator == null) {
        // if no comparator was defined by the user, use the default
        propertySortingComparator = new PropertyComparator();
      }
      Collections.sort(sortedProperties, propertySortingComparator);
    }
    return sortedProperties;
  }
  
  protected List sortCategories(List localCategories) {
    List sortedCategories = new ArrayList(localCategories);
    if (sortingCategories) {
      if (categorySortingComparator == null) {
        // if no comparator was defined by the user, use the default
        categorySortingComparator = STRING_COMPARATOR;
      }
      Collections.sort(sortedCategories, categorySortingComparator);
    }
    return sortedCategories;
  }
  
  protected List getPropertyCategories(List localProperties) {
    List categories = new ArrayList();
    for (Iterator iter = localProperties.iterator(); iter.hasNext();) {
      Property property = (Property) iter.next();
      if (!categories.contains(property.getCategory()))
        categories.add(property.getCategory());
    }
    return categories;
  }

  /**
   * Add the specified properties to the model using the specified parent.
   *
   * @param localProperties the properties to add to the end of the model
   * @param parent the {@link Item} parent of these properties, null if none
   */
  private void addPropertiesToModel(List localProperties, Item parent) {
    for (Iterator iter = localProperties.iterator(); iter.hasNext();) {
      Property property = (Property) iter.next();
      Item propertyItem = new Item(property, parent);
      model.add(propertyItem);
      
      // add any sub-properties
      Property[] subProperties = property.getSubProperties();
      if (subProperties != null && subProperties.length > 0)
        addPropertiesToModel(Arrays.asList(subProperties), propertyItem);
    }
  }

  /**
   * Convenience method to get all the properties of one category.
   */
  private List getPropertiesForCategory(List localProperties, String category) {
    List categoryProperties = new ArrayList();
    for (Iterator iter = localProperties.iterator(); iter.hasNext();) {
      Property property = (Property) iter.next();
      if ((category == property.getCategory())
          || (category != null && category.equals(property.getCategory()))) {
        categoryProperties.add(property);
      }
    }
    return categoryProperties;
  }
  
  public class Item {
    private String name;
    private Property property;
    private Item parent;
    private boolean hasToggle = true;
    private boolean visible = true;

    private Item(String name, Item parent) {
      this.name = name;
      this.parent = parent;
      // this is not a property but a category, always has toggle
      this.hasToggle = true;
    }
    
    private Item(Property property, Item parent) {
      this.name = property.getDisplayName();
      this.property = property;
      this.parent = parent;
      this.visible = (property == null);
      
      // properties toggle if there are sub-properties
      Property[] subProperties = property.getSubProperties();
      hasToggle = subProperties != null && subProperties.length > 0;
    }

    public String getName() {
      return name;
    }
    
    public boolean isProperty() {
      return property != null;
    }
    
    public Property getProperty() {
      return property;
    }
    
    public Item getParent() {
      return parent;
    }
    
    public int getDepth() {
      int depth = 0;
      if (parent != null) {
        depth = parent.getDepth();
        if (parent.isProperty())
          ++depth;
      }
      return depth;
    }
    
    public boolean hasToggle() {
      return hasToggle;
    }

    public void toggle() {
      if (hasToggle()) {
        visible = !visible;
        visibilityChanged();
      }
    }

    public boolean isVisible() {
      return (parent == null || parent.isVisible()) && (!hasToggle || visible);
    }
  }
  
  /**
   * The default comparator for Properties. Used if no other comparator is
   * defined.
   */
  public static class PropertyComparator implements Comparator {
    public int compare(Object o1, Object o2) {
      if (o1 instanceof Property && o2 instanceof Property) {
        Property prop1 = (Property) o1;
        Property prop2 = (Property) o2;
        if (prop1 == null) {
          return prop2==null?0:-1;
        } else {
          return STRING_COMPARATOR.compare(prop1.getDisplayName()==null?null:prop1.getDisplayName().toLowerCase(),
              prop2.getDisplayName() == null ? null : prop2.getDisplayName().toLowerCase());
        }
      } else {
        return 0;
      }
    }
  }

  private static final Comparator STRING_COMPARATOR =
    new NaturalOrderStringComparator();

  public static class NaturalOrderStringComparator implements Comparator {    
    public int compare(Object o1, Object o2) {
      String s1 = (String) o1;
      String s2 = (String) o2;
      if (s1 == null) {
        return s2==null?0:-1;
      } else {
        if (s2 == null) {
          return 1;
        } else {
          return s1.compareTo(s2);
        }
      }
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产麻豆免费人成网站| 日韩视频一区二区在线观看| 国产精品一级在线| 麻豆精品视频在线观看免费| 轻轻草成人在线| 日韩福利视频网| 免费观看在线综合| 精品亚洲porn| 国产制服丝袜一区| 成人爽a毛片一区二区免费| 成人国产精品免费观看视频| caoporn国产精品| 91免费观看在线| 欧美日韩三级视频| 欧美一激情一区二区三区| 亚洲精品在线观看视频| 国产视频一区二区三区在线观看| 国产欧美一区二区精品性色| 国产精品欧美精品| 亚洲宅男天堂在线观看无病毒| 亚洲一级电影视频| 国内精品写真在线观看| 国产a精品视频| 99精品久久只有精品| 欧美日韩亚洲综合| 精品久久久久久久久久久久久久久久久| 精品国产网站在线观看| 国产精品欧美极品| 日韩精品视频网| 国产精品77777| 欧美色综合天天久久综合精品| 日韩一二三区视频| 国产精品久久久久久久蜜臀| 亚洲第一会所有码转帖| 国产成人综合精品三级| 欧美影院精品一区| 久久男人中文字幕资源站| 亚洲免费观看高清完整版在线| 免费人成在线不卡| 色综合天天视频在线观看 | 国产成人av一区二区| 91成人在线观看喷潮| 久久久久国产精品麻豆ai换脸| 一区二区三区电影在线播| 精品一区在线看| 欧美视频一区在线| 国产精品乱人伦中文| 欧美a级一区二区| 99国产精品99久久久久久| 91精品欧美综合在线观看最新 | 亚洲免费av网站| 精品一区二区免费在线观看| 欧美亚洲一区三区| 中文乱码免费一区二区| 久久成人综合网| 欧美日韩三级一区| 亚洲精品免费在线观看| 成人黄色在线网站| 亚洲国产高清aⅴ视频| 乱一区二区av| 91精品国产一区二区| 亚洲一区二区三区免费视频| 91亚洲国产成人精品一区二三 | 久久国产精品72免费观看| 欧美日韩国产123区| 国产精品拍天天在线| 国产福利一区在线| 欧美精品一区二区三区蜜臀| 视频一区二区中文字幕| 欧美视频日韩视频在线观看| 亚洲日本丝袜连裤袜办公室| 成年人午夜久久久| 国产精品久久久99| aaa欧美日韩| 亚洲婷婷国产精品电影人久久| 国产精品白丝jk白祙喷水网站| 精品国产1区二区| 国产精品99久久久| 国产日韩欧美精品在线| 成人性视频网站| 国产精品久久久久一区二区三区| 国产91在线观看| 一区在线观看视频| 色婷婷av一区二区三区大白胸 | 国产精品欧美久久久久一区二区 | 亚洲婷婷综合久久一本伊一区| 成人avav影音| 一区二区三区在线视频免费| 欧美无砖砖区免费| 免费看精品久久片| 欧美国产欧美综合| www.亚洲激情.com| 五月婷婷另类国产| 精品处破学生在线二十三| 国产成人亚洲综合a∨猫咪| 国产精品欧美综合在线| 欧美在线视频全部完| 爽好多水快深点欧美视频| 精品国产制服丝袜高跟| 成人av集中营| 日韩va亚洲va欧美va久久| 26uuu亚洲| 色综合久久综合网97色综合| 三级在线观看一区二区| 久久久蜜桃精品| 欧美亚洲综合网| 精品在线播放免费| 亚洲黄色小视频| 日韩精品综合一本久道在线视频| 国产suv精品一区二区883| 亚洲狠狠爱一区二区三区| 久久亚区不卡日本| 欧美丝袜丝交足nylons| 国产乱人伦偷精品视频不卡| 亚洲精品免费看| 国产清纯在线一区二区www| 欧美日免费三级在线| 国产91精品在线观看| 日韩成人免费在线| 亚洲靠逼com| 久久久五月婷婷| 日韩精品一区在线观看| 色婷婷激情一区二区三区| 国产激情视频一区二区三区欧美 | 91精品国产综合久久精品性色| 国产毛片精品视频| 午夜视频一区在线观看| 国产精品国产自产拍高清av王其 | 丁香婷婷综合五月| 美女网站色91| 亚洲国产日韩综合久久精品| 国产精品护士白丝一区av| 精品av久久707| 欧美二区三区的天堂| 日本韩国欧美一区| 色综合久久88色综合天天6 | 亚洲国产精品久久不卡毛片| 中文无字幕一区二区三区| 欧美成人一区二区三区片免费| 欧美日精品一区视频| 色综合天天天天做夜夜夜夜做| 国产精华液一区二区三区| 久久成人久久鬼色| 日本成人中文字幕| 日韩av中文在线观看| 午夜欧美视频在线观看| 亚洲午夜久久久久中文字幕久| 1024国产精品| 夜夜嗨av一区二区三区四季av | 这里只有精品免费| 欧美日本一区二区| 欧美日韩高清影院| 91精品国产综合久久精品app | 成人av在线播放网站| 黄页网站大全一区二区| 久草这里只有精品视频| 丝袜国产日韩另类美女| 亚洲成av人在线观看| 中文字幕日本不卡| 亚洲色图在线播放| 亚洲一区二区中文在线| 天堂蜜桃一区二区三区| 日本伊人精品一区二区三区观看方式| 三级久久三级久久久| 日韩不卡一区二区三区 | 久久精品欧美一区二区三区麻豆| 亚洲精品一区二区三区香蕉| 国产欧美va欧美不卡在线| 中文字幕亚洲一区二区va在线| 综合网在线视频| 亚洲大片一区二区三区| 美女脱光内衣内裤视频久久影院| 精品一区中文字幕| 99精品国产99久久久久久白柏| 在线亚洲一区二区| 日韩美女在线视频| 日韩毛片一二三区| 欧美一区永久视频免费观看| 天天综合色天天综合色h| 亚洲午夜国产一区99re久久| 美脚の诱脚舐め脚责91| jlzzjlzz欧美大全| 欧美精品在线一区二区| 久久精品欧美一区二区三区麻豆| 亚洲视频每日更新| 美女视频黄a大片欧美| 91在线精品一区二区| 日韩一区二区电影在线| 国产欧美精品一区aⅴ影院| 亚洲国产欧美日韩另类综合| 狠狠色丁香久久婷婷综合丁香| 91香蕉视频黄| 亚洲精品在线观看视频| 一区二区三区在线免费播放 | 国产精品一级片在线观看| 色悠久久久久综合欧美99| 欧美mv日韩mv国产| 亚洲国产精品一区二区尤物区| 国产精品18久久久久久久久| 精品婷婷伊人一区三区三|